version 0.5: ecoPrimers can now read *.ldx files (local taxa)
This commit is contained in:
@ -20,7 +20,7 @@
|
|||||||
#include"libthermo/thermostats.h"
|
#include"libthermo/thermostats.h"
|
||||||
|
|
||||||
|
|
||||||
#define VERSION "0.4"
|
#define VERSION "0.5"
|
||||||
/* TR: by default, statistics are made on species level*/
|
/* TR: by default, statistics are made on species level*/
|
||||||
#define DEFAULTTAXONRANK "species"
|
#define DEFAULTTAXONRANK "species"
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ econameidx_t *read_nameidx(const char *filename,ecotaxonomy_t *taxonomy);
|
|||||||
* @return pointer to a taxonomy index structure
|
* @return pointer to a taxonomy index structure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ecotxidx_t *read_taxonomyidx(const char *filename);
|
ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2);
|
||||||
|
|
||||||
ecotaxonomy_t *read_taxonomy(const char *prefix,int32_t readAlternativeName);
|
ecotaxonomy_t *read_taxonomy(const char *prefix,int32_t readAlternativeName);
|
||||||
|
|
||||||
|
@ -10,23 +10,41 @@ static ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon);
|
|||||||
* @param pointer to the database (.tdx file)
|
* @param pointer to the database (.tdx file)
|
||||||
* @return a ecotxidx_t structure
|
* @return a ecotxidx_t structure
|
||||||
*/
|
*/
|
||||||
ecotxidx_t *read_taxonomyidx(const char *filename)
|
ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2)
|
||||||
{
|
{
|
||||||
int32_t count;
|
int32_t count;
|
||||||
|
int32_t count2;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
FILE *f2;
|
||||||
ecotxidx_t *index;
|
ecotxidx_t *index;
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
f = open_ecorecorddb(filename,&count,1);
|
f = open_ecorecorddb(filename,&count,1);
|
||||||
|
f2 = open_ecorecorddb(filename2,&count2,0);
|
||||||
|
|
||||||
index = (ecotxidx_t*) ECOMALLOC(sizeof(ecotxidx_t) + sizeof(ecotx_t) * (count-1),
|
|
||||||
|
|
||||||
|
index = (ecotxidx_t*) ECOMALLOC(sizeof(ecotxidx_t) + sizeof(ecotx_t) * (count+count2-1),
|
||||||
"Allocate taxonomy");
|
"Allocate taxonomy");
|
||||||
|
|
||||||
index->count=count;
|
index->count=count+count2;
|
||||||
|
|
||||||
|
fprintf(stderr,"Reading %d taxa...\n",count);
|
||||||
for (i=0; i < count; i++){
|
for (i=0; i < count; i++){
|
||||||
readnext_ecotaxon(f,&(index->taxon[i]));
|
readnext_ecotaxon(f,&(index->taxon[i]));
|
||||||
index->taxon[i].parent=index->taxon + (size_t)index->taxon[i].parent;
|
index->taxon[i].parent=index->taxon + (int32_t)index->taxon[i].parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (count2>0)
|
||||||
|
fprintf(stderr,"Reading %d local taxa...\n",count2);
|
||||||
|
else
|
||||||
|
fprintf(stderr,"No local taxon\n");
|
||||||
|
|
||||||
|
for (i=0; i < count2; i++){
|
||||||
|
readnext_ecotaxon(f2,&(index->taxon[count+i]));
|
||||||
|
index->taxon[count+i].parent=index->taxon + (int32_t)index->taxon[count+i].parent;
|
||||||
|
}
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,33 +129,36 @@ ecotaxonomy_t *read_taxonomy(const char *prefix,int32_t readAlternativeName)
|
|||||||
{
|
{
|
||||||
ecotaxonomy_t *tax;
|
ecotaxonomy_t *tax;
|
||||||
char *filename;
|
char *filename;
|
||||||
|
char *filename2;
|
||||||
int buffsize;
|
int buffsize;
|
||||||
|
|
||||||
tax = ECOMALLOC(sizeof(ecotaxonomy_t),
|
tax = ECOMALLOC(sizeof(ecotaxonomy_t),
|
||||||
"Allocate taxonomy structure");
|
"Allocate taxonomy structure");
|
||||||
|
|
||||||
buffsize = strlen(prefix)+10;
|
buffsize = strlen(prefix)+10;
|
||||||
|
|
||||||
filename = ECOMALLOC(buffsize,
|
filename = ECOMALLOC(buffsize,
|
||||||
"Allocate filename");
|
"Allocate filename");
|
||||||
|
filename2= ECOMALLOC(buffsize,
|
||||||
|
"Allocate filename");
|
||||||
|
|
||||||
snprintf(filename,buffsize,"%s.rdx",prefix);
|
snprintf(filename,buffsize,"%s.rdx",prefix);
|
||||||
|
|
||||||
tax->ranks = read_rankidx(filename);
|
tax->ranks = read_rankidx(filename);
|
||||||
|
|
||||||
snprintf(filename,buffsize,"%s.tdx",prefix);
|
snprintf(filename,buffsize,"%s.tdx",prefix);
|
||||||
|
snprintf(filename2,buffsize,"%s.ldx",prefix);
|
||||||
|
|
||||||
tax->taxons = read_taxonomyidx(filename);
|
tax->taxons = read_taxonomyidx(filename,filename2);
|
||||||
|
|
||||||
if (readAlternativeName)
|
if (readAlternativeName)
|
||||||
{
|
{
|
||||||
snprintf(filename,buffsize,"%s.ndx",prefix);
|
snprintf(filename,buffsize,"%s.ndx",prefix);
|
||||||
tax->names=read_nameidx(filename,tax);
|
tax->names=read_nameidx(filename,tax);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tax->names=NULL;
|
tax->names=NULL;
|
||||||
return tax;
|
return tax;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user