我正在努力在 Perl 上使用 Phred 33 將基因組讀取質量從 fasta.qual 檔案(40、39、38 等)轉換為 ASCII,但無法讓它作業。我正在嘗試通過 s///g 運算子來做到這一點。我將我的品質存盤在一個散列中,我正在嘗試運行以下回圈:
foreach $key (keys %qual) {
$value = $qual{$key};
$qual{$key} =~ s/($value)/$map{$1}/g;
}
%map 包含:
%map = ("0 " => "\!",
"1 " => "\"",
"2 " => "\#",
"3 " => "\$",
"4 " => "\%",
"5 " => "\&",
"6 " => "\'",
"7 " => "\(",
"8 " => "\)",
"9 " => "\*",
"10 " => "\ ",
"11 " => "\,",
"12 " => "\-",
"13 " => "\.",
"14 " => "\/",
"15 " => "0",
"16 " => "1",
"17 " => "2",
"18 " => "3",
"19 " => "4",
"20 " => "5",
"21 " => "6",
"22 " => "7",
"23 " => "8",
"24 " => "9",
"25 " => "\:",
"26 " => "\;",
"27 " => "\<",
"28 " => "\=",
"29 " => "\>",
"30 " => "\?",
"31 " => "\@",
"32 " => "A",
"33 " => "B",
"34 " => "C",
"35 " => "D",
"36 " => "E",
"37 " => "F",
"38 " => "G",
"39 " => "H",
"40 " => "I",);
然而,它改變了這一點:
>FR5ON5F01DQM9C
37 37 37 37 37 37 40 40 40 40 40 40 40 40 40 40 40 35 35 35 40 40 40 40 40 40 40 40 40 40
40 40 40 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 36 36 30 30 30 30
30 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
進入這個:
>FR5ON5F01DQM9C
它發生在哈希中的所有元素。應用 s/// 運算子時我做錯了什么嗎?
目標是將所有內容轉換為 .fastq 檔案。
謝謝!
uj5u.com熱心網友回復:
my $alt = join "|", map quotemeta, sort { length{$b} <=> length($a) } keys %map;
my $re = qr/($alt)/;
$str =~ s/$re/$map{$1}/g;
回想起來,這并沒有照顧到空間。按順序閱讀會更有意義,然后使用
$seq = join "", map $map{$_}, split ' ', $seq;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379336.html
下一篇:如何呼叫這個添加函式
