added REVP solution
This commit is contained in:
parent
25bfaf8e87
commit
c8afc30269
50
REVP.py
Normal file
50
REVP.py
Normal file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
#Solution to REVP Rosalind problem - Locating Restriction Sites
|
||||
#Author: Peter Vlasveld
|
||||
|
||||
#read in file and get contents
|
||||
f1 = open("rosalind_revp.txt")
|
||||
content = f1.readlines()
|
||||
f1.close()
|
||||
|
||||
#get DNA string from content
|
||||
DNAStr = ""
|
||||
for i in xrange(1,len(content)):
|
||||
DNAStr += content[i].strip()
|
||||
|
||||
#function to return the DNA compliment
|
||||
def DNACompliment(stri):
|
||||
rev = stri[::-1]
|
||||
revList = list(rev)
|
||||
for i in xrange(0, len(revList)):
|
||||
if revList[i] == "A":
|
||||
revList[i] = "T"
|
||||
elif revList[i] == "T":
|
||||
revList[i] = "A"
|
||||
elif revList[i] == "G":
|
||||
revList[i] = "C"
|
||||
elif revList[i] == "C":
|
||||
revList[i] = "G"
|
||||
revCompStr = "".join(revList)
|
||||
return revCompStr
|
||||
|
||||
#loop through DNA string
|
||||
indexes = []
|
||||
lengths = []
|
||||
for j in xrange(0, len(DNAStr)-3):
|
||||
#evaluating 4 to 12 character sets, taking the reverse compliment and comparing,
|
||||
#if a match is found record the index and length and then break
|
||||
for k in xrange(4, 13):
|
||||
comp = DNACompliment(DNAStr[j:j+k])
|
||||
if comp == DNAStr[j:j+k]:
|
||||
indexes.extend([j+1])
|
||||
lengths.extend([k])
|
||||
print(DNAStr[j:j+k])
|
||||
break
|
||||
|
||||
#output results to a file
|
||||
f2 = open("output.txt","w")
|
||||
for i in xrange(0,len(indexes)):
|
||||
f2.write(str(indexes[i]) + " " + str(lengths[i]) + "\n")
|
||||
f2.close()
|
Loading…
Reference in New Issue
Block a user