Exemple #1
0
### Check that there is a database else built it
DatabaseName = args.database
CheckDatabase_BlastdbcmdProcess = BlastPlus.Blastdbcmd(DatabaseName, "", "")
if not CheckDatabase_BlastdbcmdProcess.is_database():
    logger.info("Database %s does not exist" % DatabaseName)
    #Build blast formated database from a fasta file
    if args.fastq or args.fasta:
        if args.fastq:
            if not os.path.isfile(args.fastq):
                logger.error("The fastq file (-fq) does not exist.")
                sys.exit(1)
            else:
                # Format the fastq file in fasta
                InputFasta = TmpDirName + "/" + os.path.basename(args.fastq) + ".fasta"
                logger.info("Convert the fastq file in fasta format")
                ExitCode = ApytramNeeds.fastq2fasta(args.fastq,InputFasta)
        elif args.fasta:
            InputFasta = args.fasta
            
        if not os.path.isfile(InputFasta):
            logger.error("The fasta file (-fa) does not exist.")
            sys.exit(1)
        if os.path.isdir(os.path.dirname(DatabaseName)):
            logger.info("Database directory exists")
        else:
            logger.info("Database directory does not exist, we create it")
            os.makedirs(os.path.dirname(DatabaseName))
        # database building
        logger.info(DatabaseName + " database building")
        MakeblastdbProcess = BlastPlus.Makeblastdb(InputFasta,DatabaseName)
        ExitCode = MakeblastdbProcess.launch()
Exemple #2
0
        os.makedirs(os.path.dirname(args.output_prefix))
else:
    logger.error("The output prefix must be defined")
    end(1)

### Check that query files exist
if args.query:
    QueryFile = args.query
    AliQueryFile = args.query
    if not os.path.isfile(QueryFile):
        logger.error(QueryFile+" (-q) is not a file.")
        end(1)
    elif not os.stat(QueryFile).st_size:
        logger.error(QueryFile+" (-q) is empty.")
        end(1)
    elif ApytramNeeds.count_sequences(QueryFile) !=1:
        logger.warning("%s (-q) contains more than one query. They are %s sequences." %(QueryFile,ApytramNeeds.count_sequences(QueryFile)))
        # If there are multiple probes, align them for the future coverage counter
        # Use Mafft
        start_mafft_time = time.time()
        MafftProcess = Aligner.Mafft(QueryFile)
        MafftProcess.QuietOption = True
        MafftProcess.AutoOption = True
        (MafftResult, err) = MafftProcess.get_output()
        AliQueryFile = "%s/References.ali.fasta" %TmpDirName
        ApytramNeeds.write_in_file(MafftResult,AliQueryFile)
        logger.debug("mafft --- %s seconds ---" % (time.time() - start_mafft_time))


# If the -pep option is used, the -q option must be precised
if args.query_pep: