我有很多这样的台词:
>ENSG00000003137|ENST00000001146|CYP26B1|72374964|72375167|4732
CGTCGTTAACCGCCGCCATGGCTCCCGCAGAGGCCGAGT
>ENSG00000001630|ENST00000003100|CYP51A1|91763679|91763844|3210
TCCCGGGAGCGCGCTTCTGCGGGATGCTGGGGCGCGAGCGGGACTGTTGACTAAGCTTCG
>ENSG00000003137|ENST00000412253|CYP26B1|72370133;72362405|72370213;72362548|4025
AGCCTTTTTCTTCGACGATTTCCG
在这个例子中,ENSG00000003137
是name
,4732
,最后一个是length
。正如你所看到的,有些名字是重复的,但长度不同。
我想做一个新的文件,其中我只有那些最长的长度。意味着结果如下:
>ENSG00000003137|ENST00000001146|CYP26B1|72374964|72375167|4732
CGTCGTTAACCGCCGCCATGGCTCCCGCAGAGGCCGAGT
>ENSG00000001630|ENST00000003100|CYP51A1|91763679|91763844|3210
TCCCGGGAGCGCGCTTCTGCGGGATGCTGGGGCGCGAGCGGGACTGTTGACTAAGCTTCG
我已将此代码拆分,但不知道如何生成所需的文件:
file = open(“file.txt”, “r”)
for line in file:
if line.startswith(“>”):
line = line.split(“|”)
您必须在循环中执行两种类型的处理,一种比较“长度”,另一种在需要时存储CGTA。我给你写了一个例子,把这些读入字典:
这将忽略较低长度的项。你现在可以按你想的任何方式存储这些dict了。你知道吗
您需要读取文件两次;第一次,跟踪每个条目的最大大小:
然后在第二遍中写出副本,但只有那些名称和长度与从第一遍中提取的最大长度相匹配的部分:
相关问题 更多 >
编程相关推荐