1#!/usr/bin/env cwl-runner
2### Downloader of AQS Data
3# Copyright (c) 2021. Harvard University
4#
5# Developed by Research Software Engineering,
6# Faculty of Arts and Sciences, Research Computing (FAS RC)
7# Author: Michael A Bouzinier
8#
9# Licensed under the Apache License, Version 2.0 (the "License");
10# you may not use this file except in compliance with the License.
11# You may obtain a copy of the License at
12#
13# http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS,
17# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18# See the License for the specific language governing permissions and
19# limitations under the License.
20#
21
22cwlVersion: v1.2
23class: CommandLineTool
24baseCommand: [wget]
25
26requirements:
27 InlineJavascriptRequirement: {}
28 ResourceRequirement:
29 coresMin: 0.5
30 EnvVarRequirement:
31 envDef:
32 HTTP_PROXY: "$('proxy' in inputs? inputs.proxy: null)"
33 HTTPS_PROXY: "$('proxy' in inputs? inputs.proxy: null)"
34 NO_PROXY: "localhost,127.0.0.1,172.17.0.1"
35
36doc: |
37 This tool downloads AQS data from EPA website
38
39inputs:
40 aggregation:
41 type: string
42 doc: "Aggregation type: annual or daily"
43 parameter_code:
44 type: string
45 doc: |
46 Parameter code. Either a numeric code (e.g. 88101, 44201)
47 or symbolic name (e.g. PM25, NO2).
48 See more: [AQS Code List](https://www.epa.gov/aqs/aqs-code-list)
49 year:
50 type: string
51 doc: Year to download
52 proxy:
53 type: string
54 doc: Proxy for connection
55
56arguments:
57 - position: 1
58 valueFrom: $("https_proxy=" + inputs.proxy)
59 prefix: -e
60 - position: 2
61 valueFrom: |
62 ${
63 if (inputs.aggregation == "annual") {
64 return "https://aqs.epa.gov/aqsweb/airdata/annual_conc_by_monitor_" + inputs.year + ".zip";
65 } else {
66 var parameters = {"NO2": 42602, "OZONE": 44201, "PM25": 88101, "MIN_TEMP": 68103, "MAX_TEMP": 68104};
67 var parameter = parameters[inputs.parameter_code] || inputs.parameter_code;
68
69 return "https://aqs.epa.gov/aqsweb/airdata/daily_" + parameter + "_" + inputs.year + ".zip";
70 }
71 }
72
73outputs:
74 data:
75 type: File
76 outputBinding:
77 glob: "*.*"