gpt4 book ai didi

Python 函数不能在循环内工作

转载 作者:行者123 更新时间:2023-12-01 00:51:51 25 4
gpt4 key购买 nike

我正在尝试创建一个代码来将基因文件与基因面板进行比较。基因面板文件为 csv 格式,包含染色体、基因、起始位置和结束位置。患者文件有染色体、突变和位置。所以我做了一个循环将基因面板信息传递给一个函数,在该函数中进行比较以返回相似项目的列表。当我使用手动数据调用该函数时,该函数效果很好。但不在循环内进行比较。

import vcf
import os, sys

records = open('exampleGenePanel.csv')
read = vcf.Reader(open('examplePatientFile.vcf','r'))

#functions to find mutations in patients sequence
def findMutations(gn,chromo,start,end):
start = int(start)
end = int(end)
for each in read:
CHROM = each.CHROM
if CHROM != chromo:
continue
POS = each.POS
if POS < start:
continue
if POS > end:
continue
REF = each.REF
ALT = each.ALT
print (gn,CHROM,POS,REF,ALT)
list.append([gn,CHROM,POS,REF,ALT])
return list

gene = records.readlines()

list=[]
y = len (gene)
x=1
while x < 3:
field = gene[x].split(',')
gname = field[0]
chromo = field[1]
gstart = field[2]
gend = field[3]
findMutations(gname,chromo,gstart,gend)
x = x+1
if not list:
print ('Mutation not found')
else:
print (len(list),' Mutations found')
print (list)

我想获取列表中匹配突变的详细信息。当我手动将数据传递给函数时,这按预期工作。例如.findMutations('TESTGene','chr8','146171437','146229161')但通过循环时不进行比较

最佳答案

问题是 findMutations 每次调用时都会尝试从 read 中读取,但在第一次调用后,read 已经被读取了。读完了,就什么都没有了。我建议在调用函数之前读取一次read的内容,然后将结果保存在列表中。然后 findMutations 每次调用时都可以读取该列表。

最好使用 list 以外的名称作为结果列表,因为该名称与 Python 内置函数冲突。让 findMutations 返回其结果列表而不是将其附加到全局中也会更好。

关于Python 函数不能在循环内工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com