题目1
背景介绍
高通量测序中,测序得到的数据文件每四行为一条记录,称为reads。每个reads第一行称为readsID。如下图中选中部分的readsID为
@HISEQ04:201:C6U58ANXX:2:1101:1602:1974 1:N:0:CGATGT
该文本中有很多reads有问题。
我们会将有问题的reads的名字,也就是
@HISEQ04:201:C6U58ANXX:2:1101:1602:1974 1:N:0:CGATGT
中标记红色的部分(第一个空格前的部分),记入文本 filter.txt。
现在有reads文本 reads.fq
记录问题reads的文本filter.txt
注意filter.txt中记录的reads是 reads.fq的子集,并且其顺序和 reads.fq 中reads的顺序一致。
类似 reads.fq中记录了 1,2,3,4,5,6,7,8,9,10 则 filter.txt 可能记录了 2,4,8,10。
需求:
请对文件reads.fq进行过滤,将filter.txt中出现的reads全过滤掉。并将过滤后的结果保存至新的结果文件中。
请注意:
关于第一点,表示不能将filter.txt 中的全部readsId都读入hashmap等数据结构。
题目2
背景介绍
高通量测序中,测序得到的数据文件每四行为一条记录,称为reads。Reads格式如下:
@HISEQ04:201:C6U58ANXX:2:1101:1519:1951 1:N:0:CGATGT
GTAAGCTTCACGAGCTGAACCAAAAGTGGG
+
<<BBFFFFFFF<FFFFBFFFFFFFFF<FFF
其中第一行以@开头,记录了reads的名字
第二行是DNA字符串
第三行是一个+号
第四行长度和第二行一致,每一个字符的ACSII值代表了第二行相同位置DNA字符的质量。
如上面例子中从左向右的对照关系为
GTAAG
<<BBF
G--<
T--<
A--B
A--B
G--F
这表示从左端开始,G质量为<(60),T的质量也为<(60),A的质量为B(66),第二个A的质量也为66,G的质量为F(70)...其中括弧中的数值为对应字符的ACSII值。
现在有文本记录了几千万条这样的记录,如下所示:
我们现在需要对这个文本中的reads进行过滤。
有三个过滤规则,如下:
如序列为
@HISEQ04:201:C6U58ANXX:2:1101:1519:1951 1:N:0:CGATGT
GTAAGCTTCACGAGCTGAACCAAAAGT
+
<<BBFFFFFFF<FFFFBFFFFFFFFF<<
切完后变为
@HISEQ04:201:C6U58ANXX:2:1101:1519:1951 1:N:0:CGATGT
GCTTCACGAGCTGAACCAAAA
+
FFFFFFF<FFFFBFFFFFFFFF
如序列
如序列为
@HISEQ04:201:C6U58ANXX:2:1101:1519:1951 1:N:0:CGATGT
GCTTCACGAGCTGAACCAAAA
+
AAAFFFF<AAAABFFFAAFFFF
该序列直接废弃,不输入结果文件。
现在需要用这三个规则对reads.fq进行过滤,并将过滤后的reads输出到结果文件中。
注意,实际项目中过滤规则还有很多。因此我们要求本程序能以相对简单的方式添加过滤规则。
救人如救火
– Lazy-MIMI 6年前@Lazy-MIMI: 大半夜的,谁会闲的没事。。
– 新的开始 6年前