1

ですから、私は「初心者」であり、最近Perlを介したプログラミングを紹介されましたが、まだこれらすべてに慣れています。使用しなければならない.fastaファイルがありますが、それを開くことができるかどうか、またはいわば「盲目的に」操作する必要があるかどうかはわかりません。

とにかく、私が持っているファイルには、この.fasta形式で書かれた3つの遺伝子のDNA配列が含まれています。

どうやらそれはこのようなものです:

>label
sequence
>label
sequence
>label
sequence

私の目標は、ファイルを開いて読み取るためのスクリプトを作成することです。これは、今のコツをつかんでいますが、各シーケンスを読み取り、各シーケンス内の「G」と「C」の相対量を計算してから、「 m TABで区切られたファイルに、遺伝子の名前と、それぞれの「G」および「C」コンテンツを書き込みます。

誰かがいくつかのガイダンスを提供することができますか?TABで区切られたファイルが何であるかはわかりませんが、実際にコンテンツを表示するために.fastaファイルを開く方法を理解しようとしています。これまで、簡単に開くことができる.txtファイルを使用してきましたが、.fastaは使用できません。

完全に当惑したように聞こえたことをお詫び申し上げます。ご理解のほどよろしくお願いいたします。私はあなたがそこにプロのようではありません!

4

2 に答える 2

0

紛らわしいと思いますが、質問を1つの具体的な問題に限定するようにしてください。 https://stackoverflow.com/faq#questionsを参照してください

「.fasta」ファイルまたは「G」と「C」が何であるかはわかりません..しかし、おそらく問題ではありません。

一般的:

  • 入力ファイルを開く

  • データを読み取って解析します。解析できない奇妙な形式の場合は、http://metacpan.orgでそれを読み取るモジュールを探してください。運が良ければ、誰かがすでにあなたのために難しい部分をやってくれています。

  • 計算しようとしているものは何でも計算する

  • 画面 (標準出力) または別のファイルに出力します。

「タブ区切り」ファイルは、各列がタブ (「\t」) 文字で区切られている列 (Excel と考えてください) を持つファイルです。Googleまたはstackoverflowのクイック検索でわかるように..

于 2012-03-15T12:12:31.797 に答える
0

コマンドラインから使用できる「awk」ユーティリティを使用したアプローチを次に示します。次のプログラムは、そのパスを指定して使用することで実行されますawk -f <path> <sequence file>

#NR>1 means only look at lines above 1 because you said the sequence starts on line 2 
NR>1{
#this for-loop goes through all bases in the line and then performs operations below:
    for (i=1;i<=length;i++)
#for each position encountered, the variable "total" is increased by 1 for total bases        
       total++
    } 
    {
    for (i=1;i<=length;i++)
#if the "substring" i.e. position in a line == c or g upper or lower (some bases are
#lowercase in some fasta files), it will carry out the following instructions:
        if(substr($0,i,1)=="c" || substr($0,i,1)=="C")
#this increments the c count by one for every c or C encountered, the next if statement does
#the same thing for g and G:            
            c++; else
        if(substr($0,i,1)=="g" || substr($0,i,1)=="G")
            g++
    }
    END{
#this "END-block" prints the gene name and C, G content in percentage, separated by tabs       
        print "Gene name\tG content:\t"(100*g/total)"%\tC content:\t"(100*c/total)"%"
    }
于 2014-06-07T18:29:33.470 に答える