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", 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', group.add_argument('--skip',
action="store", dest="obi:skip", action="store", dest="obi:skip",
@ -22,61 +22,55 @@ def __addInputOption(optionManager):
default=None, default=None,
type=int, type=int,
help="treat only N sequences") 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 __addSequenceInputOption(optionManager): def __addImportInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for sequence files") group = optionManager.add_argument_group("Input format options for imported files")
group.add_argument('--fasta', group.add_argument('--fasta-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'fasta', const=b'fasta',
help="Input file is in sanger fasta format") help="Input file is in sanger fasta format")
group.add_argument('--fastq', group.add_argument('--fastq-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'fastq', const=b'fastq',
help="Input file is in fastq format") help="Input file is in fastq format")
group.add_argument('--embl', group.add_argument('--embl-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'embl', const=b'embl',
help="Input file is in embl nucleic format") help="Input file is in embl nucleic format")
group.add_argument('--genbank', group.add_argument('--genbank-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'genbank', const=b'genbank',
help="Input file is in genbank nucleic format") help="Input file is in genbank nucleic format")
group.add_argument('--ngsfilter', group.add_argument('--ngsfilter-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'ngsfilter', const=b'ngsfilter',
help="Input file is an ngsfilter file") help="Input file is an ngsfilter file")
group.add_argument('--ecopcr-result', group.add_argument('--ecopcr-result-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'ecopcr', const=b'ecopcr',
help="Input file is the result of an ecoPCR (version 2)") help="Input file is the result of an ecoPCR (version 2)")
group.add_argument('--ecoprimers-result', group.add_argument('--ecoprimers-result-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'ecoprimers', const=b'ecoprimers',
help="Input file is the result of an ecoprimers") help="Input file is the result of an ecoprimers")
group.add_argument('--tabular', group.add_argument('--tabular-input',
action="store_const", dest="obi:format", action="store_const", dest="obi:inputformat",
default=None, default=None,
const=b'tabular', const=b'tabular',
help="Input file is a tabular file") help="Input file is a tabular file")
@ -114,6 +108,13 @@ def __addSequenceInputOption(optionManager):
default=None, default=None,
const=b'pep', const=b'pep',
help="Input file contains protein sequences") 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): def __addTabularInputOption(optionManager):
group = optionManager.add_argument_group("Input format options for tabular files") group = optionManager.add_argument_group("Input format options for tabular files")
@ -151,7 +152,17 @@ def __addTabularInputOption(optionManager):
type=str, type=str,
help="Lines starting by this char are considered as comment") 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 = optionManager.add_argument_group("Input format options for taxonomy")
group.add_argument('--taxonomy', group.add_argument('--taxonomy',
@ -161,46 +172,46 @@ def __addTaxonomyInputOption(optionManager):
#TODO option bool to download taxo if URI doesn't exist #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): def addMinimalInputOption(optionManager):
__addInputOption(optionManager) __addInputOption(optionManager)
def addSequenceInputOption(optionManager): def addImportInputOption(optionManager):
__addInputOption(optionManager) __addInputOption(optionManager)
__addSequenceInputOption(optionManager) __addImportInputOption(optionManager)
def addTabularInputOption(optionManager): def addTabularInputOption(optionManager):
#__addInputOption(optionManager) # TODO discuss conflict
__addTabularInputOption(optionManager) __addTabularInputOption(optionManager)
def addTaxonomyInputOption(optionManager):
__addTaxonomyInputOption(optionManager) def addTaxonomyOption(optionManager):
__addTaxonomyOption(optionManager)
def addTaxdumpInputOption(optionManager): def addTaxdumpInputOption(optionManager):
__addTaxdumpInputOption(optionManager) __addTaxdumpInputOption(optionManager)
def addAllInputOption(optionManager): def addAllInputOption(optionManager):
__addInputOption(optionManager) __addInputOption(optionManager)
__addSequenceInputOption(optionManager) __addImportInputOption(optionManager)
__addTabularInputOption(optionManager) __addTabularInputOption(optionManager)
__addTaxonomyInputOption(optionManager) __addTaxonomyOption(optionManager)
__addTaxdumpInputOption(optionManager) __addTaxdumpInputOption(optionManager)
def __addOutputOption(optionManager): def __addOutputOption(optionManager):
optionManager.add_argument( optionManager.add_argument(
dest='obi:outputURI', dest='obi:outputURI',
metavar='OUTPUT', metavar='OUTPUT',
help='Data destination URI') 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', group.add_argument('--no-create-dms',
action="store_true", dest="obi:nocreatedms", action="store_true", dest="obi:nocreatedms",
@ -218,5 +229,44 @@ def __addOutputOption(optionManager):
"is greater than N, the values are stored as character strings") "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): def addMinimalOutputOption(optionManager):
__addOutputOption(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.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.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.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.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.align._qsassemble import QSolexaReverseAssemble from obitools3.align._qsassemble import QSolexaReverseAssemble
@ -29,7 +29,7 @@ __title__="Aligns paired-ended reads"
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
group = parser.add_argument_group('obi alignpairedend specific options') 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 import DMS
from obitools3.dms.view.view cimport View, Line_selection from obitools3.dms.view.view cimport View, Line_selection
from obitools3.uri.decode import open_uri 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.dms.view import RollbackException
from functools import reduce from functools import reduce
from obitools3.apps.config import logger from obitools3.apps.config import logger
@ -29,7 +29,7 @@ SPECIAL_COLUMNS = [NUC_SEQUENCE_COLUMN, ID_COLUMN, DEFINITION_COLUMN, QUALITY_CO
def addOptions(parser): def addOptions(parser):
addMinimalInputOption(parser) addMinimalInputOption(parser)
addTaxonomyInputOption(parser) addTaxonomyOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
group=parser.add_argument_group('obi annotate specific options') 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.capi.obidms cimport OBIDMS_p
from obitools3.dms.view import RollbackException from obitools3.dms.view import RollbackException
from obitools3.dms.capi.obiclean cimport obi_clean 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.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.utils cimport tobytes from obitools3.utils cimport tobytes
@ -20,7 +20,7 @@ __title__="Tag a set of sequences for PCR and sequencing errors identification"
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
group = parser.add_argument_group('obi clean specific options') group = parser.add_argument_group('obi clean specific options')

View File

@ -4,7 +4,7 @@
from obitools3.uri.decode import open_uri from obitools3.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.dms import DMS 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 from obitools3.dms.capi.obiview cimport COUNT_COLUMN
@ -13,7 +13,7 @@ __title__="Counts sequence records"
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
group = parser.add_argument_group('obi count specific options') 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.capi.obidms cimport OBIDMS_p
from obitools3.dms.view import RollbackException from obitools3.dms.view import RollbackException
from obitools3.dms.capi.obiecopcr cimport obi_ecopcr 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.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.utils cimport tobytes from obitools3.utils cimport tobytes
@ -24,9 +24,9 @@ __title__="in silico PCR"
# TODO: add option to output unique ids # TODO: add option to output unique ids
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
addTaxonomyInputOption(parser)
group = parser.add_argument_group('obi ecopcr specific options') 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 import DMS
from obitools3.dms.view.view cimport View, Line_selection from obitools3.dms.view.view cimport View, Line_selection
from obitools3.uri.decode import open_uri 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.dms.view import RollbackException
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.utils cimport tobytes from obitools3.utils cimport tobytes
@ -24,7 +24,7 @@ __title__="Grep view lines that match the given predicates"
def addOptions(parser): def addOptions(parser):
addMinimalInputOption(parser) addMinimalInputOption(parser)
addTaxonomyInputOption(parser) addTaxonomyOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
group=parser.add_argument_group("obi grep specific options") 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.dms.capi.obierrno cimport obi_errno
from obitools3.apps.optiongroups import addSequenceInputOption, \ from obitools3.apps.optiongroups import addImportInputOption, \
addTabularInputOption, \ addTabularInputOption, \
addMinimalOutputOption, \ addTaxdumpInputOption, \
addTaxdumpInputOption addMinimalOutputOption
from obitools3.uri.decode import open_uri from obitools3.uri.decode import open_uri
@ -45,10 +45,10 @@ default_config = { 'destview' : None,
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addImportInputOption(parser)
addTabularInputOption(parser) addTabularInputOption(parser)
addMinimalOutputOption(parser)
addTaxdumpInputOption(parser) addTaxdumpInputOption(parser)
addMinimalOutputOption(parser)
def run(config): def run(config):
@ -123,7 +123,7 @@ def run(config):
entries = input[1] entries = input[1]
NA_value = tobytes(config['obi']['nastring']) # TODO NA_value = tobytes(config['obi']['inputnastring'])
NUC_SEQS_view = False NUC_SEQS_view = False
if isinstance(output[1], View) : if isinstance(output[1], View) :

View File

@ -1,6 +1,6 @@
#cython: language_level=3 #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.uri.decode import open_uri
from obitools3.dms import DMS from obitools3.dms import DMS
@ -10,7 +10,7 @@ __title__="Less equivalent"
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
group=parser.add_argument_group('obi less specific options') 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 import RollbackException
from obitools3.dms.view.typed_view.view_NUC_SEQS cimport View_NUC_SEQS 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.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.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.align._freeendgapfm import FreeEndGapFullMatch from obitools3.align._freeendgapfm import FreeEndGapFullMatch
@ -26,7 +26,7 @@ __title__="Assigns sequence records to the corresponding experiment/sample based
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
group = parser.add_argument_group('obi ngsfilter specific options') group = parser.add_argument_group('obi ngsfilter specific options')
@ -38,13 +38,6 @@ def addOptions(parser):
default=None, default=None,
help="URI to the view containing the samples definition (with tags, primers, sample names,...)") 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', group.add_argument('-R', '--reverse-reads',
action="store", dest="ngsfilter:reverse", action="store", dest="ngsfilter:reverse",
metavar="<URI>", 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.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.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.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.uri.decode import open_uri
from obitools3.apps.config import logger from obitools3.apps.config import logger
from obitools3.utils cimport tobytes from obitools3.utils cimport tobytes
@ -23,9 +23,9 @@ __title__="Group sequence records together"
def addOptions(parser): def addOptions(parser):
addSequenceInputOption(parser) addMinimalInputOption(parser)
addTaxonomyOption(parser)
addMinimalOutputOption(parser) addMinimalOutputOption(parser)
addTaxonomyInputOption(parser)
group = parser.add_argument_group('obi uniq specific options') group = parser.add_argument_group('obi uniq specific options')