def result_file_validate(experiment, result_file):
    desc = "experiment.result_files"
    check_from_defs(desc, result_file_fields, result_file)
    if result_file.ftype is ResultFileType.expression_matrix:
        result_file_expression_validate(desc, experiment, result_file)
    else:
        result_file_model_validate(desc, experiment, result_file)
示例#2
0
def experiment_validate(experiment):
    desc = "experiment"
    check_from_defs(desc, experiment_fields, experiment)
    libraries_validate(experiment)
    if len(get_extra_libraries(experiment)) > 0:
        extra_libraries_validate(experiment)
    experssion_units_validate(experiment)
示例#3
0
def entry_validate(entry):
    desc = "entry"
    check_from_defs(desc, entry_fields, entry)
    try:
        validate_symbolic_ident(entry.entry_id)
    except LrgaspException as ex:
        raise LrgaspException(f"invalid {desc}.{fld_entry_id.name}") from ex
    for contact in entry.contacts:
        entry_contact_validate(contact)
def _validate_extra_libraries(experiment_md):
    if experiment_md.data_category not in (DataCategory.long_short,
                                           DataCategory.freestyle):
        raise LrgaspException(
            "experiment extra_libraries may only be specified for 'long_short' or 'freestyle' experiments"
        )
    dups = find_dups([el.acc for el in experiment_md.extra_libraries])
    if len(dups) > 0:
        raise LrgaspException(
            f"duplicate accession in extra libraries: {dups}")
    for ilib in range(len(experiment_md.extra_libraries)):
        check_from_defs(f"experiment_md.extra_libraries[{ilib}]",
                        extra_libraries_fields,
                        experiment_md.extra_libraries[ilib])
def experiment_validate(experiment):
    desc = "experiment"
    check_from_defs(desc, experiment_fields, experiment)
    if experiment.experiment_type is ExperimentType.expression:
        if fld_model_experiment_id.name not in experiment:
            raise LrgaspException(f"{desc} must specify experiment.{fld_model_experiment_id.name} for {experiment.experiment_type} experiments")
    else:
        if fld_model_experiment_id.name in experiment:
            raise LrgaspException(f"{desc} must not specify experiment.{fld_model_experiment_id.name} for {experiment.experiment_type} experiments")

    for data_file in experiment.data_files:
        data_file_validate(data_file)
    for result_file in experiment.result_files:
        result_file_validate(experiment, result_file)
def entry_validate(entry):
    desc = "entry"
    check_from_defs(desc, entry_fields, entry)
    try:
        validate_symbolic_ident(entry.entry_id)
    except LrgaspException as ex:
        raise LrgaspException(f"invalid {desc} {fld_entry_id.name}") from ex

    challenge_id = validate_entry_ident(entry.entry_id)
    if entry.challenge_id != challenge_id:
        raise LrgaspException(
            f"invalid {desc} {fld_entry_id.name} entry_id {entry.entry-id} prefix does not match challenge_id {entry.challenge_id}"
        )
    for contact in entry.contacts:
        entry_contact_validate(contact)
示例#7
0
def load(entry_json):
    """load and validate entry metadata"""
    try:
        with gopen(entry_json) as fh:
            entry_md = json.load(fh, object_pairs_hook=ObjDict)
    except (json.decoder.JSONDecodeError, UnicodeDecodeError) as ex:
        raise LrgaspException(
            f"parse of entry metadata (JSON) failed: {entry_json}") from ex
    try:
        check_from_defs("entry", entry_fields, entry_md)
        # add non-serialized fields after field check
        entry_md.experiments = None
        entry_md.entry_dir = None
        entry_md.entry_json = entry_json
        entry_validate(entry_md)
    except LrgaspException as ex:
        raise LrgaspException(
            f"validation of entry metadata failed: {entry_json}") from ex

    return entry_md
def _validate_software(experiment_md):
    for isoft in range(len(experiment_md.software)):
        check_from_defs(f"experiment_md.software[{isoft}]",
                        experiment_software_fields,
                        experiment_md.software[isoft])
示例#9
0
def entry_contact_validate(contact):
    desc = "entry.contacts"
    check_from_defs(desc, entry_contact_fields, contact)
def data_file_validate(data_file):
    desc = "experiment.data_files"
    check_from_defs(desc, data_file_fields, data_file)
    if (fld_acc.name not in data_file) and (fld_url not in data_file):
        raise LrgaspException(f"{desc} must specify at least one of {fld_acc.name} or {fld_url.name}")
示例#11
0
def extra_library_validate(extra_library):
    desc = "experiment.extra_libraries"
    check_from_defs(desc, extra_library_fields, extra_library)
def extra_library_validate(extra_libraries, ilib):
    desc = f"experiment_md.extra_libraries[{ilib}]"
    check_from_defs(desc, extra_libraries_fields, extra_libraries[ilib])
示例#13
0
def entry_contact_validate(contact):
    check_from_defs("entry.contacts", entry_contact_fields, contact)