| | --- |
| | language: |
| | - en |
| | tags: |
| | - biology |
| | - dna |
| | - genomics |
| | - metagenomics |
| | - classifier |
| | - awd-lstm |
| | - transfer-learning |
| | license: mit |
| | pipeline_tag: text-classification |
| | library_name: pytorch |
| | --- |
| | |
| | # LookingGlass Oxidoreductase Classifier |
| |
|
| | Classifies whether a DNA read originates from an oxidoreductase (EC number 1.-.-.-) with 82.3% accuracy. |
| |
|
| | This is a **pure PyTorch implementation** fine-tuned from the LookingGlass base model. |
| |
|
| | ## Links |
| |
|
| | - **Paper**: [Deep learning of a bacterial and archaeal universal language of life enables transfer learning and illuminates microbial dark matter](https://doi.org/10.1038/s41467-022-30070-8) (Nature Communications, 2022) |
| | - **GitHub**: [ahoarfrost/LookingGlass](https://github.com/ahoarfrost/LookingGlass) |
| | - **Base Model**: [HoarfrostLab/lookingglass-v1](https://huggingface.co/HoarfrostLab/lookingglass-v1) |
| |
|
| | ## Citation |
| |
|
| | ```bibtex |
| | @article{hoarfrost2022deep, |
| | title={Deep learning of a bacterial and archaeal universal language of life |
| | enables transfer learning and illuminates microbial dark matter}, |
| | author={Hoarfrost, Adrienne and Aptekmann, Ariel and Farfanuk, Gaetan and Bromberg, Yana}, |
| | journal={Nature Communications}, |
| | volume={13}, |
| | number={1}, |
| | pages={2606}, |
| | year={2022}, |
| | publisher={Nature Publishing Group} |
| | } |
| | ``` |
| |
|
| | ## Model |
| |
|
| | | | | |
| | |---|---| |
| | | Architecture | LookingGlass encoder + classification head | |
| | | Encoder | AWD-LSTM (3-layer, unidirectional) | |
| | | Classes | 2 classes: not_oxidoreductase, oxidoreductase | |
| | | Parameters | ~17M | |
| | |
| | ## Installation |
| | |
| | ```bash |
| | pip install torch |
| | git clone https://huggingface.co/HoarfrostLab/LGv1_OxidoreductaseClassifier |
| | cd LGv1_OxidoreductaseClassifier |
| | ``` |
| | |
| | ## Usage |
| | |
| | ```python |
| | from lookingglass_classifier import LookingGlassClassifier, LookingGlassTokenizer |
| |
|
| | model = LookingGlassClassifier.from_pretrained('.') |
| | tokenizer = LookingGlassTokenizer() |
| | model.eval() |
| | |
| | inputs = tokenizer(["GATTACA", "ATCGATCGATCG"], return_tensors=True) |
| |
|
| | # Get predictions |
| | predictions = model.predict(inputs['input_ids']) |
| | print(predictions) # tensor([class_idx, class_idx]) |
| | |
| | # Get probabilities |
| | probs = model.predict_proba(inputs['input_ids']) |
| | print(probs.shape) # torch.Size([2, 2]) |
| | |
| | # Get raw logits |
| | logits = model(inputs['input_ids']) |
| | print(logits.shape) # torch.Size([2, 2]) |
| | ``` |
| | |
| | ## License |
| | |
| | MIT License |
| | |