새로운 헤더를 사용하여 multifasta 파일을 다른 파일로 분할

새로운 헤더를 사용하여 multifasta 파일을 다른 파일로 분할

입력 파일:131751_pphA.fasta

>ID:NDNDCOEC_02118 |[Genus species]|strain|PANS_1_2_annot.gbk|pphA|855|NODE_3_length_422941_cov_112.146787422941(422941):170566-171420:1 ^^ Genus species strain strain.|neighbours:ID:NDNDCOEC_02117(1),ID:NDNDCOEC_02119(1)|neighbour_genes:hypothetical protein,ntaA| | aligned:1-284 (284)
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP
>ID:KJDCINFB_03194 |[Genus species]|strain|PNA_1_5_annot.gbk|pphA|855|NODE_5_length_527105_cov_93.286545527105(527105):274765-275619:1 ^^ Genus species strain strain.|neighbours:ID:KJDCINFB_03193(1),ID:KJDCINFB_03195(1)|neighbour_genes:hypothetical protein,ntaA| | aligned:1-284 (284)
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP
>ID:LBFHNJKP_02554 |[Genus species]|strain|PANS_1_6_annot.gbk|pphA|855|NODE_4_length_527158_cov_95.108790527158(527158):251540-252394:-1 ^^ Genus species strain strain.|neighbours:ID:LBFHNJKP_02553(-1),ID:LBFHNJKP_02555(-1)|neighbour_genes:ntaA,hypothetical protein| | aligned:1-284 (284)
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP
>ID:GPMHBDBL_03046 |[Genus species]|strain|PNA_200_2_annot.gbk|pphA_2|855|NODE_4_length_530984_cov_86.347264530984(530984):275036-275890:1 ^^ Genus species strain strain.|neighbours:ID:GPMHBDBL_03045(1),ID:GPMHBDBL_03047(1)|neighbour_genes:hypothetical protein,ntaA| | aligned:1-284 (284)
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP

원하는 출력: 4개의 개별 출력 파일:

PANS_1_2_pphA.fasta

>PANS_1_2_pphA
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP

PNA_1_5_pphA.fasta

>PNA_1_5_pphA
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP

PANS_1_6_pphA.fasta

>PANS_1_6_pphA
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP

PNA_200_2_pphA_2.fasta

>PNA_200_2_pphA_2
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP

multifasta 입력 파일( 131751_pphA.fasta)에는 4개의 fasta 시퀀스라는 제목이 포함되어 있습니다. 위의 균주를 기반으로 하는 이름과 헤더가 있는 개별 fasta 시퀀스인 4개의 출력 파일이 필요합니다. 예를 들어, 입력 fasta의 헤더 중 하나에는 |strain|PANS_1_2_annot.gbk|pphA|. 출력 파일의 이름은 이어야 하며 PANS_1_2_pphA.fasta헤더는 이어야 합니다 >PANS_1_2_pphA.

마찬가지로
PNA_1_5_pphA.fasta헤더 >PNA_1_5_pphA
PANS_1_6_pphA.fasta가 있는 헤더 >PANS_1_6_pphA
PNA_200_2_pphA_2.fasta가 있는 다른 출력 파일>PNA_200_2_pphA_2

다음 코드를 시도했습니다.

awk -F "|" '/^>/ {close(F); ID=$1; gsub("^>", "", ID); F=ID".fasta"} {print >> F}' 123764_pphA.fasta 

다음 이름의 fasta 출력 파일을 생성합니다.

ID:BKKCPFME_02840 .fasta  ID:EKPOMJAO_03222 .fasta  ID:HEIIBHGJ_01315 .fasta  ID:KBMOKBJB_03162 .fasta  ID:LECGKDGM_03166 .fasta

답변1

awk -F'|' '
    NR%2{ close(fileName); hdr=$4 $5; sub("annot.gbk", "", hdr); fileName=hdr".fasta";
          print ">"hdr >fileName; next; };
        { print >fileName; }' infile

답변2

awk주어진 예제에서 파일을 두 줄마다 분할해야 한다고 가정하면 비 솔루션입니다.


# split the file every 2 lines and save in files prefixed FOO.
split -l2 131751_pphA.fasta FOO.

# loop over the files
for f in FOO.*; do 
  # `awk` and `sed` to get the pattern to use as file name and first line, i.e "PANS_1_2_pphA"
  n=$(awk -F'|' '{ print $4$5 }' "$f" | \
    sed 's/annot\.gbk//')

  # copy the 2nd line of the file into a new file named as pattern+.fasta
  sed -n 2p "$f" > "$n.fasta"

  # add the pattern in the created file
  sed -i "1i>\\$n" "$n.fasta"

  # remove the splited files
  rm "$f"
done

$ cat PANS_1_2_pphA.fasta 
PANS_1_2_pphA
MIKKLIAEKGTLIFIEAHNPLSALIASKAEQTNSEGRIVKFDGIWSSSLTDSASRGIPDNETLALSSRLENIADIRNVTDMPIIMDADTGGKPEHFSYYVKRMINNGVNGVIIEDKTGLKKNSLFGTEVEQTLADINDFSEKIKRGKSAVYIDDFMIIARLESLIAGFDVEHALERADAYVEAGADGIMIHSCKKTPDEVFLFSTKFRKKYPSVPLICVPTTYSATSNRELSEAGFNVIIYANHMLRAAYKAMENVSKEILRYGRTAEIEKSCMSVKEIISLIP


답변3

awk -F '|' '
    /^>/ {
        close(out)
        head = $4
        sub("_[^_]*$","_" $5, head)
        $0 = ">" head
        out = head ".fasta"
    } { print >out }' 131751_pphA.fasta

이것은비슷한도착하다αГsнιn의 답변그러나 시퀀스당 두 개 이상의 라인이 허용됩니다(일반 FastA 파일에서는 가능함).

_또한 약간 다른 방식으로 헤더 이름을 다듬었습니다 . FastA 헤더 행의 네 번째 구분 필드에서 파일 이름의 마지막(?) 뒤의 모든 내용을 다듬고 다섯 번째 필드를 추가했습니다..gbk|

관련 정보