File size: 2,683 Bytes
acbef3a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# AI-based D-amino acid substitution for optimizing antimicrobial peptides to treat multidrug-resistant bacterial infection
This repository contains the code for the paper "AI-based D-amino acid substitution for optimizing antimicrobial peptides to treat multidrug-resistant bacterial infection"

## Requirements
```
mamba_ssm==2.2.4
numpy==1.26.3
pandas==2.1.4
rdkit==2024.3.5
scikit_learn==1.4.1.post1
scipy==1.13.0
torch==2.2.0
torchmetrics==1.3.1
torchvision==0.17.0
```
You can install them with `pip install -r requirements.txt`

Additionally, `mamba_ssm` is optional since it is not used for our final method.
You can comment `mamba_ssm==2.2.4` in `requirements.txt` and `from mamba_ssm import Mamba` in `network.py` out if you don't want to install it and avoid use `--q-encoder mamba`.

## Training
There are two .py file for training: `main.py` and `main_simple.py`.

`main.py`: Can train model with Classification and Regression tasks. Prefered with regression task.

`main_simple.py`: Can ONLY train model with Classification task. Prefered with classification task. `simple` means a simple dataset that direct loads pre-processed data.

example: 
```
python main-simple.py \
    --q-encoder cnn \ # Encoder, can be cnn, lstm, gru, mamba, mha
    --channels 16 \ # Encoder channels
    --side-enc lstm \ # Side sequence Encoder, only lstm implemented, only use with cnn encoder
    --fusion att \ # Fusion method, can be att, mlp or diff
    --task cls \ # Task, can be cls or reg
    --loss ce \ # Loss, can be ce or mse, some other losses can be found in code
    --batch-size 32 \ # Batch size
    --epochs 35 \ # Epochs
    --gpu 0 \ # GPU index to use, -1 for cpu
# ===CNN only options=== \
    --pcs \ # Enable protease cleavage site dyeing for input pictures
    --resize 768 \ # Resize input pictures, can be 1 or 2 numbers like 768 or 768 512
# ===main_simple.py only options=== \
    --llm-data # Use LLM augmented training data
```
Corresponding model weight checkpoints will be saved in the subdirectory of `run-cls` or `run-reg`, e.g. `/run-cls/cnn-att-16-lstm-pcs-simple-llm-768-oneway-ce-32-0.001-35/`

For more arguments, please refer to the code of `main.py` or `main_simple.py`

## Inference
You can simple replace `main.py` with `infer.py` in your training command to do inference. Remember to add `--simple` if you used checkpoints trained from `main_simple.py`

For case study scanning, please use `infer_case.py` with an additional argument `--case r2` or `--case YOUR_PEPTIDE_SEQUENCE`

Inference results will be saved in the weights directory in `csv` format, e.g. `/run-cls/cnn-att-16-lstm-pcs-simple-llm-768-oneway-ce-32-0.001-35/preds_test.csv`