@@ -39,44 +39,9 @@ rule download_metadata:
3939 aws s3 cp {params.s3_path} - | xz -c -d > {output}
4040 """
4141
42- rule download_nextclade :
43- output :
44- "data/{data_provenance}/{lineage}/nextclade.tsv" ,
45- params :
46- s3_path = lambda wildcards : config ["data" ][wildcards .data_provenance ][wildcards .lineage ]["s3_nextclade" ],
47- shell :
48- """
49- aws s3 cp {params.s3_path} - | xz -c -d > {output}
50- """
51-
52- rule download_haplotype_definitions :
53- output :
54- haplotypes = "data/nextstrain/{lineage}/haplotype_definitions.tsv" ,
55- shell :
56- """
57- curl \
58- -o {output.haplotypes} \
59- -L \
60- 'https://raw.githubusercontent.com/nextstrain/seasonal-flu/refs/heads/master/config/{wildcards.lineage}/ha/emerging_haplotypes.tsv'
61- """
62-
63- rule metadata_with_nextclade :
64- input :
65- metadata = "data/{data_provenance}/{lineage}/metadata.tsv" ,
66- nextclade = "data/{data_provenance}/{lineage}/nextclade.tsv" ,
67- output :
68- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade.tsv" ,
69- shell :
70- """
71- augur merge \
72- --metadata metadata={input.metadata} nextclade={input.nextclade} \
73- --metadata-id-columns strain seqName \
74- --output-metadata {output.metadata}
75- """
76-
7742rule filter_data :
7843 input :
79- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade .tsv" ,
44+ metadata = "data/{data_provenance}/{lineage}/metadata .tsv" ,
8045 output :
8146 metadata = "data/{data_provenance}/{lineage}/filtered_metadata_with_nextclade.tsv" ,
8247 params :
@@ -86,71 +51,41 @@ rule filter_data:
8651 """
8752 augur filter \
8853 --metadata {input.metadata} \
89- --query "(date != '?') & (country != '?') & (region != '?') & (subclade != '') & (\`qc.overallStatus \` == 'good')" \
54+ --query "(date != '?') & (country != '?') & (region != '?') & (subclade_nextclade_ha != '') & (\`qc.overallStatus_ha \` == 'good')" \
9055 --min-date {params.min_date:q} \
9156 --max-date {params.max_date:q} \
9257 --output-metadata {output.metadata}
9358 """
9459
95- rule assign_emerging_haplotypes :
96- input :
97- metadata = "data/{data_provenance}/{lineage}/filtered_metadata_with_nextclade.tsv" ,
98- haplotypes = "data/nextstrain/{lineage}/haplotype_definitions.tsv" ,
99- output :
100- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade_with_emerging_haplotypes.tsv" ,
101- params :
102- variant_column = config ["haplotype_variant_column" ],
103- haplotype_column_name = "emerging_haplotype" ,
104- default_haplotype = "other" ,
105- shell :
106- """
107- python scripts/assign_haplotypes.py \
108- --substitutions {input.metadata} \
109- --haplotypes {input.haplotypes} \
110- --clade-column {params.variant_column:q} \
111- --haplotype-column-name {params.haplotype_column_name:q} \
112- --default-haplotype {params.default_haplotype:q} \
113- --output-table {output.metadata}
114- """
115-
116- rule assign_aa_haplotypes :
117- input :
118- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade_with_emerging_haplotypes.tsv" ,
119- output :
120- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade_with_aa_haplotypes.tsv" ,
121- params :
122- genes = ["HA1" ],
123- clade_column = config ["haplotype_variant_column" ],
124- mutations_column = config ["mutations_column" ],
125- haplotype_column_name = "aa_haplotype" ,
126- shell :
127- r"""
128- python3 scripts/assign_aa_haplotypes.py \
129- --nextclade {input.metadata:q} \
130- --genes {params.genes:q} \
131- --strip-genes \
132- --clade-column {params.clade_column:q} \
133- --mutations-column {params.mutations_column:q} \
134- --attribute-name {params.haplotype_column_name:q} \
135- --output {output.metadata:q}
136- """
60+ def _get_clade_column (wildcards ):
61+ """
62+ Map variant_classification to haplotype column names.
63+ The returned column names should match the columns available in the metadata,
64+ which should defined in the seasonal-flu ingest config.
65+ """
66+ if wildcards .variant_classification == "emerging_haplotype" :
67+ return "emerging_haplotype_ha"
68+ elif wildcards .variant_classification == "aa_haplotype" :
69+ return "subclade_haplotype_ha"
70+ raise Exception (f"Encountered unsupported variant_classification { wildcards .variant_classification !r} " )
13771
13872rule clade_seq_counts :
13973 input :
140- metadata = "data/{data_provenance}/{lineage}/metadata_with_nextclade_with_aa_haplotypes .tsv" ,
74+ metadata = "data/{data_provenance}/{lineage}/filtered_metadata_with_nextclade .tsv" ,
14175 output :
14276 sequence_counts = "results/{data_provenance}/{variant_classification}/{lineage}/{geo_resolution}/seq_counts.tsv" ,
14377 params :
14478 id_column = "strain" ,
14579 date_column = "date" ,
80+ clade_column = _get_clade_column ,
14681 shell :
14782 """
14883 ./scripts/summarize-clade-sequence-counts \
14984 --metadata {input.metadata} \
15085 --id-column {params.id_column:q} \
15186 --date-column {params.date_column:q} \
15287 --location-column {wildcards.geo_resolution:q} \
153- --clade-column {wildcards.variant_classification :q} \
88+ --clade-column {params.clade_column :q} \
15489 --output {output.sequence_counts}
15590 """
15691
0 commit comments