From ad6f493d0f1fb31136d08dabbfab47c0fc6cf383 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Wed, 13 May 2009 13:21:10 +0000 Subject: [PATCH] Accept to deal with sequence in lower case git-svn-id: https://www.grenoble.prabi.fr/svn/LECASofts/ecoPCR/trunk@217 60f365c0-8329-0410-b2a4-ec073aeeaa1d --- .cproject | 122 +++++++++++++++++++++++++++++++++++++++++ .project | 83 ++++++++++++++++++++++++++++ .pydevproject | 7 +++ src/ecoPCR.gz | Bin 0 -> 16652 bytes src/ecofind.gz | Bin 0 -> 7649 bytes src/ecogrep | Bin 0 -> 44280 bytes src/ecogrep.gz | Bin 0 -> 15298 bytes src/ecoisundertaxon | Bin 0 -> 45308 bytes src/libecoPCR/ecoseq.c | 91 ++++++++++++++++-------------- 9 files changed, 261 insertions(+), 42 deletions(-) create mode 100644 .cproject create mode 100644 .project create mode 100644 .pydevproject create mode 100755 src/ecoPCR.gz create mode 100755 src/ecofind.gz create mode 100755 src/ecogrep create mode 100755 src/ecogrep.gz create mode 100755 src/ecoisundertaxon diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..9b5d610 --- /dev/null +++ b/.cproject @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..6eeccd3 --- /dev/null +++ b/.project @@ -0,0 +1,83 @@ + + + ecoPCR + + + + + + org.python.pydev.PyDevBuilder + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + ?name? + + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.python.pydev.pythonNature + + diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000..7ecaddf --- /dev/null +++ b/.pydevproject @@ -0,0 +1,7 @@ + + + + +python 2.4 +Default + diff --git a/src/ecoPCR.gz b/src/ecoPCR.gz new file mode 100755 index 0000000000000000000000000000000000000000..9209860937672058d15f28304c9af4169e92722d GIT binary patch literal 16652 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 literal 0 HcmV?d00001 diff --git a/src/ecogrep.gz b/src/ecogrep.gz new file mode 100755 index 0000000000000000000000000000000000000000..0edd67eb0d69d2b6e5d9952ff6773ae08f4fa8d8 GIT binary patch literal 15298 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

88-7)^Px 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 UkZ?6(o&wkZ22-`!7(}lC05@`STL1t6 literal 0 HcmV?d00001 diff --git a/src/ecoisundertaxon b/src/ecoisundertaxon new file mode 100755 index 0000000000000000000000000000000000000000..7db596319fb85f99a9140585ea670e0b6ccbae29 GIT binary patch literal 45308 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 #include #include +#include static FILE *open_seqfile(const char *prefix,int32_t index); @@ -11,32 +12,32 @@ static FILE *open_seqfile(const char *prefix,int32_t index); ecoseq_t *new_ecoseq() { void *tmp; - + tmp = ECOMALLOC(sizeof(ecoseq_t),"Allocate new ecoseq structure"); - + return tmp; } int32_t delete_ecoseq(ecoseq_t * seq) { - + if (seq) { if (seq->AC) ECOFREE(seq->AC,"Free sequence AC"); - + if (seq->DE) ECOFREE(seq->DE,"Free sequence DE"); - + if (seq->SQ) ECOFREE(seq->SQ,"Free sequence SQ"); - + ECOFREE(seq,"Free sequence structure"); - + return 0; - + } - + return 1; } @@ -49,9 +50,9 @@ ecoseq_t *new_ecoseq_with_data( char *AC, ecoseq_t *tmp; int32_t lstr; tmp = new_ecoseq(); - + tmp->taxid=taxid_idx; - + if (AC) { lstr =strlen(AC); @@ -97,12 +98,14 @@ ecoseq_t *readnext_ecoseq(FILE *f) int32_t comp_status; unsigned long int seqlength; int32_t rs; - + char *c; + int32_t i; + raw = read_ecorecord(f,&rs); - + if (!raw) return NULL; - + if (is_big_endian()) { raw->CSQ_length = swap_int32_t(raw->CSQ_length); @@ -110,44 +113,48 @@ ecoseq_t *readnext_ecoseq(FILE *f) raw->SQ_length = swap_int32_t(raw->SQ_length); raw->taxid = swap_int32_t(raw->taxid); } - + seq = new_ecoseq(); - + seq->taxid = raw->taxid; - + seq->AC = ECOMALLOC(strlen(raw->AC) +1, "Allocate Sequence Accesion number"); strncpy(seq->AC,raw->AC,strlen(raw->AC)); - + seq->DE = ECOMALLOC(raw->DE_length+1, "Allocate Sequence definition"); strncpy(seq->DE,raw->data,raw->DE_length); - + seqlength = seq->SQ_length = raw->SQ_length; - + compressed = raw->data + raw->DE_length; seq->SQ = ECOMALLOC(seqlength+1, "Allocate sequence buffer"); - + comp_status = uncompress((unsigned char*)seq->SQ, &seqlength, (unsigned char*)compressed, raw->CSQ_length); - + if (comp_status != Z_OK) ECOERROR(ECO_IO_ERROR,"I cannot uncompress sequence data"); - + + for (c=seq->SQ,i=0;i= 1024) ECOERROR(ECO_ASSERT_ERROR,"file name is too long"); filename_buffer[filename_length]=0; - + input=open_ecorecorddb(filename_buffer,&seqcount,0); - + if (input) fprintf(stderr,"# Reading file %s containing %d sequences...\n", filename_buffer, seqcount); - + return input; } @@ -186,38 +193,38 @@ ecoseq_t *ecoseq_iterator(const char *prefix) static int32_t current_file_idx = 1; static char current_prefix[1024]; ecoseq_t *seq; - + if (prefix) { current_file_idx = 1; if (current_seq_file) fclose(current_seq_file); - + strncpy(current_prefix,prefix,1023); current_prefix[1024]=0; - + current_seq_file = open_seqfile(current_prefix, current_file_idx); - + if (!current_seq_file) return NULL; - + } - + seq = readnext_ecoseq(current_seq_file); - + if (!seq && feof(current_seq_file)) { current_file_idx++; fclose(current_seq_file); current_seq_file = open_seqfile(current_prefix, current_file_idx); - - + + if (current_seq_file) seq = readnext_ecoseq(current_seq_file); } - + return seq; -} \ No newline at end of file +}