void eseqclusteravg::check(ebasicarray<eseqdistCount>& dists) { long i; estr xystr; bool duplicate=false; eseqdisthash checkmatrix; for (i=0; i<dists.size(); ++i){ if (i%(dists.size()/10)==0) { cout << i*10/dists.size(); flush(cout); } // xy2estr(dists[i].x,dists[i].y,xystr); eseqdisthash::iter it; // cout << dists[i].dist << " " << dists[i].x << " " << dists[i].y; it=checkmatrix.get(dists[i]); if (it != checkmatrix.end()) { cout << "duplicate found: "+estr(dists[i].x)+","+dists[i].y << endl; // cout << " *"; duplicate=true; }else checkmatrix.add(dists[i],1); // cout << endl; } smatrix.clear(); ldieif(duplicate,"duplicates found"); cout << "# no duplicates found!" << endl; }
void finduniq(ebasicarray<INDTYPE>& uniqind,earray<ebasicarray<INDTYPE> >& dupslist) { ebasicstrhashof<long> duphash; ebasicstrhashof<long>::iter it; if (!ignoreUnique){ duphash.reserve(arr.size()); for (long i=0; i<arr.size(); ++i){ if (i%1000==0) fprintf(stderr,"\r%li/%li",i,(long)arr.size()); it=duphash.get(arr.values(i)); if (it==duphash.end()) { uniqind.add(i); duphash.add(arr.values(i),uniqind.size()-1); dupslist.add(ebasicarray<INDTYPE>(i)); } else dupslist[it.value()].add(i); } fprintf(stderr,"\r%li\n",(long)arr.size()); }else{ uniqind.init(arr.size()); for (long i=0; i<uniqind.size(); ++i) uniqind[i]=i; } cout << endl; }