File1の列を一致させてFile2から対応するfastaシーケンスを取得する方法は?

File1の列を一致させてFile2から対応するfastaシーケンスを取得する方法は?

ファイル1のすべてのオブジェクトIDのfastaシーケンスをコピーできるように、ファイルの最初の列のすべての値をファイル2の行テキストと一致させる方法を教えてください。

ファイル1.csvファイル

Object_ID, Length, Assignment
NODE_142_length_92872_cov_11.2497,92872,2005469
NODE_405_length_50717_cov_10.7964,50717,82654
NODE_775_length_33402_cov_18.9306,33402,1147
NODE_1008_length_27630_cov_17.7829,27630,1184

ファイル2 fasta.file

>NODE_1_length_501653_cov_19.284
TGGTGTGAGAGGCGCACCTCGCTAACTTTTCAGTTAGCGAGGCCGTCTACTCGATTAGCT
GTTATGAGCCCGACGAGCTACCAACTGCTCCATCCCGCGATATTGTGATGCAAAGGTAAG
>NODE_142_length_92872_cov_11.2497
ATTAACTACTAAGTTACAAATTTTAGTAGCTGTCCAGTTTAAAGGAAGTATTTCATATTT
TCGCTTACGTTAAATAGGAAAAGCAAGTTCTTTTTTGAGGTACCCAGTGAGTCTGATTTT

結果ファイル

>NODE_142_length_92872_cov_11.2497
ATTAACTACTAAGTTACAAATTTTAGTAGCTGTCCAGTTTAAAGGAAGTATTTCATATTT
TCGCTTACGTTAAATAGGAAAAGCAAGTTCTTTTTTGAGGTACCCAGTGAGTCTGATTTT

ありがとう

答え1

これは次の方法で行うことができます。

for i in `awk -F ',' '{print $1}' file1.csv `; do grep $i fasta.file ; done

ここでは、まず次のようにObject_IDfile1.csv から抽出します。 awk -F ',' '{print $1}' file1.csv

その後、その周りにループを実行して別のファイルから抽出します。

答え2

Fastaファイルが呼び出され、fasta.faCSVファイルが呼び出され、次sequences.csvのような結果が発生したとします。SAMツール(かなり標準的な生物情報学パッケージ)がインストールされます。

  1. Fastaファイルインデックス:

    samtools faidx fasta.fa
    
  2. 抽出したい名前を抽出しますregions.txt

    awk -F, 'NR > 1 { print $1 }' <sequences.csv >regions.txt
    

    ファイルにはシーケンス名があり、抽出するシーケンスの領域を表す形式region:start-stop(1行に1つずつ)があります。私はあなたが完全なシーケンスを抽出したいと仮定しているので、それを入れないでください。regionstartstopstartstop

    startCSVファイルの数を合計として使用するには、次の手順を実行しますstop

    awk -F, 'NR > 1 { printf("%s:%d-%d\n", $1, $2, $3) }' <sequences.csv >regions.txt
    
  3. シーケンスを抽出して以下を実行しますoutput.fa

    samtools faidx -c fasta.fa -r regions.txt >output.fa
    

regions.txtFastaファイルにないシーケンス名は空のシーケンスとして出力されますoutput.fasamtoolsこれにも警告が表示されます)。

また見なさい:

関連情報