view novo_align.py @ 27:df170f4d2eea draft

planemo upload for repository https://github.com/SANBI-SA/tools-sanbi-uwc/tree/master/tools/novo_align commit 018e4e2f405e9e55f3b7c3ba92b29f957e468f2b
author sanbi-uwc
date Mon, 07 May 2018 09:42:08 -0400
parents 482aef16b6f5
children 395aac51afa6
line wrap: on
line source

#!/usr/bin/env python
from __future__ import print_function
import argparse
import shlex
import os
import sys
import logging
log = logging.getLogger( __name__ )


def novo_align(output_filename, index_filename, fwd_file, rev_file ):
    param = r'@RG\tID:RG\tSM:$i\tPL:ILLUMINA'
    cmdline_str = "novoalign -c 8 -k -d {} -f {} {} -i PE 250, 100 -o SAM '{}' | samtools sort - | samtools view -b - > {}".format(
        index_filename,
        fwd_file,
        rev_file,
        param,
        output_filename)
    try:
        os.system(cmdline_str)
    except:
        print("Error running the nova-align", file=sys.stderr)


def newSplit(value):
    lex = shlex.shlex(value)
    lex.quotes = '"'
    lex.whitespace_split = True
    lex.commenters = ''
    return list(lex)


def main():
    parser = argparse.ArgumentParser(description="Generate a BAM file from the Novo Align tool")
    parser.add_argument('output_filename')
    parser.add_argument('--index_filename')
    parser.add_argument('--forward_filename')
    parser.add_argument('--reverse_filename')
    args = parser.parse_args()

    # a dirty way of referencing the file
    index_file_path = args.index_filename  # removed old logic here: + "/" + args.index_filename.split("/")[-1]
    novo_align(args.output_filename, index_file_path, args.forward_filename, args.reverse_filename)


if __name__ == "__main__":
    main()