2 # Copyright (C) The Arvados Authors. All rights reserved.
4 # SPDX-License-Identifier: Apache-2.0
8 import crunchutil.subst as subst
14 if len(arvados.current_task()['parameters']) > 0:
15 p = arvados.current_task()['parameters']
17 p = arvados.current_job()['script_parameters']
19 t = arvados.current_task().tmpdir
21 os.unlink("/usr/local/share/bcbio-nextgen/galaxy")
22 os.mkdir("/usr/local/share/bcbio-nextgen/galaxy")
23 shutil.copy("/usr/local/share/bcbio-nextgen/config/bcbio_system.yaml", "/usr/local/share/bcbio-nextgen/galaxy")
25 with open("/usr/local/share/bcbio-nextgen/galaxy/tool_data_table_conf.xml", "w") as f:
27 <!-- Locations of indexes in the BWA mapper format -->
28 <table name="bwa_indexes" comment_char="#">
29 <columns>value, dbkey, name, path</columns>
30 <file path="tool-data/bwa_index.loc" />
32 <!-- Locations of indexes in the Bowtie2 mapper format -->
33 <table name="bowtie2_indexes" comment_char="#">
34 <columns>value, dbkey, name, path</columns>
35 <file path="tool-data/bowtie2_indices.loc" />
37 <!-- Locations of indexes in the Bowtie2 mapper format for TopHat2 to use -->
38 <table name="tophat2_indexes" comment_char="#">
39 <columns>value, dbkey, name, path</columns>
40 <file path="tool-data/bowtie2_indices.loc" />
42 <!-- Location of SAMTools indexes and other files -->
43 <table name="sam_fa_indexes" comment_char="#">
44 <columns>index, value, path</columns>
45 <file path="tool-data/sam_fa_indices.loc" />
47 <!-- Location of Picard dict file and other files -->
48 <table name="picard_indexes" comment_char="#">
49 <columns>value, dbkey, name, path</columns>
50 <file path="tool-data/picard_index.loc" />
52 <!-- Location of Picard dict files valid for GATK -->
53 <table name="gatk_picard_indexes" comment_char="#">
54 <columns>value, dbkey, name, path</columns>
55 <file path="tool-data/gatk_sorted_picard_index.loc" />
60 os.mkdir("/usr/local/share/bcbio-nextgen/galaxy/tool-data")
62 with open("/usr/local/share/bcbio-nextgen/galaxy/tool-data/bowtie2_indices.loc", "w") as f:
63 f.write(subst.do_substitution(p, "GRCh37\tGRCh37\tHuman (GRCh37)\t$(dir $(bowtie2_indices))\n"))
65 with open("/usr/local/share/bcbio-nextgen/galaxy/tool-data/bwa_index.loc", "w") as f:
66 f.write(subst.do_substitution(p, "GRCh37\tGRCh37\tHuman (GRCh37)\t$(file $(bwa_index))\n"))
68 with open("/usr/local/share/bcbio-nextgen/galaxy/tool-data/gatk_sorted_picard_index.loc", "w") as f:
69 f.write(subst.do_substitution(p, "GRCh37\tGRCh37\tHuman (GRCh37)\t$(file $(gatk_sorted_picard_index))\n"))
71 with open("/usr/local/share/bcbio-nextgen/galaxy/tool-data/picard_index.loc", "w") as f:
72 f.write(subst.do_substitution(p, "GRCh37\tGRCh37\tHuman (GRCh37)\t$(file $(picard_index))\n"))
74 with open("/usr/local/share/bcbio-nextgen/galaxy/tool-data/sam_fa_indices.loc", "w") as f:
75 f.write(subst.do_substitution(p, "index\tGRCh37\t$(file $(sam_fa_indices))\n"))
77 with open("/tmp/crunch-job/freebayes-variant.yaml", "w") as f:
79 # Template for whole genome Illumina variant calling with FreeBayes
80 # This is a GATK-free pipeline without post-alignment BAM pre-processing
81 # (recalibration and realignment)
86 # to do multi-sample variant calling, assign samples the same metadata / batch
88 # batch: your-arbitrary-batch-name
94 variantcaller: freebayes
96 quality_format: Standard
97 # for targetted projects, set the region
98 # variant_regions: /path/to/your.bed
101 os.unlink("/usr/local/share/bcbio-nextgen/gemini_data")
102 os.symlink(arvados.get_job_param_mount("gemini_data"), "/usr/local/share/bcbio-nextgen/gemini_data")
104 os.chdir(arvados.current_task().tmpdir)
106 rcode = subprocess.call(["bcbio_nextgen.py", "--workflow", "template", "/tmp/crunch-job/freebayes-variant.yaml", "project1",
107 subst.do_substitution(p, "$(file $(R1))"),
108 subst.do_substitution(p, "$(file $(R2))")])
110 os.chdir("project1/work")
112 os.symlink("/usr/local/share/bcbio-nextgen/galaxy/tool-data", "tool-data")
114 rcode = subprocess.call(["bcbio_nextgen.py", "../config/project1.yaml", "-n", os.environ['CRUNCH_NODE_SLOTS']])
116 print("run-command: completed with exit code %i (%s)" % (rcode, "success" if rcode == 0 else "failed"))
121 print("arvados-bcbio-nextgen: the follow output files will be saved to keep:")
123 subprocess.call(["find", ".", "-type", "f", "-printf", "arvados-bcbio-nextgen: %12.12s %h/%f\\n"])
125 print("arvados-bcbio-nextgen: start writing output to keep")
128 api = arvados.api('v1')
131 out = arvados.CollectionWriter()
132 out.write_directory_tree(".", max_manifest_depth=0)
133 outuuid = out.finish()
134 api.job_tasks().update(uuid=arvados.current_task()['uuid'],
137 'success': (rcode == 0),
141 except Exception as e:
142 print("arvados-bcbio-nextgen: caught exception: {}".format(e))