簡體   English   中英

用正則表達式檢查有效的DNA序列

[英]perl check for valid DNA sequence with regex

我想編寫一個子程序,它將FASTA文件作為參數並打印出序列(沒有標題)。 子程序應檢查序列是否包含除DNA鹼基(A,T,G,C)之外的任何其他字母。

這是我的代碼:

scalar_sequence ("sequence.fa");

sub scalar_sequence {
    my $file = $_[0];
    my $sequence;
    open (READ, $file) || die "Cannot open $file: $!.\n";
    while (<READ>){
        if (/^>/){
            next;
        } 
        if (/^[ATCG]/){
            $sequence .= $_;
        } else {
            die "invalid sequence\n";
        }
    }
    print $sequence, "\n";
}

當我運行此代碼時,我得到'無效序列'作為輸出。 當我離開'else'時,即使序列包含另一個字母,它也會打印出序列。

有什么問題?

提前致謝!

問題在這里/^[ATCG]/這一行應該是/^[ATCG]+$/

你的代碼應該是

chomp;  
next if (/^>/); # skip for header
next if(/^\s*$/);  #skip for empty line
if (/^[ATCG]+$/){
        $sequence .= $_;
    } else {
        die "invalid sequence\n";
    }

您只考慮以A或T或G或C開頭的行。您應該擴展匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM