Package: elfragmentador
ElFragmentadorElFragmentadorThis repository attempts to implement a neural net that leverages the transformer architecture to predict peptide
properties (retention time and fragmentation).UsageCurrently the documentation lives here:https://jspaezp.github.io/elfragmentador/Please check outThe Quickstart guidefor usage instructions.Why transformers?Because we can... Just kiddingThe transformer architecture provides several benefits over the standard approach on fragment prediction (LSTM/RNN). On the training side it allows the parallel computation of whole sequences, whilst in LSTMs one element has to be passed at a time. In addition it gives the model itself a better chance to study the direct interactions between the elements that are being passed.On the other hand, it allows a much better interpretability of the model, since the 'self-attention' can be visualized on the input and in that way see what the model is focusing on while generating the prediction.Inspiration for this projectMany of the elements from this project are actually a combination of the principles shown in thePrositpaperand theSkyline posteron some of the elements to encode the peptides and the output fragment ions.On the transformer side of things I must admit that many of the elements of this project are derived fromDETR:  End to end detection using transformersin particular the trainable embeddings as an input for the decoder and some of the concepts discussed about it onYannic Kilcher's Youtube channel(which I highly recommend).Why the name?Two main reasons ... it translates to 'The fragmenter' in spanish and the project intends to predict fragmentation. On the other hand ... The name was free in pypi.Resources on transformersAn amazing illustrated guide to understand the transformer architecture:http://jalammar.github.io/illustrated-transformer/Another amazing guide in video format exlpaining the architecture "Illustrated Guide to Transformers Neural Network: A step by step explanation":https://www.youtube.com/watch?v=4Bdc55j80l8Full implementation of a transformer in pytorch with the explanation of each part:https://nlp.seas.harvard.edu/2018/04/03/attention.htmlOfficial pytorch implementation of the transformer:https://pytorch.org/docs/stable/generated/torch.nn.Transformer.htmlHow fast is it?You can check how fast the model is in you specific system.
Right now the CLI tests the speed only on CPU (the model can be run in GPU).Here I will predict the fasta file for SARS-COV2poetryrunelfragmentadorpredict--fastatests/data/fasta/uniprot-proteome_UP000464024_reviewed_yes.fasta--nce32--charges2--missed_cleavages0--min_length20--outfoo.dlib...
 99%|█████████▉| 1701/1721 [00:14<00:00, 118.30it/s]
...~100 predictions per second including pre-post processing and writting the enciclopeDIA library.
On a GPU it is closer to ~1000 preds/secHow big is it?I have explored many variations on the model but currently the one distributed is only ~4mb. Models up to 200mb have been tried and they don't really give a big improvement in performance."Common" questionsWhat scale are the retention times predicted.Out of the model it uses a scaled version of the Biognosys retention time
scale, so if using the base model, you will need to multiply by 100 and then
you will get something compatible with the iRT kit.Is it any good?Well ... yes but if you want to see if it is good for you own data I have
added an API to test the model on a spectral library (made with spectrast).
Just get a checkpoint of the model,
run the command:elfragmentador_evaluate {your_checkpoint.ckpt} {your_splib.sptxt}TODO add some benchmarking metrics to this readme ...Crosslinked peptides?NoETD ?NoCID ?NoGlycosilation ?NoNegative Mode ?NoNo ?Not really ... I think all of those are interesting questions but
AS IT IS RIGHT NOW it is not within the scope of the project. If you want
to discuss it, write an issue in the repo and we can see if it is feasible.AcknowledgementsPurdue Univ for the computational resources for the preparation of the data (Brown Cluster).Pytorch Lightning Team ... without this being open sourced this would not be posible.Weights and Biases (same as above).