minhquoc95 commited on
Commit
797d6ef
·
verified ·
1 Parent(s): f504f25

Upload folder using huggingface_hub

Browse files
Files changed (5) hide show
  1. README.md +39 -2
  2. heads.pt +2 -2
  3. mtl_peptide_classifier.py +0 -1
  4. shared_backbone.pt +1 -1
  5. test_results.json +123 -131
README.md CHANGED
@@ -13,6 +13,43 @@ tags:
13
 
14
  Multi-Task Learning peptide classifier covering 22 binary peptide-activity tasks. Built on a frozen ESM-2 (650M) backbone with a parallel Transformer + CNN feature extractor and per-task heads, following a PDeepPP-inspired design.
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  ## Architecture
17
 
18
  - **Shared encoder**: frozen ESM-2 (`facebook/esm2_t33_650M_UR50D`, 650M params) + learnable base embedding, mixed at `esm_ratio=0.9`
@@ -57,7 +94,7 @@ from transformers import EsmTokenizer
57
 
58
  from mtl_peptide_classifier import MTLPeptideClassifier, get_all_peptide_tasks
59
 
60
- REPO = "tuankg1028/MTL-Peptide-Classifier"
61
  checkpoint_dir = "MTL-Peptide-Classifier"
62
  os.makedirs(checkpoint_dir, exist_ok=True)
63
 
@@ -116,7 +153,7 @@ with torch.no_grad():
116
  - `shared_backbone.pt` — base embedding, Transformer, CNN, LayerNorm
117
  - `ablation_config.json` — architecture configuration for reproducibility
118
  - `test_results.json` — held-out test metrics (per task + averages)
119
- - `mtl_peptide_classifier.py` — model code.
120
 
121
  ## Requirements
122
 
 
13
 
14
  Multi-Task Learning peptide classifier covering 22 binary peptide-activity tasks. Built on a frozen ESM-2 (650M) backbone with a parallel Transformer + CNN feature extractor and per-task heads, following a PDeepPP-inspired design.
15
 
16
+ ## Held-out Test Set Performance (Averaged across 22 tasks)
17
+
18
+ | Metric | Value |
19
+ |---|---|
20
+ | Accuracy | 87.37% |
21
+ | F1 | 84.80% |
22
+ | AUC | 92.82% |
23
+ | MCC | 73.42% |
24
+
25
+ Best Val Avg F1 (used for checkpoint selection): 83.43%
26
+
27
+ ## Per-Task Test Metrics
28
+
29
+ | Task | ACC | F1 | AUC | MCC |
30
+ |---|---|---|---|---|
31
+ | AntiMRSA | 0.9899 | 0.9667 | 0.9968 | 0.9607 |
32
+ | Anticancer | 0.7267 | 0.7330 | 0.8046 | 0.4540 |
33
+ | ACE_inhibitory | 0.7798 | 0.7901 | 0.8636 | 0.5623 |
34
+ | Antioxidant | 0.7758 | 0.7658 | 0.8393 | 0.5508 |
35
+ | Bitter | 0.8750 | 0.8689 | 0.9609 | 0.7533 |
36
+ | Antimalarial | 0.9736 | 0.7600 | 0.9260 | 0.7523 |
37
+ | Antimicrobial | 0.9700 | 0.9486 | 0.9824 | 0.9275 |
38
+ | Signal_peptide | 0.9919 | 0.9920 | 0.9985 | 0.9839 |
39
+ | Antifungal | 0.9488 | 0.9479 | 0.9851 | 0.8983 |
40
+ | Antimalarial_alt | 0.9755 | 0.9231 | 0.9976 | 0.9124 |
41
+ | Anticancer_alt | 0.9278 | 0.9275 | 0.9676 | 0.8557 |
42
+ | Anti_parasitic | 0.6957 | 0.5882 | 0.8299 | 0.4587 |
43
+ | Umami | 0.8202 | 0.6923 | 0.9245 | 0.5697 |
44
+ | Quorum_sensing | 0.8750 | 0.8718 | 0.9650 | 0.7509 |
45
+ | Antibacterial | 0.9478 | 0.9466 | 0.9739 | 0.8965 |
46
+ | NeuroPred | 0.8876 | 0.8875 | 0.9478 | 0.7753 |
47
+ | Toxicity | 0.9310 | 0.9254 | 0.9623 | 0.8613 |
48
+ | Antiviral | 0.8483 | 0.8432 | 0.9125 | 0.6981 |
49
+ | DPPIV_inhibitory | 0.8346 | 0.8254 | 0.9420 | 0.6729 |
50
+ | BBP | 0.8158 | 0.7879 | 0.9224 | 0.6547 |
51
+ | TTCA | 0.7563 | 0.8154 | 0.7891 | 0.4688 |
52
+
53
  ## Architecture
54
 
55
  - **Shared encoder**: frozen ESM-2 (`facebook/esm2_t33_650M_UR50D`, 650M params) + learnable base embedding, mixed at `esm_ratio=0.9`
 
94
 
95
  from mtl_peptide_classifier import MTLPeptideClassifier, get_all_peptide_tasks
96
 
97
+ REPO = "minhquoc95/MTL-PepPred"
98
  checkpoint_dir = "MTL-Peptide-Classifier"
99
  os.makedirs(checkpoint_dir, exist_ok=True)
100
 
 
153
  - `shared_backbone.pt` — base embedding, Transformer, CNN, LayerNorm
154
  - `ablation_config.json` — architecture configuration for reproducibility
155
  - `test_results.json` — held-out test metrics (per task + averages)
156
+ - `mtl_peptide_classifier.py` — model code
157
 
158
  ## Requirements
159
 
heads.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:ee5355b88708840f0e12e0ad3b542c2c16220b9291ee0a25a8b1269a88c00fb9
3
- size 60650083
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a56fe107476b4688385df6b23ccf3da067a86a6169be1d2d9fd22586939810b4
3
+ size 57893243
mtl_peptide_classifier.py CHANGED
@@ -378,7 +378,6 @@ def get_all_peptide_tasks(data_dir: str) -> Dict[str, Dict]:
378
  "15__Antifungal_AF": "Antifungal",
379
  "16__AV_Antiviral": "Antiviral",
380
  "17__Toxicity_2021_Dataset": "Toxicity",
381
- "18__Anti_inflammatory_peptides": "Anti_inflammatory",
382
  "19__Signal_peptides": "Signal_peptide",
383
  "21__Antioxidant_FRS": "Antioxidant"
384
  }
 
378
  "15__Antifungal_AF": "Antifungal",
379
  "16__AV_Antiviral": "Antiviral",
380
  "17__Toxicity_2021_Dataset": "Toxicity",
 
381
  "19__Signal_peptides": "Signal_peptide",
382
  "21__Antioxidant_FRS": "Antioxidant"
383
  }
shared_backbone.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5179a64d327dd091ce235f20a46dd79bdd354f188bd5425c110d676e5839069f
3
  size 360917916
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:59df1051319794dc663d482b1453782f9eef9a02f6014af2a6388d13c50f84c9
3
  size 360917916
test_results.json CHANGED
@@ -1,185 +1,177 @@
1
  {
2
- "best_val_avg_f1": 0.8556169559583615,
3
- "test_avg_acc": 0.8663440066337095,
4
- "test_avg_f1": 0.8498628286458877,
5
- "test_avg_auc": 0.9346601239526039,
6
- "test_avg_mcc": 0.7267415747182607,
7
  "test_metrics": {
8
  "AntiMRSA": {
9
  "accuracy": 0.9899497487437185,
10
  "precision": 0.9666666666666667,
11
  "recall": 0.9666666666666667,
12
  "f1": 0.9666666666666667,
13
- "auc": 0.9970414201183432,
14
  "mcc": 0.960749506903353
15
  },
16
  "Anticancer": {
17
- "accuracy": 0.7034883720930233,
18
- "precision": 0.6650943396226415,
19
- "recall": 0.8197674418604651,
20
- "f1": 0.734375,
21
- "auc": 0.800736884802596,
22
- "mcc": 0.4184495873764591
23
  },
24
  "ACE_inhibitory": {
25
- "accuracy": 0.6800518134715026,
26
- "precision": 0.6238859180035651,
27
- "recall": 0.9067357512953368,
28
- "f1": 0.7391763463569165,
29
- "auc": 0.8355459206958575,
30
- "mcc": 0.40401002524391405
31
  },
32
  "Antioxidant": {
33
- "accuracy": 0.7117437722419929,
34
- "precision": 0.6626506024096386,
35
- "recall": 0.8148148148148148,
36
- "f1": 0.7308970099667774,
37
- "auc": 0.817300862506342,
38
- "mcc": 0.4382002786365256
39
  },
40
  "Bitter": {
41
- "accuracy": 0.8203125,
42
- "precision": 0.7411764705882353,
43
- "recall": 0.984375,
44
- "f1": 0.8456375838926175,
45
- "auc": 0.9591064453125,
46
- "mcc": 0.6781724859183206
47
  },
48
  "Antimalarial": {
49
  "accuracy": 0.9736263736263736,
50
- "precision": 0.8333333333333334,
51
- "recall": 0.7142857142857143,
52
- "f1": 0.7692307692307693,
53
- "auc": 0.9177400468384075,
54
- "mcc": 0.7578570897962964
55
- },
56
- "Anti_inflammatory": {
57
- "accuracy": 0.9886111111111111,
58
- "precision": 0.9829763866007688,
59
- "recall": 0.9944444444444445,
60
- "f1": 0.9886771610052472,
61
- "auc": 0.9979248456790124,
62
- "mcc": 0.97728873441332
63
  },
64
  "Antimicrobial": {
65
- "accuracy": 0.9746453702669496,
66
- "precision": 0.9742454728370221,
67
- "recall": 0.9369195046439629,
68
- "f1": 0.9552179917143421,
69
- "auc": 0.9915316704315164,
70
- "mcc": 0.9378921309522866
71
  },
72
  "Signal_peptide": {
73
- "accuracy": 0.9926793557833089,
74
- "precision": 0.9869753979739508,
75
- "recall": 0.9985358711566618,
76
- "f1": 0.992721979621543,
77
- "auc": 0.99969452655904,
78
- "mcc": 0.985426311710703
79
  },
80
  "Antifungal": {
81
- "accuracy": 0.9465116279069767,
82
- "precision": 0.9615384615384616,
83
  "recall": 0.9302325581395349,
84
- "f1": 0.9456264775413712,
85
- "auc": 0.9863061114115739,
86
- "mcc": 0.8934969492599281
87
  },
88
  "Antimalarial_alt": {
89
- "accuracy": 0.9877300613496932,
90
  "precision": 1.0,
91
- "recall": 0.9285714285714286,
92
- "f1": 0.9629629629629629,
93
- "auc": 0.9941798941798942,
94
- "mcc": 0.9565644992853402
95
  },
96
  "Anticancer_alt": {
97
- "accuracy": 0.9329896907216495,
98
- "precision": 0.9516129032258065,
99
- "recall": 0.9123711340206185,
100
- "f1": 0.9315789473684211,
101
- "auc": 0.9783584865554256,
102
- "mcc": 0.866716620594761
103
  },
104
  "Anti_parasitic": {
105
- "accuracy": 0.782608695652174,
106
- "precision": 0.8823529411764706,
107
- "recall": 0.6521739130434783,
108
- "f1": 0.75,
109
- "auc": 0.9215500945179584,
110
- "mcc": 0.5854905538443586
111
  },
112
  "Umami": {
113
- "accuracy": 0.8426966292134831,
114
- "precision": 0.7916666666666666,
115
- "recall": 0.6785714285714286,
116
- "f1": 0.7307692307692307,
117
- "auc": 0.9297423887587822,
118
- "mcc": 0.6242635125050133
119
  },
120
  "Quorum_sensing": {
121
- "accuracy": 0.925,
122
- "precision": 0.9473684210526315,
123
- "recall": 0.9,
124
- "f1": 0.9230769230769231,
125
- "auc": 0.9850000000000001,
126
- "mcc": 0.8510644963469901
127
  },
128
  "Antibacterial": {
129
- "accuracy": 0.9430678466076696,
130
- "precision": 0.9529553679131484,
131
- "recall": 0.9321533923303835,
132
- "f1": 0.9424396063226961,
133
- "auc": 0.9788722687759418,
134
- "mcc": 0.886346891077531
135
  },
136
  "NeuroPred": {
137
- "accuracy": 0.865979381443299,
138
- "precision": 0.9361179361179361,
139
- "recall": 0.7855670103092783,
140
- "f1": 0.8542600896860987,
141
- "auc": 0.9443936656392815,
142
- "mcc": 0.7416123458255524
143
  },
144
  "Toxicity": {
145
- "accuracy": 0.9086206896551724,
146
- "precision": 0.9390243902439024,
147
- "recall": 0.8587360594795539,
148
- "f1": 0.8970873786407767,
149
- "auc": 0.9699374843113113,
150
- "mcc": 0.8178450017419605
151
  },
152
  "Antiviral": {
153
- "accuracy": 0.8306581059390048,
154
- "precision": 0.8259493670886076,
155
- "recall": 0.8378812199036918,
156
- "f1": 0.8318725099601594,
157
- "auc": 0.9097928781410304,
158
- "mcc": 0.6613852288786377
159
  },
160
  "DPPIV_inhibitory": {
161
- "accuracy": 0.8646616541353384,
162
- "precision": 0.8211920529801324,
163
- "recall": 0.9323308270676691,
164
- "f1": 0.8732394366197183,
165
- "auc": 0.9477924133642377,
166
- "mcc": 0.7360958011737431
167
  },
168
  "BBP": {
169
- "accuracy": 0.6578947368421053,
170
- "precision": 0.875,
171
- "recall": 0.3684210526315789,
172
- "f1": 0.5185185185185185,
173
- "auc": 0.9141274238227147,
174
- "mcc": 0.3872983346207417
175
  },
176
  "TTCA": {
177
- "accuracy": 0.7360406091370558,
178
- "precision": 0.7243589743589743,
179
- "recall": 0.9262295081967213,
180
- "f1": 0.8129496402877698,
181
- "auc": 0.7858469945355191,
182
- "mcc": 0.4220882576960022
183
  }
184
  }
185
  }
 
1
  {
2
+ "best_val_avg_f1": 0.8342965624786137,
3
+ "test_avg_acc": 0.8736814868145825,
4
+ "test_avg_f1": 0.8479511766276302,
5
+ "test_avg_auc": 0.9281912883424943,
6
+ "test_avg_mcc": 0.7341971117217908,
7
  "test_metrics": {
8
  "AntiMRSA": {
9
  "accuracy": 0.9899497487437185,
10
  "precision": 0.9666666666666667,
11
  "recall": 0.9666666666666667,
12
  "f1": 0.9666666666666667,
13
+ "auc": 0.9968441814595661,
14
  "mcc": 0.960749506903353
15
  },
16
  "Anticancer": {
17
+ "accuracy": 0.7267441860465116,
18
+ "precision": 0.7166666666666667,
19
+ "recall": 0.75,
20
+ "f1": 0.7329545454545454,
21
+ "auc": 0.8045903190914008,
22
+ "mcc": 0.45397969225022583
23
  },
24
  "ACE_inhibitory": {
25
+ "accuracy": 0.7797927461139896,
26
+ "precision": 0.7547169811320755,
27
+ "recall": 0.8290155440414507,
28
+ "f1": 0.7901234567901234,
29
+ "auc": 0.8635835861365405,
30
+ "mcc": 0.5623169838897384
31
  },
32
  "Antioxidant": {
33
+ "accuracy": 0.7758007117437722,
34
+ "precision": 0.7686567164179104,
35
+ "recall": 0.762962962962963,
36
+ "f1": 0.7657992565055762,
37
+ "auc": 0.8393455098934551,
38
+ "mcc": 0.5508018931774569
39
  },
40
  "Bitter": {
41
+ "accuracy": 0.875,
42
+ "precision": 0.9137931034482759,
43
+ "recall": 0.828125,
44
+ "f1": 0.8688524590163934,
45
+ "auc": 0.9609375,
46
+ "mcc": 0.7533177846892134
47
  },
48
  "Antimalarial": {
49
  "accuracy": 0.9736263736263736,
50
+ "precision": 0.8636363636363636,
51
+ "recall": 0.6785714285714286,
52
+ "f1": 0.76,
53
+ "auc": 0.9260204081632653,
54
+ "mcc": 0.7523383774706999
 
 
 
 
 
 
 
 
55
  },
56
  "Antimicrobial": {
57
+ "accuracy": 0.9699542052943148,
58
+ "precision": 0.9372874952776729,
59
+ "recall": 0.9601393188854489,
60
+ "f1": 0.9485757981265532,
61
+ "auc": 0.9824353899280912,
62
+ "mcc": 0.9274915039611056
63
  },
64
  "Signal_peptide": {
65
+ "accuracy": 0.9919472913616398,
66
+ "precision": 0.9912280701754386,
67
+ "recall": 0.9926793557833089,
68
+ "f1": 0.991953182150695,
69
+ "auc": 0.9985401585032017,
70
+ "mcc": 0.9838956372992339
71
  },
72
  "Antifungal": {
73
+ "accuracy": 0.9488372093023256,
74
+ "precision": 0.966183574879227,
75
  "recall": 0.9302325581395349,
76
+ "f1": 0.9478672985781991,
77
+ "auc": 0.9851054624121146,
78
+ "mcc": 0.8982964942016555
79
  },
80
  "Antimalarial_alt": {
81
+ "accuracy": 0.9754601226993865,
82
  "precision": 1.0,
83
+ "recall": 0.8571428571428571,
84
+ "f1": 0.9230769230769231,
85
+ "auc": 0.9976190476190476,
86
+ "mcc": 0.9124017073867975
87
  },
88
  "Anticancer_alt": {
89
+ "accuracy": 0.9278350515463918,
90
+ "precision": 0.9322916666666666,
91
+ "recall": 0.9226804123711341,
92
+ "f1": 0.927461139896373,
93
+ "auc": 0.9675975130194495,
94
+ "mcc": 0.8557155775489096
95
  },
96
  "Anti_parasitic": {
97
+ "accuracy": 0.6956521739130435,
98
+ "precision": 0.9090909090909091,
99
+ "recall": 0.43478260869565216,
100
+ "f1": 0.5882352941176471,
101
+ "auc": 0.8298676748582231,
102
+ "mcc": 0.458682472293863
103
  },
104
  "Umami": {
105
+ "accuracy": 0.8202247191011236,
106
+ "precision": 0.75,
107
+ "recall": 0.6428571428571429,
108
+ "f1": 0.6923076923076923,
109
+ "auc": 0.9244730679156908,
110
+ "mcc": 0.5697400065060475
111
  },
112
  "Quorum_sensing": {
113
+ "accuracy": 0.875,
114
+ "precision": 0.8947368421052632,
115
+ "recall": 0.85,
116
+ "f1": 0.8717948717948718,
117
+ "auc": 0.9650000000000001,
118
+ "mcc": 0.7509392614826383
119
  },
120
  "Antibacterial": {
121
+ "accuracy": 0.947787610619469,
122
+ "precision": 0.9685185185185186,
123
+ "recall": 0.9256637168141593,
124
+ "f1": 0.9466063348416289,
125
+ "auc": 0.9739487125938688,
126
+ "mcc": 0.8964532191569444
127
  },
128
  "NeuroPred": {
129
+ "accuracy": 0.8876288659793814,
130
+ "precision": 0.8884297520661157,
131
+ "recall": 0.8865979381443299,
132
+ "f1": 0.8875128998968008,
133
+ "auc": 0.9477925390583484,
134
+ "mcc": 0.7752593798707702
135
  },
136
  "Toxicity": {
137
+ "accuracy": 0.9310344827586207,
138
+ "precision": 0.9288389513108615,
139
+ "recall": 0.9219330855018587,
140
+ "f1": 0.9253731343283582,
141
+ "auc": 0.9623292174183292,
142
+ "mcc": 0.8612929494836734
143
  },
144
  "Antiviral": {
145
+ "accuracy": 0.848314606741573,
146
+ "precision": 0.872852233676976,
147
+ "recall": 0.8154093097913323,
148
+ "f1": 0.8431535269709544,
149
+ "auc": 0.9125084701220472,
150
+ "mcc": 0.6981426939615929
151
  },
152
  "DPPIV_inhibitory": {
153
+ "accuracy": 0.8345864661654135,
154
+ "precision": 0.8739495798319328,
155
+ "recall": 0.7819548872180451,
156
+ "f1": 0.8253968253968254,
157
+ "auc": 0.9419695856181808,
158
+ "mcc": 0.6729113576888817
159
  },
160
  "BBP": {
161
+ "accuracy": 0.8157894736842105,
162
+ "precision": 0.9285714285714286,
163
+ "recall": 0.6842105263157895,
164
+ "f1": 0.7878787878787878,
165
+ "auc": 0.9224376731301939,
166
+ "mcc": 0.6546536707079772
167
  },
168
  "TTCA": {
169
+ "accuracy": 0.7563451776649747,
170
+ "precision": 0.7681159420289855,
171
+ "recall": 0.8688524590163934,
172
+ "f1": 0.8153846153846154,
173
+ "auc": 0.7890710382513662,
174
+ "mcc": 0.46875917622682883
175
  }
176
  }
177
  }