def _annotateTest(self, inputFilename, outputFilename, datasource_dir, inputFormat="MAFLITE", outputFormat="TCGAMAF", default_annotations=TCGA_MAF_DEFAULTS, override_annotations=None, is_skip_no_alts=False): self.logger.info("Initializing Annotator...") if override_annotations is None: override_annotations = dict() annotator = Annotator() runSpec = OncotatorCLIUtils.create_run_spec(inputFormat, outputFormat, inputFilename, outputFilename, defaultAnnotations=default_annotations, datasourceDir=datasource_dir, globalAnnotations=override_annotations, is_skip_no_alts=is_skip_no_alts) annotator.initialize(runSpec) self.logger.info("Annotation starting...") return annotator.annotate()
def main(argv=None): # IGNORE:C0111 """Command line options.""" from oncotator.utils.OncotatorCLIUtils import OncotatorCLIUtils from oncotator.Annotator import Annotator if argv is None: argv = sys.argv else: sys.argv.extend(argv) program_version = "%s" % __version__ program_build_date = str(__updated__) program_version_message = '%%(prog)s %s' % (program_version) program_shortdesc = program_version_message program_license = '''%s %s Copyright 2012 Broad Institute. All rights reserved. #TODO: License Here Distributed on an "AS IS" basis without warranties or conditions of any kind, either express or implied. USAGE ''' % (program_shortdesc, str(__date__)) try: args = parseOptions(program_license, program_version_message) verbose = args.verbose if verbose > 0: print("Verbose mode on") logFilename = args.log_name # 'oncotator.log' # Create a basic logger to a file loggingFormat = '%(asctime)s %(levelname)s [%(name)s:%(lineno)d] %(message)s' logging.basicConfig(filename=logFilename, level=logging.INFO, format=loggingFormat) # Add a console logger to the root logger, which means that all loggers generated will have the console dump. # Output on the console will be the same as what is in the log file. ch = logging.StreamHandler() ch.setLevel(logging.WARN) formatter = logging.Formatter(loggingFormat) ch.setFormatter(formatter) if verbose: ch.setLevel(logging.INFO) print("Path:") print(sys.path) print(" ") logging.getLogger('').addHandler(ch) logger = logging.getLogger(__name__) logger.info("Oncotator " + program_version) logger.info("Args: " + str(args)) logger.info('Log file: ' + os.path.abspath(logFilename)) if DEBUG: logger.setLevel(logging.DEBUG) # Initiate an Oncotator session. inputFilename = os.path.expanduser(args.input_file) outputFilename = os.path.expanduser(args.output_file) inputFormat = args.input_format.upper() outputFormat = args.output_format.upper() datasourceDir = os.path.expanduser(args.dbDir) cache_url = args.cache_url read_only_cache = args.read_only_cache tx_mode = args.tx_mode is_skip_no_alts = args.skip_no_alt genome_build = args.genome_build is_no_prepend = not args.prepend # Parse annotation overrides commandLineManualOverrides = args.override_cli overrideConfigFile = args.override_config if overrideConfigFile is not None and not os.path.exists(overrideConfigFile): logger.warn("Could not find " + overrideConfigFile + " ... proceeding anyway.") overrideConfigFile = None manualOverrides = OncotatorCLIUtils.determineAllAnnotationValues(commandLineManualOverrides, overrideConfigFile) # Parse default overrides commandLineDefaultValues = args.default_cli defaultConfigFile = args.default_config if defaultConfigFile is not None and not os.path.exists(defaultConfigFile): if defaultConfigFile != DEFAULT_DEFAULT_ANNOTATIONS: logger.warn("Could not find " + defaultConfigFile + " ... proceeding anyway.") else: logger.info("Could not find Broad-specific " + defaultConfigFile + " ... proceeding without any default annotations. __UNKNOWN__ may appear in TCGA MAF outputs.") defaultConfigFile = None defaultValues = OncotatorCLIUtils.determineAllAnnotationValues(commandLineDefaultValues, defaultConfigFile) if is_skip_no_alts and (outputFormat == "VCF"): logging.getLogger(__name__).warn("--skip-no-alt specified when output is a VCF. This is likely to generate errors.") if is_skip_no_alts and (inputFormat != "VCF"): logging.getLogger(__name__).info("--skip-no-alt specified when input is not VCF. skip-no-alt is not going to do anything.") if is_no_prepend and (outputFormat != "TCGAMAF"): logging.getLogger(__name__).info("no prepend specified when output is not TCGAMAF. Ignoring and proceeding.") if outputFormat=="TCGAVCF": logging.getLogger(__name__).warning("TCGA VCF output is not supported and should be considered experimental when used outside of the Broad Institute. Outside of the Broad Institute, use of -o VCF is more likely to be desired by users.") # Create a run configuration to pass to the Annotator class. runConfig = OncotatorCLIUtils.create_run_spec(inputFormat, outputFormat, inputFilename, outputFilename, globalAnnotations=manualOverrides, datasourceDir=datasourceDir, isMulticore=(not args.noMulticore), defaultAnnotations=defaultValues, cacheUrl=cache_url, read_only_cache=read_only_cache, tx_mode=tx_mode, is_skip_no_alts=is_skip_no_alts, genomeBuild=genome_build, other_opts=determineOtherOptions(args, logger)) annotator = Annotator() annotator.initialize(runConfig) annotator.annotate() return 0 except KeyboardInterrupt: ### handle keyboard interrupt ### return 0