#---*- Makefile -*-------------------------------------------------------
#$Author: saulius $
#$Date: 2018-05-10 11:42:20 +0000 (Thu, 10 May 2018) $
#$Revision: 136 $
#$URL: svn+ssh://saulius-grazulis.lt/home/saulius/svn-repositories/makefiles/PDB-download-store-and-process/Makelocal-depict-residues $
#------------------------------------------------------------------------

RESIDUES ?= AGL MGL

## INPUT_DIR ?= inputs
## OUTPUT_DIR ?= outputs
## DOWNLOAD_DIR ?= ${OUTPUT_DIR}/downloads

FULL_PDB_DIR = ${OUTPUT_DIR}/full

RESIDUE_RESULT_DIR = ${OUTPUT_DIR}/results/residues

RESIDUE_INPUT_LISTS = $(wildcard $(addsuffix /*.lst, \
	$(addprefix ${INPUT_DIR}/, ${RESIDUES})))

RESIDUE_INPUT_IDS = $(sort $(shell grep -vH '^\#' ${RESIDUE_INPUT_LISTS} \
	| grep . \
	| tr ":" "-" \
	| sed 's/^inputs\///' \
	| sed 's/PDBids.lst-//' \
))

RESIDUE_FULL_PDB_FILES = $(addprefix ${FULL_PDB_DIR}/, \
	$(addsuffix .pdb, ${RESIDUE_INPUT_IDS}))

RESIDUE_RESULT_FILES = \
	$(addprefix ${RESIDUE_RESULT_DIR}/, \
		$(shell echo ${RESIDUE_INPUT_IDS} \
	| tr " " "\n" \
	| awk '{print $$0".pdb"}'))

RESIDUE_PICTURE_FILES = ${RESIDUE_RESULT_FILES:%.pdb=%.svg}

DEPICT_RESIDUES_DEPEND = .depict-residues.d

include ${DEPICT_RESIDUES_DEPEND}

.INTERMEDIATE: ${RESIDUE_FULL_PDB_FILES}

all: ${RESIDUE_RESULT_FILES} ${RESIDUE_PICTURE_FILES}

.PHONY: show-residues

show-residues:
	echo ${RESIDUE_FULL_PDB_FILES}

${DEPICT_RESIDUES_DEPEND}: ${RESIDUE_INPUT_LISTS}
	date +"# %F %T %Z" > $@
	echo ${RESIDUE_FULL_PDB_FILES} \
		| tr " " "\n" \
		| grep . \
		| xargs -i sh -c 'echo $$(basename {}) {}' \
		| awk '{print $$2":", "${DOWNLOAD_DIR}/"substr($$1,0,2)"/"$$1}' \
	>> $@

${FULL_PDB_DIR}/%.pdb:
	mkdir -p $(dir $@)
	ln $< $@

${RESIDUE_RESULT_DIR}/%.pdb: ${FULL_PDB_DIR}/%.pdb
	mkdir -p $(dir $@)
	date +"REMARK %F %T %Z" > $@
	pdb_select --resname "$(notdir $(patsubst %/,%,$(dir $@)))" $< | pdb_cat >> $@

%.svg: %.pdb
	cat $< \
	| obabel -i PDB -o SMI \
	| cdkdepict --svg-output > $@
	date +"<!-- %F %T %Z -->" >> $@

.PHONY: clean-residues-depend clean-residues clean-pictures

clean-residues-depend:
	rm -f ${DEPICT_RESIDUES_DEPEND}

clean-residues:
	rm -f ${RESIDUE_RESULT_FILES}

clean-pictures:
	rm -f ${RESIDUE_PICTURE_FILES}

clean: clean-residues-depend clean-residues clean-pictures
