Exemplo n.º 1
0
def clsCommandlineInterfaceArgv(argv=['clscli']):
    commandline=' '.join(argv)
    executablename = os.path.basename(argv[0])
    argv.pop(0) # remove first argument (executable name), because we are explicitly passing it to parse_args
    parser = argparse.ArgumentParser(description='CATHODE-CLI (Chronological Life Span Analysis Tool for '+
                                     'High-throughput Optical Density Experiments): '+
                                     'A commandline interface for extracting the chronological life span '+
                                     'from multiple time series of optical density measurements.')
    parser.add_argument('--version', action='store_true', default=None, help='show version and exit')
    parser.add_argument('infiles', metavar='', nargs='*',
                        help='CATHODE file (.cat) or multiple GATHODE files (.gat)')
    parser.add_argument('--day', metavar='float', action='append', type=float, dest='days',
                        help='day of lag/growthrate measurement of the corresponding plate file')
    parser.add_argument('--viabilities', action='store', default=None, help='write viabilities to csv file')
    parser.add_argument('--siplots', action='store', default=None, help='write survival intergal figures to pdf')
    parser.add_argument('--labels', action='store', default=None, help='a file containing sampleid -> label and condition -> label mappings')

    args = parser.parse_args(argv)

    if args.version:
        print(executablename+' '+__version__)
        return 0

    if len(args.infiles) == 0:
        parser.print_help()
        print('\ninput file(s) missing')
        return -1
    elif args.infiles[0].endswith(".cat"):
        cls=Cls(serialisedFilename=args.infiles[0])
    else:
        cls=Cls(args.infiles,args.days)

    if args.viabilities:
        cls.survivalToCsv(args.viabilities)
    if args.siplots:
        labels={}
        if args.labels is not None:
            jsonfile=open(args.labels, 'r')
            labels = json.loads(jsonfile.read())
            jsonfile.close()
        survivalIntegralsToPdf(cls,pdfout=args.siplots,
                               sampleIdToLabel=labels['sampleIdToLabel'] if 'sampleIdToLabel' in labels else None,
                               conditionToLabel=labels['conditionToLabel'] if 'conditionToLabel' in labels else None)

    return 0