Download modeling.py from vanvalenlab/kinbert_v2_long: direct link, hf CLI and curl.
- Browser
- Download file 1.43 kB
-
https://huggingface.co/vanvalenlab/kinbert_v2_long/resolve/main/modeling.py
- Command line
-
hf download hf://vanvalenlab/kinbert_v2_long/modeling.py
-
curl -L -o modeling.py https://huggingface.co/vanvalenlab/kinbert_v2_long/resolve/main/modeling.py
1.43 kB
| from transformers import PreTrainedModel, PretrainedConfig | |
| import torch | |
| import torch.nn as nn | |
| from tape import ProteinBertForSequenceClassification, TAPETokenizer | |
| class KinaseSubstrateConfig(PretrainedConfig): | |
| model_type = "kinase_substrate_bert" | |
| def __init__( | |
| self, | |
| tape_model_name="bert-base", | |
| num_labels=2, | |
| threshold=0.5, | |
| with_sep=True, | |
| max_len=1024, | |
| **kwargs, | |
| ): | |
| super().__init__(**kwargs) | |
| self.tape_model_name = tape_model_name | |
| self.num_labels = num_labels | |
| self.threshold = threshold | |
| self.with_sep = with_sep | |
| self.max_len = max_len | |
| class KinaseSubstrateModel(PreTrainedModel): | |
| config_class = KinaseSubstrateConfig | |
| def __init__(self, config: KinaseSubstrateConfig): | |
| super().__init__(config) | |
| self.backbone = ProteinBertForSequenceClassification.from_pretrained( | |
| config.tape_model_name, num_labels=config.num_labels | |
| ) | |
| def forward(self, input_ids, input_mask=None, targets=None): | |
| return self.backbone( | |
| input_ids=input_ids, | |
| input_mask=input_mask, | |
| targets=targets, | |
| ) | |
| def predict_proba(self, input_ids, input_mask): | |
| self.eval() | |
| with torch.no_grad(): | |
| (_, _), logits = self.forward(input_ids=input_ids, input_mask=input_mask) | |
| return torch.softmax(logits, dim=-1)[:, 1] |