This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Parsing large sequence file into per-sample files after barcodes and adapters have been removed

I have a sequence file, seqs.fas where each sequence has a name like HKRLXUA01AIJQ5|48. The letters are a random unique sequence code, and the number after the | symbol is the sample identifier. Here are 3 sequences from this file:

>HJUCUKY01BZHPG|01
AGATCCGTAGGTGAACCTGCGGAAGGATCATTACCGAGTATTTTTGGGTAAACCGAAAAC
TCCCACCCTTGTTTCAAGTTTTGTTGCTTCGGCAGGCCTACGGTTGATTGTAAAATGGGC
TAGTACCTGCCGAAGAACCACACACTTTTGATTTGTTGTAATATTATAAAATTAAAAACA
AAAACTTTCAACAACGGATCTCTTGGTCCTGGCATCGATGAAGAACGCAGCGAAATGCGA
TAAGTAATGTGAATTGCAGAATTTTGTGAATCATCGAATCTTTGAGCGCACATTGCGCCC
TCTGGTATTCCGGGGGGCACACCTGTTCGAGCGCCGTTGACATACTAAGGCCCAGCCTTG
TGTTGGCCCTTCCCGCTAGGGATCGGTCGAAAACTATGCAGATCCCAGAAAATCGGAAGC
ATACGCAATAGTATAGCGGAAGACGCTCTGAATCTCGATTATCAACCAGTTTGGCCTCGG
ATCAGGTGGGGATACCCGCTGAACTTAAGCATATCAATAAGCGGAGGAGTG
>HJUCUKY01BZ3TS|01
AGATCCGTAGGTGAACCTGCGGAAGGATCATTAACAAGTCCTGCTGTGCGTGCGGAGCAG
TCTGCATGCGCACATCCGTTCCATGTGCCCCGCACATGACATTTCTGCGAATCGTCTGAT
TGTCGCTCTTCAAACCATACAAACTTTTAACAATGGATCTCTAGGCTCTTGCATCGATGA
AGAACGCAGTGAAGTGCGAAAAGTAATGCGATTTGCATGCTCTGTGAGTCATCGAATCTT
TGAACGCATATGGCACCTGCCAGCCCTGCTGGAAGGTATGCCTGTTTGAGAATCACACTA
TCACTGATCCGATTGCACCACGTGCAGTTGGTCGACATGGGCCTTCAGCACTGATCGCCT
CGAATTGCTCGCGATCGTCGTGATATGACAGGGTGTGGCAGCGATGCCGTCCGGTGCTGT
CGACGATCAACCCGTG
>HKRLXUA01AIJQ5|48
AGATCCGTAGGTGAAACCCTGCGGAAGGATCATTAAAAGAGAAAAGAGCGCCTCGCGGCC
TCGCCCTCTTCAACCACTGTGTACCGAATCTCCGTCATCTTTGCGGGTCCGGCGCCCCAG
GCGCCGCCCGCGGAGAGCACCCAAAAACATTCAGTTTGATGAACGTCTGTTTACAATTTA
AAAAGAACAACTTTTAACAATGGATCTCTTGGTTCCGGCATCGATGAAGAACGCAGCGAA
ATGCGATAGCTAGTGTGAATTGCAGATTTCAGTGAATCATCGAGTCTTTGAACGCACATT
GCGCCCCTTGGTATTCCTCGGGGCATGCCTATTCGAGCGTCGTTTCGACCCTCGAGCGCA
AGCTTGGTGTTGAGGGATGCGGCGGCCCCCCGGGGCAGCGGCACCCTTCGAATCCATCGG
CGGCGGCAGCATGGCCCGGACGCAGCGAAATGCGCTCTAGCTCATGCAGCAGCCCGCCGG
AAACTCACCGCCTACGCGGCACTACGC

I would like to break this into per sample sequence files, named 1.fas, 48.fas, etc. Where the file name comes from the label after the | character in the sequence name. Any idea how to do this?

demultiplexing

1 answer

$ awk -F '|' '/^>/ {F=sprintf("%s.fas",$2);} {print >> F;}' in.fa

Log in to answer this question.