問題1:使用snippy用于fasta序列的文件SNP calling。發(fā)現(xiàn)結果中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這個參數(shù)有關,--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 也是程序默認的參數(shù)
[23:17:21] Wrote 132 fake 250bp reads (20x, stride 25bp) to fake_reads.fq
此時有SNP識別出(同2),且序列頭尾有100bp替換成N
嘗試了多個mincov,在使用fasta序列進行SNP calling時,參數(shù)不同,最后生成的比對序列被替換的N也不同。沒有深究程序里思維,從表面看即使是使用組裝好的fasta基因組序列或contig,在SNP calling的過程中是先生成fake_reads.fq(250bp,單端),然后基于此fastq序列進行calling。運行結束又刪除了此文件。
在--mincov 2 時,開頭和結尾沒有N替換,不知道是我此次的序列數(shù)據的特例還是都是如此,需要多次實踐去嘗試了。
問題2:在有差異度比較大的序列存在時,容易出現(xiàn)SNP找不出來的狀況。比如一個物種有些特異序列,另一個物種里無特異序列,則這些特異序列就會被忽略掉,會造成最后的core SNP位點特別少。所以snippy看起來僅適合近源物種的SNP calling。
問題3:若一組基因序列中,有1條序列中有連續(xù)的若干個N存在,則此位點在合并后的序列中被去除,容易造成假的序列保守性的推論。故需要在做SNP calling時確保序列為高質量序列。比如測序基因組,若有明顯測序覆蓋度低的基因組,須在SNP calling前剔除。
這幾個問題是在有限的幾次嘗試中發(fā)現(xiàn)的。是不是真實如此,且解釋是否合適還需進一步探索,也歡迎各位同行留言討論~~~~