#!/bin/csh -f
#
#help
#help frealign_calc_projections - calculate matching projections
#help Usage: frealign_calc_projections <cycle> <first particle> <last particle> <class>
#help Control parameters must be set in local mparameters file
#
limit coredumpsize 0
set working_directory	= `pwd`

if ( ! -e mparameters ) then
  echo
  echo "ERROR: no mparameters file."
  echo "Terminating..."
  echo
endif

set SCRATCH		= `grep scratch_dir mparameters | awk '{print $2}'`
if ( $status || $SCRATCH == "" ) then
  set SCRATCH		= ${working_directory}/scratch
endif
if ( ! -d $SCRATCH ) then
  mkdir $SCRATCH
endif
cp mparameters $SCRATCH/mparameters_run
cd $SCRATCH

set bin_dir		= `grep frealign_bin_dir mparameters_run | awk '{print $2}'`
if ( $status || $bin_dir == "" ) then
  set bin_dir		= `which frealign_v9.exe`
  set bin_dir		= ${bin_dir:h}
endif
#

set raw_images		= `grep raw_images_high mparameters_run | awk '{print $2}'`
if ( $raw_images == "" ) set raw_images = `grep raw_images mparameters_run | awk '{print $2}'`
set raw_images = `echo ${raw_images:r}`
ls $raw_images.* >& /dev/null
if ( $status ) then
  set raw_images = ${working_directory}/${raw_images}
endif
ls $raw_images.* >& /dev/null
if ( $status ) then
  echo 
  echo "ERROR: particle image stack not found."
  echo "Terminating..."
  echo
  exit
endif

set start = $1
@ prev = $start - 1
set data_input	= `grep data_input mparameters_run | awk '{print $2}'`
set extension	= `ls $raw_images.* | head -1`
set extension	= `echo ${extension:e}`
set thresh	= `grep thresh_reconst mparameters_run | awk '{print $2}'`
set pbc		= `grep PBC mparameters_run | awk '{print $2}'`
# set boff	= `grep BOFF mparameters_run | awk '{print $2}'`
set dang	= `grep DANG mparameters_run | awk '{print $2}'`
set itmax	= `grep ITMAX mparameters_run | awk '{print $2}'`
set mode	= `grep MODE mparameters_run | awk '{print $2}'`
set FFILT	= `grep FFILT mparameters_run | awk '{print $2}'`
set FBEAUT	= `grep FBEAUT mparameters_run | awk '{print $2}'`
set rrec	= `grep res_reconstruction mparameters_run | awk '{print $2}'`
set rref	= `grep res_high_refinement mparameters_run | awk '{print $2}'`
set rclas	= `grep res_high_class mparameters_run | awk '{print $2}'`
set rbf		= `grep RBfactor mparameters_run | awk '{print $2}'`
set sym		= `grep Symmetry mparameters_run | awk '{print $2}'`
set pix		= `grep pix_size mparameters_run | awk '{print $2}'`
set kV		= `grep Voltage mparameters_run | awk '{print $2}'`
set AmpC	= `grep Amp_contrast mparameters_run | awk '{print $2}'`
set dstep	= `grep dstep mparameters_run | awk '{print $2}'`
set ro		= `grep outer_radius mparameters_run | awk '{print $2}'`
set ri		= `grep inner_radius mparameters_run | awk '{print $2}'`
set MW		= `grep mol_mass mparameters_run | awk '{print $2}'`
set cs		= `grep Aberration mparameters_run | awk '{print $2}'`
#
set form = `${bin_dir}/fheader.exe ${raw_images}.${extension} | grep --binary-files=text Opening | awk '{print $2}'`
set fm = "M"
if ( $form == "SPIDER" ) set fm = "S"
if ( $form == "IMAGIC" ) set fm = "I"
#
# \rm ${data_input}_${start}_r${4}_n${2}.${extension}
cp ${working_directory}/${data_input}_${start}_r${4}.${extension} ${data_input}_${start}_r${4}_n${2}.${extension}
\rm ${data_input}_${start}_r${4}_n${2}.res >& /dev/null
#

echo "Starting projection calculation for particles "${2}" to "${3}", cycle "${1}", ref "${4}
${bin_dir}/frealign_v9.exe << eot >& ${data_input}_mult_reproject_r${4}.log_${2}_${3}
${fm},0,F,F,F,F,0,F,F,F,T,0,F,0,0				!CFORM,IFLAG,FMAG,FDEF,FASTIG,FPART,IEWALD,FBEAUT,FFILT,FBFACT,FMATCH,IFSC,FDUMP,IMEM,INTERP
${ro},${ri},${pix},${MW},${AmpC},0.0,${pbc},0.0,10.,1,10	!RO,RI,PSIZE,WGH,XSTD,PBC,BOFF,DANG,ITMAX,IPMAX
1 1 1 1 1						!MASK
${2},${3}						!IFIRST,ILAST 
C1							!ASYM symmetry card (I=icosahedral)
1.,${dstep},60.0,${thresh},${cs},${kV},0.0,0.0		!RELMAG,DSTEP,TARGET,THRESH,CS,AKV,TX,TY
${rrec}, 200.0, ${rref}, ${rclas}, 100.0, ${rbf}	!RREC,RMIN,RMAX,RCLAS,DFSTD,RBFACT
${raw_images}.${extension}
${data_input}_reproject_r${4}.${extension}_${2}_${3}
${working_directory}/${data_input}_${start}_r${4}.par
${data_input}_${start}_r${4}_n${2}.res
${data_input}_${start}_r${4}_n${2}.shft
-100., 0., 0., 0., 0., 0., 0., 0.				! terminator with RELMAG=0.0
${data_input}_${start}_r${4}_n${2}.${extension}
${data_input}_${start}_r${4}_weights
${data_input}_${start}_r${4}_map1.${extension}
${data_input}_${start}_r${4}_map2.${extension}
${data_input}_${start}_r${4}_phasediffs
${data_input}_${start}_r${4}_pointspread
eot
#
\rm ${data_input}_${start}_r${4}_n${2}.res >& /dev/null
\rm ${data_input}_${start}_r${4}_n${2}.${extension} >& /dev/null
\rm ${data_input}_${start}_r${4}_weights >& /dev/null
\rm ${data_input}_${start}_r${4}_n${2}.shft >& /dev/null
\rm ${data_input}_${start}_r${4}_map1.${extension} >& /dev/null
\rm ${data_input}_${start}_r${4}_map2.${extension} >& /dev/null
\rm ${data_input}_${start}_r${4}_phasediffs >& /dev/null
\rm ${data_input}_${start}_r${4}_pointspread >& /dev/null
#
echo "Projection calculation done"
echo "File: "${SCRATCH}/${data_input}_reproject_r${4}.${extension}_${2}_${3}
date
#
