То, что я хочу сделать, это оценить, оценка каждого пептида, т.е. рядВложенный цикл: List - Не получая желаемый результат
Мой код выглядит следующим образом:
import csv, math
def train_data(fname):
#load csv training files
peptide= []
allele= []
score = []
with open (fname) as train:
reader = csv.DictReader(train, delimiter='\t')
for row in reader:
peptide.append(row['peptide'])
allele.append(row['allele'])
score.append(row['score'])
return [peptide, allele, score]
def ff():
peptide, allele, score = train_data('sample.txt')
p={'A':(0.074+0.077)/2, 'R':(0.052+0.053)/2, 'N':(0.045+0.044)/2, 'D':(0.054+0.051)/2, 'C':(0.025+0.022)/2, 'Q':(0.034+0.035)/2, 'E':(0.054+0.056)/2, 'G':(0.074+0.074)/2, 'H':(0.026+0.025)/2, 'I':(0.068+0.064)/2, 'L':(0.099+0.096)/2, 'K':(0.058+0.058)/2, 'M':(0.025+0.024)/2, 'F':(0.047+0.048)/2, 'P':(0.039+0.041)/2, 'S':(0.057+0.059)/2, 'T':(0.051+0.053)/2, 'W':(0.013+0.014)/2, 'Y':(0.032+0.033)/2, 'V':(0.073+0.072)/2}
for i in range(len(peptide)):
# peptide[i]=list(peptide[i])
peptide.append(peptide[i])
for j in range(len(peptide[i])):
print(peptide[2][j])
#est_score+=p[peptide[i][j]]
print ('---')
print(peptide[2][1])
if __name__=='__main__':
ff()
Когда я запускаю это код, что я получаю в выходе все значения пептидные т.е. пептида [I] [J] для печати зЬтЬ в цикле, но то, что я хочу, чтобы получить только пептида [2] [J] значения , Также вне цикла он отлично работает. печати (пептид [2] [1]) дает о/р прекрасно то есть значение ''
мой CSV-файл, как это:
peptide score allele
AAAGAEAGKATTEEQ 0.190842 DRB1_0101
AAAGAEAGKATTEEQ 0.006301 DRB1_0301
AAAGAEAGKATTEEQ 0.066851 DRB1_0401
AAAGAEAGKATTEEQ 0.006344 DRB1_0405
AAAGAEAGKATTEEQ 0.035130 DRB1_0701
AAAGAEAGKATTEEQ 0.006288 DRB1_0802
AAAGAEAGKATTEEQ 0.176268 DRB1_0901
AAAGAEAGKATTEEQ 0.042555 DRB1_1101
AAAGAEAGKATTEEQ 0.114855 DRB1_1302
AAAGAEAGKATTEEQ 0.006377 DRB1_1501
AAAGAEAGKATTEEQ 0.006296 DRB3_0101
AAAGAEAGKATTEEQ 0.006313 DRB4_0101
AAAGAEAGKATTEEQ 0.070413 DRB5_0101
Что Я хочу сделать, это оценить счет каждого пептида, т.е. строки не все строки вместе, используя: est_score + = P [пептид [I] [J]]
pepetide [i] - это строка. Для j в диапазоне (len (пептид [i])) будет проходить через значения j, но тогда вы печатаете каждый отдельный символ из пептида [2], не относящийся к пептиду [i]. –
Не могли бы вы рассказать мне, что мне делать, если я хочу рассчитать счет для каждой строки отдельно? То, что он делает, вычисляет счет для всех строк. –
Я не уверен, что понимаю, что вы подразумеваете под «вычислением оценки для каждой строки отдельно». Кажется, что у вашего файла есть оценка уже для каждой строки. Каков расчет? Ваш цикл for для i в диапазоне (len (пептид)) зацикливается на каждой строке, как есть. поэтому в стороне этот пептид петли [1] = AAAGA ..., оценка [1] = 0.190842 и аллель [1] = DRB1_0101. Я не знаю, что вы пытаетесь сделать с этими значениями. –