Пример #1
0
string Analyzer::getTestResuls(){
    string results = "";
    NumberSystem* best;
    float bestAvg = 1000000;
    int min = pow(10,DIGITS-1);
    int max = pow(10,DIGITS) - 1;
    float avgLength = 0;
    NumberSystem* currSystem;
    results.append("MIN:");
    results.append(AlphaConverter::integerToString(min));
    results.append(" MAX:");
    results.append(AlphaConverter::integerToString(max));
    results += '\n';
    for(unsigned int i = 0; i < systems.size(); i++){
        currSystem = &(systems.at(i));
        avgLength = getAverageLength(min,max,currSystem);
        results.append(currSystem->getDescription());
        results.append(" avgBitsPerDigit = ");
        avgLength /= (float)DIGITS;
        results.append(AlphaConverter::floatToString(avgLength));
        results += '\n';

        if(avgLength < bestAvg){
            bestAvg = avgLength;
            best = currSystem;
        }
    }
    results.append("Best System: ");
    results.append(best->getDescription());
    results.append(" avgBitsPerDigit = ");
    results.append(AlphaConverter::floatToString(bestAvg));
    return results;
}
Пример #2
0
KmerRepresentativeComputer WindowsStorage::getRepresentativeComputer(junction window,
                                           string seed, size_t min_cover, 
                                           float percent_cover,
                                           size_t nb_sampled) {
  assert(! hasLimitForReadsPerWindow() || nb_sampled <= getMaximalNbReadsPerWindow());
  list<Sequence> auditioned_sequences 
    = getSample(window,nb_sampled);
  KmerRepresentativeComputer repComp(auditioned_sequences, seed);
  repComp.setRevcomp(true);
  repComp.setMinCover((! isInterestingJunction(window)) ? min_cover : 1);
  repComp.setPercentCoverage(percent_cover);
  repComp.setRequiredSequence(window);
  repComp.setCoverageReferenceLength(getAverageLength(window));
  repComp.compute(*scorer);

  // We should always have a representative, because either the junction is labelled (thus setMinCover(1)), or:
  // - there is at least min('min_reads_clone', 'max_auditioned') sequences in auditioned_sequences
  // - and 'min_cover' = min('min_reads_clone', 'max_auditioned')
  // - and these sequence are at least as long as the seed
  if (!repComp.hasRepresentative())
    throw invalid_argument("No representative for junction " + window);

  return repComp;
}