- Notifications
You must be signed in to change notification settings - Fork 406
/
Copy pathconstruct-recency-from-submission-date.py
44 lines (36 loc) · 1.38 KB
/
construct-recency-from-submission-date.py
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
importargparse
fromdatetimeimportdatetime
fromaugur.ioimportread_metadata
importjson
defget_recency(date_str, ref_date):
date_submitted=datetime.strptime(date_str, '%Y-%m-%d').toordinal()
ref_day=ref_date.toordinal()
delta_days=ref_day-date_submitted
ifdelta_days<=0:
return'New'
elifdelta_days<3:
return'1-2 days ago'
elifdelta_days<8:
return'3-7 days ago'
elifdelta_days<15:
return'One week ago'
elifdelta_days<31:
return'One month ago'
elifdelta_days>=31:
return'Older'
if__name__=='__main__':
parser=argparse.ArgumentParser(
description="Assign each sequence a field that specifies when it was added",
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument('--metadata', type=str, required=True, help="metadata file")
parser.add_argument('--output', type=str, required=True, help="output json")
args=parser.parse_args()
meta=read_metadata(args.metadata)
node_data= {'nodes':{}}
ref_date=datetime.now()
forstrain, dinmeta.iterrows():
if'date_submitted'indandd['date_submitted'] andd['date_submitted'] !="undefined":
node_data['nodes'][strain] = {'recency': get_recency(d['date_submitted'], ref_date)}
withopen(args.output, 'wt') asfh:
json.dump(node_data, fh)