Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于第一个fastq的内容过滤第二个fastq文件_Python_Gzip_Enumerate_Fastq - Fatal编程技术网

Python 基于第一个fastq的内容过滤第二个fastq文件

Python 基于第一个fastq的内容过滤第二个fastq文件,python,gzip,enumerate,fastq,Python,Gzip,Enumerate,Fastq,我正在比较两个大的gz文件(fastq格式),每个文件有几亿行 它们由四条线组成: 地址 字符序列 间隔棒 另一个字符序列 第二个文件将比第一个文件有更多的行(在这些4行的组中) 我试图做的是过滤掉那些多余的行(四人一组) 我的策略是: 如果两个文件中的唯一地址相同: 写第二个文件的四行。这似乎有效,但速度很慢,有什么建议吗 from itertools import islice from gzip import open as gzopen # two inputs to compare f

我正在比较两个大的gz文件(fastq格式),每个文件有几亿行

它们由四条线组成:

  • 地址
  • 字符序列
  • 间隔棒
  • 另一个字符序列
  • 第二个文件将比第一个文件有更多的行(在这些4行的组中) 我试图做的是过滤掉那些多余的行(四人一组)

    我的策略是: 如果两个文件中的唯一地址相同: 写第二个文件的四行。这似乎有效,但速度很慢,有什么建议吗

    from itertools import islice
    from gzip import open as gzopen
    # two inputs to compare
    first_file  = 'R1_001.fastq.gz' 
    second_file = 'R2_001.fastq.gz'
    # output file
    file_3 = 'test_out.gz'
    
    with gzopen(first_file) as f1, gzopen(second_file) as f2, gzopen(file_3,'ab') as f3:
        for line_number, line in enumerate(f1):
            if line_number % 4 == 0: 
                check_lines = islice(f2,0,4)
                my_lines = [*check_lines]
                if line.split()[0] == my_lines[0].split()[0]:
                    f3.writelines(my_lines)```