Author SHA1 Message Date
Celine Mercier b3d98e2e83 Fixes 1 2015-06-05 09:49:58 +02:00
coissac e2ebc357ee Backup with sets and ahocorasick
git-svn-id: https://www.grenoble.prabi.fr/svn/LECASofts/ecoPrimers/branches/ecoPrimers-2.1@298 60f365c0-8329-0410-b2a4-ec073aeeaa1d
2011-06-01 22:42:30 +00:00
19 changed files with 1681 additions and 204 deletions

No files matched your search

-16
View File
@@ -1,16 +0,0 @@
# /src/
/src/*.P
/src/*.a
/src/ecoPrimer
# /src/libecoPCR/
/src/libecoPCR/*.P
/src/libecoPCR/*.a
# /src/libecoprimer/
/src/libecoprimer/*.P
/src/libecoprimer/*.a
# /src/libthermo/
/src/libthermo/*.P
+1 -1
View File
@@ -1 +1 @@
0.4
1.0
+1389
View File
File diff suppressed because it is too large. Load diff
+15
View File
@@ -0,0 +1,15 @@
./ecoPrimer -d /Groups/Barcode-Leca/eubacteria-gr -l 10 -L 1000 -e 3 > euBactResults.txt
./ecoPrimer -d ChloroDB/chloroplast -l 5 -L 120 -r 58023 -e 3 > chloroVascularPlantsEric.txt
./ecoPrimer -d /Users/tiayyba/Documents/Data/mitochondrion/mitochondrion -q 0.4 -s 0.5 -l 10 -L 60 -r 1 -i 1 -T 0.2 -p > setsRoot.txt
./ecoPCR -d /Users/tiayyba/Documents/workspace/ecoPrimers/src/mitochondrion/mitochondrion -l 50 -L 120 -r 7742 TAGAACAGGCTCCTCTAG TTAGATACCCCACTATGC > 12SV5.ecoPCR
ecoTaxSpecificity -d /Users/tiayyba/Documents/workspace/ecoPrimers/src/mitochondrion/mitochondrion /Users/tiayyba/Documents/workspace/ecoPCR/src/12SV5.ecoPCR
149 ./ecoPrimer -d /Users/tiayyba/Documents/Data/mitochondrion/mitochondrion -r 40674 -E 9606 -l 10 -L 100 > MamalsNotHomoSapien.primers
150 ./ecoPrimer -d /Users/tiayyba/Documents/Data/mitochondrion/mitochondrion -q 0.4 -s 0.5 -r 40674 -E 9606 -l 10 -L 100 > MamalsNotHomoSapien.primers
151 ./ecoPrimer -d /Users/tiayyba/Documents/Data/mitochondrion/mitochondrion -q 0.5 -s 0.6 -r 40674 -E 9606 -l 10 -L 100 > MamalsNotHomoSapien1.primers
BIN
View File
Binary file not shown.
+250
View File
@@ -0,0 +1,250 @@
plot(s$seq, s$size, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(400, 0.7e+09, "nSeq = 273")
plot(t$seq, t$size, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 700, "nSeq = 273")
plot(s$seq, s$time, xlab="Sequence Count", ylab="Time[s]", main="c. time vs sequence count withount data mining")
abline(v = 273, col = "Blue")
text(450, 300, "nSeq = 273")
plot(t$seq, t$time, xlab="Sequence Count", ylab="Time[s]", main="d. time vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(350, 20, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(400, 0.6e+09, "nSeq = 273")
plot(t$seq, t$size, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(400, 600, "nSeq = 273")
plot(s$seq, s$time, xlab="Sequence Count", ylab="Time[s]", main="c. time vs sequence count withount data mining")
abline(v = 273, col = "Blue")
text(400, 300, "nSeq = 273")
plot(t$seq, t$time, xlab="Sequence Count", ylab="Time[s]", main="d. time vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(400, 15, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(400, 0.6e+09, "Nseq = 273")
plot(t$seq, t$size, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(400, 600, "Nseq = 273")
plot(s$seq, s$time, xlab="Sequence Count", ylab="Time[s]", main="c. time vs sequence count withount data mining")
abline(v = 273, col = "Blue")
text(400, 300, "Nseq = 273")
plot(t$seq, t$time, xlab="Sequence Count", ylab="Time[s]", main="d. time vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(400, 15, "Nseq = 273")
s = read.table('/Users/tiayyba/Desktop/euBact/ecoprimer_71493.log', header= T)
t = read.table('/Users/tiayyba/Desktop/euBact/ecoprimer_84784.log', header= T)
par(mfrow=c(2,2))
plot(s$seq, s$size, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 3e+09, "nSeq = 273")
plot(t$seq, t$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 1150, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 3e+09, "nSeq = 273")
plot(t$seq, t$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 1150, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 1.7e+09, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 1.4e+09, "nSeq = 273")
plot(t$seq, t$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 500, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 1.4e+09, "nSeq = 273")
plot(t$seq, t$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 500, "nSeq = 273")
text(450, 1000, "nSeq = 273")
par(mfrow=c(2,2))
plot(s$seq, s$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="a. memory used vs sequence count without data mining")
abline(v = 273, col = "Blue")
text(450, 1.3e+09, "nSeq = 273")
plot(t$seq, t$size*1.5, xlab="Sequence Count", ylab="Memory used[B]", main="b. memory used vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 1000, "nSeq = 273")
plot(s$seq, s$time, xlab="Sequence Count", ylab="Time[s]", main="c. time vs sequence count withount data mining")
abline(v = 273, col = "Blue")
text(450, 700, "nSeq = 273")
plot(t$seq, t$time, xlab="Sequence Count", ylab="Time[s]", main="d. time vs sequence count with data mining")
abline(v = 273, col = "Blue")
text(450, 30, "nSeq = 273")
s = read.table('/Users/tiayyba/Desktop/UsedistRef1.txt', header = T)
s
plot(s$Distance, s$Count)
plot(s$Distance, log(s$Count))
plot(log(s$Distance), log(s$Count))
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UU_results/UU_F83/plots/F83_distRef1.old.txt', header = T)
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UsedistRef1.txt', header = T)
plot(s$Distance*100, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UU_results/UU_F83/plots/F83_distRef1.old.txt', header = T)
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UsedistRef1.txt', header = T)
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UU_results/UU_F83/plots/F83_distRef1.old.txt', header = T)
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UsedistRef1.txt', header = T)
plot(s$Distance, log(s$Count))
plot(s$Distance*1000, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/UsedistRef1.txt', header = T)
plot(s$Distance*1000, log(s$Count))
u = read.table('/Users/tiayyba/Desktop/UU_FdistRef2.txt', header = T)
u
max(u$Count)
max(u$Distance)
plot(u$Distance, u$Count)
plot(log(u$Distance), log(u$Count))
plot(u$Distance, u$Count, log(xy))
plot(u$Distance, u$Count, log=xy)
plot(u$Distance, u$Count, log='xy')
plot(u$Distance+1, u$Count, log='xy')
plot(u$Distance, u$Count, log='xy')
?plot
s = read.table('/Users/tiayyba/Desktop/UU_FdistRef1.txt', header = T)
plot(s$Distance, s$Count)
plot(log(s$Distance), log(s$Count))
plot(s$Distance, s$Count, log='xy')
plot(s$Distance, log(s$Count))
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef1.old.txt', header = T)
s
sNew = s[order(s$Count),]
sNew
plot(s$Distance, s$Count)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef1.old.txt', header = T)
t = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef2.old.txt', header = T)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef2.old.txt', header = T)
u = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef1.old.txt', header = T)
t = data.frame(count=s$Count,uu=u$Distance,cs=s$Distance,col=(s$Distance < u$Distance)+1)
plot(s$Distance,s$Count,log='xy',col=t$col)
par(mfrow=c(1,2))
plot(s$Distance+1,s$Count,log='xy',col=t$col)
plot(u$Distance+1,u$Count,log='xy',col=t$col)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef2.old.txt', header = T)
u = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_distRef1.old.txt', header = T)
t = data.frame(count=s$Count,uu=u$Distance,cs=s$Distance,col=(s$Distance < u$Distance)+1)
plot(u$Distance+1,u$Count,log='xy',col=t$col)
par(mfrow=c(1,2))
plot(s$Distance+1,s$Count,log='xy',col=t$col)
plot(u$Distance+1,u$Count,log='xy',col=t$col)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F82/plots/F82_distRef1.txt', header = F)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F82/plots/F82_distRef1.txt', header = T)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F82/plots/F82_distRef2.txt', header = T)
u = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F82/plots/F82_distRef1.txt', header = T)
t = data.frame(count=s$Count,uu=u$Distance,cs=s$Distance,col=(s$Distance < u$Distance)+1)
t = data.frame(count=u$Count,uu=u$Distance,cs=s$Distance,col=(s$Distance < u$Distance)+1)
s = read.table('/Users/tiayyba/Desktop/abc'header = F)
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
plot(s)
s
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
s
plot(s$V2, s$V1)
plot(s$V1, s$V2)
plot(s$V1, s$V2, xlab="sequence number", ylab="sequence count")
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
s
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
s
Sr tacg gcta ctag actg␍par(mfrow=c(2,2))
plot(s$V1, s$V2, xlab="sequence number", ylab="sequence count", main = "sample: tacg")
plot(s$V1, s$V3, xlab="sequence number", ylab="sequence count", main = "sample: gcta")
plot(s$V1, s$V4, xlab="sequence number", ylab="sequence count", main = "sample: ctag")
plot(s$V1, s$V5, xlab="sequence number", ylab="sequence count", main = "sample: actg")
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
s
plot(s$V1, s$V2, xlab="sequence number", ylab="sequence count", main = "sample: Ranunculus_acris")
Sr tacg gcta ctag actg␍par(mfrow=c(2,2))
plot(s$V1, s$V2, xlab="sequence number", ylab="sequence count", main = "sample: Ranunculus_acris")
plot(s$V1, s$V3, xlab="sequence number", ylab="sequence count", main = "sample: Luzula_sudetica")
plot(s$V1, s$V4, xlab="sequence number", ylab="sequence count", main = "sample: Deschampsia_cespitosa")
plot(s$V1, s$V5, xlab="sequence number", ylab="sequence count", main = "sample: Cardamine_pratensis_paludosa")
s = read.table('/Users/tiayyba/Desktop/abc', header = F)
par(mfrow=c(2,2))
plot(s$V1, s$V2, xlab="sequence number", ylab="sequence count", main = "sample 1: Ranunculus_acris")
plot(s$V1, s$V3, xlab="sequence number", ylab="sequence count", main = "sample 2: Luzula_sudetica")
plot(s$V1, s$V4, xlab="sequence number", ylab="sequence count", main = "sample 3: Deschampsia_cespitosa")
plot(s$V1, s$V5, xlab="sequence number", ylab="sequence count", main = "sample 4: Cardamine_pratensis_paludosa")
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt', header = F)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt', header = F, row.names = 1)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt', header = F, row.names=1)
s = read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt',row.names=1)
s
plot(s$count, s$uu)
plot(s$uu, s$count)
plot(s$uu, s$count, col = s$col)
plot(s$cs, s$count, col = s$col)
plot(s$cs, s$count, col = s$col, col = (s$uu < s$cs) +1)
plot(s$uu, s$count)
plot(log(s$uu), log(s$count))
plot(s$uu, log(s$count))
plot(log(s$uu), log(s$count))
plot(s$uu, s$count)
plot(s$uu, log(s$count))
plot(s$uu, log(s$count), xlab = "distance from Uncia uncia", ylab = "log(SequenceCount)")
= read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt', header = T)
s= read.table('/Users/tiayyba/Desktop/ErrModel/Borneo/UnciaUncia/UU_F83/plots/F83_dist.txt', header = T)
s
par(mfrow = c(1,2))
plot(s$cs, s$count, col = s$col)
plot(s$cs, s$count,log = 'xy', col = s$col)
par(mfrow = c(1,2))
plot(s$cs, s$count,log = 'xy', col = s$col)
plot(s$uu, s$count,log = 'xy', col = s$col)
score = (0.407)*0.890*exp(-sqrt(692.33/1.247))
score
score1 = (0.511)*0.904*exp(-sqrt(481/148.5))
score1
score1 = sqrt(481/148.5)
score1
score = sqrt(692.33/1.247)
score
score = (0.407)^2*0.890*sqrt(692.33/1.247)
score
score1 = (0.511)^2*0.904*sqrt(481/148.5)
score1
score = (0.407)*0.890*sqrt(692.33/1.247)
score
score1 = (0.511)*0.904*sqrt(481/148.5)
score1
score = (0.407)*0.890*692.33/sqrt(1.247)
score
score1 = (0.511)*0.904*481/sqrt(148.5)
score1
sum = 714 + 710 + 699
sum
2123/3
1760+3210+4950+2090
12010+3300+220
4400+385+55+495+715+800+450+2200+1540+1210+550
944 - 220
724 - 40
684 -10
364-278
944-657
250+220
7*9
q
quit
s = read.table('metazoas_Mdyn_T50.gv')
s = read.table('metazoas_Mdyn_T50.gv.hist.gv')
t = read.table('test.gv')
hist(t$V3)
hist(s$V3)
File renamed without changes.
-1
View File
@@ -54,7 +54,6 @@ libthermo/libthermo.a:
clean:
rm -f *.o
rm -f *.P
rm -f $(EXEC)
$(MAKE) -C libecoPCR clean
$(MAKE) -C libecoprimer clean
Executable
BIN
View File
Binary file not shown.
Regular → Executable
+6 -9
View File
@@ -20,7 +20,7 @@
#include"libthermo/thermostats.h"
#define VERSION "0.4"
#define VERSION "0.3"
/* TR: by default, statistics are made on species level*/
#define DEFAULTTAXONRANK "species"
@@ -78,7 +78,7 @@ static void PrintHelp()
PP "-A : Print the list of all identifier of sequences present in the database\n\n");
PP "-f : Remove data mining step during strict primer identification\n\n");
PP "-v : Store statistic file about memory usage during strict primer identification\n\n");
PP "-p : Print sets of primers (may take several minutes after primers have been designed!)\n\n");
PP "-p : Print sets of primers\n\n");
PP "-T : Ignore pairs having specificity below this Threshold\n\n");
PP "\n");
PP "------------------------------------------\n");
@@ -156,7 +156,7 @@ void initoptions(poptions_t options)
options->specificity_threshold = 0.6;
options->links_cnt = 1;
options->max_links_percent = -1; /*graph only those primers having maximum 15% links*/
options->filter_on_links = FALSE;
options->filter_on_links = TRUE;
}
void printapair(int32_t index,ppair_t pair, poptions_t options)
@@ -430,24 +430,21 @@ void printpairs (ppairtree_t pairs, poptions_t options,ecotaxonomy_t *taxonomy,
if (options->g)
{
printf("# Ignore %s:\n",taxon[(options->g>1) ? 1:0]);
for(i=0;i<(uint32_t)options->g;i++)
for(i=0;i<(uint32_t)options->r;i++)
{
current_taxon=eco_findtaxonbytaxid(taxonomy,options->ignored_taxid[i]);
printf("# %d : %s (%s)\n", current_taxon->taxid,
current_taxon->name,
taxonomy->ranks->label[current_taxon->rank]
);
}
printf("#\n");
}
printf("# strict primer quorum : %3.2f\n",options->strict_quorum);
printf("# example quorum : %3.2f\n",options->sensitivity_quorum);
if (options->g + options->r)
printf("# counterexample quorum : %3.2f\n",options->false_positive_quorum);
printf("#\n");
printf("# database : %s\n",options->prefix);
printf("# Database is constituted of %5d examples corresponding to %5d %s\n",options->insamples,
@@ -768,7 +765,7 @@ int main(int argc, char **argv)
/* -------------------- */
case 'p': /* print sets of primers */
/* --------------------------------- */
//options.print_sets_of_primers = TRUE;
options.print_sets_of_primers = TRUE;
break;
/* --------------------------------- */
@@ -790,7 +787,7 @@ int main(int argc, char **argv)
break;
case 'b':
options.filter_on_links = TRUE;
options.filter_on_links = FALSE;
break;
case '?': /* bad option */
+1 -1
View File
@@ -1,5 +1,5 @@
MACHINE=MAC_OS_X
LIBPATH= -LlibecoPCR -Llibecoprimer -Llibthermo
LIBPATH= -Llibapat -LlibecoPCR -Llibecoprimer -Llibthermo
MAKEDEPEND = gcc -D$(MACHINE) -M $(CPPFLAGS) -o $*.d $<
CC=gcc
+2 -8
View File
@@ -54,19 +54,13 @@ void *eco_realloc(void *chunk,
{
void *newchunk;
if (newsize == 0)
{
if (chunk)
free(chunk);
return NULL;
}
newchunk = realloc(chunk,newsize);
if (!newchunk)
{
fprintf(stderr,"Requested memory : %d\n",newsize);
ecoError(ECO_MEM_ERROR,error_message,filename,line);
fprintf(stderr,"Requested memory : %d\n",newsize);
}
if (!chunk)
eco_chunk_malloc++;
+9 -9
View File
@@ -1184,8 +1184,8 @@ void sets_by_SimulatedAnealing (pairset *pair_set,
}
//nset = get_neighbor (&set, &params); //all random
//nset = get_neighbor2 (&set, &params); //replace next with next available
nset = get_neighbor3 (&set, &params); //replace the one with least contribution with next
//nset = get_neighbor4 (&set, &params); //replace randome no of least contributing elements with random elements in the remaining set
//nset = get_neighbor3 (&set, &params); //replace the one with least contribution with next
nset = get_neighbor4 (&set, &params); //replace randome no of least contributing elements with random elements in the remaining set
if (nset.set_specificity < min_spc)
min_spc = nset.set_specificity;
@@ -1218,10 +1218,10 @@ void sets_by_SimulatedAnealing (pairset *pair_set,
ECOFREE (set.set_wellIdentifiedTaxa, "Could not free memory for pair set wi");
set = clone_set (&nset, options->dbsize);
score = nscore;
//which_one_to_replace = 0;
//last_replaced_with = 0;
//printf ("Seed Set: ");
//print_set_info (&set, &params);
which_one_to_replace = 0;
last_replaced_with = 0;
printf ("Seed Set: ");
print_set_info (&set, &params);
}
k++;
ECOFREE (nset.set_wellIdentifiedTaxa, "Could not free memory for pair set wi");
@@ -1301,8 +1301,8 @@ void sets_by_TabuSearch (pairset *pair_set,
//nset = get_neighbor (&set, &params); //all random
//nset = get_neighbor2 (&set, &params); //replace next with next available
nset = get_neighbor3 (&set, &params); //replace the one with least contribution with next
//nset = get_neighbor4 (&set, &params); //replace randome no of least contributing elements with random elements in the remaining set
//nset = get_neighbor3 (&set, &params); //replace the one with least contribution with next
nset = get_neighbor4 (&set, &params); //replace randome no of least contributing elements with random elements in the remaining set
if (nset.set_specificity < min_spc)
min_spc = nset.set_specificity;
@@ -1601,7 +1601,7 @@ size_t primers_changeSortedArray (ppair_t ** pairs,
if((sortedpairs[i]->intaxa - sortedpairs[i]->notwellidentifiedtaxa) < (sortedpairs[j]->intaxa - sortedpairs[j]->notwellidentifiedtaxa))
allowedtaxa = (sortedpairs[i]->intaxa - sortedpairs[i]->notwellidentifiedtaxa)/2;
else
allowedtaxa = (sortedpairs[j]->intaxa - sortedpairs[j]->notwellidentifiedtaxa)/2;
allowedtaxa = (sortedpairs[j]->intaxa - sortedpairs[j]->notwellidentifiedtaxa)/2;
//if (total_links > 5 && (total_links <= options->max_links_percent || options->max_links_percent==-1))
Regular → Executable
View File
File mode changed.
+1 -35
View File
@@ -27,17 +27,6 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
ecoseq_t *seq,
uint32_t *size)
{
/*
* This function aims at building a vector of count for every possible hash codes
*
* The function must be applied once on each sequence
*
* The function allocates memory on the first call for the dest table
* The function also allocates memory for the static temporary table in_last_seq and
* the function must be called with *dest == -1 in order to free this temporary table
*
*/
static char *in_last_seq=NULL;
uint32_t i=0;
uint32_t j;
@@ -51,6 +40,7 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
// run on the first call;
if (dest==(void*)-1)
{
if (in_last_seq) ECOFREE(in_last_seq,"Free in last seq table");
@@ -58,27 +48,14 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
}
/* FWORDSIZE = 13 => *size = 67 108 864
* FWORDSIZE = 14 => *size = 268 435 456
* FWORDSIZE = 15 => *size = 1 073 741 824
*/
*size = pow(4,FWORDSIZE);
/*
* in_last_seq is a vector of char as it is just to avoid counting twice (or more) a hash code (a DNA word)
* it is set to zero (with memset) and then filled with ones for each word belonging to the sequence
*/
if (!in_last_seq)
in_last_seq = ECOMALLOC(*size*sizeof(char),
"Cannot allocate filtering hash table");
memset(in_last_seq,0,*size*sizeof(char));
/*
* Allocate (on first call) the memory for the table of counts
*/
if (!dest)
{
@@ -95,10 +72,6 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
// DEBUG_LOG("Sequence %s @ %d : %18.18s",seq->AC,i,(seq->SQ+i));
/*
* Compute first word of seq
*/
for (i=0, base = seq->SQ; i < FWORDSIZE && i < lmax; i++,base++)
{
error<<= 1;
@@ -122,9 +95,6 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
goodword=(uint32_t)((doublestrand) ? MINI(word,antiword):word);
/*
* FB: I don't think the test is necessary as the table has just been initialized
*/
if (!in_last_seq[goodword])
{
in_last_seq[goodword]=1;
@@ -132,9 +102,6 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
}
}
/*
* compute and store counts (avoid counting twice a word) for the other words of the seq
*/
for (j=1; j < lmax; j++,i++,base++)
{
@@ -175,7 +142,6 @@ static int32_t *ecoFilteringHashSequence(int32_t *dest,
}
return dest;
}
+3 -22
View File
@@ -33,19 +33,6 @@ pword_t ecoHashSequence(pword_t dest,
uint32_t neededWordCount,
int32_t quorum)
{
/*
* dest / out : words of the hashed sequence position per position
* wordsize / in : size of the word to be hashed (record error for that size) BUT not equal to FWORDSIZE ...
* ... the size of the word REALLY returned as a result
* circular / in : is the sequence circular
* doublestrand / in : if we have to hash on both strands of the sequence
* seq / in : the sequence in ecoseq format
* size / out : number of hashed words (size of the dest vector)
* neededWordCount / in : table hash codes of word counts in the full DB (used to filter words)
* quorum / in : minimum quorum used to filter words based on the neededWordCount table
*/
uint32_t i=0;
uint32_t j;
char *base;
@@ -67,7 +54,7 @@ pword_t ecoHashSequence(pword_t dest,
"I cannot allocate memory for sequence hashing"
);
//DEBUG_LOG("Sequence %s @ %d : %18.18s",seq->AC,i,(seq->SQ+i));
// DEBUG_LOG("Sequence %s @ %d : %18.18s",seq->AC,i,(seq->SQ+i));
for (i=0, base = seq->SQ; i < wordsize && i < lmax; i++,base++)
{
@@ -110,7 +97,7 @@ pword_t ecoHashSequence(pword_t dest,
for (j=1; j < lmax; j++,i++,base++)
{
//DEBUG_LOG("Sequence %s @ %d : %18.18s",seq->AC,j,(seq->SQ+j));
// DEBUG_LOG("Sequence %s @ %d : %18.18s",seq->AC,j,(seq->SQ+j));
/* roll over the sequence for circular ones */
@@ -148,19 +135,13 @@ pword_t ecoHashSequence(pword_t dest,
}
}
//DEBUG_LOG("%s goodword = %d",seq->AC,*size);
// DEBUG_LOG("%s goodword = %d",seq->AC,*size);
return dest;
}
uint32_t ecoCompactHashSequence(pword_t table,uint32_t size)
{
/*
*
* MULTIWORD is a word occurring more than once in a sequence
*
*/
uint32_t i,j;
word_t current;
// bool_t here=FALSE;
+1 -50
View File
@@ -10,7 +10,7 @@
static pmerge_t mergeInit(pmerge_t merge,pwordcount_t data,uint32_t s1,uint32_t s2);
static pmerge_t mergeInit(pmerge_t merge, pwordcount_t data, uint32_t s1, uint32_t s2)
static pmerge_t mergeInit(pmerge_t merge, pwordcount_t data,uint32_t s1,uint32_t s2)
{
merge->words = data->words;
merge->count = data->strictcount;
@@ -26,15 +26,6 @@ typedef enum {S1=1,S2=2,STACK=3} source_t;
void ecomerge(pwordcount_t data,uint32_t s1,uint32_t s2,uint32_t remainingSeq,uint32_t seqQuorum)
{
/*
* data / in out : the table that contains the two parts to be merged
* s1 / in : end of the first part of the table
* s2 / in : end of the second part of the table
* remainingSeq / in : the number of remaining seqs to be added to the table
* seqQuorum / in : the minimum number of sequences in which a pattern must appear
*/
merge_t merged;
source_t source;
word_t currentword,tmpword;
@@ -47,31 +38,12 @@ void ecomerge(pwordcount_t data,uint32_t s1,uint32_t s2,uint32_t remainingSeq,ui
// DEBUG_LOG("Coucou %p s1= %d s2= %d",data,s1,s2)
/*
* init the merged structure (used only for coding convenience, never returned, allocated on the C-stack)
* note that :
* merged.words : hashcodes (initialized to data->words)
* merged.count : counts of each word (initialized to data->strictcount)
* merged.read1 : index of the first word of the first subtable (initialized to 0)
* merged.read1 : index of the first word of the first subtable (initialized to 0)
* merged.read2 : index of the first word of the second subtable (initialized to s1)
* merged.size : total size of the table (initialized to s1+s2)
*
* allocate a new stack of size min(s1, s2)
*/
(void)mergeInit(&merged,data,s1,s2);
(void)newQueue(&queue,MINI(s1,s2));
/* true until
* merged.read1 == s1 AND merged.read2 == merged.size, i.e. ALL words have been processed
*/
while (merged.read1 < s1 || merged.read2 < merged.size)
{
/*
* initialize current{word,count} from either STACK (if not empty) or first table (S1)
*/
if (! queue.empty)
{
currentword = queue.words[queue.pop];
@@ -85,12 +57,6 @@ void ecomerge(pwordcount_t data,uint32_t s1,uint32_t s2,uint32_t remainingSeq,ui
source=S1;
}
/*
* IF there are some words in the second subtable remaining to be processed AND
* its first word is lower than current word
* THEN initialize current{word,count} from the second table (S2)
*
*/
if (merged.read2 < merged.size &&
WORD(currentword) > WORD(merged.words[merged.read2]))
{
@@ -99,20 +65,11 @@ void ecomerge(pwordcount_t data,uint32_t s1,uint32_t s2,uint32_t remainingSeq,ui
source = S2;
}
/*
* record if the two words in the both subtable are the same
*/
same = (source != S2) && (WORD(currentword) == WORD(merged.words[merged.read2]));
nsame+=same;
// DEBUG_LOG("Merging : r1 = %d s1 = %d r2 = %d size = %d word = %s source=%u same=%u",merged.read1,s1,merged.read2-s1,merged.size,ecoUnhashWord(currentword,18),source,same)
/*
* merge step (AND apply the quorum property)
* update merged.read1 AND/OR merged.read2
* record the word and its count in the table
*/
tmpword = merged.words[merged.write];
tmpcount= merged.count[merged.write];
@@ -158,12 +115,6 @@ void ecomerge(pwordcount_t data,uint32_t s1,uint32_t s2,uint32_t remainingSeq,ui
// DEBUG_LOG("r1 : %d r2 : %d qsize : %d nsame : %d tot : %d write : %s count : %d source : %d size : %d pop : %d push : %d empty : %d",merged.read1,merged.read2-s1,qsize,nsame,qsize+nsame,ecoUnhashWord(currentword,18),currentcount,source,queue.size,queue.pop,queue.push,queue.empty)
/*
* finish the merging with words not processed (AND apply the quorum property)
* they are stored in the second subtable (IF)
* OR in the queue (ELSE)
*/
if (merged.read2 < merged.size)
{
//DEBUG_LOG("end1 %d %d/%d %d/%d",merged.write,merged.read1,s1,merged.read2,merged.size);
-1
View File
@@ -35,7 +35,6 @@
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
*/
#include <stdlib.h> /* FB for NULL */
#include <assert.h>
#include <stdio.h>
+3 -51
View File
@@ -91,9 +91,7 @@ void addSeqToWordCountTable(pwordcount_t table, uint32_t wordsize, uint32_t circ
table->words = ECOREALLOC(table->words,buffersize*sizeof(word_t),
"\n\nCannot allocate memory to extend word table" );
/*
* newtable is a pointer on the memory planed to be used for the new sequence (ecoWordCount new hash codes max)
*/
newtable = table->words + table->size;
// DEBUG_LOG("Words = %x (%u) new = %x", table->words,table->size,newtable);
@@ -101,24 +99,11 @@ void addSeqToWordCountTable(pwordcount_t table, uint32_t wordsize, uint32_t circ
(void)ecoHashSequence(newtable,wordsize,circular,doublestrand,seq,&newsize,neededWords,neededWordCount,seqQuorum);
// DEBUG_LOG("new seq wordCount : %d",newsize);
/*
* at this stage, new hash codes have been added in the table but the table is not sorted
*/
newsize = ecoCompactHashSequence(newtable,newsize);
/*
* new hash codes have now been sorted BUT the whole table is not.
* MULTIWORDS have been tagged (and compacted)
*/
// DEBUG_LOG("compacted wordCount : %d",newsize);
buffersize = table->size + newsize;
/*
* buffersize is now set to the REAL size used by the table (but the memory chunck may be larger)
*/
// resize the count buffer
table->inseqcount++;
@@ -128,13 +113,10 @@ void addSeqToWordCountTable(pwordcount_t table, uint32_t wordsize, uint32_t circ
"Cannot allocate memory to extend example word count table");
//fprintf (stderr, " NewAddress: %x\n", table->strictcount);
for (i=table->size; i < buffersize; i++)
table->strictcount[i]=1;
/*
* new words in the table are set to a count of ONE
*/
// Now we have to merge in situ the two tables
@@ -151,7 +133,7 @@ pwordcount_t lookforStrictPrimer(pecodnadb_t database, uint32_t seqdbsize,
double seconde;
char *logfilename;
FILE *logfile;
uint32_t i, j;
uint32_t i;
bool_t first=TRUE;
pwordcount_t strictprimers=NULL;
uint64_t totallength=0;
@@ -251,36 +233,6 @@ pwordcount_t lookforStrictPrimer(pecodnadb_t database, uint32_t seqdbsize,
if (neededWords)
ECOFREE(neededWords,"Clean needed word table");
//TR: Somehow for some primers strictcount value is extremely large hence invalid
//we need to remove these primers from the list
j = strictprimers->size+1;
for (i=0; i<strictprimers->size; i++)
{
if (strictprimers->strictcount[i] > seqdbsize)
{
if (j == (strictprimers->size+1))
j = i;
}
if (j < i && strictprimers->strictcount[i] <= seqdbsize)
{
strictprimers->words[j] = strictprimers->words[i];
strictprimers->strictcount[j] = strictprimers->strictcount[i];
j++;
}
}
if (j < strictprimers->size)
{
strictprimers->size = j;
strictprimers->strictcount = ECOREALLOC(strictprimers->strictcount,
sizeof(uint32_t)*strictprimers->size,
"Cannot reallocate strict primer count table");
strictprimers->words = ECOREALLOC(strictprimers->words,
sizeof(word_t)*strictprimers->size,
"Cannot reallocate strict primer table");
}
return strictprimers;
}