Skip to content

Commit

Permalink
enable prody integration
Browse files Browse the repository at this point in the history
  • Loading branch information
pegerto-ck committed Apr 24, 2024
1 parent 58fa1a5 commit a704049
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 2 deletions.
Binary file removed docs/.DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ MDAnalysisTests>=2.4.3
networkx>=3.1
torch_geometric>=2.0
torch >= 2.0
ProDy >= 2.4.1
58 changes: 56 additions & 2 deletions src/graphpro/model.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import torch
import prody as pdy
import MDAnalysis as mda

from functools import reduce

Expand Down Expand Up @@ -30,14 +32,66 @@ def c_alphas_positions(self, chain: None):
def c_alphas_residues(self, chain: None):
pass

def positions(self):
pass

def names(self):
""" Return atoms names
"""
pass

def resnames(self):
""" Returns resnames
"""
pass

def resnums(self):
""" Returns resnumbers
"""
pass

def chain_ids(self):
""" Returns the chainId for each individual atom
"""
pass

def to_prody(self) -> pdy.AtomGroup:
ag = pdy.AtomGroup('name')
ag.setCoords(self.positions())
ag.setNames(self.names())
ag.setResnames(self.resnames())
ag.setResnums(self.resnums())
ag.setChids(self.chain_ids())
return ag


class MDAnalisysAtomGroup(AtomGroup):
def __init__(self, atom_goup):
self.atoms = atom_goup
def __init__(self, atom_group):
if isinstance(atom_group, mda.Universe):
self.atoms = atom_group.atoms
else:
self.atoms = atom_group

def n_atoms(self):
return self.n_atoms


def positions(self):
return self.atoms.positions


def names(self):
return self.atoms.names

def resnames(self):
return self.atoms.resnames

def resnums(self):
return self.atoms.resnums

def chain_ids(self):
return [a.chainID for a in self.atoms]

def _c_alphas(self, chain=None):
chain_sel = ''
if chain is not None:
Expand Down
26 changes: 26 additions & 0 deletions test/graphpro/model_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,29 @@ def test_model_from_mdanalysis_partial_occupancy():
ag = MDAnalisysAtomGroup(FIVEHTC)
assert(len(ag.c_alphas_residues(chain="C")) ==
len(ag.c_alphas_positions(chain="C")))


def test_transform_to_prody_contains_same_atoms():
ag = MDAnalisysAtomGroup(FIVEHTC)
pdAG = ag.to_prody()
assert(len(pdAG) == 3346)

def test_transform_to_prody_cotains_atom_names():
ag = MDAnalisysAtomGroup(FIVEHTC)
pdAG = ag.to_prody()
assert(pdAG.getNames()[0] == 'N')

def test_transform_to_prody_cotains_residue_names():
ag = MDAnalisysAtomGroup(FIVEHTC)
pdAG = ag.to_prody()
assert(pdAG.getResnames()[0] == 'GLY')

def test_transform_to_prody_cotains_residue_number():
ag = MDAnalisysAtomGroup(FIVEHTC)
pdAG = ag.to_prody()
assert(pdAG.getResnums()[0] == 471)

def test_transform_to_prody_contains_chain_id():
ag = MDAnalisysAtomGroup(FIVEHTC)
pdAG = ag.to_prody()
assert(pdAG.getChids()[0] == 'A')

0 comments on commit a704049

Please sign in to comment.