示例#1
0
def reset_charon_records_by_name(project_id, restrict_to_samples=None,
                                 restrict_to_libpreps=None, restrict_to_seqruns=None):
    if not restrict_to_samples: restrict_to_samples = []
    if not restrict_to_libpreps: restrict_to_libpreps = []
    if not restrict_to_seqruns: restrict_to_seqruns = []
    charon_session = CharonSession()
    LOG.info("Resetting Charon record for project {}".format(project_id))
    charon_session.project_reset(projectid=project_id)
    LOG.info("Charon record for project {} reset".format(project_id))
    for sample in charon_session.project_get_samples(projectid=project_id).get('samples', []):
        sample_id = sample['sampleid']
        if restrict_to_samples and sample_id not in restrict_to_samples:
            LOG.info("Skipping project/sample {}/{}: not in list of samples to use "
                     "({})".format(project_id, sample_id, ", ".join(restrict_to_samples)))
            continue
        LOG.info("Resetting Charon record for project/sample {}/{}".format(project_id,
                                                                           sample_id))
        charon_session.sample_reset(projectid=project_id, sampleid=sample_id)
        LOG.info("Charon record for project/sample {}/{} reset".format(project_id,
                                                                       sample_id))
        for libprep in charon_session.sample_get_libpreps(projectid=project_id,
                                                          sampleid=sample_id).get('libpreps', []):
            libprep_id = libprep['libprepid']
            if restrict_to_libpreps and libprep_id not in restrict_to_libpreps:
                LOG.info("Skipping project/sample/libprep {}/{}/{}: not in list "
                         "of libpreps to use ({})".format(project_id, sample_id,
                                                          libprep_id, ", ".join(restrict_to_libpreps)))
                continue
            LOG.info("Resetting Charon record for project/sample"
                     "libprep {}/{}/{}".format(project_id, sample_id, libprep_id))
            charon_session.libprep_reset(projectid=project_id, sampleid=sample_id,
                                         libprepid=libprep_id)
            LOG.info("Charon record for project/sample/libprep {}/{}/{} "
                     "reset".format(project_id, sample_id, libprep_id))
            for seqrun in charon_session.libprep_get_seqruns(projectid=project_id,
                                                             sampleid=sample_id,
                                                             libprepid=libprep_id).get('seqruns', []):
                seqrun_id = seqrun['seqrunid']
                if restrict_to_seqruns and seqrun_id not in restrict_to_seqruns:
                    LOG.info("Skipping project/sample/libprep/seqrun {}/{}/{}/{}: "
                             "not in list of seqruns to use ({})".format(project_id,
                                                                         sample_id,
                                                                         libprep_id,
                                                                         seqrun_id,
                                                                         ", ".join(restrict_to_seqruns)))
                    continue
                LOG.info("Resetting Charon record for project/sample/libprep/"
                         "seqrun {}/{}/{}/{}".format(project_id, sample_id,
                                                     libprep_id, seqrun_id))
                charon_session.seqrun_reset(projectid=project_id, sampleid=sample_id,
                                            libprepid=libprep_id, seqrunid=seqrun_id)
                LOG.info("Charon record for project/sample/libprep/seqrun "
                         "{}/{}/{}/{} reset".format(project_id, sample_id,
                                                    libprep_id, seqrun_id))
示例#2
0
def reset_charon_records_by_object(project_obj):
    charon_session = CharonSession()
    LOG.info("Resetting Charon record for project {}".format(project_obj))
    charon_session.project_reset(projectid=project_obj.project_id)
    LOG.info("Charon record for project {} reset".format(project_obj))
    for sample_obj in project_obj:
        LOG.info("Resetting Charon record for project/sample {}/{}".format(project_obj,
                                                                           sample_obj))
        try:
            charon_session.sample_reset(projectid=project_obj.project_id,
                                        sampleid=sample_obj.name)
            LOG.info("Charon record for project/sample {}/{} reset".format(project_obj,
                                                                           sample_obj))
        except CharonError as e:
            LOG.error("Unable to reset Charon record for project/sample {}/{}: "
                      "{}".format(project_obj, sample_obj, e))
        for libprep_obj in sample_obj:
            LOG.info("Resetting Charon record for project/sample"
                     "libprep {}/{}/{}".format(project_obj, sample_obj, libprep_obj))
            try:
                charon_session.libprep_reset(projectid=project_obj.project_id,
                                             sampleid=sample_obj.name,
                                             libprepid=libprep_obj.name)
                LOG.info("Charon record for project/sample/libprep {}/{}/{} "
                         "reset".format(project_obj, sample_obj, libprep_obj))
            except CharonError as e:
                LOG.error("Unable to reset Charon record for project/sample/libprep "
                          "{}/{}/{}: {}".format(project_obj, sample_obj,
                                                libprep_obj, e))
            for seqrun_obj in libprep_obj:
                LOG.info("Resetting Charon record for project/sample/libprep/"
                         "seqrun {}/{}/{}/{}".format(project_obj, sample_obj,
                                                     libprep_obj, seqrun_obj))
                try:
                    charon_session.seqrun_reset(projectid=project_obj.project_id,
                                                sampleid=sample_obj.name,
                                                libprepid=libprep_obj.name,
                                                seqrunid=seqrun_obj.name)
                    LOG.info("Charon record for project/sample/libprep/seqrun "
                             "{}/{}/{}/{} reset".format(project_obj, sample_obj,
                                                        libprep_obj, seqrun_obj))
                except CharonError as e:
                    LOG.error("Unable to reset Charon record for project/sample/"
                              "libprep/seqrun {}/{}/{}/{}: {}".format(project_obj,
                                                                      sample_obj,
                                                                      libprep_obj,
                                                                      seqrun_obj,
                                                                      e))