Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
89b0c48141 | |||
7c02782e3c | |||
ecc4c2c78b | |||
f5413381fd | |||
3e93cfff7b | |||
6d445fe3ad | |||
824deb7e21 | |||
d579bb2749 | |||
10e5ebdbc0 | |||
8833110490 | |||
bd38449f2d | |||
904823c827 |
@ -371,8 +371,8 @@ def run(config):
|
|||||||
# Fill value
|
# Fill value
|
||||||
dcols[tag][0][i] = value
|
dcols[tag][0][i] = value
|
||||||
|
|
||||||
except IndexError :
|
except (IndexError, OverflowError):
|
||||||
|
|
||||||
value_type = type(value)
|
value_type = type(value)
|
||||||
old_column = dcols[tag][0]
|
old_column = dcols[tag][0]
|
||||||
old_nb_elements_per_line = old_column.nb_elements_per_line
|
old_nb_elements_per_line = old_column.nb_elements_per_line
|
||||||
@ -419,7 +419,7 @@ def run(config):
|
|||||||
dcols[tag][0][i] = value
|
dcols[tag][0][i] = value
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("\nCould not import sequence id:", entry.id, "(error raised:", e, ")")
|
print("\nCould not import sequence:", entry, "(error raised:", e, ")")
|
||||||
if 'skiperror' in config['obi'] and not config['obi']['skiperror']:
|
if 'skiperror' in config['obi'] and not config['obi']['skiperror']:
|
||||||
raise e
|
raise e
|
||||||
else:
|
else:
|
||||||
|
@ -322,7 +322,7 @@ cdef tuple annotate(sequences, infos, no_tags, verbose=False):
|
|||||||
sequences[0] = sequences[0][directmatch[1][2]:]
|
sequences[0] = sequences[0][directmatch[1][2]:]
|
||||||
else:
|
else:
|
||||||
sequences[1] = sequences[1][directmatch[1][2]:]
|
sequences[1] = sequences[1][directmatch[1][2]:]
|
||||||
sequences[0][REVERSE_SEQUENCE_COLUMN] = sequences[1].seq # used by alignpairedend tool
|
sequences[0][REVERSE_SEQUENCE_COLUMN] = sequences[1].seq # used by alignpairedend tool
|
||||||
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
||||||
|
|
||||||
if directmatch[0].forward:
|
if directmatch[0].forward:
|
||||||
@ -369,7 +369,7 @@ cdef tuple annotate(sequences, infos, no_tags, verbose=False):
|
|||||||
sequences[0] = sequences[0][:r[1]]
|
sequences[0] = sequences[0][:r[1]]
|
||||||
else:
|
else:
|
||||||
sequences[1] = sequences[1][:r[1]]
|
sequences[1] = sequences[1][:r[1]]
|
||||||
sequences[0][REVERSE_SEQUENCE_COLUMN] = sequences[1].seq # used by alignpairedend tool
|
sequences[0][REVERSE_SEQUENCE_COLUMN] = sequences[1].seq # used by alignpairedend tool
|
||||||
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
||||||
# do the same on the other seq
|
# do the same on the other seq
|
||||||
if first_match_first_seq:
|
if first_match_first_seq:
|
||||||
@ -394,7 +394,7 @@ cdef tuple annotate(sequences, infos, no_tags, verbose=False):
|
|||||||
seq_to_match = sequences[0]
|
seq_to_match = sequences[0]
|
||||||
reversematch = []
|
reversematch = []
|
||||||
# Compute begin
|
# Compute begin
|
||||||
begin=directmatch[1][2]+1 # end of match + 1 on the same sequence
|
#begin=directmatch[1][2]+1 # end of match + 1 on the same sequence -- No, already cut out forward primer
|
||||||
# Try reverse matching on the other sequence:
|
# Try reverse matching on the other sequence:
|
||||||
new_seq = True
|
new_seq = True
|
||||||
pattern = 0
|
pattern = 0
|
||||||
@ -408,7 +408,7 @@ cdef tuple annotate(sequences, infos, no_tags, verbose=False):
|
|||||||
primer=p
|
primer=p
|
||||||
# Saving original primer as 4th member of the tuple to serve as correct key in infos dict even if it might have been reversed complemented
|
# Saving original primer as 4th member of the tuple to serve as correct key in infos dict even if it might have been reversed complemented
|
||||||
# (3rd member already used by directmatch)
|
# (3rd member already used by directmatch)
|
||||||
reversematch.append((primer, primer(seq_to_match, same_sequence=not new_seq, pattern=pattern, begin=begin), None, p))
|
reversematch.append((primer, primer(seq_to_match, same_sequence=not new_seq, pattern=pattern, begin=0), None, p))
|
||||||
new_seq = False
|
new_seq = False
|
||||||
pattern+=1
|
pattern+=1
|
||||||
# Choose match closer to the end of the sequence
|
# Choose match closer to the end of the sequence
|
||||||
|
44
python/obitools3/commands/rm.pyx
Normal file
44
python/obitools3/commands/rm.pyx
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#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 addMinimalInputOption
|
||||||
|
from obitools3.dms.view.view cimport View
|
||||||
|
import os
|
||||||
|
|
||||||
|
__title__="Delete a view"
|
||||||
|
|
||||||
|
|
||||||
|
def addOptions(parser):
|
||||||
|
addMinimalInputOption(parser)
|
||||||
|
|
||||||
|
def run(config):
|
||||||
|
|
||||||
|
DMS.obi_atexit()
|
||||||
|
|
||||||
|
logger("info", "obi rm")
|
||||||
|
|
||||||
|
# Open the input
|
||||||
|
input = open_uri(config['obi']['inputURI'])
|
||||||
|
if input is None:
|
||||||
|
raise Exception("Could not read input")
|
||||||
|
|
||||||
|
# Check that it's a view
|
||||||
|
if isinstance(input[1], View) :
|
||||||
|
view = input[1]
|
||||||
|
else:
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
# Get the path to the view file to remove
|
||||||
|
path = input[0].full_path # dms path
|
||||||
|
path+=b"/VIEWS/"
|
||||||
|
path+=view.name
|
||||||
|
path+=b".obiview"
|
||||||
|
|
||||||
|
# Close the view and the DMS
|
||||||
|
view.close()
|
||||||
|
input[0].close(force=True)
|
||||||
|
|
||||||
|
# Rm
|
||||||
|
os.remove(path)
|
@ -238,14 +238,14 @@ def run(config):
|
|||||||
else:
|
else:
|
||||||
sdvar= "%s"
|
sdvar= "%s"
|
||||||
|
|
||||||
hcat = "\t".join([pcat % x for x in config['stats']['categories']]) + "\t" +\
|
hcat = "\t".join([pcat % x for x in config['stats']['categories']]) + \
|
||||||
"\t".join([minvar % x for x in config['stats']['minimum']]) + "\t" +\
|
"\t".join([minvar % x for x in config['stats']['minimum']]) + \
|
||||||
"\t".join([maxvar % x for x in config['stats']['maximum']]) + "\t" +\
|
"\t".join([maxvar % x for x in config['stats']['maximum']]) + \
|
||||||
"\t".join([meanvar % x for x in config['stats']['mean']]) + "\t" +\
|
"\t".join([meanvar % x for x in config['stats']['mean']]) + \
|
||||||
"\t".join([varvar % x for x in config['stats']['var']]) + "\t" +\
|
"\t".join([varvar % x for x in config['stats']['var']]) + \
|
||||||
"\t".join([sdvar % x for x in config['stats']['sd']]) + \
|
"\t".join([sdvar % x for x in config['stats']['sd']]) + \
|
||||||
"\t count" + \
|
"count\t" + \
|
||||||
"\t total"
|
"total"
|
||||||
print(hcat)
|
print(hcat)
|
||||||
sorted_stats = sorted(catcount.items(), key = lambda kv:(totcount[kv[0]]), reverse=True)
|
sorted_stats = sorted(catcount.items(), key = lambda kv:(totcount[kv[0]]), reverse=True)
|
||||||
for i in range(len(sorted_stats)):
|
for i in range(len(sorted_stats)):
|
||||||
|
@ -354,8 +354,8 @@ cdef uniq_sequences(View_NUC_SEQS view, View_NUC_SEQS o_view, ProgressBar pb, di
|
|||||||
key = mergedKeys[k]
|
key = mergedKeys[k]
|
||||||
merged_col_name = mergedKeys_m[k]
|
merged_col_name = mergedKeys_m[k]
|
||||||
|
|
||||||
if merged_infos[merged_col_name]['nb_elts'] == 1:
|
# if merged_infos[merged_col_name]['nb_elts'] == 1:
|
||||||
raise Exception("Can't merge information from a tag with only one element (e.g. one sample ; don't use -m option)")
|
# raise Exception("Can't merge information from a tag with only one element (e.g. one sample ; don't use -m option)")
|
||||||
|
|
||||||
if merged_col_name in view:
|
if merged_col_name in view:
|
||||||
i_col = view[merged_col_name]
|
i_col = view[merged_col_name]
|
||||||
|
@ -53,6 +53,8 @@ cdef extern from "obitypes.h" nogil:
|
|||||||
extern const_char_p OBIQual_char_NA
|
extern const_char_p OBIQual_char_NA
|
||||||
extern uint8_t* OBIQual_int_NA
|
extern uint8_t* OBIQual_int_NA
|
||||||
extern void* OBITuple_NA
|
extern void* OBITuple_NA
|
||||||
|
|
||||||
|
extern obiint_t OBI_INT_MAX
|
||||||
|
|
||||||
const_char_p name_data_type(int data_type)
|
const_char_p name_data_type(int data_type)
|
||||||
|
|
||||||
|
@ -600,7 +600,8 @@ cdef class View(OBIWrapper) :
|
|||||||
if element is not None:
|
if element is not None:
|
||||||
if element.comments[b"input_dms_name"] is not None :
|
if element.comments[b"input_dms_name"] is not None :
|
||||||
for i in range(len(element.comments[b"input_dms_name"])) :
|
for i in range(len(element.comments[b"input_dms_name"])) :
|
||||||
if element.comments[b"input_dms_name"][i] == element.dms.name and b"/" not in element.comments[b"input_view_name"][i]: # Same DMS and not a special element like a taxonomy
|
if b"/" not in element.comments[b"input_view_name"][i] and element.comments[b"input_view_name"][i] in element.dms \
|
||||||
|
and element.comments[b"input_dms_name"][i] == element.dms.name : # Same DMS and not a special element like a taxonomy and view was not deleted
|
||||||
top_level.append(element.dms[element.comments[b"input_view_name"][i]])
|
top_level.append(element.dms[element.comments[b"input_view_name"][i]])
|
||||||
else:
|
else:
|
||||||
top_level.append(None)
|
top_level.append(None)
|
||||||
|
@ -8,7 +8,7 @@ Created on feb 20th 2018
|
|||||||
|
|
||||||
import types
|
import types
|
||||||
from obitools3.utils cimport __etag__
|
from obitools3.utils cimport __etag__
|
||||||
|
from obitools3.utils cimport str2bytes
|
||||||
|
|
||||||
def tabIterator(lineiterator,
|
def tabIterator(lineiterator,
|
||||||
bint header = False,
|
bint header = False,
|
||||||
@ -75,7 +75,7 @@ def tabIterator(lineiterator,
|
|||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
# TODO ??? default column names? like R?
|
# TODO ??? default column names? like R?
|
||||||
keys = [i for i in range(len(line.split(sep)))]
|
keys = [str2bytes(str(i)) for i in range(len(line.split(sep)))]
|
||||||
|
|
||||||
while skipped < skip :
|
while skipped < skip :
|
||||||
line = next(iterator)
|
line = next(iterator)
|
||||||
|
@ -386,10 +386,13 @@ def open_uri(uri,
|
|||||||
raise MalformedURIException('Malformed header argument in URI')
|
raise MalformedURIException('Malformed header argument in URI')
|
||||||
|
|
||||||
if b"sep" in qualifiers:
|
if b"sep" in qualifiers:
|
||||||
sep=tobytes(qualifiers[b"sep"][0][0])
|
sep = tobytes(qualifiers[b"sep"][0][0])
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
sep=tobytes(config["obi"]["sep"])
|
sep = config["obi"]["sep"]
|
||||||
|
if sep == '\\t': # dirty workaround for flake8(?) issue that reads '\t' as '\'+'t' when parsing the option value
|
||||||
|
sep = '\t'
|
||||||
|
sep = tobytes(sep)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
sep=None
|
sep=None
|
||||||
|
|
||||||
|
@ -9,7 +9,8 @@ from obitools3.dms.capi.obitypes cimport is_a_DNA_seq, \
|
|||||||
OBI_QUAL, \
|
OBI_QUAL, \
|
||||||
OBI_SEQ, \
|
OBI_SEQ, \
|
||||||
OBI_STR, \
|
OBI_STR, \
|
||||||
index_t
|
index_t, \
|
||||||
|
OBI_INT_MAX
|
||||||
|
|
||||||
from obitools3.dms.capi.obierrno cimport OBI_LINE_IDX_ERROR, \
|
from obitools3.dms.capi.obierrno cimport OBI_LINE_IDX_ERROR, \
|
||||||
OBI_ELT_IDX_ERROR, \
|
OBI_ELT_IDX_ERROR, \
|
||||||
@ -258,7 +259,7 @@ cdef obitype_t update_obitype(obitype_t obitype, object new_value) :
|
|||||||
new_type = type(new_value)
|
new_type = type(new_value)
|
||||||
|
|
||||||
if obitype == OBI_INT :
|
if obitype == OBI_INT :
|
||||||
if new_type == float :
|
if new_type == float or new_value > OBI_INT_MAX :
|
||||||
return OBI_FLOAT
|
return OBI_FLOAT
|
||||||
# TODO BOOL vers INT/FLOAT
|
# TODO BOOL vers INT/FLOAT
|
||||||
elif new_type == str or new_type == bytes :
|
elif new_type == str or new_type == bytes :
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
major = 3
|
major = 3
|
||||||
minor = 0
|
minor = 0
|
||||||
serial= '1b2'
|
serial= '1b6'
|
||||||
|
|
||||||
version ="%d.%d.%s" % (major,minor,serial)
|
version ="%d.%d.%s" % (major,minor,serial)
|
||||||
|
@ -2463,6 +2463,32 @@ int read_merged_dmp(const char* taxdump, OBIDMS_taxonomy_p tax, int32_t* delnode
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write the rest of the taxa from the current taxa list
|
||||||
|
while (nT < (tax->taxa)->count)
|
||||||
|
{
|
||||||
|
// Add element from taxa list
|
||||||
|
// Enlarge structure if needed
|
||||||
|
if (n == buffer_size)
|
||||||
|
{
|
||||||
|
buffer_size = buffer_size * 2;
|
||||||
|
tax->merged_idx = (ecomergedidx_t*) realloc(tax->merged_idx, sizeof(ecomergedidx_t) + sizeof(ecomerged_t) * buffer_size);
|
||||||
|
if (tax->merged_idx == NULL)
|
||||||
|
{
|
||||||
|
obi_set_errno(OBI_MALLOC_ERROR);
|
||||||
|
obidebug(1, "\nError reallocating memory for a taxonomy structure");
|
||||||
|
closedir(tax_dir);
|
||||||
|
fclose(file);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(tax->merged_idx)->merged[n].taxid = (tax->taxa)->taxon[nT].taxid;
|
||||||
|
(tax->merged_idx)->merged[n].idx = nT;
|
||||||
|
|
||||||
|
nT++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
|
||||||
// Store count
|
// Store count
|
||||||
(tax->merged_idx)->count = n;
|
(tax->merged_idx)->count = n;
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
int32_t max_taxid; /**< Maximum taxid existing in the taxon index.
|
int32_t max_taxid; /**< Maximum taxid existing in the taxon index.
|
||||||
*/
|
*/
|
||||||
int32_t buffer_size; /**< Number of taxa. // TODO kept this but not sure of its use
|
int32_t buffer_size; /**< . // TODO kept this but not sure of its use
|
||||||
*/
|
*/
|
||||||
ecotx_t taxon[]; /**< Taxon array.
|
ecotx_t taxon[]; /**< Taxon array.
|
||||||
*/
|
*/
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
#define OBIQual_int_NA (NULL) /**< NA value for the type OBI_QUAL if the quality is in integer format */
|
#define OBIQual_int_NA (NULL) /**< NA value for the type OBI_QUAL if the quality is in integer format */
|
||||||
#define OBITuple_NA (NULL) /**< NA value for tuples of any type */
|
#define OBITuple_NA (NULL) /**< NA value for tuples of any type */
|
||||||
|
|
||||||
|
#define OBI_INT_MAX (INT32_MAX) /**< Maximum value for the type OBI_INT */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief enum for the boolean OBIType.
|
* @brief enum for the boolean OBIType.
|
||||||
|
Reference in New Issue
Block a user