这是我正在尝试做的事情:
我正在比较两个文件。
因此,有两个文件包含突变名称和一个aapos
与该突变相关联的数字,称为 。
在文件 1 中,有t
许多突变,在文件 2 中,有s
许多突变。
现在,文件 2 中的突变具有特定的生物学意义,所以我要做的是查看文件 1 中的突变名称(tagname
在我的程序中调用)是否等同于文件 2 中的标记名,以及 aapos该特定突变的编号在文件编号 2 中的 aapos1 和 aapos2 范围内。
如果满足这两个条件,那么我在文件1中的突变具有特殊的生物学意义,我们称之为1类。否则,它会落入2类,没有生物学意义。
此外,在这些文件中的每一个中,都有一个名为的列synonymous
,对于文件 1 中的每个突变,同义列被分配一个数字 0 或 1。
现在这就是我想要做的:对于属于 CATEGORY 2 的每个突变,如果该synonymous
突变的列是 0,我希望计数器nonsyntwo
加 1,如果它是 1,那么我希望计数器syntwo
加 1。本质上,对于属于类别 2 的所有突变,我想要计算synonymous
列中有多少分配值为 0,以及有多少分配值为 1。
但是,当程序运行时,我最终会得到一个 和 的数字nonsyntwo
,syntwo
这比我正在使用的文件中的标记名数量要多得多。如果我将两者都更改s
为t
15(每个文件中都有数千个标记名),那么我会得到 94 作为nonsyntwo
.
如果程序遍历 15 个标记名,这怎么可能?
for x in range(1,s):
for b in range (1,t):
if tagname1[x]== tagname2[b]:
if int(aapos1[b]) <= int(aapos[x])<= int(aapos2[b]):
snps = snps + 1
elif int(synonymous[x]) == 0:
nonsyntwo = nonsyntwo + 1
elif int(synonymous[x]) == 1:
syntwo = syntwo + 1
elif tagname1[x]!= tagname2[b]:
if int(synonymous[x]) == 0:
nonsyntwo = nonsyntwo + 1
elif int(synonymous[x]) == 1:
syntwo = syntwo + 1