是否有任何python/unix命令专门用于在读取文件后删除行?(我正在处理 64.2 GB 文件)



我是一个生物信息学家,我正在处理一个非常大的文本文件。文件大小为64.2 GB。我对我的文本文件进行了字数统计,并在相当长的一段时间后得到了这个结果。

1052454251 1052456168 64199706147 GRCh38.fa

我的问题是我只想从这个文件中删除几行。我在谷歌上搜索了python命令,从文本文件中删除任何特定的行,但几乎所有的命令都建议写完整的文件,而只跳过我们想要删除的部分。

我遵循同样的方法,甚至在引用谷歌之前,但最初我遇到了内存问题(因为我使用readlines()函数并试图一次读取整个文件,所以我的系统挂起了)。然后,我一次一行地读取文件,并过滤我需要的行。但是,这种方法非常耗时,因为我的输入文件是64 GB。

谁能建议是否有任何特定的python/unix命令从文件中只删除特定的行?

关于我的问题的更多信息,我的输入文件包含一个完整的人类基因组序列在fasta格式。它看起来像这样

祝辞chr1和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chr2和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chr3和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…



祝辞chr22和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chrM和一些

描述ATTAGATCGGCTGATG…ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chrX和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chrY和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…

以">"称为header。其余的行包含实际的DNA序列。

紧接在">"我有染色体的名字(chr1或chr2或chr3或....chrM或chrX或chrY)。我只是想删除线chrM和它们下面的DNA序列线。所以我的输出文件看起来应该像

祝辞chr1和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chr2和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chr3和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…




祝辞chr22和一些描述
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
ATTAGATCGGCTGATG…
祝辞chrX和一些描述
ATTAGATCGGCTGATG....
ATTAGATCGGCTGATG....
ATTAGATCGGCTGATG....
>chrY和一些描述
ATTAGATCGGCTGATG....
ATTAGATCGGCTGATG....
ATTAGATCGGCTGATG....

这是我写的代码。

from memory_profiler import profile  
@profile                       #This is just to check how much memory is used.
def memcheck():
g=open("chrMremoved.fa",'w')
to_write=1
with open("GRCh38.fa") as f:
for i in f:
if(i[0]==">"):
if(i[0:5]==">chrM"):
to_write=0
else:
to_write=1
if(to_write==1):
g.write(i)
g.close()
if __name__ == "__main__":
memcheck()

也因为我的大部分工作都是围绕分析庞大的数据集展开的。如果有人能给我一些关于如何在python中处理大型数据集的建议(比如编写节省内存和时间的代码),那将对我很有帮助。

有时我遇到的问题,我的python代码被杀死,我搜索谷歌,发现这是因为RAM中的内存较少。请指导我在这种情况下该怎么做。

使用seqkit等专用工具按标题模式过滤序列

seqkit grep -v -p chrM GRCh38.fa -o chrMremoved.fa

相关内容

  • 没有找到相关文章

最新更新