首页 新闻 会员 周边 捐助

江湖救急,路过的腿子别跑

0
[待解决问题]

题目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中记录的readsreads.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全过滤掉。并将过滤后的结果保存至新的结果文件中。

请注意:

  1. 1. reads.fq文件和filter.txt文件都会很大,无法读到内存中
  2. reads.fq文件和filter.txt文件中的reads顺序是一致的

关于第一点,表示不能将filter.txt 中的全部readsId都读入hashmap等数据结构。

 

题目2

背景介绍

高通量测序中,测序得到的数据文件每四行为一条记录,称为readsReads格式如下:

@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的质量也为66G的质量为F(70)...其中括弧中的数值为对应字符的ACSII值。

现在有文本记录了几千万条这样的记录,如下所示:

 

我们现在需要对这个文本中的reads进行过滤。

有三个过滤规则,如下:

  1. 分别从DNA字符串的左侧和右侧开始,将质量小于等于66DNA字符切除(第二行和第四行同步切除),直至遇到第一个大于66DNA字符为止。

如序列为

@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

 

  1. 将第一步切除好的reads中,剩余字符串中超过1/3字符的质量小于66的,整条reads删除。

如序列

如序列为

@HISEQ04:201:C6U58ANXX:2:1101:1519:1951 1:N:0:CGATGT

GCTTCACGAGCTGAACCAAAA

+

AAAFFFF<AAAABFFFAAFFFF

该序列直接废弃,不输入结果文件。

 

  1. 将通过第一步和第二部过滤的,但第二行字符长度小于50的整条reads也删除

 

现在需要用这三个规则对reads.fq进行过滤,并将过滤后的reads输出到结果文件中。

 

注意,实际项目中过滤规则还有很多。因此我们要求本程序能以相对简单的方式添加过滤规则。

Lazy-MIMI的主页 Lazy-MIMI | 菜鸟二级 | 园豆:202
提问于:2018-06-27 00:03

救人如救火

Lazy-MIMI 6年前

@Lazy-MIMI: 大半夜的,谁会闲的没事。。

新的开始 6年前
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册