The question of how one can extract the longest isoform per gene from a multi-fasta file has been answered expertly in this thread: How can longest isoforms (per gene) be extracted from a FASTA file?
I wonder: how can the python script "filter.py" by Devon Ryan, that is marked as best answer, be modified so that it extracts the N longest isoform sequences per gene instead of only the single longest isoform?
Any help on this to a python novice is very much appreciated.
Here is an example of how the data looks (two genes with 5 isoformes each, and I need the 3 longest isoforms for each gene):
>Animal1|gene000001_1
TTLQLLNELVLLLHYTTLLLHTKKTKESTINNYFKQKEQK
>Animal1|gene000001_2
CYYYTTQHYYYIQKKQKNLQSTITSNKKNKNKHAK
>Animal1|gene000001_3
ARDMLDYTTTTKRVSATTTLHNTTTTYKKNKRIYNQQLLQTKRTKISMQNKNLNQINYKK
LQETTEKHAK
>Animal1|gene000001_4
HHAVNFQPMSEATGIYLNSTEIRNSLLQYSSWSWFTFHTCKLWNVTF
>Animal1|gene000001_5
EILCYSIPPGVGLLFTPVNFGMLRSKLIKVRILDIINFNCSLLICLPPYLFQIDVGEDKD
DPVVEIVLYLACSI
>Animal1|gene000002_1
TTLQLLNELVLLLHYTTLLLHTKKTKESTINNYFKQKEQK
>Animal1|gene000002_2
CYYYTTQHYYYIQKKQKNLQSTITSNKKNKNKHAK
>Animal1|gene000002_3
ARDMLDYTTTTKRVSATTTLHNTTTTYKKNKRIYNQQLLQTKRTKISMQNKNLNQINYKK
LQETTEKHAK
>Animal1|gene000002_4
LCSAVARQKTKSRKYDATVDTCFSNIKININVLSFSLIVNPKYSKVSYQYGTNDAFRKFF
ITSRSLR
>Animal1|gene000002_5
ETLEYFGLTINEKESTLILILMLLKQVSTVASYFLDLVFCLATALHS
As output, I would like to have a fasta file like the following:
>Animal1|gene000001_5
EILCYSIPPGVGLLFTPVNFGMLRSKLIKVRILDIINFNCSLLICLPPYLFQIDVGEDKD
DPVVEIVLYLACSI
>Animal1|gene000001_3
ARDMLDYTTTTKRVSATTTLHNTTTTYKKNKRIYNQQLLQTKRTKISMQNKNLNQINYKK
LQETTEKHAK
>Animal1|gene000001_4
HHAVNFQPMSEATGIYLNSTEIRNSLLQYSSWSWFTFHTCKLWNVTF
>Animal1|gene000002_3
ARDMLDYTTTTKRVSATTTLHNTTTTYKKNKRIYNQQLLQTKRTKISMQNKNLNQINYKK
LQETTEKHAK
>Animal1|gene000002_4
LCSAVARQKTKSRKYDATVDTCFSNIKININVLSFSLIVNPKYSKVSYQYGTNDAFRKFF
ITSRSLR
>Animal1|gene000002_5
ETLEYFGLTINEKESTLILILMLLKQVSTVASYFLDLVFCLATALHS