美文网首页
文件依次检查结果

文件依次检查结果

作者: byejya | 来源:发表于2020-08-19 17:10 被阅读0次

    首先依次查看每一类的序列文件

    one_pair._4sam

    问题

    突然想到问题所在:只在变qname时候存储,反而变qname且r2也计数时未存储。

    改了之后在跑就没有这个问题了。毕竟两个判断qname不等的,只有一个去存储显然不对。

    改了重跑再抽样检查没有问题

    one_pair_but_multiple._4sam

    无误

    two_pair._4sam

    无误

    two_pair_but_one_multiple._4sam

    无误

    two_pair_but_two_multiple._4sam

    无误

    五个分类文件内容都无误。


    再改变文件格式放igv看

    由于之前取的序列有问题,显然之前得到的解释igv结果也有问题,但也不是没用,经过前面的测试,现在可以在确保序列正确的情况下对每类序列进行查看。

    位置在sort_and_index文件里

    one_pair.sam 

    看来还有问题

    还有空白块,看来还有问题

    对其中一条:

    SBSUSER:472:HBGC7ADXX:1:2211:12051:97803 文件里是两条,但还是白色,这里第一条的位置显示很奇怪

    查看另一条:输入位置后能找到另一条,猜测白色可能是两段距离太远导致,并非取的少了一条。

    另一条

    另外还能看到扎堆的白色条带 ,猜测是因为保守区?容易被比对到?

    扎堆

    这几条的insert size都是九百万个碱基以上。感觉应该不合理,但是不知道是不是需要加上限制间隔长度的这种条件。

    再取一个查看:

    SBSUSER:472:HBGC7ADXX:1:1109:18823:9664

    找没取之前的sam:

    未取之前的比对文件

    可见,99和147是r1 r2,所标的位置也是r1 r2相互之间的位置,而r2的supplementary则和r2相隔900w碱基。且形式也不对,不该r2开头是S supplementary开头H。

    可见需要加的校验还有。【8/22认为过滤MAPQ试试,问题还存在则加限制TLEN的条件】


    8/21过程记录

    查看的文件:one_pair_but_multiple

    结果:明白了SAM里所有比对结果的表示是统一的,都是从左到右,不必考虑原序列测序方向。

    对下一步的指导:增添新的取序列限制条件

    one_pair_but_multiple(一条read有超过两个的比对):

    结果好的:

    感觉上最想要的结果 1 2 3

    结果有问题的:

    还是很多白块 insert size 900w

    insert size 900w

    类似结果分析:

    1 2 3 4

    突然发现 ,最后的是41M60H,本来我以为先M的应该在前面,但是他在最后,因为他是负链的原因?

    41M    SBSUSER:472:HBGC7ADXX:1:2113:13615:43628

    有可能是按链的顺序写的,因此从后到前是先41M再60S【从最后做完以后,知道这里是错的】

    回头分析前面的正链,最左边的是先MS 中间SMS 最后HM 顺着的,应该是不对的。【也是错的,正确色是:与原序列是FR无关,sam里对FR是一样的的,不需要考虑原序列的方向。】

    再多找几个

    1 2 3

    如果是按上一个的顺序,第一个的12M应该在最后,但是这个在最前面,主要是负链的顺序不清楚。

    先M且在前面的也有

    1 2 pos

    即使看了pos的介绍还是不清楚,双端测序到底怎么看顺序。

    为了得出顺序,从fq sam igv 对同一条序列进行查看

    SBSUSER:472:HBGC7ADXX:1:2209:12227:36436 _1fa _2.fa sam 最左边,12M89H(12nt)【得出:cigar显示的是从左到右的】

    _2fa显然是和sam里161的是一条,序列也没变;而_1fa则反向,反向以后从左到右,同igv结果一样。

    因此,CIGAR序列显示的也是从左到右,不管是F还是R,都是一个顺序。都是从左到右

    只是比对起始位置不同,像现在这个是:

    起始【得出:位置和sam里一样,是从左到右的】 结尾

    结论:和fa里碱基顺序无关,不管它是F还是R,sam里的比对顺序都是从左到右,cigar标示的也是从左到右,所以只要看位置和M即可。

    主要是cigar一直是从左到右的,与FR无关这个重要。像sam里把R序列reverse倒是正常,也一点儿不影响比对,就相当于是两个forward序列,所以可以预测insert小的的两端都交叉比对的序列非常可靠。

    由此进一步筛选程序取出的序列。

    因此,这个序列并非交错比对,反而前面的是正确的 

    SBSUSER:472:HBGC7ADXX:1:2113:13615:43628

    1 2

    可见,第二条:41M60H,位置:8113   363

               第一条:54S47M,位置:8113    113

    先M的靠后,而后M的在前面。

    这个是对的。

    收获是明白了SAM里所有比对结果的表示是统一的,都是从左到右,不必考虑原序列测序方向。

    结论的得出主要是看fa sam和igv显示的比对位置+参考基因组碱基顺序。

    注:今天的得出的结论适宜重新整理记录(关于原fa序列顺序在SAM文件里的影响和作用),因为是记录过程,所以过程中有错误的猜测,虽然标注了,但是并不打算修改,想留下原始的过程记录。可以将重要的东西另成文章记录。记录一个过程我认为也很重要,虽然可读性十分抱歉。

    可以进一步添加筛选条件修改取序列的代码

    因此下一步的计划:1.根据上一章和这儿一章的问题,修改代码。

                                    2.才看到第二个文件,把接下来的文件看了找问题

                                    3.igv官网文档比较丰富,看一下不同颜色代表的含义,主要是空白块。【8/22已解决】

    对这个文件研究的不足: 中段的HMH序列不太明白其含义。


    8/22

    IGV着色问题

    官方文档:http://software.broadinstitute.org/software/igv/AlignmentData

    1 2 3

    insert size 并不是我想的insert fragement,而是插入缺失的插入。

    因此空白的主要指Low mapping quality

    igv上看条带也确实如此

    MAPQ=0 SBSUSER:472:HBGC7ADXX:1:2110:2753:46772 MAPQ=0

    已知:空白块表示MAPQ=0

    待解决:1.但是不知道和insert size有无关系

                   2.需要过滤MAPQ分数在多少以下的reads

    two_pair

    1

    发现:密集出现

    2

    不知是否是偶然

    开头完全一致

    一一查看过是完全不同的reads,但是开头却一致。这种特征也能被使用,以增加结果的可信程度

    (不同文件,不同reads,比对起止位置一样)

    挑一个序列分析:

    非标准的:

    1 MAPQ=0 SBSUSER:472:HBGC7ADXX:1:1209:3827:75074 3

    选左边的R和右边的F,但是两条却并不是同一个fragement上测序出来的。需要看是否取错了【已解决,并未取错,而是可以提供验证的信息】

    没有错

    在IGV上找对应链:

    75074的forward链 SBSUSER:472:HBGC7ADXX:1:1209:14484:50628reverse链 实际是一个fragement的

    有趣的是看似是一对的两个却并不是,但是有同样的断点。因此猜测,是不是因为这是真的BP,才会出现这样的情况

    验证:

    pnext

    首先,pnext这种值对我们这种情况是没什么用处的,连带的TLEN用处也不大,在这里我们主要看的位置值是下面的

    位置值

    后M的,位置在后,因此不是bp

    再检查50628:

    pos

    这个下面的是FORWARD,原因未知,但是下面的显然也不是合规范的bp序列形式

    提出这个问题:

    F1R2 F2R1

    标准情况:

    正链1 正链2 负链1 负链2

    观察到insert size在同一条read的两段是不同的。

    重叠

    非典型特征序列:

    1 正链1 正链2 负链1 负链2

    有必要考察TLEN的含义。

    官方文档

    带自己注释的翻译:标示模板长度,如果全部片段(一个read比对中,分成多个片段比对)比对到相同参考基因序列,那么TLEN绝对值=比对的end-star+1(这个信息的+-有时不是很准确,绝对值准确,因此不能拿来作为判断依据)。注意,比对上的碱基是在CIGAR上描述的,且不包含软裁剪的那部分碱基。TLEN还这样定义:最左的片段(注意是片段)为+,最右的片段为+,中间片段不定义符号(也就是不参与计算,只计算最左和最右的差值)。(但也不是万能的,对于特殊情况,还有这样的定义:)(特殊情况1:)如果片段覆盖相同的坐标(应该是说两个片段重合了),那么最左最右的选择是随机的,但必须有不同符号(这种情况下+-什么也不能代表)。(特殊情况2:)只有一条比对时TLEN记为0,或者另一条不可用时

    这个信息暂时看来不好用。到此,总结需要改的代码和流程:

    1.过滤MAPQ=0 的read

    2.加限制条件:先M的pos>pnext


    8/23

    完善修改前面的问题,并提出新问题

    关于加新的限制条件

    改善流程

    参考文件如下:

    MAPQ

    https://www.jianshu.com/p/6b7a442d293f

    view的参数

    选择命令为:

    samtools view -bhS -q 1  SRR20150106_mapped > SRR20150106_mapped_withheader_mapq_nonzero.bam

    有header的bam取出的特征序列文件里没header,所以后面的处理和之前一样。

    结果:最直观的是文件大小的变化。

              但更主要的是验证先bam 再用bam取特征序列的流程是可行的

    文件结果1 文件结果2 igv结果

    红线部分是去MAPQ=0前后的对比,去除后连带少了一部分read,这样比较合理,毕竟如果比对片段的一部分比对质量太差,也是不可信的。

    后续也检查了其他文件,去除后结果表现很好。

    空白块的小问题是解决了,大问题是M在前的pos在后,M在后的pos在前。这个需要同一个read的不同片段去比较。在取的同时处理似乎不容易,先对取出的序列文件进行二次加工。

    现在的情况有:one_pair tow_pair最简单,老办法两两对比即可,

                              one_pair_but_multiple, 主要解决multiple问题,

                                                                                multiple的问题主要是1.multiple里有很多HMH SMS,该怎么解释,并且mapping得分还是60

                                                                                                                    2.和谁比位置

                                                                                                                    3.进一步提高比对质量(MAPQ)的要求,看到很多2的

    注意,对每个文件需要去除没有两位数直接两个或者多个四位数的。

    multiple

    需要用新的参数来帮助取

    文档

    解释:

    结果

    每一行是一条,先看后面的,写1指代有,0指代无,因此白色第一条是:MH有。在看前面的,可知M=24,H=77

    那么MHM怎么表示?前后位置怎么表示?这里都看不到,因此这个参数不适用当前问题

    不能知道位置只能知道有没有。因此选择用正则表达式处理。

    写到一半,明天处理


    8/24

    正则表达式

    参考1 参考2 代码 结果

    对文件的二次筛选得出的结果确实是想要的。也是最标准的。

    只是个demo,还将扩展。

    教训:想当然的将.* 写成了* 改了一天......


    8/25

    扩展demo,使之能对所有文件起效

    由此改变流程:先取有特征序列,再过滤取出的特征序列,做两遍。取时先不分类型,即不分之前的五种文件,只有一个中间文件temp,再过滤,过滤出5种类型。

    代码思路还是和之前类似:1.同时取两行,但是只对第一行操作。2.用count变量计数来判断是第几行。不同时这次因为要与flag<200的比位置,因此需要存储flag<200的那一行,而如果第一行是flag>2000的,则所有此qname 且同read的都不要。

    结果 部分主体代码

    因为测试文件是multiple 的,因为会过滤所以原来比对条数>2的现在会<=2,也会出现只有一条的,这个是写的时候先让符合count=0 flag<200的输出,需优化,还未优化。

    好的结果是:取出的序列符合要求,且数目大量减少,橙色圈出的是每个第一行的比对位置,以最后一个为例,第一行CIGAR:34S67M,POS:12979078  其下序列第二个: CIGAR:33M68H POS:12979202

    第一行后M,078在前

    第二行先M,202在后,符合需要的情况。

    因此,扩展后的demo已达到基本使用要求:1.取出真正有效的、符合所有判断依据的read

                                                                            2.对这些取出的read进行分类存储

    所需的是进一步测试和确认扩展后的demo能应对所有特征序列情况,在确定有效后调优和完善流程,去除中间文件,改变流程和代码整体结构,为作为下一步机器学习的输入文件做准备。

    相关文章

      网友评论

          本文标题:文件依次检查结果

          本文链接:https://www.haomeiwen.com/subject/qytdjktx.html