Obi count command
This commit is contained in:
@ -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)
|
|
||||||
|
|
55
python/obitools3/commands/count.pyx
Normal file
55
python/obitools3/commands/count.pyx
Normal file
@ -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)
|
Reference in New Issue
Block a user