kuroの覚え書き

96の個人的覚え書き

multi fastaファイルを1遺伝子ごとのファイルに分割するには

multi fastaファイルを1個ずつのfastaに分割したい。
まずはfastaのseq部分の改行をなくす

$ awk -v ORS= '/^>/ { $0 = (NR==1 ? "" : RS) $0 RS } END { printf RS }1' fasta.txt > fasta_awk.txt

次にfastaを2行ごとに分割。多数のファイルが同じ階層にできるので、対象のmultifastaファイルと共に新しいフォルダに入れておく。

$ split -l 2 fasta_awk.txt gene_

これでgene_aaのようなファイルが出力されるので

#!/bin/bash

for file in gene_*; do
  firstline=$(cat "$file" | head -1 | sed -e 's/\//-/g')
  filename=${firstline#>}
  [ -n "$filename" ] && [ ! -e "${filename}.txt" ] &&
  mv "$file" "${filename}.fasta"
done

こういうスクリプトで1行目の>{trasscript_ID}から>を除いたIDを取得して、{transcript_ID}.fastaというファイル名に置き換えてやる。