LSHTM_analysis/meta_data_analysis/RD.py

59 lines
No EOL
1.6 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 6 12:18:24 2020
@author: tanu
"""
#http://foldxsuite.crg.eu/faq-page#
# after fold x downlaoded, extract and run it from
#https://biopython.org/DIST/docs/api/Bio.PDB.ResidueDepth%27-module.html
#proDepth: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0007072
#Depth server: http://cospi.iiserpune.ac.in/depth/htdocs/index.html
# needs biopython and msms
# load libraries
import sys, os
import pandas as pd
from Bio.PDB.ResidueDepth import ResidueDepth
from Bio.PDB.PDBParser import PDBParser
from Bio.PDB.ResidueDepth import get_surface
#%%
homedir = os.path.expanduser('~') # spyder/python doesn't recognise tilde
os.getcwd()
os.chdir(homedir + '/git/LSHTM_analysis/meta_data_analysis/struct_params')
os.getcwd()
#%%
parser = PDBParser()
structure = parser.get_structure("3pl1", "/home/tanu/git/3pl1.pdb")
model = structure[0]
surface = get_surface(model)
rd = ResidueDepth(model)
print(rd['A',(' ', 152, ' ')])
rd.keys()
foo = rd.property_dict
rd.property_keys
baz = rd.property_list
#To calculate the residue depth (average atom depth of the atoms in a residue):
from Bio.PDB.ResidueDepth import residue_depth
chain = model['A']
res152 = chain[152]
rd2 = residue_depth(res152, surface)
# df from dict
foo1 = pd.DataFrame.from_dict(baz, orient='index', columns = ['res_depth', 'surface'])
test = pd.Series(foo, name = "test")
# df from list
foo2 = pd.DataFrame(baz, columns = ['residue', 'residue depth'])
### iterate
for i in range(185):
print(i)
rd3 = residue_depth(res+i, surface)
print(rd3)