Views
No views yet
cubic_logistic_model.pklkinase_cubic_model.pkl - For kinase promiscuity (50% threshold: 25 hits)nr_cubic_model.pkl - For nuclear receptor promiscuity (50% threshold: 31 hits)7tm_cubic_model.pkl - For GPCR/7TM promiscuity (50% threshold: 63 hits)lightgbm_model.txtcubic_model_metadata.json - Performance metrics for main cubic modelclass_models_metadata.json - Thresholds for class-specific modelslgb_model_metadata.json - LightGBM model performancefeature_stats.json - Feature statistics for normalizationpip install joblib lightgbm rdkit numpy pandas statsmodels1import joblib
2import lightgbm as lgb
3import json
4
5# Load cubic logistic regression model
6cubic_model = joblib.load('cubic_logistic_model.pkl')
7
8# Load LightGBM model
9lgb_model = lgb.Booster(model_file='lightgbm_model.txt')
10
11# Load metadata
12with open('cubic_model_metadata.json', 'r') as f:
13 cubic_metadata = json.load(f)
14
15with open('feature_stats.json', 'r') as f:
16 feature_stats = json.load(f)1import numpy as np
2from statsmodels.tools import add_constant
3
4def predict_cytotoxicity_from_promiscuity(promiscuity_score, model):
5 """
6 Predict cytotoxicity probability from promiscuity score
7
8 Args:
9 promiscuity_score: Number of active assays (hits)
10 model: Loaded cubic logistic regression model
11
12 Returns:
13 Probability of cytotoxicity (0-1)
14 """
15 # Create cubic features
16 X = np.array([[promiscuity_score,
17 promiscuity_score**2,
18 promiscuity_score**3]])
19 X_with_const = add_constant(X)
20
21 # Predict probability
22 prob = model.predict(X_with_const)[0]
23 return prob
24
25# Example usage
26promiscuity = 50
27prob = predict_cytotoxicity_from_promiscuity(promiscuity, cubic_model)
28print(f"Promiscuity: {promiscuity} hits")
29print(f"Cytotoxicity probability: {prob:.2%}")1from rdkit import Chem
2from rdkit.Chem import AllChem
3import numpy as np
4
5def predict_cytotoxicity_from_smiles(smiles, model):
6 """
7 Predict cytotoxicity from SMILES string
8
9 Args:
10 smiles: SMILES representation of molecule
11 model: Loaded LightGBM model
12
13 Returns:
14 Probability of cytotoxicity (0-1)
15 """
16 # Generate Morgan fingerprint
17 mol = Chem.MolFromSmiles(smiles)
18 if mol is None:
19 raise ValueError("Invalid SMILES")
20
21 fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=2048)
22 fp_array = np.array(fp).reshape(1, -1)
23
24 # Predict
25 prob = model.predict(fp_array)[0]
26 return prob
27
28# Example usage
29smiles = "CC(C)Cc1ccc(cc1)C(C)C(O)=O" # Ibuprofen
30prob = predict_cytotoxicity_from_smiles(smiles, lgb_model)
31print(f"SMILES: {smiles}")
32print(f"Cytotoxicity probability: {prob:.2%}")1# Load class-specific model
2kinase_model = joblib.load('kinase_cubic_model.pkl')
3
4# Predict from kinase-specific promiscuity
5kinase_hits = 20
6prob = predict_cytotoxicity_from_promiscuity(kinase_hits, kinase_model)
7print(f"Kinase promiscuity: {kinase_hits} hits")
8print(f"Cytotoxicity probability: {prob:.2%}")| Promiscuity Range | Risk Level | Cytotoxicity Probability |
|---|---|---|
| < 43 hits | Low | < 25% |
| 43-102 hits | Moderate | 25-75% |
| > 102 hits | High | > 75% |
Discovery 2: Cytotoxicity Prediction Models
Models: https://huggingface.co/pageman/discovery2-cytotoxicity-models
Dataset: https://huggingface.co/datasets/pageman/discovery2-results