#!/bin/sh
#
# a script to scale together a set of processed data frames
# TF (fenn@stanford.edu) (loop idea from jmc) 11/00
#
# usage: ./scale.sh <noreject>
# if noreject flag used, only one cycle (with no rejections) performed

scalepack=scalepack
fframe=1
lframe=1055

declare -i i=-1
declare -i j=-2
declare -i fin=0
reject="[@reject]"

rm -f scale.*.log reject*

while [ $fin -ne 1 ]; do

    let "i += 1"
    let "j += 1"

/usr/bin/time $scalepack <<EOSc > scale.${i}.log 2>&1
number of zones 10

estimated error 0.140 0.160 0.140 0.110 0.080 0.070 0.040 0.040 0.040 0.040
error scale factor 1.3

rejection probability 0.0001

$reject

write rejection file 0.9

space group P3

[for solve input]
[no merge original index]
output file scalepack.sca

reference batch 1

[scale restrain 0.02]
[B restrain 0.5]

postrefine 10

[fit b]

fit crystal a* $fframe to $lframe
[fit crystal b* $fframe to $lframe]
fit crystal c* $fframe to $lframe

fit batch rotx $fframe to $lframe
fit batch roty $fframe to $lframe

[fit crystal mosaicity $fframe to $lframe]
fit batch mosaicity $fframe to $lframe

add partials $fframe to 89 1001 to $lframe
[add partials $fframe to $lframe]

[scale anomalous]

format denzo_ip

[hkl matrix -1 0 0]
[           0 0 -1]
[           0 -1 0]

[ *** data *** ]
ignore overloads
resolution 50.0 2.0

sector $fframe to 89
file $fframe 'int/image1_###.x'

sector $fframe to 55
file 1001 'int/image2_###.x'

EOSc

status=$?
if [ $status -ne 0 ]; then
    echo error $status - exiting
    exit $status
fi

if [ x"$1" == xnoreject ]; then
    let "fin = 1"
fi

if [ $i -eq 0 ]; then
    reject="@reject"
elif [ $i -eq 1 ]; then
    cp reject reject.${i}
else
    cp reject reject.${i}
    declare -i rejdiff=$( diff reject.${i} reject.${j} | wc -l )
    if [ $rejdiff -eq 0 ]; then
	let "fin = 1"
    fi
fi

done

