diff --git a/data/examples/annotate/SQL_sample.db b/data/examples/annotate/SQL_sample.db new file mode 100644 index 0000000..f8ae2c1 Binary files /dev/null and b/data/examples/annotate/SQL_sample.db differ diff --git a/data/examples/annotate/mirtop.db b/data/examples/annotate/mirtop.db new file mode 100644 index 0000000..820ad73 Binary files /dev/null and b/data/examples/annotate/mirtop.db differ diff --git a/mirtop/command_line.py b/mirtop/command_line.py index 556db47..fb18f21 100644 --- a/mirtop/command_line.py +++ b/mirtop/command_line.py @@ -14,6 +14,7 @@ from mirtop.libs import spikeins from mirtop.gff import update from mirtop.sql import sql +from mirtop.mirna import mapper import mirtop.libs.logger as mylog import time @@ -25,6 +26,8 @@ def main(**kwargs): kwargs['args'].print_debug) logger = mylog.getLogger(__name__) start = time.time() + if (not hasattr(kwargs["args"], "database") and ("sql" not in kwargs and "stats" not in kwargs and "update" not in kwargs)): + kwargs["args"].database = mapper.guess_database(kwargs["args"]) if "gff" in kwargs: logger.info("Run annotation") diff --git a/mirtop/exporter/isomirs.py b/mirtop/exporter/isomirs.py index 0f633ae..139a3f7 100644 --- a/mirtop/exporter/isomirs.py +++ b/mirtop/exporter/isomirs.py @@ -38,7 +38,7 @@ def convert(args): def _convert_file(gff, args): sep = "\t" precursors = fasta.read_precursor(args.hairpin, args.sps) - matures = mapper.read_gtf_to_precursor(args.gtf) + matures = mapper.read_gtf_to_precursor(args.gtf, args.database) variant_header = sep.join(['mism', 'add', 't5', 't3']) gff_file = open(gff, 'r') diff --git a/mirtop/exporter/vcf.py b/mirtop/exporter/vcf.py index 6715cd4..3d5aaf0 100644 --- a/mirtop/exporter/vcf.py +++ b/mirtop/exporter/vcf.py @@ -25,7 +25,7 @@ def convert(args): for fn in args.files: out_file = op.join(args.out, "%s.vcf" % op.splitext(op.basename(fn))[0]) logger.info("Reading %s" % fn) - create_vcf(fn, args.hairpin, args.gtf, out_file) + create_vcf(fn, args.hairpin, args.gtf, out_file, args.database) logger.info("VCF generated %s" % out_file) @@ -121,7 +121,7 @@ def cigar_2_key(cigar, readseq, refseq, pos, var5p, var3p, parent_ini_pos, paren return(key_pos, key_var, ref, alt) -def create_vcf(mirgff3, precursor, gtf, vcffile): +def create_vcf(mirgff3, precursor, gtf, vcffile, database): """ Args: 'mirgff3(str)': File with mirGFF3 format that will be converted @@ -178,7 +178,7 @@ def create_vcf(mirgff3, precursor, gtf, vcffile): n_noSNP = 0 no_var = 0 hairpins = read_precursor(precursor) - gff3 = read_gtf_to_precursor(gtf) + gff3 = read_gtf_to_precursor(gtf, database) gtf_dic = read_gtf_to_mirna(gtf) for line in range(0, len(gff3_data)): if not gff3_data[line]: diff --git a/mirtop/gff/read.py b/mirtop/gff/read.py index 7c243f8..552bd0c 100644 --- a/mirtop/gff/read.py +++ b/mirtop/gff/read.py @@ -20,7 +20,7 @@ def reader(args): args.database = database precursors = fasta.read_precursor(args.hairpin, args.sps) args.precursors = precursors - matures = mapper.read_gtf_to_precursor(args.gtf) + matures = mapper.read_gtf_to_precursor(args.gtf, args.database) args.matures = matures # TODO check numbers of miRNA and precursors read # TODO print message if numbers mismatch diff --git a/mirtop/mirna/mapper.py b/mirtop/mirna/mapper.py index 9d0d143..3840d13 100644 --- a/mirtop/mirna/mapper.py +++ b/mirtop/mirna/mapper.py @@ -20,6 +20,8 @@ def guess_database(args): TODO: this needs to be generic to other databases. """ + if not hasattr(args, "database"): + args.database = None return _guess_database_file(args.gtf, args.database)