Ejemplo n.º 1
0
def create_schema():

    def msg(name=None):                                                            
        return ''' chewBBACA.py CreateSchema [CreateSchema ...] [-h] -i [I] -o [O] --cpu [CPU] [-b [B]] [--bsr [BSR]] [-v] [-l [L]]'''

    parser = argparse.ArgumentParser(description="This program creates a schema when provided the genomes",usage=msg())
    parser.add_argument('CreateSchema', nargs='+', help='create a schema')
    parser.add_argument('-i', nargs='?', type=str, help='List of genome files (list of fasta files)', required=True)
    parser.add_argument('-o', nargs='?', type=str, help="Name of the output folder", required=True)
    parser.add_argument('--cpu', nargs='?', type=int, help="Number of cpus, if over the maximum uses maximum -2",
                        required=True)
    parser.add_argument('-b', nargs='?', type=str, help="BLAST full path", required=False, default='blastp')
    parser.add_argument("--CDS", help="use a fasta file, one gene per entry, to call alleles", required=False, action="store_true", default=False)
    parser.add_argument('--bsr', nargs='?', type=float, help="minimum BSR similarity", required=False, default=0.6)
    #~ parser.add_argument('-t', nargs='?', type=str, help="taxon", required=False, default=False)
    parser.add_argument('--ptf', nargs='?', type=str, help="provide your own prodigal training file (ptf) path", required=False, default=False)
    parser.add_argument("-v", "--verbose", help="increase output verbosity", dest='verbose', action="store_true",
                        default=False)
    parser.add_argument('-l', nargs='?', type=int, help="minimum bp locus lenght", required=False, default=201)

    args = parser.parse_args()

    genomeFiles = args.i
    cpuToUse = args.cpu
    outputFile = args.o
    BlastpPath = args.b
    bsr = args.bsr
    #~ chosenTaxon = args.t
    chosenTrainingFile = args.ptf
    verbose = args.verbose
    min_length = args.l
    inputCDS = args.CDS

    if inputCDS==True:
        genomeFiles=[os.path.abspath(genomeFiles)]
    else:
        genomeFiles = check_if_list_or_folder(genomeFiles)

    if isinstance(genomeFiles, list):
        with open("listGenomes2Call.txt", "w") as f:
            for genome in genomeFiles:
                f.write(genome + "\n")
        genomeFiles = "listGenomes2Call.txt"

    
    PPanGen.main(genomeFiles,cpuToUse,outputFile,bsr,BlastpPath,min_length,verbose,chosenTrainingFile,inputCDS)

    
    
    try:
        os.remove("listGenomes2Call.txt")
    except:
        pass
Ejemplo n.º 2
0
def create_schema():

    def msg(name=None):                                                            
        return ''' chewBBACA.py CreateSchema [CreateSchema ...] [-h] -i [I] -o [O] --cpu [CPU] [-b [B]] [--bsr [BSR]] [-v] [-l [L]]'''

    parser = argparse.ArgumentParser(description="This program creates a schema when provided the genomes",usage=msg())
    parser.add_argument('CreateSchema', nargs='+', help='create a schema')
    parser.add_argument('-i', nargs='?', type=str, help='List of genome files (list of fasta files)', required=True)
    parser.add_argument('-o', nargs='?', type=str, help="Name of the output folder", required=True)
    parser.add_argument('--cpu', nargs='?', type=int, help="Number of cpus, if over the maximum uses maximum -2",
                        required=True)
    parser.add_argument('-b', nargs='?', type=str, help="BLAST full path", required=False, default='blastp')
    parser.add_argument("--CDS", help="use a fasta file, one gene per entry, to call alleles", required=False, action="store_true", default=False)
    parser.add_argument('--bsr', nargs='?', type=float, help="minimum BSR similarity", required=False, default=0.6)
    #~ parser.add_argument('-t', nargs='?', type=str, help="taxon", required=False, default=False)
    parser.add_argument('--ptf', nargs='?', type=str, help="provide your own prodigal training file (ptf) path", required=False, default=False)
    parser.add_argument("-v", "--verbose", help="increase output verbosity", dest='verbose', action="store_true",
                        default=False)
    parser.add_argument('-l', nargs='?', type=int, help="minimum bp locus lenght", required=False, default=201)
    parser.add_argument('--prm', nargs='?', type=str, help="Prodigal run mode. Single or meta. Meta mode is necessary "
                        "if input genomes/assemblies/plasmids have a total number of base pairs below 20000bp.", 
                        choices=['single', 'meta'], required=False, default='single')

    args = parser.parse_args()

    genomeFiles = args.i
    cpuToUse = args.cpu
    outputFile = args.o
    BlastpPath = args.b
    bsr = args.bsr
    #~ chosenTaxon = args.t
    chosenTrainingFile = args.ptf
    verbose = args.verbose
    min_length = args.l
    inputCDS = args.CDS
    prodigal_mode = args.prm

    if inputCDS==True:
        genomeFiles=[os.path.abspath(genomeFiles)]
    else:
        genomeFiles = check_if_list_or_folder(genomeFiles)

    if isinstance(genomeFiles, list):
        with open("listGenomes2Call.txt", "w") as f:
            for genome in genomeFiles:
                f.write(genome + "\n")
        genomeFiles = "listGenomes2Call.txt"
    try:
        chosenTrainingFileLocal=os.path.join(os.path.dirname(CHEWBBACA.__file__), "prodigal_training_files",chosenTrainingFile)
    except:
        chosenTrainingFileLocal=False
        pass
        
    if os.path.isfile(chosenTrainingFile):
        pass
	
    elif os.path.isfile(chosenTrainingFileLocal):
        chosenTrainingFile=chosenTrainingFileLocal
        pass
    elif not chosenTrainingFileLocal:
        pass
    else:
        print( chosenTrainingFile+ " file not found")
        return
    
    PPanGen.main(genomeFiles,cpuToUse,outputFile,bsr,BlastpPath,min_length,verbose,chosenTrainingFile,inputCDS,prodigal_mode)

    
    
    try:
        os.remove("listGenomes2Call.txt")
    except:
        pass