0
|
1 import os
|
|
2 import argparse
|
|
3 from collections import Counter
|
|
4 from jinja2 import Template
|
|
5
|
|
6
|
|
7 def main():
|
|
8 # --workdir `pwd` --output-dir `pwd`/output --input
|
|
9 parser = argparse.ArgumentParser()
|
|
10
|
|
11 parser.add_argument("--workdir", "-w", required=True)
|
|
12 parser.add_argument("--output-dir", "-o", required=True)
|
|
13 parser.add_argument("--template", "-t", required=True)
|
|
14 parser.add_argument("--output-conf", "-c", required=True)
|
|
15 parser.add_argument("--input", "-i", action="append", required=True)
|
|
16 parser.add_argument("--bed", "-b", default=None)
|
|
17
|
|
18
|
|
19
|
|
20 args = parser.parse_args()
|
|
21
|
|
22 workdir = args.workdir
|
|
23 output_dir = args.output_dir
|
|
24 input_files_raw = args.input
|
|
25 template_file_path = args.template
|
|
26 output_config_path = args.output_conf
|
|
27 bed_file_path = args.bed
|
|
28
|
|
29
|
|
30 if bed_file_path:
|
|
31 bed_new_name = "bed_file.bed"
|
|
32 bed_new_file_path = os.path.join(
|
|
33 workdir,
|
|
34 bed_new_name
|
|
35 )
|
|
36 os.symlink(bed_file_path, bed_new_file_path)
|
|
37 bed_file_path = bed_new_file_path
|
|
38
|
|
39 input_files = []
|
|
40 phenotype_counter = Counter()
|
|
41 for input_file in input_files_raw:
|
|
42 if input_file.find(":"):
|
|
43 forward_file, reverse_file, phenotype = input_file.split(":")
|
|
44 phenotype_counter.update(phenotype)
|
|
45 phenotype_count = phenotype_counter[phenotype]
|
|
46
|
|
47 forward_new_name = "{phenotype}_{phenotype_count}_R1.fastq.gz".format(phenotype=phenotype, phenotype_count=phenotype_count)
|
|
48 forward_new_file_path = os.path.join(
|
|
49 workdir,
|
|
50 forward_new_name
|
|
51 )
|
|
52 os.symlink(forward_file, forward_new_file_path)
|
|
53
|
|
54 reverse_new_name = "{phenotype}_{phenotype_count}_R2.fastq.gz".format(phenotype=phenotype, phenotype_count=phenotype_count)
|
|
55 reverse_new_file_path = os.path.join(
|
|
56 workdir,
|
|
57 reverse_new_name
|
|
58 )
|
|
59 os.symlink(reverse_file, reverse_new_file_path)
|
|
60
|
|
61 input_files.append(
|
|
62 {
|
|
63 "forward": forward_new_file_path,
|
|
64 "reverse": reverse_new_file_path,
|
|
65 "description": "{phenotype}_{phenotype_index}".format(phenotype=phenotype, phenotype_index=phenotype_count),
|
|
66 "phenotype": phenotype
|
|
67 }
|
|
68 )
|
|
69
|
|
70 with open(output_config_path, 'w') as config_file_handle, open(template_file_path, 'r') as template_file_handle:
|
|
71 template = Template(template_file_handle.read())
|
|
72 config_file_handle.write(template.render(
|
|
73 samples=input_files,
|
|
74 output_dir=output_dir,
|
|
75 bed_file_path=bed_file_path
|
|
76 ))
|
|
77
|
|
78
|
|
79 if __name__ == "__main__":
|
|
80 main() |