我有一个文件,有几行(我只显示其中两行):
UniRef90_A0A0K2VG56 UniRef90_A0A0P5UY87
UniRef90_A0A095VQ09 UniRef90_A0A0C1UI80 UniRef90_A0A1M4ZSK2
另一个文件(我只显示文件的一些行):
>UniRef90_A0A095VQ09 - Cluster: LOW QUALITY PROTEIN: titin
MTTKAPTFTQPLQSVVALEGSAATFEAHISGSPVPEVSWYRDGQVLSAATLPGVQISFSD
GRAKLMIPAVAAGHSGRYTLQATNGSGQATSTAELLVTAETAPPNFSQRLQSTTARQGSQ
VRLDVRVTGIPTPVVKFYRDRAEIQSSPDFQILQEGDLYSLIIAEAYPEDSGTYSVNATN
>UniRef90_A0A0K2VG56 - Cluster: titin isoform X29
MATQAPTFTQPLQSVVVLEGSTATFEAHISGFPVPEVSWFRDGQVISTSTLPGVQISFSD
GRAKLMIPAVTKANSGRYSLRATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIVEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISKSRETRIEKKIEAHFDARSIATVEMV
IDGAAGQELPHKTPPRIPLKPKSRSPTPPSIAAKAQLARQQSPSPIRHSPSPVRHVRAPT
>UniRef90_A0A0C1UI80 - Cluster: LOW QUALITY PROTEIN: lafev
GRAKLMIPAVTKANSGRYSLRATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGLARQQSPSPIRHSPSPVRHVRAPT
>UniRef90_A0A0P5UY87 - Cluster: titin isoform X4
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIVEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISKSRETRIEKKIEAHFDARSIATVEMV
GRAKLMIPAVAAGHSGRYTLQATNGSGQATSTAELLVTAETAPPNFSQRLQSTTARQGSQ
>UniRef90_A0A1M4ZSK2 - Cluster: titin isoform X54
SVGRATSTAELLVQGEEVVPAKKTKTIVSTSTAELLVTAETAPPNFSQRLQSTTARQGSQ
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISKSRETRIEKKIEAHFDARSIATVEMV
IDGAAGQELPHKTPPRIPLKPKSRSPTPPSIAAKAQLARQQSPSPIRHSPSPVRHVRAPT
我需要为第一个文件的每一行匹配Uniref90_XXXXXX
ID和第二个文件的Uniref90_XXXXXX
ID。当比赛结束后,我需要找回顺序(字母…TNGSGQATS…)。。。。=序列)到相应的ID
例如,在第一个文件的第一行中有两个Uniref90\uxxxxx id,我希望得到如下输出:
>UniRef90_A0A0K2VG56 - Cluster: titin isoform X29
MATQAPTFTQPLQSVVVLEGSTATFEAHISGFPVPEVSWFRDGQVISTSTLPGVQISFSD
GRAKLMIPAVTKANSGRYSLRATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIVEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISKSRETRIEKKIEAHFDARSIATVEMV
IDGAAGQELPHKTPPRIPLKPKSRSPTPPSIAAKAQLARQQSPSPIRHSPSPVRHVRAPT ##first ID of the first line
>UniRef90_A0A0P5UY87 - Cluster: titin isoform X4
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIVEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISKSRETRIEKKIEAHFDARSIATVEMV
GRAKLMIPAVAAGHSGRYTLQATNGSGQATSTAELLVTAETAPPNFSQRLQSTTARQGSQ ##second ID of the first line
我需要为我的第一个文件的每一行这样做。你知道吗
所以您似乎需要根据它们在第一个文件中的顺序来排序
Uniref90_XXXXXX
。你知道吗这里
UniRef_ids.txt
是第一个文件,UniRef_data.txt
是第二个文件,UniRef_data_ordered.txt
是输出文件。你知道吗我注意到每个
Uniref90_XXXXXX
似乎都以一个>
开始,然后继续,跨越可变的行数,直到下一个>
或者,我假设,文件结束。你知道吗我只处理了一个例外:如果
Uniref90_XXXXXX
出现在第一个文件中,而不是第二个文件中。它只是向控制台(而不是文件)输出一个警告。你知道吗如果其余文件的格式不同,这可能无法工作。类似地,如果您的文件是几GB,我的方法可能不合适,因为我会将第二个文件的全部内容读入内存。你知道吗
统一参考数据_已订购.txt地址:
是的,那是可能的。我们只需要打开输出文件,在遍历第一个文件中的行的for循环中编写代码,并为每个文件指定一个唯一的名称。你知道吗
顺便说一下,这是生成文件名的代码:
f
前缀告诉Python它是一个f-string
。它计算{}
中的内容并返回一个字符串。在:
前面是值,后面是格式说明符。在本例中,格式说明符0-padsi
宽度为3,给出如下文件名:这样,在文件管理器中对文件进行排序非常容易。你知道吗
可以用不同的名称命名文件。例如,如果不需要下划线,并且要用空格而不是0填充数字:
相关问题 更多 >
编程相关推荐