Spaces:
Sleeping
Sleeping
fix infewrence_app.py
Browse files- inference_app.py +30 -3
inference_app.py
CHANGED
@@ -108,6 +108,33 @@ from pinder.core.structure.atoms import atom_array_from_pdb_file
|
|
108 |
from pathlib import Path
|
109 |
from pinder.eval.dockq.biotite_dockq import BiotiteDockQ
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
log = setup_logger(__name__)
|
113 |
|
@@ -285,8 +312,8 @@ def create_graph(pdb1, pdb2, k=5):
|
|
285 |
HeteroData: A PyG HeteroData object containing ligand and receptor data.
|
286 |
"""
|
287 |
# Extract coordinates from PDB files
|
288 |
-
coords1 = torch.tensor(
|
289 |
-
coords2 = torch.tensor(
|
290 |
# coords3 = torch.tensor(extract_coordinates_from_pdb(pdb3),dtype=torch.float)
|
291 |
# Create the HeteroData object
|
292 |
data = HeteroData()
|
@@ -881,7 +908,7 @@ def predict (input_seq_1, input_msa_1, input_protein_1, input_seq_2,input_msa_2,
|
|
881 |
mat, vect = model(data)
|
882 |
mat = mat.to(device)
|
883 |
vect = vect.to(device)
|
884 |
-
ligand1 = torch.tensor(
|
885 |
# receptor1 = torch.tensor(extract_coordinates_from_pdb(input_protein_2),dtype=torch.float).to(device)
|
886 |
transformed_ligand = torch.matmul(ligand1, mat) + vect
|
887 |
# transformed_receptor = torch.matmul(receptor1, mat) + vect
|
|
|
108 |
from pathlib import Path
|
109 |
from pinder.eval.dockq.biotite_dockq import BiotiteDockQ
|
110 |
|
111 |
+
def extract_coordinates_from_pdb(filename, atom_name="CA"):
|
112 |
+
"""
|
113 |
+
Extracts coordinates for specific atoms from a PDB file and returns them as a list of tuples.
|
114 |
+
Each tuple contains (x, y, z) coordinates of the specified atom type.
|
115 |
+
|
116 |
+
Parameters:
|
117 |
+
filename (str): Path to the PDB file.
|
118 |
+
atom_name (str): The name of the atom to filter by (e.g., "CA" for alpha carbon).
|
119 |
+
|
120 |
+
Returns:
|
121 |
+
list of tuple: List of coordinates as (x, y, z) tuples for the specified atom.
|
122 |
+
"""
|
123 |
+
parser = PDB.PDBParser(QUIET=True)
|
124 |
+
structure = parser.get_structure("structure", filename)
|
125 |
+
|
126 |
+
coordinates = []
|
127 |
+
|
128 |
+
# Loop through each model, chain, residue, and atom to collect coordinates of specified atom
|
129 |
+
for model in structure:
|
130 |
+
for chain in model:
|
131 |
+
for residue in chain:
|
132 |
+
for atom in residue:
|
133 |
+
# Filter for specific atom name
|
134 |
+
xyz = atom.coord # Coordinates are in a numpy array
|
135 |
+
coordinates.append([xyz[0], xyz[1], xyz[2]])
|
136 |
+
|
137 |
+
return coordinates
|
138 |
|
139 |
log = setup_logger(__name__)
|
140 |
|
|
|
312 |
HeteroData: A PyG HeteroData object containing ligand and receptor data.
|
313 |
"""
|
314 |
# Extract coordinates from PDB files
|
315 |
+
coords1 = torch.tensor(extract_coordinates_from_pdb(pdb1),dtype=torch.float)
|
316 |
+
coords2 = torch.tensor(extract_coordinates_from_pdb(pdb2),dtype=torch.float)
|
317 |
# coords3 = torch.tensor(extract_coordinates_from_pdb(pdb3),dtype=torch.float)
|
318 |
# Create the HeteroData object
|
319 |
data = HeteroData()
|
|
|
908 |
mat, vect = model(data)
|
909 |
mat = mat.to(device)
|
910 |
vect = vect.to(device)
|
911 |
+
ligand1 = torch.tensor(extract_coordinates_from_pdb(input_protein_1),dtype=torch.float).to(device)
|
912 |
# receptor1 = torch.tensor(extract_coordinates_from_pdb(input_protein_2),dtype=torch.float).to(device)
|
913 |
transformed_ligand = torch.matmul(ligand1, mat) + vect
|
914 |
# transformed_receptor = torch.matmul(receptor1, mat) + vect
|