fixed MPRT

This commit is contained in:
Fizzizist 2025-02-18 21:00:05 -05:00
parent 8d4cc2b83c
commit 43de339fc5
2 changed files with 42 additions and 31 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.venv
*.txt

View File

@ -1,44 +1,53 @@
#!/usr/bin/python #!/usr/bin/python
#MPRT - Finding a Protein Motif Solution # MPRT - Finding a Protein Motif Solution
#Problem can be found at http://rosalind.info/problems/mprt/ # Problem can be found at http://rosalind.info/problems/mprt/
#Author: Peter Vlasveld # Author: Peter Vlasveld
import urllib2
import re import re
from time import sleep
#declare motif import requests
# declare motif
motif = "N[^P][ST][^P]" motif = "N[^P][ST][^P]"
#read in file # read in file
f0 = open("rosalind_mprt.txt", "r") f0 = open("rosalind_mprt.txt", "r")
content = f0.read().splitlines() content = f0.read().splitlines()
f0.close() f0.close()
#open output file # open output file
f1 = open("output.txt", "w+") f1 = open("output.txt", "w+")
#loop through each accession ID # loop through each accession ID
for i in content: for i in content:
#get fasta from url # get fasta from url
url = "http://www.uniprot.org/uniprot/" + i + ".fasta" url = "http://www.uniprot.org/uniprot/" + i.split("_")[0] + ".fasta"
response = urllib2.urlopen(url) response = requests.get(url)
fasta = response.read().splitlines()
#format protein string if response.status_code != 200:
print(f"uniprot request failed for {i}")
print(f"detail: {response.text}")
fasta = response.text.splitlines()
# format protein string
protStr = "" protStr = ""
for j in fasta: for j in fasta:
if not j.startswith('>'): if not j.startswith(">"):
protStr += j protStr += j
#construct output strings # construct output strings
outStr = "" outStr = ""
for j in range(0, len(protStr)-4): for j in range(0, len(protStr) - 4):
if re.match(motif,protStr[j:j+4]): if re.match(motif, protStr[j: j + 4]):
outStr += str(j+1) + " " outStr += str(j + 1) + " "
#output # output
if not outStr == "": if not outStr == "":
print i print(i)
f1.write(i + "\n") f1.write(i + "\n")
print outStr print(outStr)
f1.write(outStr + "\n") f1.write(outStr + "\n")
#close output file
sleep(1)
# close output file
f1.close() f1.close()