#!/usr/bin/env python
# coding: utf-8
# # dnacalc.py
# >code by Steven H. D. Haddock and Casey W. Dunn as described in:
# >Practical Computing for Biologists
# >by Steven H. D. Haddock and Casey W. Dunn
# >published in 2011 by Sinauer Associates.
# >ISBN 978-0-87893-391-4
# >
# >[http://www.sinauer.com/practical-computing-for-biologists.html](http://www.sinauer.com/practical-computing-for-biologists.html)
# >see [practicalcomputing.org](practicalcomputing.org)
# >
# >scripts freely available by the original authors at practicalcomputing.org
# >DIRECT LINK: [http://practicalcomputing.org/files/pcfb_examples.zip](http://practicalcomputing.org/files/pcfb_examples.zip)
# >Updated to Python 3 by Wayne Decatur
# >#### posted as a Gist and IPython Notebook by Wayne (fomightez at GitHub) with full credit and reference to original code authors.
# #### dnacalc.py calculates percent of bases in a DNA sequence.
# This program takes a DNA sequence (without checking)
# and shows its length and the nucleotide composition
# This program is described in Chapter 8 of PCfB
The code:
# In[1]:
DNASeq = "AGTCTCTGACTCTCTCTTCGGTCTCT" #DNASeq = raw_input("Enter a sequence: ")
DNASeq = DNASeq.upper() # convert to uppercase for .count() function
DNASeq = DNASeq.replace(" ","") # remove spaces
print ('Sequence:', DNASeq)
# below are nested functions: first find the length, then make it float
SeqLength = float(len(DNASeq))
print ("Sequence Length:", SeqLength)
NumberA = DNASeq.count('A')
NumberC = DNASeq.count('C')
NumberG = DNASeq.count('G')
NumberT = DNASeq.count('T')
# Old way to output the Numbers
# print "A:", NumberA/SeqLength
# print "C:", NumberC/SeqLength
# print "G:", NumberG/SeqLength
# print "T:", NumberT/SeqLength
# Calculate percentage and output to 1 decimal
print ("A: %.1f" % (100 * NumberA / SeqLength))
print ("C: %.1f" % (100 * NumberC / SeqLength))
print ("G: %.1f" % (100 * NumberG / SeqLength))
print ("T: %.1f" % (100 * NumberT / SeqLength))
# **See the code in action and explore it interactively [here](https://www.pythonanywhere.com/gists/6153106/dnacalc.py/ipython).**
# **Obtain a copy of this entire IPython Notebook [here](https://gist.github.com/fomightez/6180942) in order to explore it interactively.**
#
#
#
#
#
#
#
#
# ###
Additional aid and exploration below:
# In[2]:
get_ipython().run_line_magic('whos', '')
# The above special command lets us see what is defined and can be used in an IPython Notebook.
# (For some reason it doesn't work for any of the initiating variables over in the interactive gist console.)
# #### See the subsequent variations that build upon these ideas and make more versatile versions as described in the book.