Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
f43856b712 | |||
9e0c319806 | |||
58b42cd977 | |||
34de90bce6 | |||
4be9f36f99 | |||
f10e78ba3c | |||
88c8463ed7 | |||
89168271ef |
@ -175,6 +175,14 @@ def run(config):
|
|||||||
o_dms_name = output[0].name
|
o_dms_name = output[0].name
|
||||||
o_view_name = output[1]
|
o_view_name = output[1]
|
||||||
|
|
||||||
|
# Open the taxonomy DMS
|
||||||
|
taxdms = open_uri(config['obi']['taxoURI'],
|
||||||
|
dms_only=True)
|
||||||
|
if taxdms is None:
|
||||||
|
raise Exception("Could not open taxonomy DMS")
|
||||||
|
tax_dms = taxdms[0]
|
||||||
|
tax_dms_name = taxdms[0].name
|
||||||
|
|
||||||
# Read taxonomy name
|
# Read taxonomy name
|
||||||
taxonomy_name = config['obi']['taxoURI'].split("/")[-1] # Robust in theory
|
taxonomy_name = config['obi']['taxoURI'].split("/")[-1] # Robust in theory
|
||||||
|
|
||||||
@ -197,7 +205,8 @@ def run(config):
|
|||||||
|
|
||||||
# TODO: primers in comments?
|
# TODO: primers in comments?
|
||||||
|
|
||||||
if obi_ecopcr(i_dms.name_with_full_path, tobytes(i_view_name), tobytes(taxonomy_name), \
|
if obi_ecopcr(i_dms.name_with_full_path, tobytes(i_view_name),
|
||||||
|
tax_dms.name_with_full_path, tobytes(taxonomy_name), \
|
||||||
o_dms.name_with_full_path, tobytes(o_view_name), comments, \
|
o_dms.name_with_full_path, tobytes(o_view_name), comments, \
|
||||||
tobytes(config['ecopcr']['primer1']), tobytes(config['ecopcr']['primer2']), \
|
tobytes(config['ecopcr']['primer1']), tobytes(config['ecopcr']['primer2']), \
|
||||||
config['ecopcr']['error'], \
|
config['ecopcr']['error'], \
|
||||||
|
2
python/obitools3/commands/ngsfilter.pyx
Normal file → Executable file
2
python/obitools3/commands/ngsfilter.pyx
Normal file → Executable file
@ -271,7 +271,7 @@ cdef tuple annotate(sequences, infos, no_tags, verbose=False):
|
|||||||
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
sequences[0][REVERSE_QUALITY_COLUMN] = sequences[1].quality # used by alignpairedend tool
|
||||||
|
|
||||||
for seq in sequences:
|
for seq in sequences:
|
||||||
if hasattr(seq, "quality_array"):
|
if hasattr(seq, "quality_array") and seq.quality_array is not None:
|
||||||
q = -reduce(lambda x,y:x+y,(math.log10(z) for z in seq.quality_array),0)/len(seq.quality_array)*10
|
q = -reduce(lambda x,y:x+y,(math.log10(z) for z in seq.quality_array),0)/len(seq.quality_array)*10
|
||||||
seq[b'avg_quality']=q
|
seq[b'avg_quality']=q
|
||||||
q = -reduce(lambda x,y:x+y,(math.log10(z) for z in seq.quality_array[0:10]),0)
|
q = -reduce(lambda x,y:x+y,(math.log10(z) for z in seq.quality_array[0:10]),0)
|
||||||
|
@ -121,7 +121,10 @@ def variance(v):
|
|||||||
if len(v)==1:
|
if len(v)==1:
|
||||||
return 0
|
return 0
|
||||||
s = reduce(lambda x,y:(x[0]+y,x[1]+y**2),v,(0.,0.))
|
s = reduce(lambda x,y:(x[0]+y,x[1]+y**2),v,(0.,0.))
|
||||||
return s[1]/(len(v)-1) - s[0]**2/len(v)/(len(v)-1)
|
var = round(s[1]/(len(v)-1) - s[0]**2/len(v)/(len(v)-1), 5) # round to go around shady python rounding stuff when var is actually 0
|
||||||
|
if var == -0.0: # then fix -0 to +0 if was rounded to -0
|
||||||
|
var = 0.0
|
||||||
|
return var
|
||||||
|
|
||||||
|
|
||||||
def varpop(values, options):
|
def varpop(values, options):
|
||||||
|
@ -8,6 +8,7 @@ cdef extern from "obi_ecopcr.h" nogil:
|
|||||||
|
|
||||||
int obi_ecopcr(const char* input_dms_name,
|
int obi_ecopcr(const char* input_dms_name,
|
||||||
const char* i_view_name,
|
const char* i_view_name,
|
||||||
|
const char* tax_dms_name,
|
||||||
const char* taxonomy_name,
|
const char* taxonomy_name,
|
||||||
const char* output_dms_name,
|
const char* output_dms_name,
|
||||||
const char* o_view_name,
|
const char* o_view_name,
|
||||||
|
@ -93,6 +93,8 @@ cdef class Taxonomy(OBIWrapper) :
|
|||||||
raise RuntimeError("Error : Cannot read taxonomy %s"
|
raise RuntimeError("Error : Cannot read taxonomy %s"
|
||||||
% tostr(name))
|
% tostr(name))
|
||||||
|
|
||||||
|
print("Taxonomy read", file=sys.stderr)
|
||||||
|
|
||||||
taxo = OBIWrapper.new_wrapper(Taxonomy, pointer)
|
taxo = OBIWrapper.new_wrapper(Taxonomy, pointer)
|
||||||
|
|
||||||
dms.register(taxo)
|
dms.register(taxo)
|
||||||
|
@ -345,7 +345,7 @@ cdef class View(OBIWrapper) :
|
|||||||
nb_elements_per_line=new_nb_elements_per_line, elements_names=new_elements_names,
|
nb_elements_per_line=new_nb_elements_per_line, elements_names=new_elements_names,
|
||||||
dict_column=(new_nb_elements_per_line>1), comments=old_column.comments, alias=column_name_b+tobytes('___new___'))
|
dict_column=(new_nb_elements_per_line>1), comments=old_column.comments, alias=column_name_b+tobytes('___new___'))
|
||||||
|
|
||||||
switch_to_dict = old_column.nb_elements_per_line == 1 and new_nb_elements_per_line > 1
|
switch_to_dict = not old_column.dict_column and new_nb_elements_per_line > 1
|
||||||
ori_key = old_column._elements_names[0]
|
ori_key = old_column._elements_names[0]
|
||||||
|
|
||||||
for i in range(length) :
|
for i in range(length) :
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
major = 3
|
major = 3
|
||||||
minor = 0
|
minor = 0
|
||||||
serial= '1b11'
|
serial= '1b12'
|
||||||
|
|
||||||
version ="%d.%d.%s" % (major,minor,serial)
|
version ="%d.%d.%s" % (major,minor,serial)
|
||||||
|
@ -645,7 +645,8 @@ static int print_seq(Obiview_p i_view, Obiview_p o_view,
|
|||||||
|
|
||||||
int obi_ecopcr(const char* i_dms_name,
|
int obi_ecopcr(const char* i_dms_name,
|
||||||
const char* i_view_name,
|
const char* i_view_name,
|
||||||
const char* taxonomy_name, // TODO discuss that input dms assumed
|
const char* tax_dms_name,
|
||||||
|
const char* taxonomy_name,
|
||||||
const char* o_dms_name,
|
const char* o_dms_name,
|
||||||
const char* o_view_name,
|
const char* o_view_name,
|
||||||
const char* o_view_comments,
|
const char* o_view_comments,
|
||||||
@ -678,6 +679,7 @@ int obi_ecopcr(const char* i_dms_name,
|
|||||||
|
|
||||||
OBIDMS_p i_dms = NULL;
|
OBIDMS_p i_dms = NULL;
|
||||||
OBIDMS_p o_dms = NULL;
|
OBIDMS_p o_dms = NULL;
|
||||||
|
OBIDMS_p tax_dms = NULL;
|
||||||
OBIDMS_taxonomy_p taxonomy = NULL;
|
OBIDMS_taxonomy_p taxonomy = NULL;
|
||||||
Obiview_p i_view = NULL;
|
Obiview_p i_view = NULL;
|
||||||
Obiview_p o_view = NULL;
|
Obiview_p o_view = NULL;
|
||||||
@ -965,8 +967,16 @@ int obi_ecopcr(const char* i_dms_name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Open taxonomy DMS
|
||||||
|
tax_dms = obi_open_dms(tax_dms_name, false);
|
||||||
|
if (tax_dms == NULL)
|
||||||
|
{
|
||||||
|
obidebug(1, "\nError opening the taxonomy DMS");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Open the taxonomy
|
// Open the taxonomy
|
||||||
taxonomy = obi_read_taxonomy(i_dms, taxonomy_name, false);
|
taxonomy = obi_read_taxonomy(tax_dms, taxonomy_name, false);
|
||||||
if (taxonomy == NULL)
|
if (taxonomy == NULL)
|
||||||
{
|
{
|
||||||
obidebug(1, "\nError opening the taxonomy");
|
obidebug(1, "\nError opening the taxonomy");
|
||||||
|
@ -77,7 +77,8 @@
|
|||||||
*
|
*
|
||||||
* @param i_dms_name The path to the input DMS.
|
* @param i_dms_name The path to the input DMS.
|
||||||
* @param i_view_name The name of the input view.
|
* @param i_view_name The name of the input view.
|
||||||
* @param taxonomy_name The name of the taxonomy in the input DMS.
|
* @param tax_dms_name The path to the DMS containing the taxonomy.
|
||||||
|
* @param taxonomy_name The name of the taxonomy.
|
||||||
* @param o_dms_name The path to the output DMS.
|
* @param o_dms_name The path to the output DMS.
|
||||||
* @param o_view_name The name of the output view.
|
* @param o_view_name The name of the output view.
|
||||||
* @param o_view_comments The comments to associate with the output view.
|
* @param o_view_comments The comments to associate with the output view.
|
||||||
@ -106,6 +107,7 @@
|
|||||||
*/
|
*/
|
||||||
int obi_ecopcr(const char* i_dms_name,
|
int obi_ecopcr(const char* i_dms_name,
|
||||||
const char* i_view_name,
|
const char* i_view_name,
|
||||||
|
const char* tax_dms_name,
|
||||||
const char* taxonomy_name,
|
const char* taxonomy_name,
|
||||||
const char* o_dms_name,
|
const char* o_dms_name,
|
||||||
const char* o_view_name,
|
const char* o_view_name,
|
||||||
|
14
src/obidms.c
14
src/obidms.c
@ -1417,7 +1417,7 @@ char* obi_dms_formatted_infos(OBIDMS_p dms, bool detailed)
|
|||||||
char* view_name = NULL;
|
char* view_name = NULL;
|
||||||
char* tax_name = NULL;
|
char* tax_name = NULL;
|
||||||
char* all_tax_dir_path = NULL;
|
char* all_tax_dir_path = NULL;
|
||||||
int i;
|
int i, last_dot_pos;
|
||||||
struct dirent* dp;
|
struct dirent* dp;
|
||||||
Obiview_p view;
|
Obiview_p view;
|
||||||
|
|
||||||
@ -1439,17 +1439,21 @@ char* obi_dms_formatted_infos(OBIDMS_p dms, bool detailed)
|
|||||||
if ((dp->d_name)[0] == '.')
|
if ((dp->d_name)[0] == '.')
|
||||||
continue;
|
continue;
|
||||||
i=0;
|
i=0;
|
||||||
while ((dp->d_name)[i] != '.')
|
while (i < strlen(dp->d_name))
|
||||||
|
{
|
||||||
|
if ((dp->d_name)[i] == '.')
|
||||||
|
last_dot_pos = i;
|
||||||
i++;
|
i++;
|
||||||
view_name = (char*) malloc((i+1) * sizeof(char));
|
}
|
||||||
|
view_name = (char*) malloc((last_dot_pos+1) * sizeof(char));
|
||||||
if (view_name == NULL)
|
if (view_name == NULL)
|
||||||
{
|
{
|
||||||
obi_set_errno(OBI_MALLOC_ERROR);
|
obi_set_errno(OBI_MALLOC_ERROR);
|
||||||
obidebug(1, "\nError allocating memory for a view name when getting formatted DMS infos: file %s", dp->d_name);
|
obidebug(1, "\nError allocating memory for a view name when getting formatted DMS infos: file %s", dp->d_name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strncpy(view_name, dp->d_name, i);
|
strncpy(view_name, dp->d_name, last_dot_pos);
|
||||||
view_name[i] = '\0';
|
view_name[last_dot_pos] = '\0';
|
||||||
view = obi_open_view(dms, view_name);
|
view = obi_open_view(dms, view_name);
|
||||||
if (view == NULL)
|
if (view == NULL)
|
||||||
{
|
{
|
||||||
|
@ -2910,7 +2910,7 @@ int obi_clean_unfinished_views(OBIDMS_p dms)
|
|||||||
if ((dp->d_name)[0] == '.')
|
if ((dp->d_name)[0] == '.')
|
||||||
continue;
|
continue;
|
||||||
i=0;
|
i=0;
|
||||||
while ((dp->d_name)[i] != '.')
|
while (strncmp((dp->d_name)+i, ".obiview", 8))
|
||||||
i++;
|
i++;
|
||||||
relative_path = (char*) malloc(strlen(VIEW_DIR_NAME) + strlen(dp->d_name) + 2);
|
relative_path = (char*) malloc(strlen(VIEW_DIR_NAME) + strlen(dp->d_name) + 2);
|
||||||
strcpy(relative_path, VIEW_DIR_NAME);
|
strcpy(relative_path, VIEW_DIR_NAME);
|
||||||
|
Reference in New Issue
Block a user