heme group visualization/cuantification

Andrew Dalke dalke at ks.uiuc.edu
Mon Aug 25 16:14:02 EST 1997


Alejandro Mujica <alejo at CIENS.ULA.VE> asked:
> is there any application capable of clearly visualize an hemo group
> sorrounded by its protein from a PDB file and to measure -one by one-
> the distances betwen all the atoms of the heme group and all of the
> protein's atoms involved in the interaction with it?

In VMD (http://www.ks.uiuc.edu/Research/vmd/), the program I used to
develop, this is a relatively easy task.  Here's a function I made
which will print the requested information.  It assumes that atoms
within 3 A of a given atom could interact with it.  It also assumes
the heme residue is named HEM and that the chain ID is sufficient for
the printout (instead of the segment name).  The user guide covers
more of the details on how this script works.

proc measure_distances {} {
	# get the heme
	set heme [atomselect top "resname HEM"]
	# go through each atom in the heme, one by one
	foreach atom [$heme list] {
		# get the protein atoms within 3 A of the atom
		set interact [atomselect top \
		    "protein within 3 of index $atom"]

		# get info about the heme atom
		set heme_atom [atomselect top "index $atom"]
		# the x,y,z coordinates
		lassign [$heme_atom get {x y z}] heme_pos
		# identification information
		lassign [$heme_atom get {chain resname resid name \
			index}] heme_info
		
		# print information about the atoms within range
		foreach info [$interact get {chain resname resid \
					     name index}] \
			      pos [$interact get {x y z}] {
			# compute the distance
			set dist [veclength [vecsub $heme_pos $pos]]
			# print the results
			puts "$heme_info =>  $info == $dist A."
		}
	}

}


# download 1HLB directly from the PDB ftp site.
mol pdbload 1hlb
# or get it from a local file.
# mol load pdb /home/dalke/pdb/1hlb.pdb

# do the analysis
measure_distances

 = = = =

Here's the complete output for this case.  It can be tweaked to look
whatever way you want it to be (for instance, the { } indicates the
chain id is a space but you might want to use '-' instead ...):

{ } HEM 158 FE 1525 =>  { } HIS 73 CD2 724 == 2.99217 A.
{ } HEM 158 FE 1525 =>  { } HIS 73 NE2 726 == 2.07449 A.
{ } HEM 158 FE 1525 =>  { } HIS 104 CE1 1015 == 2.9796 A.
{ } HEM 158 FE 1525 =>  { } HIS 104 NE2 1016 == 2.06467 A.
{ } HEM 158 {N A} 1530 =>  { } HIS 73 NE2 726 == 2.96631 A.
{ } HEM 158 {N A} 1530 =>  { } HIS 104 NE2 1016 == 2.89413 A.
{ } HEM 158 CBA 1537 =>  { } THR 103 HG1 1006 == 2.71625 A.
{ } HEM 158 O1A 1539 =>  { } THR 99 HG1 965 == 2.53929 A.
{ } HEM 158 {N B} 1541 =>  { } HIS 73 NE2 726 == 2.992 A.
{ } HEM 158 {N B} 1541 =>  { } HIS 104 CE1 1015 == 2.96819 A.
{ } HEM 158 {N B} 1541 =>  { } HIS 104 NE2 1016 == 2.95058 A.
{ } HEM 158 {N C} 1549 =>  { } HIS 73 NE2 726 == 2.91542 A.
{ } HEM 158 {N C} 1549 =>  { } HIS 104 NE2 1016 == 2.93283 A.
{ } HEM 158 CBC 1556 =>  { } HIS 113 HD1 1100 == 2.87808 A.
{ } HEM 158 {N D} 1557 =>  { } HIS 73 CD2 724 == 2.96979 A.
{ } HEM 158 {N D} 1557 =>  { } HIS 73 NE2 726 == 2.75735 A.
{ } HEM 158 O2D 1567 =>  { } ASN 107 ND2 1044 == 2.77071 A.

With VMD's ability to add new graphics to the scene on demand, you
could then draw all-to-all lines between the interaction atoms to
show this relationship.

Hope you find it useful,
						Andrew Dalke
						dalke at ks.uiuc.edu




More information about the Bio-soft mailing list