问题1:使用snippy用于fasta序列的文件SNP calling。发现结果中core.full.aln中,有开头100bp和结尾的100bp被标记为NN
>JN580301
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGCTCACTCCTTGGCGCCTGC
CTGATCCTCCAAATCACCACAGGACTATTCCTAGCCATGCACTACTCACCAGACGCCTCA
ACCGCCTTTTCATCAATCGCCCACATCACTCGAGACGTAAATTATGGCTGAATCATCCGC
TACCTTCACGCCAATGGCGCCTCAATATTCTTTATCTGCCTCTTCCTACACATCGGGCGA
GGCCTATATTACGGATCATTTCTCTACTCAGAAACCTGAAACATCGGCATcATCCTCCTG
CTTGCAACTATAGCAACAGCCTTCATAGGCTATGTCCTCCCGTGAGGCCAAATATCATTC
TGAGGGGCCACAGTAATTACAAACTTACTATCCGCCATCCCATACATTGGGACAGACCTA
GTTCAATGAATCTGAGGAGGCTACTCAGTAGACAGTCCCACCCTCACACGATTCTTTACC
TTTCACTTCATCTTGCCCTTCATTATTGCAGCCCTAGCAgCACTCCACCTCCTATTCTTG
CACGAAACGGGATCAAACAACCCCCTAGGAATCACCTCCCATTCCGATAAAATCACCTTC
CACCCTTACTACACAATCAAAGACGCCCTCGGCTTACTTCTCTTCCTTCTCTCCTTAATG
ACATTAACACTATTCTCACCAGACCTCCTAGGCGACCCAGACAATTATACCCTAGCCAAC
CCCTTAAACACCCCTCCCCACATCAAGCCCGAATGATATTTCCTATTCGCCTACACAATT
CTCCGATCCGTCCCTAACAAACTAGGAGGCGTCCTTGCCCTATTACTATCCATCCTCATC
CTAGCAATAATCCCCATCCTCCATATATCCAAACAACAAAGCATAATATTTCGCCCACTA
AGCCAATCACTTTATTGACTCCTAGCCGCAGACCTCCTCATTCTAACCTGAATCGGAGGA
CAACCAGTAAGCTACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN-----
查看snippy github的操作说明是和--mincov这个参数有关,--mincov N Minimum site depth to for calling alleles (default '10')
想着是不是调整为 --mincov 1 就可以避免前后100bp被替换成N。
mincov=1
[23:09:25] Wrote 14 fake 250bp reads (2x, stride 250bp) to fake_reads.fq
此时无SNP识别出,序列头尾没有替换成Nmincov=2
[06:10:29] Wrote 28 fake 250bp reads (4x, stride 125bp) to fake_reads.fq
此时有SNP识别出,且序列头尾没有替换成Nmincov=3
[06:40:16] Wrote 40 fake 250bp reads (6x, stride 83.3333333333333bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有51bp替换成Nmincov=4
[06:50:21] Wrote 54 fake 250bp reads (8x, stride 62.5bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有61bp替换成Nmincov=5
[18:40:59] Wrote 66 fake 250bp reads (10x, stride 50bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有85bp替换成Nmincov=6
[19:09:08] Wrote 80 fake 250bp reads (12x, stride 41.6666666666667bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有83bp替换成Nmincov=7
[19:36:36] Wrote 92 fake 250bp reads (14x, stride 35.7142857142857bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有100bp替换成Nmincov=8
[21:54:21] Wrote 106 fake 250bp reads (16x, stride 31.25bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有93bp替换成Nmincov=9
[22:06:31] Wrote 118 fake 250bp reads (18x, stride 27.7777777777778bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有108bp替换成Nmincov=10 也是程序默认的参数
[23:17:21] Wrote 132 fake 250bp reads (20x, stride 25bp) to fake_reads.fq
此时有SNP识别出(同2),且序列头尾有100bp替换成N
尝试了多个mincov,在使用fasta序列进行SNP calling时,参数不同,最后生成的比对序列被替换的N也不同。没有深究程序里思维,从表面看即使是使用组装好的fasta基因组序列或contig,在SNP calling的过程中是先生成fake_reads.fq(250bp,单端),然后基于此fastq序列进行calling。运行结束又删除了此文件。
在--mincov 2 时,开头和结尾没有N替换,不知道是我此次的序列数据的特例还是都是如此,需要多次实践去尝试了。
问题2:在有差异度比较大的序列存在时,容易出现SNP找不出来的状况。比如一个物种有些特异序列,另一个物种里无特异序列,则这些特异序列就会被忽略掉,会造成最后的core SNP位点特别少。所以snippy看起来仅适合近源物种的SNP calling。
问题3:若一组基因序列中,有1条序列中有连续的若干个N存在,则此位点在合并后的序列中被去除,容易造成假的序列保守性的推论。故需要在做SNP calling时确保序列为高质量序列。比如测序基因组,若有明显测序覆盖度低的基因组,须在SNP calling前剔除。
这几个问题是在有限的几次尝试中发现的。是不是真实如此,且解释是否合适还需进一步探索,也欢迎各位同行留言讨论~~~~