def __init__(self, args, out=sys.stdout): if not os.path.isfile(args.file): raise IOError("Not a file: %s" % args.file) self.file_name = args.file self.silent = args.xunit_out is not None base, ext = os.path.splitext(args.file) if ext == ".gz": ext_ = ext base, ext = os.path.splitext(base) if args.quiet: out = StringIO() self.t_start = time.time() if (args.file_type == "Fasta" or (args.file_type is None and ext in [".fasta", ".fa", ".fna"])): self.errors, self.metrics = fasta.validate_fasta( file_name=args.file, strict=args.strict, validate_index=args.validate_index, quick=args.quick) elif (args.file_type == "BAM" or (args.file_type is None and ext in [".bam"])): self.errors, self.metrics = bam.validate_bam( file_name=args.file, reference=args.reference, aligned=args.aligned, contents=args.contents, quick=args.quick, max_errors=args.max_errors, max_records=args.max_records, validate_index=args.validate_index, permissive_headers=args.permissive_headers) elif (args.file_type in ["AlignmentSet", "ReferenceSet", "SubreadSet"] or ext in [".xml"]): self.errors, self.metrics = dataset.validate_dataset( file_name=args.file, dataset_type=args.file_type, reference=args.reference, quick=args.quick, max_errors=args.max_errors, max_records=args.max_records, aligned=args.aligned, contents=args.contents, validate_index=args.validate_index, strict=args.strict, permissive_headers=args.permissive_headers) else: raise NotImplementedError("No validator found for '%s'." % ext) self.t_end = time.time() if not args.quiet: utils.show_validation_errors(self.errors, out=out, use_termcolor=args.use_termcolor) if args.xunit_out is not None: doc = self.to_xml() with open(args.xunit_out, "w") as xml_out: xml_out.write(doc.toprettyxml(indent=" "))
def error_string(self): err_out = StringIO() utils.show_validation_errors(self.errors, out=err_out) return err_out.getvalue()