-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CaviTracer tool for detecting channels, tunnels, pores #2018
base: main
Are you sure you want to change the base?
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
New features are added: In [1]: from prody import * selectChannelBySelection() selects channels based on the selection. I still need to add a function that will return residues per channel into a file (the file is used here) and an additional option to return parameters into a file (also used here). |
getChannelParameters(channels, param_file_name='1tqnA') -> will save the parameters to file called getChannelResidueNames(atoms, channels) -> Provide info about residues that are forming channels To save it in a file: The file name is then 1tqnA_Residues_All_channels.txt and contains: |
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)