Cython: rearranged input and output format options to have both and

updated commands accordingly
This commit is contained in:
Celine Mercier
2018-10-17 11:19:48 +02:00
parent e6bbe13d81
commit 58589e04be
11 changed files with 120 additions and 77 deletions

View File

@ -7,7 +7,7 @@ def __addInputOption(optionManager):
group = optionManager.add_argument_group("Restriction to a sub-part options",
"Allow to limit analysis to a sub-part of the data file")
"Allows to limit analysis to a sub-part of the input")
group.add_argument('--skip',
action="store", dest="obi:skip",
@ -23,60 +23,54 @@ def __addInputOption(optionManager):
type=int,
help="treat only N sequences")
group.add_argument('--na-string',
action="store", dest="obi:nastring",
default="NA",
type=str,
help="String associated to Non Available (NA) values")
def __addImportInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for imported files")
def __addSequenceInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for sequence files")
group.add_argument('--fasta',
action="store_const", dest="obi:format",
group.add_argument('--fasta-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'fasta',
help="Input file is in sanger fasta format")
group.add_argument('--fastq',
action="store_const", dest="obi:format",
group.add_argument('--fastq-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'fastq',
help="Input file is in fastq format")
group.add_argument('--embl',
action="store_const", dest="obi:format",
group.add_argument('--embl-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'embl',
help="Input file is in embl nucleic format")
group.add_argument('--genbank',
action="store_const", dest="obi:format",
group.add_argument('--genbank-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'genbank',
help="Input file is in genbank nucleic format")
group.add_argument('--ngsfilter',
action="store_const", dest="obi:format",
group.add_argument('--ngsfilter-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'ngsfilter',
help="Input file is an ngsfilter file")
group.add_argument('--ecopcr-result',
action="store_const", dest="obi:format",
group.add_argument('--ecopcr-result-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'ecopcr',
help="Input file is the result of an ecoPCR (version 2)")
group.add_argument('--ecoprimers-result',
action="store_const", dest="obi:format",
group.add_argument('--ecoprimers-result-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'ecoprimers',
help="Input file is the result of an ecoprimers")
group.add_argument('--tabular',
action="store_const", dest="obi:format",
group.add_argument('--tabular-input',
action="store_const", dest="obi:inputformat",
default=None,
const=b'tabular',
help="Input file is a tabular file")
@ -115,6 +109,13 @@ def __addSequenceInputOption(optionManager):
const=b'pep',
help="Input file contains protein sequences")
group.add_argument('--input-na-string',
action="store", dest="obi:inputnastring",
default="NA",
type=str,
help="String associated with Non Available (NA) values in the input")
def __addTabularInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for tabular files")
@ -151,7 +152,17 @@ def __addTabularInputOption(optionManager):
type=str,
help="Lines starting by this char are considered as comment")
def __addTaxonomyInputOption(optionManager):
def __addTaxdumpInputOption(optionManager): # TODO maybe not the best way to do it
group = optionManager.add_argument_group("Input format options for taxdump")
group.add_argument('--taxdump',
action="store_true", dest="obi:taxdump",
default=False,
help="Whether the input is a taxdump")
def __addTaxonomyOption(optionManager):
group = optionManager.add_argument_group("Input format options for taxonomy")
group.add_argument('--taxonomy',
@ -161,38 +172,36 @@ def __addTaxonomyInputOption(optionManager):
#TODO option bool to download taxo if URI doesn't exist
def __addTaxdumpInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for taxdump")
group.add_argument('--taxdump',
action="store_true", dest="obi:taxdump",
default=False,
help="Whether the input is a taxdump")
def addMinimalInputOption(optionManager):
__addInputOption(optionManager)
def addSequenceInputOption(optionManager):
def addImportInputOption(optionManager):
__addInputOption(optionManager)
__addSequenceInputOption(optionManager)
__addImportInputOption(optionManager)
def addTabularInputOption(optionManager):
#__addInputOption(optionManager) # TODO discuss conflict
__addTabularInputOption(optionManager)
def addTaxonomyInputOption(optionManager):
__addTaxonomyInputOption(optionManager)
def addTaxonomyOption(optionManager):
__addTaxonomyOption(optionManager)
def addTaxdumpInputOption(optionManager):
__addTaxdumpInputOption(optionManager)
def addAllInputOption(optionManager):
__addInputOption(optionManager)
__addSequenceInputOption(optionManager)
__addImportInputOption(optionManager)
__addTabularInputOption(optionManager)
__addTaxonomyInputOption(optionManager)
__addTaxonomyOption(optionManager)
__addTaxdumpInputOption(optionManager)
def __addOutputOption(optionManager):
optionManager.add_argument(
@ -200,7 +209,9 @@ def __addOutputOption(optionManager):
metavar='OUTPUT',
help='Data destination URI')
group = optionManager.add_argument_group("Management of DMS for output")
def __addDMSOutputOption(optionManager):
group = optionManager.add_argument_group("Output options for DMS data")
group.add_argument('--no-create-dms',
action="store_true", dest="obi:nocreatedms",
@ -218,5 +229,44 @@ def __addOutputOption(optionManager):
"is greater than N, the values are stored as character strings")
def __addExportOutputOption(optionManager):
group = optionManager.add_argument_group("Output format options for exported files")
group.add_argument('--fasta-output',
action="store_const", dest="obi:outputformat",
default=None,
const=b'fasta',
help="Output file is in sanger fasta format")
group.add_argument('--fastq-output',
action="store_const", dest="obi:outputformat",
default=None,
const=b'fastq',
help="Output file is in fastq format")
group.add_argument('--print-na',
action="store_true", dest="obi:printna",
default=False,
help="Print Non Available (NA) values in the output")
group.add_argument('--output-na-string',
action="store", dest="obi:outputnastring",
default="NA",
type=str,
help="String associated with Non Available (NA) values in the output")
def addMinimalOutputOption(optionManager):
__addOutputOption(optionManager)
__addDMSOutputOption(optionManager)
def addExportOutputOption(optionManager):
__addOutputOption(optionManager)
__addExportOutputOption(optionManager)
def addAllOutputOption(optionManager):
__addOutputOption(optionManager)
__addDMSOutputOption(optionManager)
__addExportOutputOption(optionManager)

View File

@ -8,7 +8,7 @@ from obitools3.dms.view.typed_view.view_NUC_SEQS cimport View_NUC_SEQS
from obitools3.dms.column.column cimport Column, Column_line
from obitools3.dms.capi.obiview cimport QUALITY_COLUMN, COUNT_COLUMN, NUC_SEQUENCE_COLUMN, ID_COLUMN
from obitools3.dms.capi.obitypes cimport OBI_INT, OBI_STR, index_t, OBI_QUAL
from obitools3.apps.optiongroups import addSequenceInputOption, addMinimalOutputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addMinimalOutputOption
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.align._qsassemble import QSolexaReverseAssemble
@ -29,7 +29,7 @@ __title__="Aligns paired-ended reads"
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
addMinimalOutputOption(parser)
group = parser.add_argument_group('obi alignpairedend specific options')

View File

@ -4,7 +4,7 @@ from obitools3.apps.progress cimport ProgressBar # @UnresolvedImport
from obitools3.dms import DMS
from obitools3.dms.view.view cimport View, Line_selection
from obitools3.uri.decode import open_uri
from obitools3.apps.optiongroups import addMinimalInputOption, addTaxonomyInputOption, addMinimalOutputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addTaxonomyOption, addMinimalOutputOption
from obitools3.dms.view import RollbackException
from functools import reduce
from obitools3.apps.config import logger
@ -29,7 +29,7 @@ SPECIAL_COLUMNS = [NUC_SEQUENCE_COLUMN, ID_COLUMN, DEFINITION_COLUMN, QUALITY_CO
def addOptions(parser):
addMinimalInputOption(parser)
addTaxonomyInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser)
group=parser.add_argument_group('obi annotate specific options')

View File

@ -5,7 +5,7 @@ from obitools3.dms.dms cimport DMS
from obitools3.dms.capi.obidms cimport OBIDMS_p
from obitools3.dms.view import RollbackException
from obitools3.dms.capi.obiclean cimport obi_clean
from obitools3.apps.optiongroups import addSequenceInputOption, addMinimalOutputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addMinimalOutputOption
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.utils cimport tobytes
@ -20,7 +20,7 @@ __title__="Tag a set of sequences for PCR and sequencing errors identification"
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
addMinimalOutputOption(parser)
group = parser.add_argument_group('obi clean specific options')

View File

@ -4,7 +4,7 @@
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.dms import DMS
from obitools3.apps.optiongroups import addSequenceInputOption
from obitools3.apps.optiongroups import addMinimalInputOption
from obitools3.dms.capi.obiview cimport COUNT_COLUMN
@ -13,7 +13,7 @@ __title__="Counts sequence records"
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
group = parser.add_argument_group('obi count specific options')

View File

@ -5,7 +5,7 @@ from obitools3.dms.dms cimport DMS
from obitools3.dms.capi.obidms cimport OBIDMS_p
from obitools3.dms.view import RollbackException
from obitools3.dms.capi.obiecopcr cimport obi_ecopcr
from obitools3.apps.optiongroups import addSequenceInputOption, addMinimalOutputOption, addTaxonomyInputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addMinimalOutputOption, addTaxonomyOption
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.utils cimport tobytes
@ -24,9 +24,9 @@ __title__="in silico PCR"
# TODO: add option to output unique ids
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser)
addTaxonomyInputOption(parser)
group = parser.add_argument_group('obi ecopcr specific options')

View File

@ -4,7 +4,7 @@ from obitools3.apps.progress cimport ProgressBar # @UnresolvedImport
from obitools3.dms import DMS
from obitools3.dms.view.view cimport View, Line_selection
from obitools3.uri.decode import open_uri
from obitools3.apps.optiongroups import addMinimalInputOption, addTaxonomyInputOption, addMinimalOutputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addTaxonomyOption, addMinimalOutputOption
from obitools3.dms.view import RollbackException
from obitools3.apps.config import logger
from obitools3.utils cimport tobytes
@ -24,7 +24,7 @@ __title__="Grep view lines that match the given predicates"
def addOptions(parser):
addMinimalInputOption(parser)
addTaxonomyInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser)
group=parser.add_argument_group("obi grep specific options")

View File

@ -22,10 +22,10 @@ from obitools3.dms.capi.obitypes cimport obitype_t, \
from obitools3.dms.capi.obierrno cimport obi_errno
from obitools3.apps.optiongroups import addSequenceInputOption, \
from obitools3.apps.optiongroups import addImportInputOption, \
addTabularInputOption, \
addMinimalOutputOption, \
addTaxdumpInputOption
addTaxdumpInputOption, \
addMinimalOutputOption
from obitools3.uri.decode import open_uri
@ -45,10 +45,10 @@ default_config = { 'destview' : None,
def addOptions(parser):
addSequenceInputOption(parser)
addImportInputOption(parser)
addTabularInputOption(parser)
addMinimalOutputOption(parser)
addTaxdumpInputOption(parser)
addMinimalOutputOption(parser)
def run(config):
@ -123,7 +123,7 @@ def run(config):
entries = input[1]
NA_value = tobytes(config['obi']['nastring']) # TODO
NA_value = tobytes(config['obi']['inputnastring'])
NUC_SEQS_view = False
if isinstance(output[1], View) :

View File

@ -1,6 +1,6 @@
#cython: language_level=3
from obitools3.apps.optiongroups import addSequenceInputOption
from obitools3.apps.optiongroups import addMinimalInputOption
from obitools3.uri.decode import open_uri
from obitools3.dms import DMS
@ -10,7 +10,7 @@ __title__="Less equivalent"
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
group=parser.add_argument_group('obi less specific options')

View File

@ -5,7 +5,7 @@ from obitools3.dms import DMS
from obitools3.dms.view import RollbackException
from obitools3.dms.view.typed_view.view_NUC_SEQS cimport View_NUC_SEQS
from obitools3.dms.column.column cimport Column, Column_line
from obitools3.apps.optiongroups import addSequenceInputOption, addMinimalOutputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addMinimalOutputOption
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.align._freeendgapfm import FreeEndGapFullMatch
@ -26,7 +26,7 @@ __title__="Assigns sequence records to the corresponding experiment/sample based
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
addMinimalOutputOption(parser)
group = parser.add_argument_group('obi ngsfilter specific options')
@ -38,13 +38,6 @@ def addOptions(parser):
default=None,
help="URI to the view containing the samples definition (with tags, primers, sample names,...)")
# group.add_argument('-F', '--forward-reads',
# action="store", dest="ngsfilter:forward",
# metavar="<URI>",
# default=None,
# type=str,
# help="URI to the forward reads if the paired-end reads haven't been aligned yet")
group.add_argument('-R', '--reverse-reads',
action="store", dest="ngsfilter:reverse",
metavar="<URI>",

View File

@ -9,7 +9,7 @@ from obitools3.dms.view.typed_view.view_NUC_SEQS cimport View_NUC_SEQS
from obitools3.dms.column.column cimport Column, Column_line
from obitools3.dms.capi.obiview cimport QUALITY_COLUMN, COUNT_COLUMN, NUC_SEQUENCE_COLUMN, ID_COLUMN
from obitools3.dms.capi.obitypes cimport OBI_INT, OBI_STR, index_t
from obitools3.apps.optiongroups import addSequenceInputOption, addMinimalOutputOption, addTaxonomyInputOption
from obitools3.apps.optiongroups import addMinimalInputOption, addMinimalOutputOption, addTaxonomyOption
from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger
from obitools3.utils cimport tobytes
@ -23,9 +23,9 @@ __title__="Group sequence records together"
def addOptions(parser):
addSequenceInputOption(parser)
addMinimalInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser)
addTaxonomyInputOption(parser)
group = parser.add_argument_group('obi uniq specific options')