合并fi中的字段

2024-09-27 00:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有7列的文件,一个有染色体区域的GFF文件,我想把REGION=“exon”所在的行折叠成一行文件。文件行必须在区域相互重叠的基础上折叠。你知道吗

REGION  START   END  SCORE STRAND FRAME     ATTRIBUTE
 exon   26453   26644   .   +   .   Transcript "XM_092971"; Name "XM_092971"
 exon   26842   27020   .   +   .   Transcript "XM_092971"; Name "XM_092971"
 exon   30355   30899   .   -   .   Transcript "XM_104663"; Name "XM_104663"
 GS_TRAN    30355   34083   .   -   .   GS_TRAN "Hs22_30444_28_1_1"; Name "Hs22_30444_28_1_1"
 snp    30847   30847   .   +   .   SNP "rs2971719"; Name "rs2971719"
 exon   31012   31409   .   -   .   Transcript "XM_104663"; Name "XM_104663"
 exon   34013   34083   .   -   .   Transcript "XM_104663"; Name "XM_104663"
 exon   40932   41071   .   +   .   Transcript "XM_092971"; Name "XM_092971"
 snp    44269   44269   .   +   .   SNP "rs2873227"; Name "rs2873227"
 snp    45723   45723   .   +   .   SNP "rs2227095"; Name "rs2227095"
 exon   134031  134495  .   -   .   Transcript "XM_086913"; Name "XM_086913"            
 exon   134034  134457  .   -   .   Transcript "XM_086914"; Name "XM_086914"            

查看上面的示例数据,只有最后两行可以合并为一行排。所以呢,新行将变为。你知道吗

exon    134031  134495  .   -   .   Transcript "XM_086913"; Name "XM_086913"            

在这种情况下,另一行的结尾会比前一行大,这就是该行的结尾区域基本上是这样的,如果有重叠,则取开始较早的区域和结束较晚的区域。你知道吗

这样的实例可以有多行,这里只显示最后2行好了。一个问题是,atribute列肯定会为这些行显示不同的转录本名称,在其他情况下,这些名称基本相同。你知道吗

我必须用Python来做这个,我是Python的初学者。你知道吗


Tags: 文件namegs区域regiontranscriptxmsnp
1条回答
网友
1楼 · 发布于 2024-09-27 00:23:25

将其分解为更简单的步骤:

  • 读取文件并将其解析为数据列表
  • 循环你的列表,并对照下一行检查每一行
  • 把那些满足你需求的添加到一个新的列表中
  • 将新列表保存到新文件或打印到控制台

您可能希望手动在列表中移动,而不是像这样使用for row in mylist

newlist = []
i = 0
while i < len(mylist):
     if can_collapse( mylist[i], mylist[i+1] ):
         newlist.append[ collapse( mylist[i], mylist[i+1] ) ]
         i += 2
     else:
         newlist.append[ mylist[i] ]
         i += 1

相关问题 更多 >

    热门问题