#! /bin/csh
# Usage: ./cellsize eiwitdink.pdb 
# NIET sh cellsize.sh gebruiken!!!
# give as argument the name of the solvated PDB. This script will return the cellBasis Vectors and the Cell Origin

grep TIP $1|awk 'BEGIN {Xmin = Ymin = Zmin = 9999; Xmax = Ymax = Zmax = -9999;} i\
{if ($1 == "ATOM"){\
if($6 >= Xmax) Xmax = $6\
if($6 <= Xmin) Xmin = $6\
if($7 >= Ymax) Ymax = $7\
if($7 <= Ymin) Ymin = $7\
if($8 >= Zmax) Zmax = $8\
if($8 <= Zmin) Zmin = $8\
}\
}END{\
print "Xmin =" Xmin, "Xmax =" Xmax, "\nYmin =" Ymin, "Ymax =" Ymax, "\nZmin =" Zmin, "Zmax =" Zmax;\
print "\ncellBasisVector1 " Xmax - Xmin , "0.0", "0.0", "\ncellBasisVector2", "0.0", Ymax - Ymin,"0.0", "\ncellBasisVector3", "0.0", "0.0", Zmax - Zmin;\
print "cellOrigin ", (Xmax + Xmin) /2, (Ymax + Ymin) /2, (Zmax + Zmin) /2;\
}'  > dimensions

cat dimensions

set size_refx=`grep "cellBasisVector1" dimensions|awk '{printf("%3d\n",$2+1)}' `
set size_refy=`grep "cellBasisVector2" dimensions|awk '{printf("%3d\n",$3+1)}' `
set size_refz=`grep "cellBasisVector3" dimensions|awk '{printf("%3d\n",$4+1)}' `

while ( $size_refx <= 200 )
        set modulo_deux=`head -1 dimensions|awk -v var=$size_refx '{print var%2}'`
        set modulo_trois=`head -1 dimensions|awk -v var=$size_refx '{print var%3}'`
        set modulo_cinq=`head -1 dimensions|awk -v var=$size_refx '{print var%5}'`

        if ( $modulo_deux == 0 || $modulo_trois == 0 || $modulo_cinq == 0 ) then
                set pmex=$size_refx
                break
        else
                @ size_refx = ( $size_refx + 1 )
        endif
end

while ( $size_refy <= 200 )
        set modulo_deux=`head -1 dimensions|awk -v var=$size_refy '{print var%2}'`
        set modulo_trois=`head -1 dimensions|awk -v var=$size_refy '{print var%3}'`
        set modulo_cinq=`head -1 dimensions|awk -v var=$size_refy '{print var%5}'`

        echo $modulo_deux $modulo_trois $modulo_cinq

        if ( $modulo_deux == 0 || $modulo_trois == 0 || $modulo_cinq == 0 ) then
                set pmex=$size_refy
                break
        else
                @ size_refy = ( $size_refy + 1 )
        endif
end

while ( $size_refz <= 200 )
        set modulo_deux=`head -1 dimensions|awk -v var=$size_refz '{print var%2}'`
        set modulo_trois=`head -1 dimensions|awk -v var=$size_refz '{print var%3}'`
        set modulo_cinq=`head -1 dimensions|awk -v var=$size_refz '{print var%5}'`

        if ( $modulo_deux == 0 || $modulo_trois == 0 || $modulo_cinq == 0 ) then
                set pmex=$size_refz
                break
        else
                @ size_refz = ( $size_refz + 1 )
        endif
end

echo "Box dimensions :"
grep "cellBasisVector1" dimensions|awk '{printf("%3d\n",$2+1)}';grep "cellBasisVector2" dimensions|awk '{printf("%3d\n",$3+1)}';grep "cellBasisVector3" dimensions|awk '{printf("%3d\n",$4+1)}'
echo ""
echo "PME GRID :$size_refx $size_refy $size_refz"

