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")
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
# 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)
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