[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Amore
*** For details on how to be removed from this list visit the ***
*** CCP4 home page http://www.dl.ac.uk/CCP/CCP4/main.html ***
Bobby Barnett wrote:
> I am trying my hand at Amore, but I am fumbling a lot as it is my first
> time. I am not sure how to interpret the output from some of the steps.
> In my problem, there appears to be 2 molecules per asymmetric unit.
> When I perform the self rotation function, I am not sure what I am
> supposed to do with the results. Just to let you know, I was trained as
> a small moelcule crystallographer, but I have been doing molecular
> modeling for the last 15 years, so this is my first attempt at a protein
> crystal structure solution. Does anyone have a series of inputs and
> outputs for two molecules per asymmetric unit with a final solution at
> the end using Amore? I would like to at least follow the iterative steps
> in fixing the first solution while searching for the second solution?
Take a look at my input and output below. I this case, I didn't need to fix
one molecule to find the other, and I guess that's often the situation if the
protein is not too large, the data are not too bad and there are only a few
NCS molecules.
Otherwise, you'd want to take the SOLUTIONTF you believe is correct, add FIX
and simply plug it into another TRAFUN run. Remember to increase the NMOL
modifier to 2.
> Are there special values to use along with SELF rotation function?
Well, you'd need to change the ROTATE CROSS codeword in ROTFUN to ROTATE SELF if
that's what you mean by "values". With respect to the integration sphere, you
still only want intra-molecular vectors.
All your HKLPCKi and CLMNi files with i>1 will be ignored if present
and a self-rotation function written to the file indicated by MAPOUT. This map
will have cell dimensions 360x360x360 (corresponding to the Eulerian angles
alpha, beta, and gamma). Depending on the symmetry, the map can be smaller,
corresponding rotations in the asymmetric unit (e.g. 60x60x180 for hexagonal
spacegroups).
> I don't get any peaks and the program terminates normally. If I go through
> all the steps without using the self rotation function, I get solutions
> that suggest that I might be close to a solution, but when I transform
> the solutions, the molecules penetrate one another.
Well, you don't _have_ to do the self-rotation if you have a good idea that
the crystal contains two molecules per asu.
Remember when transforming the solutions (this is a step that often causes
trouble and I personally spent a lot of time making it work, though it's quite
easy).
People are often in doubt as to whether they should do the reorientation step.
Options are
1) Do the reorientation to get a solution that corresponds to the original
search model (i.e. before translating it to COM at origin, etc...) and
then apply this to the _initial_ pdb file input to tabling using pdbset.
OR
2) Don't do the reorientation, but use the solution directly on the
transformed
model which is output from tabling.
See below for an example.
> My solutions are
> encouraging. For example, one solution has a correlation coefficient of
> 41.3 and R factor of 45.1. In fact there are two solutions with these
> numbers, but I suspect they are symmetry equivalents. The data are not
> real great and the crystals diffract only to 3.0 A, but I will be at the
> APS to try and get better data the rest of this week. Any suggestions
> on how to proceed would be appreciated?
With a correlation of more than 40% for half an asu, it sure looks like a
solution. Now, I don't know whether this is after translation or fitting,
but if the corrlation stays that high after fitting whereas bogus solutions
fall to 5-10%, I'd say you're onto something right...
Best wishes,
Ditlev Brodersen
============================================================================
Here's my example script+output for two monomers in the asu. Data to 2.5A.
Both model and crystal are P212121 in this case, but with different packing,
unit cell, etc...
(I use shell functions which can easily be called from the command line
after 'source'ing the script).
1) TABLING OF MODEL, STRUCTURE FACTOR CALCULATION AND SORTING.
SORTING FOR OBSERVED DATA
export SCRATCH=/tmp/ding
export CCP4_SCR=/tmp/ding
##########################################################################
# Use TABFUN to rotate, shift coordinates to optimum position for amore.
# It will also suggest an appropriate large cell in which to generate
# model sfs.
##########################################################################
GoTabling() {
amore \
XYZIN1 monomer.pdb \
XYZOUT1 hops_rot.pdb \
TABLE1 $SCRATCH/junk.tab > tabling.log << EOF
VERBOSE
TABFUN NOTAB
CRYSTAL ORTH 1
MODEL 1 BREPLACE 0 BADD 0
SAMPLE 1 RESO 2.5 SHANN 2 SCALE 4.0
EOF
}
######################################################################
# Extract CELL from TABFUN output: labelled TABLING CELL
# grep -i "TABLING CELL" output.log
# Add TABLING cell to pdb file.
######################################################################
GoNewCell() {
pdbset \
XYZIN hops_rot.pdb \
XYZOUT hops_rot1.pdb > newcell.log << EOF
CELL 186.926 178.584 110.242 90.00 90.00 90.00
END
EOF
}
#################################################################
# Calculate sfs from this model, in the TABLING cell.
#################################################################
GoSfall() {
sfall \
XYZIN hops_rot1.pdb \
HKLOUT $SCRATCH/hops_rot1.mtz > sfall.log << EOF
SYMM 1 ! Generate SF in P1
SFSG 1 !
RESO 100 2.5
MODE SFCALC XYZIN
LABO FC=FC_p1 PHIC=PHIC_p1
END
EOF
}
#####################################################
# Generate Es from model Fcs
#####################################################
GoEcalcModel() {
ecalc \
HKLIN $SCRATCH/hops_rot1.mtz \
HKLOUT $SCRATCH/hops_rot1_es.mtz > ecalc_model.log << EOF
REFLECTIONS 150000
LABI FP=FC_p1
LABO F=Fjunk E=EC_p1 F2OR=F2ORC_p1 E2OR=E2ORC_p1
EOF
}
#####################################################
# sorting for Ecalc
#####################################################
GoSortModel() {
amore \
HKLIN $SCRATCH/hops_rot1_es.mtz \
TABLE1 $SCRATCH/hops_rot1.tab > sort_model.log << EOF
VERBOSE
SORTFUN MODEL
LABI FC=EC_p1 PHIC=PHIC_p1
EOF
}
#####################################################
# Organise observed data.
#
# START HERE IF MODEL HASN'T CHANGED
#
# Generate Es for the observed Fs.
#####################################################
GoEcalcObs() {
ecalc \
HKLIN capsor_trunc.mtz \
HKLOUT $SCRATCH/capsor_es.mtz > ecalc_obs.log << EOF
REFLECTIONS 150000
LABI FP=FP SIGFP=SIGFP
LABO F=Fjunk E=ECAPS F2OR=F2ORCAPS E2OR=E2ORCAPS
EOF
}
#####################################################
# sorting for Eobs
#####################################################
GoSortObs() {
amore \
HKLIN $SCRATCH/capsor_es.mtz \
HKLPCK0 $SCRATCH/capsor.hkl > sort_obs.log << EOF
VERBOSE
SORTFUN RESOL 100. 2.5
LABI FP=ECAPS
EOF
}
2) ROTATION FUNCTION.
###########################################################################
# Rotation function
###########################################################################
GoRoting() {
amore \
TABLE1 $SCRATCH/hops_rot1.tab \
HKLPCK1 $SCRATCH/hops_rot1.hkl \
HKLPCK0 $SCRATCH/capsor.hkl \
CLMN1 $SCRATCH/search.clmn \
CLMN0 $SCRATCH/capsor.clmn \
MAPOUT $SCRATCH/amore.map > roting.log << EOF
ROTFUN
VERBOSE
GENERATE 1 RESO 20.0 4.0 CELL 80.0 80.0 80.0
CLMN CRYSTAL ORTH 1 RESO 20.0 4.0 SPHERE 15
CLMN MODEL 1 RESO 20.0 4.0 SPHERE 15
ROTA CROSS MODEL 1 BESLIMI 6 120 STEP 2.5 PKLIM 0.5 NPIC 50 BMAX 180
EOF
grep SOLUTIONRC roting.log
}
ROTATION FUNCTION OUTPUT: (There are four solutions, two by two related by 180
degrees
around gamma. There is a contrast of about 3%)
SOLUTIONRC 1 51.00 39.95 68.19 0.0000 0.0000 0.0000 26.6 0.0 1
<-
SOLUTIONRC 1 129.00 140.05 248.19 0.0000 0.0000 0.0000 26.6 0.0 2
<-
SOLUTIONRC 1 150.61 63.61 71.56 0.0000 0.0000 0.0000 24.0 0.0 3
<-
SOLUTIONRC 1 29.39 116.39 251.56 0.0000 0.0000 0.0000 24.0 0.0 4
<-
SOLUTIONRC 1 107.18 72.71 274.08 0.0000 0.0000 0.0000 21.2 0.0 5
SOLUTIONRC 1 72.82 107.29 94.08 0.0000 0.0000 0.0000 21.2 0.0 6
SOLUTIONRC 1 73.13 56.03 339.45 0.0000 0.0000 0.0000 20.6 0.0 7
SOLUTIONRC 1 106.87 123.97 159.45 0.0000 0.0000 0.0000 20.6 0.0 8
SOLUTIONRC 1 73.63 113.44 241.82 0.0000 0.0000 0.0000 20.5 0.0 9
SOLUTIONRC 1 106.37 66.56 61.82 0.0000 0.0000 0.0000 20.5 0.0 10
SOLUTIONRC 1 175.18 133.49 311.29 0.0000 0.0000 0.0000 17.9 0.0 11
SOLUTIONRC 1 4.82 46.51 131.29 0.0000 0.0000 0.0000 17.9 0.0 12
SOLUTIONRC 1 31.04 35.36 161.77 0.0000 0.0000 0.0000 17.2 0.0 13
SOLUTIONRC 1 148.96 144.64 341.77 0.0000 0.0000 0.0000 17.2 0.0 14
SOLUTIONRC 1 152.67 30.44 153.50 0.0000 0.0000 0.0000 17.1 0.0 15
3) TRANSLATION FUNCTION
##########################################################################
# Translation search.
##########################################################################
GoTraing() {
amore \
TABLE1 $SCRATCH/hops_rot1.tab \
HKLPCK0 $SCRATCH/capsor.hkl \
MAPOUT $SCRATCH/amore.map > traing.log << EOF
TRAFUN CB NMOL 1 RESO 8 4 PKLIM 0.5 NPIC 10
VERBOSE
CRYSTAL ORTH 1
SOLUTIONRC 1 51.00 39.95 68.19 0.0000 0.0000 0.0000 26.6 0.0 1
SOLUTIONRC 1 129.00 140.05 248.19 0.0000 0.0000 0.0000 26.6 0.0 2
SOLUTIONRC 1 150.61 63.61 71.56 0.0000 0.0000 0.0000 24.0 0.0 3
SOLUTIONRC 1 29.39 116.39 251.56 0.0000 0.0000 0.0000 24.0 0.0 4
SOLUTIONRC 1 107.18 72.71 274.08 0.0000 0.0000 0.0000 21.2 0.0 5
SOLUTIONRC 1 72.82 107.29 94.08 0.0000 0.0000 0.0000 21.2 0.0 6
SOLUTIONRC 1 73.13 56.03 339.45 0.0000 0.0000 0.0000 20.6 0.0 7
SOLUTIONRC 1 106.87 123.97 159.45 0.0000 0.0000 0.0000 20.6 0.0 8
SOLUTIONRC 1 73.63 113.44 241.82 0.0000 0.0000 0.0000 20.5 0.0 9
SOLUTIONRC 1 106.37 66.56 61.82 0.0000 0.0000 0.0000 20.5 0.0 10
SOLUTIONRC 1 175.18 133.49 311.29 0.0000 0.0000 0.0000 17.9 0.0 11
SOLUTIONRC 1 4.82 46.51 131.29 0.0000 0.0000 0.0000 17.9 0.0 12
SOLUTIONRC 1 31.04 35.36 161.77 0.0000 0.0000 0.0000 17.2 0.0 13
SOLUTIONRC 1 148.96 144.64 341.77 0.0000 0.0000 0.0000 17.2 0.0 14
SOLUTIONRC 1 152.67 30.44 153.50 0.0000 0.0000 0.0000 17.1 0.0 15
SOLUTIONRC 1 27.33 149.56 333.50 0.0000 0.0000 0.0000 17.1 0.0 16
SOLUTIONRC 1 122.88 73.09 273.10 0.0000 0.0000 0.0000 16.8 0.0 17
SOLUTIONRC 1 57.12 106.91 93.10 0.0000 0.0000 0.0000 16.8 0.0 18
EOF
ShowTFSolutions
}
ShowTFSolutions()
{
grep -i "SOLUTIONT" traing.log > tra.list
sort -r +8 -9 tra.list > tra_cc.list
sort +9 -10 tra.list > tra_rf.list
echo "Solutions of CBTF sorted by decreasing corr.coef:"
cat tra_cc.list
echo "Solutions of CBTF sorted by increasing R-fact:"
cat tra_rf.list
rm tra.list tra_cc.list tra_rf.list
}
OUTPUT FROM TRANSLATION FUNCTION: (Same four solutions at the top)
SOLUTIONTF1 1 51.00 39.95 68.19 0.1250 0.3498 0.4377 29.3 50.4 1 <-
SOLUTIONTF1 1 129.00 140.05 248.19 0.3749 0.3485 0.0607 29.8 50.3 1 <-
SOLUTIONTF1 1 150.61 63.61 71.56 0.2527 0.3342 0.3002 28.4 49.5 1 <-
SOLUTIONTF1 1 29.39 116.39 251.56 0.2472 0.3322 0.1998 28.7 49.3 1 <-
SOLUTIONTF1 1 107.18 72.71 274.08 0.1999 0.3675 0.4761 13.0 54.9 5
SOLUTIONTF1 1 72.82 107.29 94.08 0.2160 0.1562 0.2425 12.5 54.5 3
SOLUTIONTF1 1 73.13 56.03 339.45 0.3711 0.4003 0.2147 9.1 55.9 1
SOLUTIONTF1 1 106.87 123.97 159.45 0.3070 0.2396 0.1766 9.6 55.5 2
SOLUTIONTF1 1 73.63 113.44 241.82 0.2900 0.1320 0.2080 12.5 55.2 5
SOLUTIONTF1 1 106.37 66.56 61.82 0.2079 0.0176 0.3987 14.9 54.3 8
SOLUTIONTF1 1 175.18 133.49 311.29 0.4575 0.1006 0.3375 10.4 54.9 10
Now, if you want to do the fixing you'd do something like
GoFix()
{
amore \
TABLE1 $SCRATCH/hops_rot1.tab \
HKLPCK0 $SCRATCH/caps.hkl \
MAPOUT $SCRATCH/amore.map > fix.log << EOF
VERBOSE
TRAFUN CB NMOL 2 RESO 8.0 4.0 PKLIM 0.5 NPIC 10
CRYSTAL ORTH 1
SOLUTIONT FIX 1 51.00 39.95 68.19 0.1250 0.3498 0.4377 29.3 50.4 1
SOLUTIONRC 1 150.61 63.61 71.56 0.0000 0.0000 0.0000 24.0 0.0 3
SOLUTIONRC 1 29.39 116.39 251.56 0.0000 0.0000 0.0000 24.0 0.0 4
SOLUTIONRC 1 107.18 72.71 274.08 0.0000 0.0000 0.0000 21.2 0.0 5
SOLUTIONRC 1 72.82 107.29 94.08 0.0000 0.0000 0.0000 21.2 0.0 6
SOLUTIONRC 1 73.13 56.03 339.45 0.0000 0.0000 0.0000 20.6 0.0 7
SOLUTIONRC 1 106.87 123.97 159.45 0.0000 0.0000 0.0000 20.6 0.0 8
SOLUTIONRC 1 73.63 113.44 241.82 0.0000 0.0000 0.0000 20.5 0.0 9
SOLUTIONRC 1 106.37 66.56 61.82 0.0000 0.0000 0.0000 20.5 0.0 10
SOLUTIONRC 1 175.18 133.49 311.29 0.0000 0.0000 0.0000 17.9 0.0 11
SOLUTIONRC 1 4.82 46.51 131.29 0.0000 0.0000 0.0000 17.9 0.0 12
SOLUTIONRC 1 31.04 35.36 161.77 0.0000 0.0000 0.0000 17.2 0.0 13
SOLUTIONRC 1 148.96 144.64 341.77 0.0000 0.0000 0.0000 17.2 0.0 14
SOLUTIONRC 1 152.67 30.44 153.50 0.0000 0.0000 0.0000 17.1 0.0 15
SOLUTIONRC 1 27.33 149.56 333.50 0.0000 0.0000 0.0000 17.1 0.0 16
SOLUTIONRC 1 122.88 73.09 273.10 0.0000 0.0000 0.0000 16.8 0.0 17
SOLUTIONRC 1 57.12 106.91 93.10 0.0000 0.0000 0.0000 16.8 0.0 18
EOF
}
4) RIGID-BODY REFINEMENT (I always put in a number of bogus solutions,
just to check that the right ones keep the CC, whereas the bad ones don't)
#################################################################
# Rigid body refinement is done on each solution to improve the #
# the fit. #
# #
# fiting run: This can be done at the highest resolution. #
#################################################################
GoFitting() {
amore \
TABLE1 $SCRATCH/hops_rot1.tab \
HKLPCK0 $SCRATCH/capsor.hkl > fitting.log << EOF
FITFUN CB NMOL 1 RESO 20 2.65 ITER 10 CONV 0.001
VERBOSE
CRYSTAL ORTH 1
REFSOL AL BE GA X Y Z BF
SOLUTIONTF1 1 129.00 140.05 248.19 0.3749 0.3485 0.0607 29.8 50.3 1
SOLUTIONTF1 1 51.00 39.95 68.19 0.1250 0.3498 0.4377 29.3 50.4 1
SOLUTIONTF1 1 29.39 116.39 251.56 0.2472 0.3322 0.1998 28.7 49.3 1
SOLUTIONTF1 1 150.61 63.61 71.56 0.2527 0.3342 0.3002 28.4 49.5 1
# The rest is probably noise, but just to check...
SOLUTIONTF1 1 106.37 66.56 61.82 0.2079 0.0176 0.3987 14.9 54.3 8
SOLUTIONTF1 1 107.18 72.71 274.08 0.1999 0.3675 0.4761 13.0 54.9 5
SOLUTIONTF1 1 73.63 113.44 241.82 0.2900 0.1320 0.2080 12.5 55.2 5
SOLUTIONTF1 1 72.82 107.29 94.08 0.2160 0.1562 0.2425 12.5 54.5 3
SOLUTIONTF1 1 57.12 106.91 93.10 0.0296 0.4878 0.2869 12.2 55.3 4
EOF
grep -i SOLUTIONF fitting.log
}
OUTPUT FROM FITTING: (Now the solutions are pretty clear)
SOLUTIONF 1 126.63 140.56 245.40 0.3707 0.3476 0.0604 32.1 47.8 1
<-
SOLUTIONF 1 53.40 39.45 65.40 0.1293 0.3476 0.4396 32.1 47.8 2
<-
SOLUTIONF 1 29.03 115.91 252.44 0.2458 0.3320 0.1998 25.2 49.4 3
<-
SOLUTIONF 1 150.96 64.09 72.47 0.2542 0.3321 0.3001 25.2 49.4 4
<-
SOLUTIONF 1 106.79 66.54 62.20 0.2075 0.0159 0.3995 3.3 55.4 5
SOLUTIONF 1 106.75 72.85 273.50 0.1992 0.3683 0.4776 2.3 56.1 6
SOLUTIONF 1 72.44 114.29 240.81 0.2894 0.1339 0.2066 3.4 55.6 7
SOLUTIONF 1 72.30 108.15 94.77 0.2170 0.1587 0.2414 3.2 55.4 8
SOLUTIONF 1 56.93 106.76 92.52 0.0306 0.4871 0.2861 1.4 55.8 9
5) GENERATE NEW MODEL (Here I take the rotated+translated search-model and use
the solution directly, i.e. no reorientation.)
########################
# #
# Generate new model #
# #
########################
#
GoGenerate()
{
pdbset XYZIN hops_rot.pdb \
XYZOUT solution1.pdb > generate.log << EOF
SYMMETRY P212121
CELL 52.217 56.853 76.542 90.000 90.000 90.000
ROTATE EULER 126.63 140.56 245.40
SHIFT FRACT 0.3707 0.3476 0.0604
EOF
grep PDBSET generate.log
}
Do the same for the other solution, name one A and the other B, make a
concatenated PDB-file, and then go ono...
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
__
/_/\ Ditlev E. Brodersen Phone: +45 8942 5021
/ /\ \ M.Sc., Ph.D. student Fax : +45 8620 1222
/ / /\ \ IMSB, Aarhus University Email: ding@imsb.au.dk
/ / /\ \ \ Gustav Wieds Vej 10c WWW : http://imsb.au.dk/~ding/
/ /_/__\ \ \ DK-8000 Aarhus C
/_/______\_\/\ Denmark
\_\_________\/
- References:
- Amore
- From: Bobby Barnett <barnett@pg.com>