編集とソリューション
私の元の質問の表現が不都合で、車輪を再発明しようとしたので、今私の質問に答えています(他の人に役立つかもしれません)。
gff2fastaは私が必要とするタスクを正確に実行するためのツールです。つまり、完全なゲノム(FULLGENOME.fastaというfasta形式の巨大なファイル)から与えられたDNA断片を抽出することです。
目的のフラグメントがどこにあるかを知っている場合は、TEST.gffというファイルを作成して、gff2fastaフラグメント(ここではsca_5_chr5_3_0)と開始(ここ:2390621)と終了(ここ:2391041)のスキャフォールディングを指定します。たとえば、
sca_5_chr5_3_0 JGI CDS 2390621 2391041 . + 0 name "e_gw1.5.88.1"; proteinId 40463;
それではただ走らなければなりません。
gff2fasta.pl -gff TEST.gff -fasta FULLGENOME.fasta -out test
その後、gff2fasta は TEST.gff から情報を取得し、次の test というファイルに目的のビットを出力します。
>sca_5_chr5_3_0_2390621_2391041_F
ATGACGACCCGCGCACCCAAAGACACATACGCTCAGCCCGACTATGAGGAGGCTCACCTAGCGACGTTTGCAGCCCCAAA
AGGCTACCCTATCGAGTCTATGCTACCCCCTAGCGTGAAGAGGGAGACCTTTGAACAGGCCCTAGCCGAGTTTACCGACG
CTATCGGCAAAGATTATGTCTTTATCGGCGATGCTCTCTCTCACTACATCGATCCCTACGACATCTATATCGATGATAGT
GAGAGAAGGAGGATGCCGAGCGCGGCTGTTTGGTACGTAACGCGGCACCCATCGAAACCTAGCAGCACTGACAAGTTTCC
GCGTCTAGTCCCTCTTCGCTCGAGGAAGCTAAGCAGGCTCTCAAGGTTGCGAACAAATACGGCATTCCGATCTGGGCATT
TTCCAGAGGCAAGAACCTGGG
助けてくれたterdonと他の人に感謝します!
-------------
これは、より多くの情報と詳細を含む対応する質問の続きです。unix:ファイルから文字10〜80をインポートする
ほぼすべてが来たと思いますが、まだ助けが必要です。
できるだけ明確に説明しようとしていますが、これは非常に技術的な質問であることを知っているので、より明確に説明できる部分があれば教えてください!
私が持っているファイルは3つです。
管理者注:ファイルをアップロードできますか?どうすればいいのかわかりません...
一つ文書(N_haematococca_1.fasta)以下から名前を抽出する必要があります。
head -1 N_haematococca_1.fasta | cut -f4 -d'|'
この場合、名前は次のようになります。
e_gw1.5.88.1
Q1:上記のコードはうまく機能しますが、後で使用できる変数に名前(e_gw1.5.88.1)を保存するのに問題があります...
その名前を変数に保存したいと思います。名前を付けてみましょう。
firstline
ㅏ第二ファイル(Necha2_best_models.gff)、この名前が表示されるすべての行が必要です。
grep -ir "e_gw1.5.88.1" --include="Necha2*.gff" > Necha2_in_genome.list
ただし、名前付き変数の場合:
grep -ir $firstline --include="Necha2*.gff" > Necha2_in_genome.list
これは「e_gw1.5.88.1」を使って動作します。
ここで生成されたファイルは、私がカットしたいDNA断片の名前(sca_5_chr5_3_0)と私が望む部分(グリフ2390621からグリフ2392655まで)を示します。 3番目のファイルから正しいビットを取得するには、この情報が必要です。
a=(`awk -F '\t' '{print $4}' Necha2_in_genome.list`)
startDNA=${a[1]}
endDNA=${a[${#a[@]}-1]}
#add 1000 or other number, depending on the problems with the gene
correctedstartDNA=$(($startDNA-1000))
correctedendDNA=$(($endDNA-1000))
中第三この例では、次のキーワード(sca_5_chr5_3_0)の後ろの一部を切り取りたいと思います。
Kamarajとhschouのおかげで、これには部分的な解決策がありました。
cat Necha2_scaffolds.fasta | sed -n -e '/sca_5_chr5_3_0/,$p' | grep -v '^>' | tr -d '\n'|awk -v start="${correctedstartDNA}" -v end="${correctedendDNA}" '{print substr($0,start,end)}' RS= Necha2_scaffolds.fasta
ただし、より小さい数字でデバッグする場合:
cat Necha2_scaffolds.fasta | sed -n -e '/sca_5_chr5_3_0/,$p' | grep -v '^>' | tr -d '\n'|awk -v start=10 -v end=20 '{print substr($0,start,end)}' RS= Necha2_scaffolds.fasta
私は次のような結果を得ます。
r1_1_0
CCTTATCCTAGCG
nmapped
CTTATATATTAT
nmapped
TAAAAGGAGTTA
unmapped
TCTTATATAAA
unmapped
AATCTTAAGAA
RSオプションは無視され、10〜20の特定の行だけが印刷されるようです。なぜこの行が選択されたのかわかりません。
sca_5_chr5_3_0
ファイルに一度だけ表示されます。
他の名前もあります。
>sca_66_unmapped
>sca_67_unmapped
など
私は178個のゲノムからこの情報を取得する必要がありますが、それらは巨大なファイルであり、手動検索はオプションではありません。
ファイルの外観は次のとおりです。
N_haematococca_1.fasta(ファイル1)は一般的なfastaファイルです。
>jgi|Necha2|40463|e_gw1.5.88.1
MTTRAPKDTYAQPDYEEAHLATFAAPKGYPIESMLPPSVKRETFEQALAEFTDAIGKDYVFIGDALSHYI
DPYDIYIDDSERRRMPSAAVCPSSLEEAKQALKVANKYGIPIWAFSRGKNLGYGGPSARVNGSVAFDLHR
Necha2_best_models.gff(ファイル2)は次のようになります(もっと長い):
sca_5_chr5_3_0 JGI exon 2390621 2390892 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2390621 2390892 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 1
sca_5_chr5_3_0 JGI start_codon 2390621 2390623 . + 0 name "e_gw1.5.88.1"
sca_5_chr5_3_0 JGI exon 2390949 2391041 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2390949 2391041 . + 2 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 2
sca_5_chr5_3_0 JGI exon 2391104 2391311 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2391104 2391311 . + 2 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 3
sca_5_chr5_3_0 JGI exon 2391380 2392367 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2391380 2392367 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 4
sca_5_chr5_3_0 JGI exon 2392421 2392485 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2392421 2392485 . + 1 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 5
sca_5_chr5_3_0 JGI exon 2392541 2392657 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2392541 2392657 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 6
sca_5_chr5_3_0 JGI stop_codon 2392655 2392657 . + 0 name "e_gw1.5.88.1"
sca_5_chr5_3_0 JGI exon 2396205 2396730 . + . name "e_gw1.5.227.1"; transcriptId 41333
sca_5_chr5_3_0 JGI CDS 2396205 2396730 . + 0 name "e_gw1.5.227.1"; proteinId 41333; exonNumber 1
sca_5_chr5_3_0 JGI start_codon 2396205 2396207 . + 0 name "e_gw1.5.227.1"
Necha2_scaffolds.fasta(ファイル3)は次のとおりです(より長いGATCビット...)。
>sca_8_chr1_1_0
CCTTATCCTAGCGAGGATTAAGGTCCTCGAAAAGAAAGGCAAAGATATAAAGGTAATATAATAGAAGATT
AAGGTATTCTAAGTAAAGGTTATAAAGAAATAAAATAAGAAGAATATTTATAGGCTAAGAAAGACCCCCC
TAAAGGTTAAGGACTTAATATTAAGATTTAATATTCCCTAATTAATTAATATATTAATAAAAATAAAGAT
>sca_5_chr5_3_0
ATGACCACTATATCCATCGGCACAACGGCGTTAATCACATTTGGGTCTGCAATTTTCTGTTTTTGCGGTT
TTCATGTCGGTTCCAACGGGCGGAGCTCGACCAAGAATTACATACATTACGTGGCGCGAGCGCTCTACCC
TCTGGGACATGAAGGGGACGAGGAGTCTGGAGAGGTTCATGTTTGGAATCACAGCATGGTACTGCGGCAC
CCTACCTTGGTCATTCGTTGGTCTCTTTTTTTCAGGGTATGGACGCAGACTCTCAGACTCGCTCTGCTTT
>sca_67_unmapped
CTACAGGAAGCCCTAGAGGCCCTGCAAGACCTTCCAAAGCAGCACTCTTTGCTTCTTCTTAGAGGCAGTA
TCCAGCTTCTTCTAAGGCACCTCCAGAGGCAGCTAGACCCAACCGGGCTAAAAGACCTTTGGGAAGAGGC
TAATACCCTTATAAGAGAGGCTATTATAGCCCTAGTGGCTAGAAGCCCTAGTGAGAGCCCTAAAGAGCCT
AATTCAAGCCTTATAGCCCTTCCAGTCAGAGAGGGAGGCCTAGGAATACCCTTACACAAGGACCTAGCCC
予想最終出力:> sca_5_chr5_3_0キーワードの後の1ビットテキスト。
TTCATGTCGGTTCCAACGGGCGGAGCTCGACCAAGAATTACATACATTACGTGGCGCGAGCGCTCTACCC
TCTGGGACATGAAGGGGACGAGGAGTCTGGAGAGGTTCATGTTTGGAATCACAGCATGGTACTGCGGCAC
CCTACCTTGGTCATTCGTTGGTCTCTTTTTTTCAGGGTATGGACGCAGACTCTCAG