ファイル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_ID
file1.csv から抽出します。
awk -F ',' '{print $1}' file1.csv
その後、その周りにループを実行して別のファイルから抽出します。
答え2
Fastaファイルが呼び出され、fasta.fa
CSVファイルが呼び出され、次sequences.csv
のような結果が発生したとします。SAMツール(かなり標準的な生物情報学パッケージ)がインストールされます。
Fastaファイルインデックス:
samtools faidx fasta.fa
抽出したい名前を抽出します
regions.txt
。awk -F, 'NR > 1 { print $1 }' <sequences.csv >regions.txt
ファイルにはシーケンス名があり、抽出するシーケンスの領域を表す形式
region:start-stop
(1行に1つずつ)があります。私はあなたが完全なシーケンスを抽出したいと仮定しているので、それを入れないでください。region
start
stop
start
stop
start
CSVファイルの数を合計として使用するには、次の手順を実行しますstop
。awk -F, 'NR > 1 { printf("%s:%d-%d\n", $1, $2, $3) }' <sequences.csv >regions.txt
シーケンスを抽出して以下を実行します
output.fa
。samtools faidx -c fasta.fa -r regions.txt >output.fa
regions.txt
Fastaファイルにないシーケンス名は空のシーケンスとして出力されますoutput.fa
(samtools
これにも警告が表示されます)。
また見なさい:
- スタック交換生物情報学ウェブサイト