Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week2 #15

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions students/Abusagit/rosalind/10 Base Quality Distribution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
def get_incorrect_phred(file):
with open(rf"D:\Downloads\{file}.txt") as f_read, open(rf"filtered{file}.fastaq", 'w') as f_write:
cut_off = int(f_read.readline())
lines = iter(f_read.readlines())
while lines:
try:
print(next(lines), end='', file=f_write) # print seq name
sequence = next(lines).strip()
delimiter = next(lines) # '+'
quality = next(lines).strip()

i = 0
j = len(sequence) - 1
while all((i < len(sequence), j >= 0, i < j,
ord(quality[i]) - 33 < cut_off or ord(quality[j]) - 33 < cut_off)):
i += (ord(quality[i]) - 33) < cut_off
j -= (ord(quality[j]) - 33) < cut_off
print(i, j)
print(sequence[i:j + 1], file=f_write)
print(delimiter, file=f_write, end='')
print(quality[i:j + 1], file=f_write)
except StopIteration:
break
print("DONE")


if __name__ == '__main__':
get_incorrect_phred(input())
20 changes: 20 additions & 0 deletions students/Abusagit/rosalind/4 MEME.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import os
from subprocess import call

data = input("data: ")
width = input("width: ")
output = input("otput: ")
CMD = f"meme {data} -text -nostatus -protein -minw {width} > {output}"

if __name__ == '__main__':
c = call(CMD, shell=True)

with open(output) as outfile:
for line in outfile:
if 'regular expression' in line:
separator = outfile.readline()
regex = outfile.readline().rstrip()
break

os.remove('outfile')
print(regex)
18 changes: 18 additions & 0 deletions students/Abusagit/rosalind/7 Read Quality Distribution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import sys
from functools import reduce


def get_incorrect_phred(file):
with open(rf"D:\Downloads\{file}.txt") as f_read:
threshold = int(f_read.readline())

a = f_read.readlines()
qualities = [None for _ in range(len(a) // 4)]
for i in range(3, len(a), 4):
qualities[i // 4] = sum(ord(char) - 33 for char in a[i].strip()) // len(a[i].strip())

return reduce(lambda x, y: x + (y < threshold), qualities, 0)


if __name__ == '__main__':
print(get_incorrect_phred(input()))
19 changes: 19 additions & 0 deletions students/Abusagit/rosalind/8 Read Filtration by Quality.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from functools import reduce


def get_incorrect_phred(file):
with open(rf"D:\Downloads\{file}.txt") as f_read:
threshold, percentage = map(int, f_read.readline().split())

a = f_read.readlines()
filtered = 0

for i in range(3, len(a), 4):
qualities = [ord(char) - 33 for char in a[i].strip()]
filt = reduce(lambda x, y: x + (y >= threshold), qualities, 0) / len(qualities) * 100
filtered += filt >= percentage

return filtered

if __name__ == '__main__':
print(get_incorrect_phred(input()))
17 changes: 17 additions & 0 deletions students/Abusagit/rosalind/9 Base Filtration by Quality.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def get_incorrect_phred(file):
with open(rf"D:\Downloads\{file}.txt") as f_read:
threshold = int(f_read.readline())

a = f_read.readlines()

below = 0
for i in range(len(a[1].strip())):
qualities = sum(ord(a[j][i]) - 33 for j in range(3, len(a), 4)) / (len(a) // 4)

below += qualities < threshold

return below


if __name__ == '__main__':
print(get_incorrect_phred(input()))
332 changes: 332 additions & 0 deletions students/Abusagit/rosalind/filteredrosalind_bfil (1).fastaq

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions students/Abusagit/rosalind/filteredrosalind_bfil.fastaq
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@Rosalind_0049
GCAGAGACCAGTAGATGTGTTTGCGGACGGTCGGGCTCCATGTGACAC
+
FD@@;C<AI?4BA:=>C<G=:AE=><A??>764A8B797@A:58:527
@Rosalind_0049
ATGGGGGGGGGAGACAAAATACGGCTAAGGCAGGGGTCCT
+
<<65:793967<4:92568-34:.>1;2752)24')*15;
@Rosalind_0049
ACCCCATACGGCGAGCGTCAGCATCTGATATCCTCTTTCAATCCTAGCT
+
B:EI>JDB5=>DA?E6B@@CA?C;=;@@C:6D:3=@49;@87;::;;?8
15 changes: 15 additions & 0 deletions students/Abusagit/rosalind/test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
>Rosalind_7142
PFTADSMDTSNMAQCRVEDLWWCWIPVHKNPHSFLKTWSPAAGHRGWQFDHNFFVYMMGQ
FYMTKYNHGYAPARRKRFMCQTFFILTFMHFCFRRAHSMVEWCPLTTVSQFDCTPCAIFE
WGFMMEFPCFRKQMHHQSYPPQNGLMNFNMTISWYQMKRQHICHMWAEVGILPVPMPFNM
SYQIWEKGMSMGCENNQKDNEVMIMCWTSDIKKDGPEIWWMYNLPHYLTATRIGLRLALY
>Rosalind_4494
VPHRVNREGFPVLDNTFHEQEHWWKEMHVYLDALCHCPEYLDGEKVYFNLYKQQISCERY
PIDHPSQEIGFGGKQHFTRTEFHTFKADWTWFWCEPTMQAQEIKIFDEQGTSKLRYWADF
QRMCEVPSGGCVGFEDSQYYENQWQREEYQCGRIKSFNKQYEHDLWWCWIPVHKKPHSFL
KTWSPAAGHRGWQFDHNFFSTKCSCIMSNCCQPPQQCGQYLTSVCWCCPEYEYVTKREEM
>Rosalind_3636
ETCYVSQLAYCRGPLLMNDGGYGPLLMNDGGYTISWYQAEEAFPLRWIFMMFWIDGHSCF
NKESPMLVTQHALRGNFWDMDTCFMPNTLNQLPVRIVEFAKELIKKEFCMNWICAPDPMA
GNSQFIHCKNCFHNCFRQVGMDLWWCWIPVHKNPHSFLKTWSPAAGHRGWQFDHNFFQMM
GHQDWGTQTFSCMHWVGWMGWVDCNYDARAHPEFYTIREYADITWYSDTSSNFRGRIGQN
Loading