/
v0.3.yaml
122 lines (105 loc) · 3.84 KB
/
v0.3.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
schema_version: enum('0.3')
buildstock_directory: str()
project_directory: str(required=True)
weather_files_path: str(required=False)
weather_files_url: str(required=False)
sampler: include('sampler-spec', required=True)
workflow_generator: include('workflow-generator-spec', required=True)
eagle: include('hpc-spec', required=False)
aws: include('aws-spec', required=False)
output_directory: str(required=False)
sys_image_dir: str(required=False)
baseline: include('sim-spec', required=True)
os_version: str(required=False)
os_sha: str(required=False)
upgrades: list(include('upgrade-spec'), required=False)
postprocessing: include('postprocessing-spec', required=False)
---
aws-spec:
job_identifier: regex('^[a-zA-Z]\w{,9}$', required=True)
s3: include('s3-aws-postprocessing-spec', required=True)
region: str(required=True)
use_spot: bool(required=False)
spot_bid_percent: num(min=1, max=100, required=False)
batch_array_size: num(min=1, max=10000, required=True)
notifications_email: regex('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$', name='email', required=True)
emr: include('aws-emr-spec', required=False)
job_environment: include('aws-job-environment', required=False)
aws-job-environment:
vcpus: int(min=1, max=36, required=False)
memory: int(min=1024, required=False)
aws-emr-spec:
manager_instance_type: str(required=False)
worker_instance_type: str(required=False)
worker_instance_count: int(min=1, required=False)
dask_worker_vcores: int(min=1, required=False)
hpc-spec:
account: str(required=True)
minutes_per_sim: int(max=120, required=False)
n_jobs: int(required=False)
postprocessing: include('hpc-postprocessing-spec', required=False)
sampling: include('sampling-spec', required=False)
hpc-postprocessing-spec:
time: int(required=True)
n_workers: int(required=False)
node_memory_mb: enum(85248, 180224, 751616, required=False)
parquet_memory_mb: int(required=False)
sampler-spec:
type: str(required=True)
args: map(key=regex(r'^[a-zA-Z_]\w*$', name='valid variable name'), required=False)
workflow-generator-spec:
type: str(required=True)
args: map(key=regex(r'^[a-zA-Z_]\w*$', name='valid variable name'), required=False)
sampling-spec:
time: int(required=True)
sim-spec:
n_buildings_represented: int(required=True)
skip_sims: bool(required=False)
custom_gems: bool(required=False)
upgrade-spec:
upgrade_name: str(required=True)
options: list(include('option-spec'), required=True)
package_apply_logic: include('apply-logic-spec', required=False)
reference_scenario: str(required=False)
option-spec:
option: include('param_option-spec', required=True)
apply_logic: include('apply-logic-spec', required=False)
costs: list(include('cost-spec'), required=False)
lifetime: num(required=False)
param_option-spec: str(exclude=':(){}[]')
apply-logic-spec: >
any(
list(
include('and-spec'),
include('or-spec'),
include('not-spec'),
include('param_option-spec'),
),
include('and-spec'),
include('or-spec'),
include('not-spec'),
include('param_option-spec')
)
or-spec:
or: list(include('apply-logic-spec'))
and-spec:
and: list(include('apply-logic-spec'))
not-spec:
not: any(include('apply-logic-spec'), list(include('apply-logic-spec')))
cost-spec:
value: num(required=True)
multiplier: str(required=True)
postprocessing-spec:
aws: include('aws-postprocessing-spec', required=False)
keep_individual_timeseries: bool(required=False)
aws-postprocessing-spec:
region_name: str(required=False)
s3: include('s3-aws-postprocessing-spec', required=True)
athena: include('athena-aws-postprocessing-spec', required=False)
s3-aws-postprocessing-spec:
bucket: str(required=True)
prefix: str(required=True)
athena-aws-postprocessing-spec:
glue_service_role: str(required=False)
database_name: str(required=True)
max_crawling_time: num(requried=False)