麻烦高手帮忙编个小python程序,合并两种文件
我有几个DNA序列文件,形式是:>序列号序列例如:>ABC_abc_14CATCGAGGCGCAACAAGCTGTAAAGTCCATACGT这几个DNA序列文件分两类:第...
我有几个DNA序列文件,形式是:
>序列号
序列
例如:
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGT
这几个DNA序列文件分两类:
第一类以序列名称命名,例如:FBtr0332750.fa,FBtr0333088.fa...(有很多文件)
还有一个sequence.txt文件,里面是有序列名程的序列。(只有一个文件)
现想将sequence.txt文件中与第一类文件序列名称相同的序列复制到第一类文件的开头,并简化名称,只保留"序列号"_"name=后面的名字"。例如:
FBtr0333088.fa 文件打开为:
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGTAAACAACAACTCGTTGAGGTGCGATCAATGGCTTACCGAAAACATAACCGATGAGGTGCGCG
>DEF_def_830
ACGGTGTTGTCCTCGTTCAACAGGATCGCCGCGACGCCGGCGAACATCTTCTTAAAGTGCTTCTGCAGCAGGCGCTCCAGGGAGCGCTGGACTGCAGGAATGTTGAG
sequence.txt 文件打开为:
>FBtr0333088 type=mRNA; loc=2L:complement(8054380..8071624); ID=FBtr0333088; name=poe-RB; dbxref=REFSEQ:NM_001273293,FlyBase:FBtr0333088,FlyBase_Annotation_IDs:CG14472-RB; score=11; score_text=Strongly Supported; MD5=a0e2317c56db60a07aba669fa42100f4; length=16158; parent=FBgn0011230; release=r5.54; species=Dmel;
CACAGTAGGCCGAGTACTCAGTACTATCGGGCAAATTGACGAGATTATTT
AAACAATAATGTCGGCCCACAGCGGCGGAACGGATTGGAATTCCGTTGTT
希望得到的最终文件为:FBtr0333088.fa
>FBtr0333088_poe-RB
CACAGTAGGCCGAGTACTCAGTACTATCGGGCAAATTGACGAGATTATTT
AAACAATAATGTCGGCCCACAGCGGCGGAACGGATTGGAATTCCGTTGTT
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGTAAACAACAACTCGTTGAGGTGCGATCAATGGCTTACCGAAAACATAACCGATGAGGTGCGCG
>DEF_def_830
ACGGTGTTGTCCTCGTTCAACAGGATCGCCGCGACGCCGGCGAACATCTTCTTAAAGTGCTTCTGCAGCAGGCGCTCCAGGGAGCGCTGGACTGCAGGAATGTTGAG
若哪位高手能帮帮小女子,感激不尽! 展开
>序列号
序列
例如:
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGT
这几个DNA序列文件分两类:
第一类以序列名称命名,例如:FBtr0332750.fa,FBtr0333088.fa...(有很多文件)
还有一个sequence.txt文件,里面是有序列名程的序列。(只有一个文件)
现想将sequence.txt文件中与第一类文件序列名称相同的序列复制到第一类文件的开头,并简化名称,只保留"序列号"_"name=后面的名字"。例如:
FBtr0333088.fa 文件打开为:
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGTAAACAACAACTCGTTGAGGTGCGATCAATGGCTTACCGAAAACATAACCGATGAGGTGCGCG
>DEF_def_830
ACGGTGTTGTCCTCGTTCAACAGGATCGCCGCGACGCCGGCGAACATCTTCTTAAAGTGCTTCTGCAGCAGGCGCTCCAGGGAGCGCTGGACTGCAGGAATGTTGAG
sequence.txt 文件打开为:
>FBtr0333088 type=mRNA; loc=2L:complement(8054380..8071624); ID=FBtr0333088; name=poe-RB; dbxref=REFSEQ:NM_001273293,FlyBase:FBtr0333088,FlyBase_Annotation_IDs:CG14472-RB; score=11; score_text=Strongly Supported; MD5=a0e2317c56db60a07aba669fa42100f4; length=16158; parent=FBgn0011230; release=r5.54; species=Dmel;
CACAGTAGGCCGAGTACTCAGTACTATCGGGCAAATTGACGAGATTATTT
AAACAATAATGTCGGCCCACAGCGGCGGAACGGATTGGAATTCCGTTGTT
希望得到的最终文件为:FBtr0333088.fa
>FBtr0333088_poe-RB
CACAGTAGGCCGAGTACTCAGTACTATCGGGCAAATTGACGAGATTATTT
AAACAATAATGTCGGCCCACAGCGGCGGAACGGATTGGAATTCCGTTGTT
>ABC_abc_14
CATCGAGGCGCAACAAGCTGTAAAGTCCATACGTAAACAACAACTCGTTGAGGTGCGATCAATGGCTTACCGAAAACATAACCGATGAGGTGCGCG
>DEF_def_830
ACGGTGTTGTCCTCGTTCAACAGGATCGCCGCGACGCCGGCGAACATCTTCTTAAAGTGCTTCTGCAGCAGGCGCTCCAGGGAGCGCTGGACTGCAGGAATGTTGAG
若哪位高手能帮帮小女子,感激不尽! 展开
1个回答
展开全部
实现思路: 逐行读取sequence.txt文件, 若以'>'开头则发现新文件, 拆分字符串获取文件名. 然后备份该文件, 清空该文件, 从sequence.txt中读取DNA序列存入该文件. 最后关闭文件. (待合并的文件放置于同一目录下,由spth变量记录该目录)
追问
太谢谢了!能否再麻烦您在合并之后的文件中,可以在第一个序列新合并进来的序列后面加一个回车吗?也就是在例子中>ABC_abc_14可以另起一行。麻烦您了!
追答
在我这里没问题,系统环境win7,IDLE Python 3.3.2.
建议在程序的适当地方添加上
fil.write('\n')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询