[cctbxbb] Phi-Psi Angles
Oleg Sobolev
osobolev at lbl.gov
Mon Sep 21 09:55:59 PDT 2015
PS.
Please note, that for some of the features mentioned you will need the
latest cctbx version, preferably fresh check-out from svn.
Oleg.
On Mon, Sep 21, 2015 at 9:49 AM, Oleg Sobolev <osobolev at lbl.gov> wrote:
> Hi Nicholas,
>
> First, the most basic way to calculate torsion (dihedral) angle for 4
> given atoms is:
> from scitbx.math import dihedral_angle
> angle = dihedral_angle(sites=[(1,0,0), (0,0,0), (0,1,0), (1,1,0)],
> deg=True)
> where 'sites' contain atom coordinates.
>
> Second, here is more high-level way to get phi-psi angles:
> from mmtbx.conformation_dependent_library import generate_protein_threes
> pdb_h = iotbx.pdb.hierarchy.input(file_name=args[0]).hierarchy
> sites_cart = pdb_h.atoms().extract_xyz()
> # Note that this is a generator
> for three in generate_protein_threes(
> hierarchy=pdb_h,
> geometry=None):
> proxies = three.get_dummy_dihedral_proxies()
> for p in proxies:
> print "angle=", dihedral_angle(
> sites=[sites_cart[x] for x in p.i_seqs],
> deg=True)
>
> Third, to get all proxies, use this function with hierarchy:
> from mmtbx.geometry_restraints.torsion_restraints.utils import \
> get_complete_dihedral_proxies
> dih_proxies = get_complete_dihedral_proxies(
> pdb_hierarchy=pdb_h)
>
> Hope this helps, full script is below and attached (run with pdb file as
> the only argument).
>
> Best regards,
> Oleg Sobolev.
>
> import sys
> from scitbx.math import dihedral_angle
> import iotbx.pdb
> import os.path
>
> def basics():
> print "Basics:"
> angle = dihedral_angle(sites=[(1,0,0), (0,0,0), (0,1,0), (1,1,0)],
> deg=True)
> print "Angle:", angle
> angle = dihedral_angle(sites=[(2,1,1), (0,0,0), (0,1,0), (1,1,0)],
> deg=True)
> print "Angle in degrees:", angle
> angle = dihedral_angle(sites=[(2,1,1), (0,0,0), (0,1,0), (1,1,0)],
> deg=False)
> print "Angle in radians:", angle
> print "="*50
>
> def advanced(args):
> print "Advanced phi-psi:"
> if len(args) != 1 or not os.path.isfile(args[0]):
> print "Bad argument"
> return
>
> # phi-psi angles
> from mmtbx.conformation_dependent_library import generate_protein_threes
> pdb_h = iotbx.pdb.hierarchy.input(file_name=args[0]).hierarchy
> sites_cart = pdb_h.atoms().extract_xyz()
> n_proxies = 0
> # Note that this is a generator
> for three in generate_protein_threes(
> hierarchy=pdb_h,
> geometry=None):
> proxies = three.get_dummy_dihedral_proxies()
> for p in proxies:
> for i_seq in p.i_seqs:
> print pdb_h.atoms()[i_seq].id_str(),
> print "angle=", dihedral_angle(
> sites=[sites_cart[x] for x in p.i_seqs],
> deg=True)
> n_proxies += 1
> print "Total angles:", n_proxies
>
>
> def all_dihedral_proxies(args):
> print "Advanced all:"
> if len(args) != 1 or not os.path.isfile(args[0]):
> print "Bad argument"
> return
> # all angles:
> from mmtbx.geometry_restraints.torsion_restraints.utils import \
> get_complete_dihedral_proxies
>
> pdb_h = iotbx.pdb.hierarchy.input(file_name=args[0]).hierarchy
> sites_cart = pdb_h.atoms().extract_xyz()
> dih_proxies = get_complete_dihedral_proxies(
> pdb_hierarchy=pdb_h)
> for p in dih_proxies:
> for i_seq in p.i_seqs:
> print pdb_h.atoms()[i_seq].id_str(),
> print "angle=", dihedral_angle(
> sites=[sites_cart[x] for x in p.i_seqs],
> deg=True)
> print "Total angles:", dih_proxies.size()
>
> def run(args):
> basics()
> advanced(args)
> all_dihedral_proxies(args)
>
> if (__name__ == "__main__"):
> run(sys.argv[1:])
>
>
>
> On Sun, Sep 20, 2015 at 3:30 PM, Nicholas Pearce <
> nicholas.pearce at stx.ox.ac.uk> wrote:
>
>> Hi Everyone,
>>
>> Phenomenally stupid question, but is there an easy way to calculate
>> phi-psi angles for a protein using cctbx? And, following on from that,
>> Chi-1, Chi-2 etc angles?
>>
>> I’ve had a poke around, but couldn’t find any obvious (at least to me)
>> way that worked…
>>
>> I presume this must be implemented rigorously somewhere, and I didn’t
>> want to waste time reimplementing the wheel.
>>
>> Thanks,
>> Nick
>> _______________________________________________
>> cctbxbb mailing list
>> cctbxbb at phenix-online.org
>> http://phenix-online.org/mailman/listinfo/cctbxbb
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://phenix-online.org/pipermail/cctbxbb/attachments/20150921/0c6a0337/attachment-0001.htm>
More information about the cctbxbb
mailing list