我正在尝试将Fastq文件直接读入熊猫数据框,类似于下面的链接:
Read FASTQ file into a Spark dataframe
我搜遍了,只是找不到可行的选择。
目前,我正在运行以下操作:
cmd = f'zcat {infile} | paste - - - -'
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
b = StringIO(p.communicate()[0].decode('utf-8'))
_ = pd.read_csv(b, sep='\t', names=['read_id', 'seq', '+', 'qual'], on_bad_lines='skip', dtype=str, chunksize=1000000)是否有一种更干净的方法只使用pandas?我正在考虑设置sep='\n',但之后我只得到了1行多列。我是否可以读取文件,然后每4行就创建4个所需的列(或类似的内容)?
速度是我真正想要的,所以最快的解决方案将是最好的。
附带注意:我的Fastq文件将不适合内存,所以我将不得不分块读取
发布于 2022-05-17 14:23:26
所以我发现了一些有用的东西(以防其他人想做类似的事情):
import pandas as pd
pd.DataFrame(pd.read_csv(<infile>, sep='\n', header=None).values.reshape(-1, 4), columns=['read_id', 'seq', '+', 'qual'])我的想法是:
Transpose the data in a column every nth rows in PANDAS
(谢谢你的建议)
https://stackoverflow.com/questions/72274452
复制相似问题