diff --git a/python/obitools3/commands/count.py b/python/obitools3/commands/count.py deleted file mode 100644 index af9d317..0000000 --- a/python/obitools3/commands/count.py +++ /dev/null @@ -1,46 +0,0 @@ -#cython: language_level=3 - -''' -Created on 8 mars 2016 - -@author: coissac -''' - -from obitools3.apps.progress import ProgressBar # @UnresolvedImport -import time - -__title__="Counts sequences in a sequence set" - - -default_config = { 'countmode' : None - } - -def addOptions(parser): - parser.add_argument(dest='obi:input', metavar='obi:input', - nargs='?', - default=None, - help='input data set' ) - - group=parser.add_argument_group('Obicount specific options') - group.add_argument('-s','--sequence', - action="store_true", dest="count:sequence", - default=False, - help="Prints only the number of sequence records." - ) - - group.add_argument('-a','--all', - action="store_true", dest="count:all", - default=False, - help="Prints only the total count of sequence records (if a sequence has no `count` attribute, its default count is 1) (default: False)." - ) - - - -def run(config): - # The code of my command - pb = ProgressBar(1000,config,seconde=1) - - for i in range(1,1001): - pb(i) - time.sleep(0.01) - diff --git a/python/obitools3/commands/count.pyx b/python/obitools3/commands/count.pyx new file mode 100644 index 0000000..f1996b9 --- /dev/null +++ b/python/obitools3/commands/count.pyx @@ -0,0 +1,55 @@ +#cython: language_level=3 + + +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.dms.capi.obiview cimport COUNT_COLUMN + + +__title__="Counts sequence records" + + +def addOptions(parser): + + addSequenceInputOption(parser) + + group = parser.add_argument_group('obi count specific options') + + group.add_argument('-s','--sequence', + action="store_true", dest="count:sequence", + default=False, + help="Prints only the number of sequence records.") + + group.add_argument('-a','--all', + action="store_true", dest="count:all", + default=False, + help="Prints only the total count of sequence records (if a sequence has no `count` attribute, its default count is 1) (default: False).") + + +def run(config): + + DMS.obi_atexit() + + logger("info", "obi count") + + # Open the input + input = open_uri(config['obi']['inputURI']) + if input is None: + raise Exception("Could not read input") + entries = input[1] + + count1 = len(entries) + count2 = 0 + + if COUNT_COLUMN in entries and ((config['count']['sequence'] == config['count']['all']) or (config['count']['all'])) : + for e in entries: + count2+=e[COUNT_COLUMN] + + if COUNT_COLUMN in entries and (config['count']['sequence'] == config['count']['all']): + print(count1,count2) + elif COUNT_COLUMN in entries and config['count']['all']: + print(count2) + else: + print(count1)