示例#1
0
    def __getSolidRunData(self):
        """Get data about SOLiD runs

        Internal function to construct SolidRun objects based on the
        supplied SOLiD run directory.
        """
        if self.solid_run_dir is not None:
            logging.debug("Acquiring run information")
            for solid_dir in (self.solid_run_dir, self.solid_run_dir + "_2"):
                logging.debug("Examining %s" % solid_dir)
                run = SolidData.SolidRun(solid_dir)
                if not run:
                    logging.debug("Unable to get run data for %s" % solid_dir)
                else:
                    self.solid_runs.append(run)
            if len(self.solid_runs) == 0:
                logging.warning("No run data found")
示例#2
0
def verify_runs(solid_dirs):
    """Do basic verification checks on SOLiD run directories

    For each SOLiD run directory, create a SolidRun object and check for the
    expected sample and library directories, and that primary data files
    (csfasta and qual) have been assigned and exist.

    Returns a UNIX-like status code: 0 indicates that the checks passed,
    1 indicates that they failed.

    Arguments:
      solid_dirs: a list of SOLiD sequencing directory names.

    Returns:
      0 if the run is verified, 1 if there is a problem.
    """
    print "Performing verification"
    status = 0
    for solid_dir in solid_dirs:
        # Initialise
        run_status = 0
        run = SolidData.SolidRun(solid_dir)
        if not run.verify():
            run_status = 1
        print "%s:" % run.run_name,
        if run_status == 0:
            print " [PASSED]"
        else:
            print " [FAILED]"
            status = 1
    # Completed
    print "Overall status:",
    if status == 0:
        print " [PASSED]"
    else:
        print " [FAILED]"
    return status
示例#3
0
    # Output spreadsheet name
    if options.xls:
        spreadsheet = os.path.splitext(os.path.basename(
            solid_dirs[0]))[0] + ".xls"
        print "Writing spreadsheet %s" % spreadsheet

    # Check there's at least one thing to do
    if not (options.report or options.layout or options.xls or options.verify
            or options.rsync or options.md5sum or options.copy_pattern
            or options.gzip_pattern or options.md5_pattern):
        options.report = True

    # Get the run information
    solid_runs = []
    for solid_dir in solid_dirs:
        run = SolidData.SolidRun(solid_dir)
        if not run:
            logging.error("Error extracting run data for %s" % solid_dir)
            sys.exit(1)
        else:
            solid_runs.append(run)

    # Report the runs
    if options.report:
        report_run(solid_runs, options.report_paths)

    # Report the runs to a spreadsheet
    if options.xls:
        try:
            import Spreadsheet
            write_spreadsheet(solid_runs, spreadsheet)
示例#4
0
def verify_runs(solid_dirs):
    """Do basic verification checks on SOLiD run directories

    For each SOLiD run directory, create a SolidRun object and check for the
    expected sample and library directories, and that primary data files
    (csfasta and qual) have been assigned and exist.

    Returns a UNIX-like status code: 0 indicates that the checks passed,
    1 indicates that they failed.

    Arguments:
      solid_dirs: a list of SOLiD sequencing directory names.

    Returns:
      0 if the run is verified, 1 if there is a problem.
    """
    print "Performing verification"
    status = 0
    for solid_dir in solid_dirs:
        # Initialise
        run_status = 0
        run = SolidData.SolidRun(solid_dir)
        if not run:
            # Some error processing the basics
            run_status = 1
        else:
            # Check basic parameters: should have non-zero numbers of
            # samples and libraries
            if len(run.samples) == 0:
                print "No sample data"
                run_status = 1
            # Determine if run is paired-end
            paired_end = SolidData.is_paired_end(run)
            # Check libraries in each sample
            for sample in run.samples:
                if len(sample.libraries) == 0:
                    print "No libraries for sample %s" % sample.name
                    run_status = 1
                for library in sample.libraries:
                    # Check csfasta was found
                    if not library.csfasta:
                        print "No F3 csfasta for %s/%s" % \
                            (sample.name,library.name)
                        run_status = 1
                    else:
                        if not os.path.exists(library.csfasta):
                            print "Missing F3 csfasta for %s/%s" % \
                                (sample.name,library.name)
                            run_status = 1
                    # Check qual was found
                    if not library.qual:
                        print "No F3 qual for %s/%s" % \
                            (sample.name,library.name)
                        run_status = 1
                    else:
                        if not os.path.exists(library.qual):
                            print "Missing F3 qual for %s/%s" % \
                                (sample.name,library.name)
                            run_status = 1
                    # Paired-end run: check F5 reads
                    if paired_end:
                        if not library.csfasta_f5:
                            print "No F5 csfasta for %s/%s" % \
                                (sample.name,library.name)
                            run_status = 1
                        else:
                            if not os.path.exists(library.csfasta_f5):
                                print "Missing F5 csfasta for %s/%s" % \
                                    (sample.name,library.name)
                                run_status = 1
                        # Check for F5 qual
                        if not library.qual_f5:
                            print "No F5 qual for %s/%s" % \
                                (sample.name,library.name)
                            run_status = 1
                        else:
                            if not os.path.exists(library.qual_f5):
                                print "Missing F5 qual for %s/%s" % \
                                    (sample.name,library.name)
                                run_status = 1
        # Completed checks for run
        print "%s:" % run.run_name,
        if run_status == 0:
            print " [PASSED]"
        else:
            print " [FAILED]"
            status = 1
    # Completed
    print "\nOverall status:",
    if status == 0:
        print " [PASSED]"
    else:
        print " [FAILED]"
    return status