From aa062f8546379bd35769314fb3470fde02445157 Mon Sep 17 00:00:00 2001 From: Anastasia Tyryshkina Date: Mon, 4 Jun 2018 11:53:14 -0400 Subject: [PATCH] fixed the issues with the last pull --- scripts/grt/export.py | 69 +++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/scripts/grt/export.py b/scripts/grt/export.py index fdc6adfebdd..26702ed349f 100644 --- a/scripts/grt/export.py +++ b/scripts/grt/export.py @@ -280,41 +280,52 @@ def main(argv): annotate('export_datasets_start', 'Exporting Datasets') handle_datasets = open(REPORT_BASE + '.datasets.tsv', 'w') - handle_datasets.write('\t'.join(('job_id', 'dataset_id', 'extension', 'file_size', 'name', 'param_name')) + '\n') + handle_datasets.write('\t'.join(('job_id', 'dataset_id', 'extension', 'file_size', 'param_name')) + '\n') for offset_start in range(last_job_sent, end_job_id, args.batch_size): logging.debug("Processing %s:%s", offset_start, min(end_job_id, offset_start + args.batch_size)) - for job in sa_session.query(model.Job) \ - .filter(model.Job.id > offset_start) \ - .filter(model.Job.id <= min(end_job_id, offset_start + args.batch_size)) \ - .all(): - # If the tool is blacklisted, exclude everywhere - if job.tool_id in blacklisted_tools: - continue + # three queries: JobToInputDatasetAssociation, HistoryDatasetAssociation, Dataset - input_datasets=(job.input_datasets) - for input_dataset in input_datasets: - hda = input_dataset.dataset - dataset = hda.dataset - datasets=({'dataset_id': str(hda.dataset_id), - 'extension': hda.extension, - 'file_size': int(dataset.file_size), - 'name': hda.name, - 'param_name': input_dataset.name}) + job_to_hda_ids=sa_session.query(model.JobToInputDatasetAssociation.job_id, model.JobToInputDatasetAssociation.dataset_id, + model.JobToInputDatasetAssociation.name) \ + .filter(model.JobToInputDatasetAssociation.job_id > offset_start) \ + .filter(model.JobToInputDatasetAssociation.job_id <= min(end_job_id, offset_start + args.batch_size)) \ + .all() - handle_datasets.write(str(job.id)) - handle_datasets.write('\t') - handle_datasets.write(datasets['dataset_id']) - handle_datasets.write('\t') - handle_datasets.write(datasets['extension']) - handle_datasets.write('\t') - handle_datasets.write(str(datasets['file_size'])) - handle_datasets.write('\t') - handle_datasets.write(datasets['name']) - handle_datasets.write('\t') - handle_datasets.write(datasets['param_name']) - handle_datasets.write('\n') + # put all of the hda_ids into a list + hda_ids=[i[1] for i in job_to_hda_ids] + hdas=sa_session.query(model.HistoryDatasetAssociation.id, model.HistoryDatasetAssociation.dataset_id, + model.HistoryDatasetAssociation.extension) \ + .filter(model.HistoryDatasetAssociation.id.in_(hda_ids)) \ + .all() + + # put all the dataset ids into a list + dataset_ids=[i[1] for i in hdas] + + # get the sizes of the datasets + datasets=sa_session.query(model.Dataset.id, model.Dataset.total_size) \ + .filter(model.HistoryDatasetAssociation.id.in_(dataset_ids)) \ + .all() + + # datasets to dictionay for easy search + hdas={i[0]:i[1:] for i in hdas} + datasets={i[0]:i[1:] for i in datasets} + + for job in job_to_hda_ids: + hda_id=job[1] + dataset_id=hdas[hda_id][0] + + handle_datasets.write(str(job[0])) + handle_datasets.write('\t') + handle_datasets.write(str(hda_id)) + handle_datasets.write('\t') + handle_datasets.write(hdas[hda_id][1]) # not sure if this results in a query, but this was the only way I managed to retrive it. + handle_datasets.write('\t') + handle_datasets.write(str(datasets[dataset_id][0])) + handle_datasets.write('\t') + handle_datasets.write(job[2]) + handle_datasets.write('\n') handle_datasets.close() annotate('export_datasets_end')