Skip to content
Snippets Groups Projects
Makefile.offline_inspiral_full_template 10.7 KiB
Newer Older
.PHONY: psd
psd : psd_inspiral_dag.dag
	@echo ""

.PHONY: svd
svd : svd_inspiral_dag.dag
	@echo ""

.PHONY: filter
filter : filter_inspiral_dag.dag
	@echo ""
.PHONY: rank
rank : rank_inspiral_dag.dag
	@echo ""
{% if config.filter.injections %}
.PHONY: injection_setup
injection_setup : injection-setup_inspiral_dag.dag 
.PHONY: injection_filter
injection_filter : injection-filter_inspiral_dag.dag
	@echo ""
{% endif %}

.PHONY: summary
summary :
	mkdir -p {{ config.summary.webdir }}
	gstlal_inspiral_summary_page \
		--title gstlal-{{ config.start }}-{{ config.stop }}-closed-box \
		--webserver-dir {{ config.summary.webdir }} \
		--output-user-tag ALL_COMBINED \
		--output-user-tag PRECESSION_COMBINED \
		{% if config.filter.injections %}
		{% for inj_name in config.filter.injections.keys() %}
		--output-user-tag {{ inj_name.upper() }}_INJECTION \
		--output-user-tag {{ inj_name.upper() }}_INJECTION_PRECESSION \
		{% endfor %}
	mkdir -p {{ config.summary.webdir }}/OPEN-BOX
	gstlal_inspiral_summary_page \
		--title gstlal-{{ config.start }}-{{ config.stop }}-open-box \
		--webserver-dir {{ config.summary.webdir }}/OPEN-BOX \
		--output-user-tag ALL_COMBINED \
		--output-user-tag PRECESSION_COMBINED \
		{% if config.filter.injections %}
		{% for inj_name in config.filter.injections.keys() %}
		--output-user-tag {{ inj_name.upper() }}_INJECTION \
		--output-user-tag {{ inj_name.upper() }}_INJECTION_PRECESSION \
		{% endfor %}
		--glob-path plots
	chmod a-r {{ config.summary.webdir }}/OPEN-BOX

.PHONY: unlock
unlock :
	chmod a+r {{ config.summary.webdir }}/OPEN-BOX
{% if config.segments.backend == 'gwosc' %}
segments.xml.gz : CAT1_vetoes.xml.gz
	gstlal_query_gwosc_segments -o $@ {{ config.start }} {{ config.stop }}{% for instrument in config.ifos %} {{ instrument }}{% endfor %}

	gstlal_segments_operations --segment-name vetoes --output-segment-name datasegments --union --output-file CAT1_vetoes_renamed.xml.gz $< $<
	gstlal_segments_operations --diff --output-file $@ $@ CAT1_vetoes_renamed.xml.gz
	gstlal_segments_trim --trim 0 --gps-start-time {{ config.start }} --gps-end-time {{ config.stop }} --min-length 512 --output $@ $@
	rm CAT1_vetoes_renamed.xml.gz
	@echo ""

vetoes.xml.gz : {{ config.segments.vetoes.category }}_vetoes.xml.gz
{{ config.segments.vetoes.category }}_vetoes.xml.gz :
	gstlal_query_gwosc_veto_segments -o $@ {{ config.start }} {{ config.stop }} {% for instrument in config.ifos %} {{ instrument }}{% endfor %} --category {{ config.segments.vetoes.category }} --cumulative
{% elif config.segments.backend == 'dqsegdb' %}
segments.xml.gz : CAT1_vetoes.xml.gz
	gstlal_query_dqsegdb_segments -o $@ {{ config.start }} {{ config.stop }}{% for instrument in config.ifos %} {{ instrument }}{% endfor %} {% for instrument, flag in config.segments.science.items() %} -f {{ "{}:{}".format(instrument, flag) }}{% endfor %}

	gstlal_segments_operations --segment-name vetoes --output-segment-name datasegments --union --output-file CAT1_vetoes_renamed.xml.gz $< $<
	gstlal_segments_operations --diff --output-file $@ $@ CAT1_vetoes_renamed.xml.gz
	gstlal_segments_trim --trim 0 --gps-start-time {{ config.start }} --gps-end-time {{ config.stop }} --min-length 512 --output $@ $@
	rm CAT1_vetoes_renamed.xml.gz
	@echo ""

vetoes.xml.gz : {{ config.segments.vetoes.category }}_vetoes.xml.gz
	cp $< $@
	@echo ""

{{ config.segments.vetoes.category }}_vetoes.xml.gz : {{ config.segments.vetoes.veto_definer.file }}
	gstlal_query_dqsegdb_veto_segments -o $@ {{ config.start }} {{ config.stop }} {% for instrument in config.ifos %} {{ instrument }}{% endfor %} --category {{ config.segments.vetoes.category }} --cumulative --veto-definer-file $<
	@echo ""

{{ config.segments.vetoes.veto_definer.file }} :
	git archive --remote=git@git.ligo.org:detchar/veto-definitions.git {{ config.segments.vetoes.veto_definer.version }}:cbc/{{ config.segments.vetoes.veto_definer.epoch }} $@ | tar -x
	ligolw_no_ilwdchar $@

{% endif %}
{% if config.filter.injection_time_slide_file %}
	lalburst_gen_timeslides {% for instrument, slides in config.filter.time_slides.items() %} --instrument={{ instrument }}={{ slides }}{% endfor %} bg_tisi.xml
	ligolw_add --output $@ bg_tisi.xml $<
	@echo ""

inj_tisi.xml :
	lalburst_gen_timeslides {% for instrument in config.ifos %} --instrument={{ instrument }}=0:0:0{% endfor %} $@
{% else %}
tisi.xml : 
	lalburst_gen_timeslides {% for instrument, slides in config.filter.time_slides.items() %} --instrument={{ instrument }}={{ slides }}{% endfor %} bg_tisi.xml
	ligolw_add --output $@ bg_tisi.xml $<
	@echo ""
{% endif %}

{{ config.svd.option_file }} :{% for bank_file in config.data.template_bank.values() %} {{ bank_file }}{% endfor %}
{{ config.svd.option_file }} : {{ config.data.template_bank }}
	mkdir -p {{ config.data.data_dir }}/split_bank
	{% if config.svd.sub_banks %}
	{% for bank_name, params in config.svd.sub_banks.items() %}
	gstlal_inspiral_bank_splitter \
		--f-low {{ params.f_low }} \
		{% if params.num_mu_bins %}
		--group-by-mu {{ params.num_mu_bins }} \
		{% else %}
		--output-path {{ config.data.data_dir }}/split_bank \
		{% for approx in config.svd.approximant %}
		--approximant {{ approx }} \
		{% endfor %}
		--overlap {{ params.overlap }} \
		--instrument {% for instrument in config.ifos %}{{ instrument }}{% endfor %} \
		--n {{ params.num_split_templates }} \
		--sort-by {{ params.sort_by }} \
		{% else %}
		--sort-by {{ config.svd.sort_by }}  \
		{% endif %}
		--f-final {{ config.svd.max_f_final }} \
		--num-banks {{ params.num_banks }} \
		--stats-file $@ \
		{{ config.data.template_bank[bank_name] }}	
	{% endfor %}
	{% else %}
	gstlal_inspiral_bank_splitter \
		--f-low {{ config.svd.f_low }} \
		{% if config.svd.num_mu_bins %}
		--group-by-mu {{ config.svd.num_mu_bins }} \
			{% else %}
		--group-by-chi {{ config.svd.num_chi_bins }} \
		--output-path {{ config.data.data_dir }}/split_bank \
		{% for approx in config.svd.approximant %}
		--approximant {{ approx }} \
		{% endfor %}
		--overlap {{ config.svd.overlap }} \
		--instrument {% for instrument in config.ifos %}{{ instrument }}{% endfor %} \
		--n {{ config.svd.num_split_templates }} \
		--sort-by {{ config.svd.sort_by }}  \
		--f-final {{ config.svd.max_f_final }} \
		--num-banks {{ config.svd.num_banks }} \
		--stats-file $@ \
		$<
	{% endif %}
	gstlal_inspiral_set_svdbin_option --config config.yml
psd_inspiral_dag.dag : vetoes.xml.gz segments.xml.gz {{ config.svd.manifest }}
	gstlal_inspiral_workflow create -c config.yml --workflow psd

svd_inspiral_dag.dag : {{ config.svd.manifest }} vetoes.xml.gz segments.xml.gz
	gstlal_inspiral_workflow create -c config.yml --workflow svd

filter_inspiral_dag.dag : vetoes.xml.gz segments.xml.gz tisi.xml {{ config.svd.manifest }}
	gstlal_inspiral_workflow create -c config.yml --workflow filter

rank_inspiral_dag.dag : segments.xml.gz {{ config.svd.manifest }} plots
	gstlal_inspiral_workflow create -c config.yml --workflow rank

{% if config.filter.injections %}
injections.xml.gz :
	cp {{ config.data.injection_dir}}/injections.xml.gz .
	@echo ""
injection-setup_inspiral_dag.dag : injections.xml.gz {{ config.svd.manifest }}
	gstlal_inspiral_workflow create -c config.yml --workflow injection-setup

injection-filter_inspiral_dag.dag : vetoes.xml.gz segments.xml.gz inj_tisi.xml {{ config.svd.manifest }} injections.xml.gz
	gstlal_inspiral_workflow create -c config.yml --workflow injection-filter
{% endif %}
{% if config.injections and config.injections.sets %}
{% for inj_name, params in config.injections.sets.items() %}
{% if config.filter.injections and inj_name in config.filter.injections and config.filter.injections[inj_name].file and not config.filter.injections[inj_name].pregenerated %}
{{ params.output_tag }}.xml.gz :
	gstlal_lvc_rates_injections \
		--gps-start-time {{ config.start + params.time.shift }} \
		--gps-end-time {{ config.stop }} \
		--snr-calculation INJ_PARAMS \
		--max-redshift {{ params.max_redshift }} \
		--redshift-power  {{ params.redshift_power }} \
		{% if params.max_ns_redshift %}
		--max-ns-redshift {{ params.max_ns_redshift }} \
		--ns-redshift-power  {{ params.ns_redshift_power }} \
		{% endif %}
		--mass-distribution {{ params.mass_distribution }} \
		--spin-distribution ALIGNED_ALIGNED \
		--min-mass {{ params.min_mass }} \
		{% for param in ['mass', 'mtotal', 'massratio', 'spin1', 'spin2'] %}
		--max-{{ param }} {{ params['max_' + param] }} \
		{% if params.min_mass1 %}
		--min-mass1 {{ params.min_mass1 }} \
		{% endif %}
		{% if params.max_spin %}
		--max-spin {{ params.max_spin }} \
		{% endif %}
		{% if params.max_ns_mass or params.max_ns_spin %}
		--max-ns-mass {{ params.max_ns_mass }} \
		--max-ns-spin {{ params.max_ns_spin }} \
		{% endif %}
		--approximant {{ params.approximant }} \
		--time-step {{ params.time.step }} \
		--time-interval {{ params.time.interval }} \
		--random-seed {{ params.random_seed }} \
		--snr-threshold {{ params.snr_threshold }} \
		--min-frequency {{ params.min_frequency }} \
		--h1-reference-spectrum-file {{ config.injections.h1_reference_spectrum_file }} \
		--l1-reference-spectrum-file {{ config.injections.l1_reference_spectrum_file }} \
		--v1-reference-spectrum-file {{ config.injections.v1_reference_spectrum_file }} \
		--output-tag {{ params.output_tag }}
	mv {{ params.output_tag }}-{{ config.start + params.time.shift }}-{{ config.stop }}.xml.gz {{ params.output_tag }}.xml.gz
{% endif %}
{% if config.injections.combine %}
{{ config.injections.combined_file }} : {% for inj in config.injections.sets.values() %} {{ inj.output_tag }}.xml.gz{% endfor %}

	gstlal_inspiral_combine_injection_sets $^ --single-output -o $(basename {{ config.injections.combined_file }})
	rm injection_str.txt
{% endif %}
	rm -rf {{ config.data.data_dir }}/split_bank *vetoes.xml.gz {{ config.svd.option_file }}
	rm -rf {{ config.data.data_dir }}/reference_psd {{ config.data.data_dir }}/median_psd
	rm -rf {{ config.data.filter_dir }}/* 
	rm -rf {{ config.data.rank_dir }}/*
	rm -rf logs *inspiral_dag.dag* *inspiral_dag.sh *.sub _condor_stdout
	{% if config.filter.injections %}
	rm -rf {{ config.data.injection_dir }}/*
	rm -rf {% for inj in config.filter.injections.values() %} {{ inj.file }}{% endfor %}
	rm -rf {% for inj in config.injections.sets.values() %} {{ inj.output_tag }}.xml.gz{% endfor %}

clean-lite :
	rm -rf logs/* *inspiral_dag.dag* *inspiral_dag.sh *.sub