CaviTracer tool for detecting channels, tunnels, pores#2018
CaviTracer tool for detecting channels, tunnels, pores#2018karolamik13 wants to merge 75 commits intoprody:mainfrom
Conversation
recent changes in WatFinder from main ProDy
The first version of a tool for the detection of channels developed by Erykiusz Trzcinski
py2 safe stars
I don't think so really |
|
At the current stage, a few more changes are needed. CaviTracer can be omitted in the upcoming ProDy release. |
jamesmkrieger
left a comment
There was a problem hiding this comment.
Someone still needs to go through and check this in detail, which I haven't managed to do yet
At any rate, it would be good to have unit tests please
|
Hi James, |
|
Sounds good! |
jamesmkrieger
left a comment
There was a problem hiding this comment.
Maybe make that an option
|
ok, sounds good |
CaviTracer, created by Eryk Trzcinski, as his MSc work under my supervision.
Additional installation of open3D package is required:
pip install open3d
Test functions:
from prody import *
p = parsePDB('1tqn.pdb')
atoms = p.select("protein")
channels, surface = calcChannels(atoms, output_path='channels_output.pdb')
showCavities(surface)
To create 3D model to display it in ProDy
vmd_path = '/usr/local/bin/vmd'
model = getVmdModel(vmd_path, atoms)
To display channels (all or one by one):
showChannels(channels, surface=surface, model=model)
showChannels(channels, model=model)
getChannelParameters(channels)
showCavities(surface, show_surface=True)
Save all channels independently as PDB:
output = 'chanels_test'
channels, surface = calcChannels(atoms, output, separate=True)
Display channel 1:
showChannels(channels[1], model)
selected_channels = [channels[1], channels[8]]
showChannels(selected_channels, model)
selected_channels = channels[1:4]
lengths, bottlenecks, volumes = getChannelParameters(selected_channels)
selected_channels_atoms = getChannelAtoms(selected_channels)
atoms_protein = getChannelAtoms(channels, atoms)
Extracting residues that are forming channel[1]:
atoms_protein = getChannelAtoms(channels[1], atoms)
len(atoms_protein.getResnames())
distance = 4
residues = atoms_protein.select('same residue as exwithin '+str(distance)+' of resname FIL')
residues.select('name CA').getResnames(), residues.select('name CA').getResnums()
list(zip(residues.select('name CA').getResnames(), residues.select('name CA').getResnums()))
p2 = parsePDB('LXmulti.pdb')
channels2, surfaces2 = calcChannelsMultipleFrames(p2)
To display particular channel:
channels2[4][1]
model2 = getVmdModel(vmd_path, p2)
showChannels(channels2[4][1], model2)
showChannels(channels2[4][2], model2)
PDBfile = 'L_traj.pdb'
DCDfile = 'L_traj.dcd'
atoms = parsePDB(PDBfile)
dcd = Trajectory(DCDfile)
dcd.link(atoms)
dcd.setCoords(atoms)
channels3, surfaces3 = calcChannelsMultipleFrames(atoms, dcd)
all_channels, all_surfaces=calcChannelsMultipleFrames(atoms, dcd, output_path = 'channels_dcd', separate=True)