[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ccp4bb]: Bug (and Fix!) for symmetry restraints in PROTIN
*** For details on how to be removed from this list visit the ***
*** CCP4 home page http://www.dl.ac.uk/CCP/CCP4/main.html ***
Folks:
I have encountered a problem in specifying restraints to PROTIN.
I have a covalent linkage across a crystallographic 2-fold from
a residue via an intermediate atom to the symmetry copy of that
same residue. To reduce it to a simpler description:
- C2 - C3 -- X -- C3 - C2 -
residue 1 res 2 residue 1'
where res 1' is the 2-fold related copy of res 1.
I am using the following set of restraints in PROTIN
! First the bond length (1-2) restraints
! residues 1 and 2 are in the same chain so we can use the
! normal link command
CHNTYP 3 SPEC RESN 1 2 ATNA C3 X DIST 1.53 1 1
! unfortunately residues 2 and 1' are not, so instead we use
SPEC CHNNAM Z Z ATNA X C3 RESN 2 1 DIST 1.53 1 1 SYMM -X,1/2+Y,-Z
That actually works, with a quibble saved for later.
! Now the bond angle (1-3) restraints
SPEC CHNNAM Z Z ATNA C2 X RESN 1 2 DIST 2.53 2 2
SPEC CHNNAM Z Z ATNA C3 C3 RESN 1 1 DIST 2.53 2 2 SYMM -X,1/2+Y,-Z
It's that last restraint that is the problem. PROTIN ignores
restraints from any residue to itself. Here is a patch to fix it:
*** protin.f Thu Dec 14 15:10:12 2000
--- /usr/local/Ccp4/solopt/src/protin.f Thu Feb 10 03:29:31 2000
***************
*** 3745,3769 ****
+ IRES.EQ.IRESSD(2,ISP,2)) ISD12 = 2
- C EAM - Dec 2000
- C Special check to allow restraint between a residue
- C and its own symmetry mate. The ordering test above
- C will always fill set ISD12=2 in this case.
- if (CHIDSD(1,ISP).EQ.CHIDSD(2,ISP) .AND.
- + IRESSD(1,ISP,2).EQ.IRESSD(2,ISP,2)) THEN
- IF (JDATM(1:3).EQ.ATIDSD(1,ISP,2)(1:3).AND.
- + DFLAG .EQ. ATIDSD(1,ISP,2)(4:4)) THEN
- IANMSD(1,ISP,2) = IATOM
- CHNMSD(1,ISP) = ICHAIN
- END IF
- IF (JDATM(1:3).EQ.ATIDSD(2,ISP,2)(1:3).AND.
- + DFLAG .EQ. ATIDSD(2,ISP,2)(4:4)) THEN
- IANMSD(2,ISP,2) = IATOM
- CHNMSD(2,ISP) = ICHAIN
- END IF
- IF (IANMSD(1,ISP,2).GT.0 .AND.
- + IANMSD(2,ISP,2).GT.0) ISPEC2 = ISPEC2 + 1
- ISD12 = 0
- END IF
- C There's still a potential problem because the check
- C for multiple conformers of the residue is not done
- C EAM - Dec 2000
IF (ISD12.NE.0) THEN
--- 3745,3746 ----
***************
*** 3771,3772 ****
--- 3748,3750 ----
+ DFLAG .EQ. ATIDSD(ISD12,ISP,2)(4:4)) THEN
+ c IF (JDATM.EQ.ATIDSD(ISD12,ISP,2)) THEN
IANMSD(ISD12,ISP,2) = IATOM
This works, at least well enough so that I can continue refinement.
There are still some problems left if anyone is feeling energetic
and wants to fix them.
1) The "1/2+Y" in the symmetry specification is total nonsense.
This is a proper 2-fold and the correct command should logically
be SYMM -X,Y,-Z but that has the effect of displacing the
restrained atom by a full unit cell. I don't know why.
My work-around is to add an artificial translation of 1/2 that
cancels out in the end.
2) My actual structure necessarily involves a pair of alternate
conformers linking across the 2-fold A-to-B and B-to-A. This is
probably very common in such cases. I haven't managed to get
PROTIN to handle disorder properly in symmetry restraints;
there are a couple of lines of code that are supposed to, but
they don't work. I've worked around this by adding dummy
atoms to the residue description, but it would be nice if the
conventional description of disorder by alternate chain ids
also worked.
3) Can anyone tell me whether it is possible to specify this sort
of case to Refmac V5? I have the program itself, but no
documentation to guide me through how one adds external
symmetry restraints.
regards,
Ethan
-------------------------------------------------------------------
Ethan A Merritt K428b Health Sciences
Dept of Biological Structure phone: (206)543-1421
Mailstop 357742 FAX: (206)685-7002
University of Washington
Seattle, WA 98195-7742 merritt@u.washington.edu
-------------------------------------------------------------------