#
#	This is Makefile for CTF Correction Demo.
#

#### Input extention ####
# These extensions must all be different.
INI_PDB_EXT=pdb
INI_MRC_EXT=inimrc
FIL_PDB_EXT=filpdb
FIL_MRC_EXT=filmrc
INPUT_3D_EXT=3d
INPUT_2D_EXT=2d
CTF_2D_EXT=prectf
FFT_2D_EXT=fft
CTF_INFO_EXT=ctfinfo
OUT_CTF_EXT=ctf

#### Suffixes rule ####
.SUFFIXES: .$(INI_PDB_EXT) .$(INI_MRC_EXT) .$(FIL_PDB_EXT) .$(FIL_MRC_EXT) .$(INPUT_3D_EXT) .$(INPUT_2D_EXT) \
			.$(CTF_2D_EXT) .$(FFT_2D_EXT) .$(CTF_INFO_EXT) .$(OUT_CTF_EXT) .tiff

#### INCLUDE ####
SHELL=/bin/bash

-include ../CTFCorrection1/Makefile
#-include Makefile.common
-include INPUT_2D_LIST
-include CTF_2D_LIST
-include FFT_2D_LIST
-include CTF_INFO_LIST

#### Definition ####
CCD=14.0

# Input FileName
INPUT=Input

### For pdbHelix
HELIX_DELTA_PHI=165
HELIX_DELTA_Z=5
HELIX_NUM_MOL=840
HELIX_PIXEL_X=2000
HELIX_PIXEL_Y=2000
HELIX_PIXEL_Z=2000
HELIX_START_X=-1000
HELIX_START_Y=-1000
HELIX_START_Z=-1000
HELIX_LENGTH_X=1
HELIX_LENGTH_Y=1
HELIX_LENGTH_Z=1

### For pdb2mrc2d(Projection Angle of Filament)
PROJECTION_ANGLE_TYPE=YOYS
PROJECTION_ANGLE_1=60
PROJECTION_ANGLE_2=60
PROJECTION_ANGLE_3=0
PROJECTION_PIXEL_X=$(HELIX_PIXEL_Z)
PROJECTION_PIXEL_Y=$(HELIX_PIXEL_Z)
PROJECTION_START_X=`expr $(PROJECTION_PIXEL_X) / 10`
PROJECTION_START_Y=-`expr $(PROJECTION_PIXEL_Y) / 4`
#PROJECTION_START_X=0
#PROJECTION_START_Y=0

### For mrcImageNoiseAdd
SNRATIO=1
NSRATIO=0

### For mrcImageSiemensStar
SSTAR_SHAPE=0

## For mrcImageCTFObservation
CTF_KV=200
CTF_CS=2.1
CTF_DEFOCUS=27000
CTF_AIN=0.3	#need CTF_MODE +32
CTF_MODE=0

#### For Works ####
JOP_NUM=-j 3


#### Rules of the list created ####
$(CTF_2D_EXT):$(INPUT_2D_LIST:.$(INPUT_2D_EXT)=.$(CTF_2D_EXT))


##### Commands #####
all::
#	make InitialCTFDataFromPDB;
	make InitialSiemensStar;
#	make InitialCTFDataFromMRC;
	make ProcessForInput;
	make TIF2CTF;
	make $(INPUT).tiff

InitialCTFDataFromPDB::
	make $(INPUT).$(FIL_PDB_EXT);
	make $(INPUT).$(INPUT_2D_EXT);

InitialCTFDataFromMRC::
	cp $(INPUT).$(INI_MRC_EXT) $(INPUT).$(INPUT_2D_EXT);
	
InitialSiemensStar::
	mrcImageSiemensStar -o $(INPUT).$(INPUT_2D_EXT)tmp -m 2 -Shape $(SSTAR_SHAPE);
	mrcImageNoiseAdd -i $(INPUT).$(INPUT_2D_EXT)tmp -o $(INPUT).$(INPUT_2D_EXT) -NS $(NSRATIO) -SD 1;
	rm $(INPUT).$(INPUT_2D_EXT)tmp;

ProcessForInput::
	make $(INPUT).$(CTF_2D_EXT);
	ln -s $(INPUT).$(CTF_2D_EXT) $(INPUT).mrc;
	mrc2tiff -i $(INPUT).$(INPUT_2D_EXT) -o $(INPUT)_org.tiff;
	mrc2tiff -i $(INPUT).$(CTF_2D_EXT) -o $(INPUT)_i.tiff -I;
	mrc2tiff -i $(INPUT).$(CTF_2D_EXT) -o $(INPUT).tif;
	
	
Test::
	mrcInfo -i Input.mrc -o INFO;
	NX=$$(head -1 INFO | awk '{printf("%d\n", $$4);}'); \
	NY=$$(head -1 INFO | awk '{printf("%d\n", $$5);}'); \
	echo $$NX $$NY;


##### Commands(Input to Output) #####
.$(INI_PDB_EXT).$(FIL_PDB_EXT):
	pdbHelix -i $*.$(INI_PDB_EXT) -o $*.$(FIL_PDB_EXT) -p $(HELIX_DELTA_PHI) -z $(HELIX_DELTA_Z) -n $(HELIX_NUM_MOL) \
			-nx $(HELIX_PIXEL_X) -ny $(HELIX_PIXEL_Y) -nz $(HELIX_PIXEL_Z) \
			-Sx $(HELIX_START_X) -Sy $(HELIX_START_Y) -Sz $(HELIX_START_Z) \
			-dx $(HELIX_LENGTH_X) -dy $(HELIX_LENGTH_Y) -dz $(HELIX_LENGTH_Z)

.$(FIL_PDB_EXT).$(INPUT_3D_EXT):
	pdb2mrc -i $*.$(FIL_PDB_EXT) -o $*.$(INPUT_3D_EXT) -m 1

.$(FIL_PDB_EXT).$(INPUT_2D_EXT):
	pdb2mrc2d -i $*.$(FIL_PDB_EXT) -o $*.$(INPUT_2D_EXT)tmp -w 100 -sig 1 -Rot 1 1 \
			-d $(HELIX_LENGTH_X) $(HELIX_LENGTH_Y) -n $(PROJECTION_PIXEL_X) $(PROJECTION_PIXEL_Y) -s $(PROJECTION_START_X) $(PROJECTION_START_Y) \
			-startEA $(PROJECTION_ANGLE_TYPE) $(PROJECTION_ANGLE_1) $(PROJECTION_ANGLE_2) $(PROJECTION_ANGLE_3);
	
	mrcImageNoiseAdd -i $*.$(INPUT_2D_EXT)tmp -o $*.$(INPUT_2D_EXT) -SN $(SNRATIO);
	rm $*.$(INPUT_2D_EXT)tmp

.$(INPUT_2D_EXT).$(CTF_2D_EXT):
	mrcImageCTFObservation -i $*.$(INPUT_2D_EXT) -o $*.$(CTF_2D_EXT) -ctfMode $(CTF_MODE) \
							-kV $(CTF_KV) -Cs $(CTF_CS) -df $(CTF_DEFOCUS) -Ain $(CTF_AIN);

.$(OUT_CTF_EXT).tiff:
	mrc2tiff -i $*.$(OUT_CTF_EXT) -o $*_ctf.tiff
	