Я пишу программу, которая анализирует последовательности аллелей. Я написал код, который читает файл и создает массив заголовков и массив последовательностей. Ниже приведен пример файла:Сделать новый массив
>DQB1*04:02:01
------------------------------------------------------------
--ATGTCTTGGAAGAAGGCTTTGCGGAT-------CCCTGGAGGCCTTCGGGTAGCAACT
GTGACCTT----GATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCC
CGAGGATTTCGTGTTCCAGTTTAAGGGCATGTGCTACTTCACCAACGGGACCGAGCGCGT
GTTGGAGCTCCGCACGACCTTGCAGCGGCGA-----------------------------
---GTGGAGCCCACAGTGACCATCTCCCCATCCAGGACAGAGGCCCTCAACCACCACAAC
CTGCTGGTCTGCTCAGTGACAG----CATTGGAGGCTTCGTGCTGGGGCTGATCTTCCTC
GGGCTGGGCCTTATTATC--------------CATCACAGGAGTCAGAAAGGGCTCCTGC
ACTGA-------------------------------------------------------
>OMIXON_CONSENSUS_M_155_09_4890_DQB1*04:02:01
-------------------ATCAGGTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTC
GTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACT
GTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGT
AAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGAACAGGCTCTCCTTGGGCTGG
GGTAGGGGGATGGTGATCTCCATGATCTCGGACACAATCTTTCATCAACATTTCCTCTCT
TTGGGGAAAGAGAACGATGTTGCATTCCCATTTATCTTT---------------------
>GENDX_CONSENSUS_M_155_09_4890_DQB1*04:02:01
TGCCAGGTACATCAGATCCATCAGGTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTC
GTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACT
GTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGT
AAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGAACAGGCTCTCCTTGGGCTGG
GGTAGGGGGATGGTGATCTCCATGATCTCGGACACAATCTTTCATCAACATTTCCTCTCT
Заголовки являются («> DQB1», «> GENDX», и «> OMIXON») и три последовательности имеют другие три строки, как показано выше.
Следующая часть моего кода определяет, является ли последовательность аллелей полной или неполной. Аллель определяется как «неполный», если в последовательности> DQB1 имеется более 4 разрывов. (Разрыв обозначается символом '-'). Например, описанная выше последовательность прерывается, так как существует пять разрывов.
Я пытаюсь написать код, если обнаружено неполное обнаружение аллеля, программа создает новый массив только с заголовками и последовательностями> GENDX и> OMIXON.
Как создать массив, который не включает в себя> DQB1?
Вот мой код, как это:
import sys, re
max_num_breaks=4
filename=sys.argv[1]
f=open(filename,"r")
header=[]
header2=[]
sequence=[]
sequence2=[]
string=""
for line in f:
if ">" in line and string=="":
header.append(line[:-1])
elif ">" in line and string!="":
sequence.append(string)
header.append(line[:-1])
string=""
else:
string=string+line[:-1]
sequence.append(string)
s1=sequence[0]
breaks=sum(1 for m in re.finditer("-+",''.join(s1.splitlines())))
if breaks>max_num_breaks:
print "Incomplete Reference Allele Detected"
for m in range(len(header)):
if re.finditer(header[m], 'OMIXON') or re.finditer(header[m], 'GENDX'):
header2.append(header[m])
sequence2.append(sequence[m])
print header2
Проблема с выше кода является то, что всякий раз, когда я печатаю header2 он все еще включает в себя DQB1.
Первоначально я написал код с biopython и имел много проблем, так что я понял, как это сделать без него. –
@GiaConstantina Какие проблемы у вас были? – MattDMo
Я не думаю, что он правильно скачал bc, в общем, он не позволит мне получить доступ к таким вещам, как SeqIO и другие библиотеки. –