def countOrfs(infile, outfile):
    feat = "gene_id"
    outfile = outfile.replace(".gz", "")
    filename = re.match(
        r"(\S+).(fasta$|fasta.gz|fasta.1.gz|fasta.1|fna$|fna.gz|fna.1.gz|fna.1|fa$|fa.gz|fa.1.gz|fa.1|fastq$|fastq.gz|fastq.1.gz|fastq.1)",
        infile).group(1)
    filemap = PipelineEnumerate.enumerateMapper(filename, PARAMS)
    mapping = "sample_mappings.dir/{}/{}.mapped.bam".format(
        filemap.samplename, filemap.samplename)
    #get pairedness
    paired = True
    num_paired = subprocess.check_output(
        ["samtools", "view", "-c", "-f 1",
         "{}".format(mapping)]).decode(sys.stdout.encoding)
    if int(num_paired.strip("\n")) == 0:
        paired = False
    #generate counts per orf across all samples
    job_threads = int(PARAMS["featureCounts_threads"])
    job_memory = str(PARAMS["featureCounts_memory"]) + "G"
    scratchgtf = PARAMS["featureCounts_tmp"] + filename + ".gtf"
    statementlist = []
    statementlist.append("zcat {} > {}".format(filemap.shortgtfpath,
                                               scratchgtf))
    statementlist.append(
        PipelineEnumerate.countFeatures(feat, scratchgtf, paired, outfile,
                                        mapping, PARAMS))
    statementlist.append("gzip {}".format(outfile))
    statementlist.append("rm -rf {}".format(scratchgtf))
    statement = " && ".join(statementlist)
    P.run(statement)
def countOrfs(infile, outfile):
    feat = "gene_id"
    filename = re.match(
        r"(\S+).(fasta$|fasta.gz|fasta.1.gz|fasta.1|fna$|fna.gz|fna.1.gz|fna.1|fa$|fa.gz|fa.1.gz|fa.1|fastq$|fastq.gz|fastq.1.gz|fastq.1)",
        infile).group(1)
    filemap = PipelineEnumerate.enumerateMapper(filename, PARAMS)
    mapping = "sample_mappings.dir/{}/{}.mapped.bam".format(
        filemap.samplename, filemap.samplename)
    #get pairedness
    paired = True
    num_paired = subprocess.check_output(
        ["samtools", "view", "-c", "-f 1",
         "{}".format(mapping)]).decode(sys.stdout.encoding)
    if int(num_paired.strip("\n")) == 0:
        paired = False
    #generate counts per orf across all samples
    job_threads = int(PARAMS["featureCounts_threads"])
    job_memory = str(PARAMS["featureCounts_memory"]) + "G"
    statement = PipelineEnumerate.countFeatures(feat, filemap.shortgtfpath,
                                                paired, outfile, mapping,
                                                PARAMS)
    P.run(statement)