2017-02-17 50 views
2

我有一些我需要分析的fastaq文件。主要問題是我目前使用的分析工具只接受ACTG作爲核苷酸,而不接受IUPAC代碼(R,W等)中的其餘術語。替換Linux中的FastaQ文件中的特定核苷酸

我做了這個代碼更改的特定核苷酸:

awk '{ 
    split($2,a,"") ; 
    str="" ; 
    for (n in a) {nucleotide=a[n]} ; 
    if (nucleotide~/[ACTG]/) {str=str""nucleotide} 
    else { 
     if (nucleotide~/[RWMV]/) {str=str""A} 
     else { 
      if (nucleotide~/[YD]/) {str=str""C} 
      else { 
       if (nucleotide~/[SKN]/) {str=str""G} 
       else {str=str""T} 
      } 
     } 
    } 
}' | head 

這是工作,但它是超慢。你知道更有效的方法嗎?

非常感謝!

+0

'爲(N a)中的{核苷酸= a [n]};'工作不好 –

+0

您的預期產出是?和示例輸入? –

+0

你對末尾的變量'str'沒有任何作用 –

回答

3

對於這個假設你有fastq格式,我建議使用專門的庫,biopythonbioperl是不錯的選擇。

貓example.fastq

 
@ID 
AGTCGTACTGGACTGYGCSAACTG 
+ 
IIIIIIIIIIIIIIIIIIIIIIII 
@ID2 
RWMVYDSKNAAAAAAAAAAAAAAA 
+ 
IIIIIIIIIIIIIIIIIIIIIIII 

但是,使用awk

awk 'NR%4==2{gsub(/[RWMV]/,"A"); gsub(/[YD]/,"C"); gsub(/[SKN]/,"G")}1' example.fastq 

你的解決方案,

 
@ID 
AGTCGTACTGGACTGCGCGAACTG 
+ 
IIIIIIIIIIIIIIIIIIIIIIII 
@ID2 
AAAACCGGGAAAAAAAAAAAAAAA 
+ 
IIIIIIIIIIIIIIIIIIIIIIII 
+0

我最初以爲使用'sed' ....'sed'/^@/{ n; y/RWMVYDSKN/AAAACCGGG /;}'example.fastq'.... –

+0

@Inian'sub()'只修改第一個匹配項,它在這種情況下不起作用 –

+0

啊!現在我想起了! – Inian

相關問題