reason I love python nailed it!
Hi there, I got a fasta file which looks like below, and I also have a list of genes (DDB0234326, DDB0182333, etc). Could someone give me some suggestions on how to extract the sequences according to the gene list?
Thanks a lot for your help in advance!
>DDB0190058|JC1V2_0_00886|1|-1|2161867|2162448
ATCTAAAAAAAAAAAATATCAAAAATTTAAGAGTTTTAATAAATTATATGGATAATCATTATTATTATATTTTTTTTTTT
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTGATTTATATGTGGTATTTAATATTTAAAAAATATTTTGTTTGTTTTTATTT
GTTTTTTGTTATTTTTTTATCCTTTTATCTTTTTATTTTTGTTTTTTTTTTTAGTTCTAATTTTATCTTTTTTCTTTCTT
TTGTTATTTTTTATAAAAAAAAAAAATAAAAATAAAAATAAAAAAAAAATAAAAATAAAAAAAAAATAAAAATAAAAATA
AAAATTTGAAAAAAAAAATAAAAATTATTTCAAATTTGCTATTATTTCAAATATTCCACGAAATCATGAAATAATCAAAA
ATATCTCAAGTGATTTTTTTTTTTTTGTTTTGCTGAAAAAAAAAAATTATTTTTACTTTTTTTTTTTTATTTTCATTTTT
CTTTTTTTAAAATAATAATAGTAGTAAAAGAAATAAAAATAAAAAAATAAAAAAAAAAATAACCATAAACAAATAATAAT
AATAATAAAAAAATTTATTTCC
>DDB0190067|JC1V2_0_00895|1|-1|2192202|2192651
ACTGGTTATAAAAAAAAAAAAAAAAAAAAACAGAATGATTACATTCATTTTTTTTTTTTTATATCATTTTGTGTATTTTG
ATTACTCTATATTTATGTTATTTTATTCAATAAAAAAAAATTCCATTATTTTTTTTAGAAATTTAAGTTATTATTTTTTT
TTTTTTTTTTTGTATTTTCATTGGTTGGTTGGTTGTTTTATTAATTTTTAAAATGAGATTTTAACTGAAAAAAAAAAAAA
AAAATATCTTTTCTTCGATTTGCATTATAATTTAATTTTTTTTTTTTTTTTTTTTTATTTTTTTTAAATTTTTCTTGATT
TTGGGAGAGATTTATGATTAAATTTAATTTTTAATTTTTTTTTTTTTTTTTTGATGATAATTAAATTTTTTTTTACAATT
TATAAAAAAAAAAAAAAACTATTTATTTATTATAAAAAAAAAATAAAAAA
>DDB0190069|JC1V2_0_00897|1|1|2193205|2194305
TTTTTTTTTTTTAATGAATGAAATTTTTTTTTTTTATGATTTAAATAAAAATTTAATTTTACTATAATCAAAATAAAAAT
AAATAAAAAAAACTAAATAAAATAAATTTAAAATAGATCACCCAATACTTTAGTGAATATTTTTTTTTTTTTTTTTTTTT
TTAAAAAATAATTTGTTTTATTTTAATTTAATTTTTTTGTTTTGTTAATTTTATCACAAATAAATGTACAACAAAATAAC
ACCACTTTTTTCTGTGCACACCTTACCAAATTAAATGAAAATTACAAAAAGGGAAGAAAATAACAGTTTGTTAAAAAAAA
ATATATATATTTTAAAATTTAATTATTATTTTTTTTTTCCTTTTTGTTCCATTTTAATATTATTTTTTATATCCAATTCA
2 answers
There are many ways do get sequences from a FASTA file. Some (like the Kent utility) are more efficient than others (reading all sequences into memory and writing them back out). I made a Python library that's designed to be efficient (creates and operates on the same index .fai files that samtools faidx uses), has a Python API similar to a dict object, and has a command-line utility (faidx) that covers most of the common FASTA operations.
When I die I will stop telling people they should use it.
$ pip install pyfaidx
$ dos2unix gene_list.txt
$ faidx -d '|' genes.fasta $(tr '\n' ' ' < gene_list.txt) > selected_genes.fasta
This splits the headers in your FASTA file on the "pipe" (-d '|') character so that your gene list doesn't have to be an exact match, and converts your gene list to arguments to pass into faidx. You could also do this in a bash loop:
$ while read gene; do
faidx -d '|' genes.fasta $gene >> selected_genes.fasta;
done < gene_list.txt
Here’s my general purpose fasta extracting script: (you’ll need Biopython)
Log in to answer this question.
Hands down the fastest method to extracts records from a file using a list of ID''s: C: Retrieve a subset of FASTA from large multi-FASTA file
Thread linked here has multiple other options.
Hello bright602!
We believe that this post does not fit the main topic of this site.
This question has been answered multiple times already
For this reason we have closed your question. This allows us to keep the site focused on the topics that the community can help with.
If you disagree please tell us why in a reply below, we'll be happy to talk about it.
Cheers!