git-svn-id: https://www.grenoble.prabi.fr/svn/LECASofts/ecoPCR/branches/refactoring@46 60f365c0-8329-0410-b2a4-ec073aeeaa1d
This commit is contained in:
@ -1,14 +1,78 @@
|
||||
#include "libecoPCR/ecoPCR.h"
|
||||
#include <getopt.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define VERSION "0.1"
|
||||
|
||||
/* ----------------------------------------------- */
|
||||
/* printout verbose mode */
|
||||
/* ----------------------------------------------- */
|
||||
static void printTaxon(ecotx_t *taxon){
|
||||
printf("# taxid : %d | rank : %d | name : %s \n\n",taxon->taxid, taxon->rank, taxon->name);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------- */
|
||||
/* printout help */
|
||||
/* ----------------------------------------------- */
|
||||
#define PP fprintf(stdout,
|
||||
|
||||
static void PrintHelp()
|
||||
{
|
||||
PP "\n------------------------------------------\n");
|
||||
PP " ecoisundertaxon Version %s\n", VERSION);
|
||||
PP "------------------------------------------\n");
|
||||
PP " synopsis : searching relationship in taxonomy\n");
|
||||
PP " usage: ecoisundertaxon [options] database\n");
|
||||
PP "------------------------------------------\n");
|
||||
PP " options:\n");
|
||||
PP " -1 : [FIRST] taxomic id of the hypothetical son\n\n");
|
||||
PP " -2 : [SECOND] taxonomic id of the hypothetical parent\n\n");
|
||||
PP " -v : [V]erbose mode. Display taxonomic information for both\n");
|
||||
PP " : taxonomic id.\n\n");
|
||||
PP " -h : [H]elp - print <this> help\n\n");
|
||||
PP "------------------------------------------\n");
|
||||
PP " database : to match the expected format, the database\n");
|
||||
PP " has to be formated first by the ecoPCRFormat.py program located.\n");
|
||||
PP " in the tools directory. Type the radical only, leaving out the extension\n");
|
||||
PP "------------------------------------------\n\n");
|
||||
}
|
||||
|
||||
#undef PP
|
||||
|
||||
/* ----------------------------------------------- */
|
||||
/* printout usage and exit */
|
||||
/* ----------------------------------------------- */
|
||||
|
||||
#define PP fprintf(stderr,
|
||||
|
||||
static void ExitUsage(stat)
|
||||
int stat;
|
||||
{
|
||||
PP "usage: ecoisundertaxon [-1 taxid] [-2 taxid] [-v] [-h] datafile\n");
|
||||
PP "type \"ecoisundertaxon -h\" for help\n");
|
||||
|
||||
if (stat)
|
||||
exit(stat);
|
||||
}
|
||||
|
||||
#undef PP
|
||||
|
||||
/* ----------------------------------------------- */
|
||||
/* MAIN */
|
||||
/* ----------------------------------------------- */
|
||||
|
||||
int main(int argc, char **argv){
|
||||
int32_t carg = 0;
|
||||
int32_t taxid_1 = 0;
|
||||
int32_t taxid_2 = 0;
|
||||
int32_t verbose = 0;
|
||||
int32_t errflag = 0;
|
||||
ecotaxonomy_t *taxonomy = NULL;
|
||||
ecotx_t *son = NULL;
|
||||
ecotx_t *son = NULL;
|
||||
ecotx_t *parent = NULL;
|
||||
|
||||
|
||||
while ((carg = getopt(argc, argv, "1:2:")) != -1) {
|
||||
while ((carg = getopt(argc, argv, "1:2:vh")) != -1) {
|
||||
switch (carg) {
|
||||
case '1':
|
||||
sscanf(optarg,"%d",&taxid_1);
|
||||
@ -17,13 +81,37 @@ int main(int argc, char **argv){
|
||||
case '2':
|
||||
sscanf(optarg,"%d",&taxid_2);
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
PrintHelp();
|
||||
exit(0);
|
||||
break;
|
||||
|
||||
case '?':
|
||||
errflag++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((argc -= optind) != 1)
|
||||
errflag++;
|
||||
|
||||
if (errflag)
|
||||
ExitUsage(errflag);
|
||||
|
||||
taxonomy = read_taxonomy(argv[optind]);
|
||||
|
||||
son = eco_findtaxonbytaxid(taxonomy, taxid_1);
|
||||
|
||||
if (verbose){
|
||||
parent = eco_findtaxonbytaxid(taxonomy, taxid_2);
|
||||
printTaxon(son);
|
||||
printTaxon(parent);
|
||||
}
|
||||
|
||||
if (eco_isundertaxon(son, taxid_2))
|
||||
printf("# taxid_1 (%d) is son of taxid_2 (%d)\n",taxid_1, taxid_2);
|
||||
else
|
||||
|
Reference in New Issue
Block a user