Example #1
0
def find_batch_runs(kive, batch_name, batch_size):
    run_map = {}  # {sample_name: status}
    run_count = 0
    for i in range(1, 201):
        response = kive.get('/api/runs/status/',
                            params={
                                'page_size': 25,
                                'page': i
                            })
        response.raise_for_status()
        json = response.json()
        for entry in json['results']:
            text_status = entry['run_progress']['status']
            pipeline_id = entry['pipeline']
            if (re.match(r'^\*+-\*+$', text_status) is None
                    or pipeline_id not in kive_pipelines):
                continue
            display_match = re.match(r'^MiSeq - ([^_]*_S\d+)$',
                                     entry['display_name'])
            if display_match is not None:
                if batch_name not in entry['runbatch_name']:
                    continue
                sample_name = display_match.group(1)
            else:
                status_response = kive.get(entry['run_status'])
                status_response.raise_for_status()
                status_json = status_response.json()
                is_match = False
                sample_name = None
                for input_dataset_name in map(itemgetter('dataset_name'),
                                              status_json['inputs'].values()):
                    if input_dataset_name.endswith('_quality.csv'):
                        is_match = batch_name in input_dataset_name
                    elif input_dataset_name.endswith('.fastq.gz'):
                        sample_name = '_'.join(
                            input_dataset_name.split('_')[:2])
                if not is_match or sample_name is None:
                    continue
            status = RunStatus(entry, kive)
            status.json = entry
            run_map[sample_name] = status
        run_count = len(run_map)
        print('Found {} of {} runs after {} pages.'.format(
            run_count, batch_size, i))
        if run_count >= batch_size:
            break
    if run_count < batch_size:
        raise Exception('Expected {} samples, but only found {}.'.format(
            batch_size, run_count))
    runs = list(run_map.items())
    runs.sort()
    return runs
Example #2
0
def find_batch_runs(kive, batch_name, batch_size):
    run_map = {}  # {sample_name: status}
    for i in range(1, 201):
        response = kive.get('/api/runs/status/',
                            params={
                                'page_size': 25,
                                'page': i
                            })
        response.raise_for_status()
        json = response.json()
        for entry in json['results']:
            text_status = entry['run_progress']['status']
            pipeline_id = entry['pipeline']
            if re.match(r'^\*+-\*+$',
                        text_status) is None or pipeline_id != 167:
                continue
            display_match = re.match(r'^MiSeq - ([^_]*_S\d+) \((.*)\)$',
                                     entry['display_name'])
            if display_match is not None:
                if display_match.group(2) != batch_name:
                    continue
                sample_name = display_match.group(1)
            else:
                status_response = kive.get(entry['run_status'])
                status_response.raise_for_status()
                status_json = status_response.json()
                quality_filename = status_json['inputs']['1']['dataset_name']
                if quality_filename != '{}_quality.csv'.format(batch_name):
                    continue
                sample_filename = status_json['inputs']['2']['dataset_name']
                sample_name = '_'.join(sample_filename.split('_')[:2])
            status = RunStatus(entry, kive)
            status.json = entry
            run_map[sample_name] = status
        run_count = len(run_map)
        print('Found {} of {} runs after {} pages.'.format(
            run_count, batch_size, i))
        if run_count >= batch_size:
            break
    if run_count < batch_size:
        raise StandardError('Expected {} samples, but only found {}.'.format(
            batch_size, run_count))
    runs = run_map.items()
    runs.sort()
    return runs
Example #3
0
def find_old_runs(kive, **kwargs):
    params = {}
    param_count = 0
    for key, val in kwargs.items():
        if val is not None:
            params['filters[{}][key]'.format(param_count)] = key
            params['filters[{}][val]'.format(param_count)] = val
            param_count += 1
    response = kive.get('/api/runs/status/', params=params)
    response.raise_for_status()
    json = response.json()
    runs = []
    for entry in json:
        status = RunStatus(entry, kive)
        status.json = entry
        status_response = kive.get(entry['run_status'])
        status_response.raise_for_status()
        sample_filename = status_response.json()['inputs']['2']['dataset_name']
        sample_name = '_'.join(sample_filename.split('_')[:2])
        runs.append((sample_name, status))
    runs.sort()
    return runs
Example #4
0
def find_old_runs(kive, **kwargs):
    params = {}
    param_count = 0
    for key, val in kwargs.iteritems():
        if val is not None:
            params["filters[{}][key]".format(param_count)] = key
            params["filters[{}][val]".format(param_count)] = val
            param_count += 1
    response = kive.get("/api/runs/status/", params=params)
    response.raise_for_status()
    json = response.json()
    runs = []
    for entry in json:
        status = RunStatus(entry, kive)
        status.json = entry
        status_response = kive.get(entry["run_status"])
        status_response.raise_for_status()
        sample_filename = status_response.json()["inputs"]["2"]["dataset_name"]
        sample_name = "_".join(sample_filename.split("_")[:2])
        runs.append((sample_name, status))
    runs.sort()
    return runs
Example #5
0
def find_batch_runs(kive, batch_name, batch_size):
    run_map = {}  # {sample_name: status}
    for i in range(1, 201):
        response = kive.get("/api/runs/status/", params={"page_size": 25, "page": i})
        response.raise_for_status()
        json = response.json()
        for entry in json["results"]:
            text_status = entry["run_progress"]["status"]
            pipeline_id = entry["pipeline"]
            if re.match(r"^\*+-\*+$", text_status) is None or pipeline_id != 167:
                continue
            display_match = re.match(r"^MiSeq - ([^_]*_S\d+) \((.*)\)$", entry["display_name"])
            if display_match is not None:
                if display_match.group(2) != batch_name:
                    continue
                sample_name = display_match.group(1)
            else:
                status_response = kive.get(entry["run_status"])
                status_response.raise_for_status()
                status_json = status_response.json()
                quality_filename = status_json["inputs"]["1"]["dataset_name"]
                if quality_filename != "{}_quality.csv".format(batch_name):
                    continue
                sample_filename = status_json["inputs"]["2"]["dataset_name"]
                sample_name = "_".join(sample_filename.split("_")[:2])
            status = RunStatus(entry, kive)
            status.json = entry
            run_map[sample_name] = status
        run_count = len(run_map)
        print("Found {} of {} runs after {} pages.".format(run_count, batch_size, i))
        if run_count >= batch_size:
            break
    if run_count < batch_size:
        raise StandardError("Expected {} samples, but only found {}.".format(batch_size, run_count))
    runs = run_map.items()
    runs.sort()
    return runs