[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
\_\_________\/