-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_summary.py
64 lines (45 loc) · 2.19 KB
/
generate_summary.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import argparse
import uuid
import jsonpickle
from hca_ingest.api.ingestapi import IngestApi
from broker.common.util.tsv_summary_util import TSVSummaryUtil
from broker.service.summary_service import SummaryService
def generate_submission_summary(uuid, ingest_url):
ingest_api = IngestApi(ingest_url)
submission = ingest_api.getSubmissionByUuid(uuid)
summary = SummaryService(ingest_api).summary_for_submission(submission)
return summary
def generate_project_summary(uuid, ingest_url):
ingest_api = IngestApi(ingest_url)
project = ingest_api.getProjectByUuid(uuid)
summary = SummaryService(ingest_api).summary_for_project(project)
return summary
def check_uuid(uuid_str):
try:
uuid.UUID(uuid_str, version=4)
return uuid_str
except:
raise argparse.ArgumentTypeError("%s is an invalid uuid value" % uuid_str)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('ingest_api', metavar='H', nargs=1,
help='the url of the ingest API (e.g https://api.ingest.dev.archive.data.humancellatlas.org)')
parser.add_argument('summary_type', metavar='T', nargs=1, choices=['project', 'submission'],
help='the type of summary (project or submission)')
parser.add_argument('uuid', metavar='U', nargs=1, type=check_uuid,
help='the uuid of the project/submission')
parser.add_argument('output_format', metavar='O', nargs=1, choices=['json', 'tsv'],
help='summary output format')
args = parser.parse_args()
uuid_str = args.uuid[0]
summary_type = args.summary_type[0]
ingest_url = args.ingest_api[0]
output_format = args.output_format[0]
summary = generate_project_summary(uuid_str, ingest_url) if summary_type == 'project' else generate_submission_summary(uuid_str, ingest_url)
if output_format == 'json':
print(jsonpickle.encode(summary, unpicklable=False))
elif output_format == 'tsv':
if summary_type == 'project':
TSVSummaryUtil.project_summary_to_tsv(summary)
else:
TSVSummaryUtil.submission_summary_to_tsv(summary)