#---*- Makefile -*-------------------------------------------------------
#$Author: saulius $
#$Date: 2019-03-07 15:48:47 +0000 (Thu, 07 Mar 2019) $
#$Revision: 190 $
#$URL: svn+ssh://saulius-grazulis.lt/home/saulius/svn-repositories/makefiles/cif-jubmo-sdf/Makelocal-cif-jubmo-sdf $
#------------------------------------------------------------------------
#*
# Convert a crystallographic CIF into a chemically relevant SDF file
# using 'cif_molecule --preserve-stoichiometry', cif2cml from Jumbo
# converters and cml2sdf for sdf file generation. OBabel is used to
# generate drawings in SVG format.
#**

INPUT_DIR  = inputs
OUTPUT_DIR = outputs

CIFS = $(shell find ${INPUT_DIR} -name "*.cif")

CMLS = ${CIFS:${INPUT_DIR}/%.cif=${OUTPUT_DIR}/%.cml}
SDFS = ${CIFS:${INPUT_DIR}/%.cif=${OUTPUT_DIR}/%.sdf}
SVGS = ${CIFS:${INPUT_DIR}/%.cif=${OUTPUT_DIR}/%.svg}
SMIS = ${CIFS:${INPUT_DIR}/%.cif=${OUTPUT_DIR}/%.smi}

.PHONY: all clean distclean cleanAll

.PRECIOUS: ${OUTPUT_DIR}/%.cif

all: ${CMLS} ${SDFS} ${SVGS} ${SMIS}

#------------------------------------------------------------------------------

${OUTPUT_DIR}/%.cif: ${INPUT_DIR}/%.cif
	@mkdir -p $(dir $@)
	cif_molecule \
		--preserve-stoichiometry \
		--use-morgan-fingerprints \
		--one-datablock \
		--force-unit-occupancies \
		--ignore-bumps \
		--max-polymer-span=0 \
		--max-polymer-atoms=400 \
		--split-disorder-groups \
		--largest-molecule-only \
	$< > $@

${OUTPUT_DIR}/%.cml: ${OUTPUT_DIR}/%.cif
	ulimit -t 50; cif2cml $< -o $@

${OUTPUT_DIR}/%.sdf: ${OUTPUT_DIR}/%.cml
	ulimit -t 50; cml2sdf $< -o $@
#	S.G.: Remove the atom name aliases -- Avogadro seems confused by them:
	perl -i -ne 'print if !(/^A/../^M/) || /^M/' $@
	sdf_add_cod_data --cod-cif ${INPUT_DIR}/$*.cif $@ | sponge $@

${OUTPUT_DIR}/%.svg: ${OUTPUT_DIR}/%.sdf
	limit-time 50 obabel -iSDF $< -oSVG -O $@

${OUTPUT_DIR}/%.smi: ${OUTPUT_DIR}/%.sdf
	ulimit -t 50; obabel -iSDF -oSMI < $< > $@

clean cleanAll distclean:
	rm -f ${CMLS}
	rm -f ${SDFS}
	rm -f ${SVGS}
	rm -f ${SMIS}
