-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchtcsetup.py
More file actions
68 lines (55 loc) · 2.42 KB
/
Copy pathchtcsetup.py
File metadata and controls
68 lines (55 loc) · 2.42 KB
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
from __future__ import annotations
from typing import List, Dict, Tuple, Union, Callable
from pathlib import Path
import argparse
from pprint import pprint
from paths import PATHS
from project import get_modelnames
if __name__ == '__main__':
# See README.
parser = argparse.ArgumentParser('chtcsetup.')
parser.add_argument('--username',
type=str,
default='pravindran',
help='Username on CHTC')
parser.add_argument('--projname',
type=str,
default=Path(__file__).parent.stem,
help='Current project name')
parser.add_argument('--models_per_submit',
type=int,
action='store',
default=20)
parser.add_argument('--patterns',
nargs='+',
default=['*'],
help='List of patterns')
args = parser.parse_args()
PATHS['chtc'].mkdir(parents=True, exist_ok=True)
# create cpujob.sh
with open(PATHS['assets']/'chtc_cpujob.sh.template', 'r') as fp:
contents = ''.join(fp.readlines())
contents = contents.replace('INITIAL', f'{args.username[0]}')
contents = contents.replace('USERNAME', f'{args.username}')
contents = contents.replace('PROJNAME', f'{args.projname}')
with open(PATHS['chtc']/'cpujob.sh', 'w') as fp:
fp.write(contents)
# create cpujobs.sub
with open(PATHS['assets']/'chtc_cpujobs.sub.template', 'r') as fp:
contents = ''.join(fp.readlines())
contents = contents.replace('INITIAL', f'{args.username[0]}')
contents = contents.replace('USERNAME', f'{args.username}')
contents = contents.replace('PROJNAME', f'{args.projname}')
contents = contents.replace('PARAMSFILE', 'cpujobs.params')
with open(PATHS['chtc']/'cpujobs.submit', 'w') as fp:
fp.write(contents)
# create cpujobs.params
model_names = get_modelnames(comp_dir=PATHS['compdata'],
patterns=args.patterns)
model_patts = []
for i in range(0, len(model_names), args.models_per_submit):
mp = ':'.join(model_names[i:(i + args.models_per_submit)])
model_patts.append(mp)
with open(PATHS['chtc']/'cpujobs.params', 'w') as fp:
fp.write('\n'.join(model_patts))
print(f'{len(model_names)} models, {len(model_patts)} jobs.')