void spring::divideDeformationsAndReset( spring &in ) { // find current spring lengths pReal aLen( ( secondary().position() - primary().position() ).length() ); pReal bLen( ( in.secondary().position() - in.primary().position() ).length() ); // find the total length pReal totalLength( aLen + bLen ); //Initial Rest Length { // find the length we are aiming at pReal aimLength( _initialRestLength ); pReal totalLength( aLen + bLen ); // divide the length between them _initialRestLength = ( aimLength / totalLength ) * aLen; in._initialRestLength = ( aimLength / totalLength ) * bLen; } //Rest Length { pReal aimLength( restLength() ); // divide the length between them restLength( ( aimLength / totalLength ) * aLen ); in.restLength( ( aimLength / totalLength ) * bLen ); } }
string Printlines::info() const { ostringstream ostr; ostr << "Printlines "<<name<<": " <<size()<<" lines" << ", total "<<totalLength()<< "mm" ; return ostr.str(); }
String StyledMarkupAccumulator::takeResults() { StringBuilder result; result.reserveCapacity(totalLength(m_reversedPrecedingMarkup) + length()); for (size_t i = m_reversedPrecedingMarkup.size(); i > 0; --i) result.append(m_reversedPrecedingMarkup[i - 1]); concatenateMarkup(result); // We remove '\0' characters because they are not visibly rendered to the user. return result.toString().replace(0, ""); }
int TPCI::encode(unique_ptr<NetworkBuffer>& nsdu) { if (nsdu.get() != nullptr) throw InvalidArgumentException(); int total = totalLength(); int userlen = 0; if (tp_buffer != nullptr) { total += tp_buffer->remaining(); } else if (tp_len > 0 && tp_data != nullptr) { total += tp_len; } unique_ptr<NetworkBuffer> newBuffer(new NetworkBuffer(total)); nsdu = std::move(newBuffer); nsdu->putByte(tp_li = headerLength()); nsdu->putByte(tp_code); return OK; }
int main(int argc, char **argv) { uint64 genomeSize = 0; char *atacFileName = 0L; char *prefix = 0L; char *trFile1 = 0L; char *trFile2 = 0L; char prefixFull[1024]; bool error = false; int arg=1; while (arg < argc) { if (strcmp(argv[arg], "-g") == 0) { ++arg; if (argv[arg][0] == 'A') { genomeSize = 0; } else if (argv[arg][0] == 'B') { genomeSize = 1; } else { genomeSize = strtouint64(argv[arg], 0L); } } else if (strcmp(argv[arg], "-a") == 0) { atacFileName = argv[++arg]; } else if (strcmp(argv[arg], "-p") == 0) { prefix = argv[++arg]; } else if (strcmp(argv[arg], "-ta") == 0) { trFile1 = argv[++arg]; } else if (strcmp(argv[arg], "-tb") == 0) { trFile2 = argv[++arg]; } else { error = true; } arg++; } if (!atacFileName || !prefix || error) { fprintf(stderr, "usage: %s -a <file.atac> -p <outprefix> [-ta trfile] [-tb trfile] [-g {A | B | g}]\n", argv[0]); fprintf(stderr, " -a read input from 'file.atac'\n"); fprintf(stderr, " -p write stats to files prefixed with 'outprefix'\n"); fprintf(stderr, " -g use a genome size of g for the Nx computation, defaults to\n"); fprintf(stderr, " the length of the A sequence. Or use the actual length\n"); fprintf(stderr, " of sequence A or B.\n"); fprintf(stderr, " -ta read tandem repeats for A from trfile\n"); fprintf(stderr, " -tb read tandem repeats for B from trfile\n"); exit(1); } atacFile AF(atacFileName); atacMatchList &matches = *AF.matches(); atacMatchList &runs = *AF.runs(); atacMatchList &clumps = *AF.clumps(); // We end up using sequences a lot here, so just bite it and load them in a cache. // seqCache *A = new seqCache(AF.assemblyFileA(), 0, true); seqCache *B = new seqCache(AF.assemblyFileB(), 0, true); A->loadAllSequences(); B->loadAllSequences(); fprintf(stdout, "\nSEQUENCE\n"); totalLength(AF, A, B); if (trFile1 && trFile2) { atacFileStream tr1(trFile1); atacFileStream tr2(trFile2); tandemRepeatStats(tr1, tr2, AF, A, B); } // XXX unmappedInRuns only works on runs, and if we have clumps in // the input it fails. // if ((runs.numberOfMatches() > 0) && (clumps.numberOfMatches() == 0)) { fprintf(stdout, "\nMATCHES IN RUNS\n"); unmappedInRuns(AF, A, B, prefix); } if (matches.numberOfMatches() > 0) { fprintf(stdout, "\nMATCHES\n"); sprintf(prefixFull, "%s-matches", prefix); mappedLengths(AF, matches, A, B, prefixFull); NxOfMapped(AF, matches, genomeSize, prefixFull); MappedByChromosome(AF, matches, A, B, prefixFull); } if (runs.numberOfMatches() > 0) { fprintf(stdout, "\nRUNS\n"); sprintf(prefixFull, "%s-runs", prefix); mappedLengths(AF, runs, A, B, prefixFull); NxOfMapped(AF, runs, genomeSize, prefixFull); MappedByChromosome(AF, runs, A, B, prefixFull); } if (clumps.numberOfMatches() > 0) { fprintf(stdout, "\nCLUMPS\n"); sprintf(prefixFull, "%s-clumps", prefix); mappedLengths(AF, clumps, A, B, prefixFull); NxOfMapped(AF, clumps, genomeSize, prefixFull); MappedByChromosome(AF, clumps, A, B, prefixFull); } delete A; delete B; return(0); }
int main(int argc, char **argv) { TypePosition orderstart=1, orderend=10; char option[256], inputFileName[SIZE_BUFFER_CHAR], outputFileName[SIZE_BUFFER_CHAR], bufferOutput[SIZE_BUFFER_CHAR], *table, outputFormat = 'r', typeDec = 'l', typeAlphabet = '?', typeCalc = 'g', type = 't'; TypeSetOfSequences *set, seq; TypeAlignment aln, atmp; int fixed = 0; double threshold = 0.001, tmin = 1E-20, tmax=0.1, tstep = 0.00001, qmin = -25, qmax = -3, qprec = 0.5; double thre; TypeNumber n; TypeDistance distA, distB; TypePosition l, tot, lmax = 50; TypeSuffixTree *suffixTree; TypeMarkovModel *model; TypeCodeScheme *scheme; /* TypeDistFunction *distfunc[MAX_FUNC]= {computeProba, computeKullbackLeiber1, computePham, computeCommon, computeCommonBis, computeGillesPham, computeMatchesBis, computeMatches, computeAlex, computeAlexBis}; */ FILE *fi, *fo; int i = 1, typeDist = 0; for(i=0; i<256; i++) option[i] = 0; for(i=1; i<argc && *(argv[i]) == '-'; i++) { int j; for(j=1; argv[i][j] != '\0'; j++) option[argv[i][j]] = 1; if(option['f']) { option['f'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%c", &outputFormat) == 1) i++; } if(option['s']) { option['s'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%c", &typeAlphabet) == 1) i++; } if(option['c']) { option['c'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%c", &typeCalc) == 1) i++; } if(option['m']) { option['m'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%lf", &tmin) == 1) i++; if(typeDist >= MAX_FUNC) typeDist = 0; } if(option['t']) { option['t'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%lf", &threshold) == 1) i++; } if(option['y']) { option['y'] = 0; if((i+1)<argc && sscanf(argv[i+1], "%c", &type) == 1) i++; } if(option['h']) { printf("%s\n", HELPMESSAGE); exitProg(ExitOk, NULL); } } if (i>=argc || sscanf(argv[i++], "%s", inputFileName) != 1) exitProg(ErrorArgument, HELPMESSAGE); if (i>=argc || sscanf(argv[i++], "%s", outputFileName) != 1) exitProg(ErrorArgument, HELPMESSAGE); switch(typeAlphabet) { case 'd': table = (char*) monmalloc((strlen(DNA)+1)*sizeof(char)); strcpy(table, DNA); break; case 'r': table = (char*) monmalloc((strlen(RNA)+1)*sizeof(char)); strcpy(table, RNA); break; case 'p': table = (char*) monmalloc((strlen(PRO)+1)*sizeof(char)); strcpy(table, PRO); break; case '?': default: table = (char*) monmalloc(sizeof(char)); table[0] = '\0'; } if(fi = fopen(inputFileName, "r")) { aln = readAlignement(fi, table, typeAlphabet == '?'); switch(typeAlphabet) { case 'd': case 'r': aln.ambiguity = getXNAAmbiguity(); break; case 'p': aln.ambiguity = getProteinAmbiguity(); break; case '?': default: aln.ambiguity.number = 0; } aln.cardinal -= aln.ambiguity.number; fclose(fi); } else { exitProg(ErrorReading, inputFileName); } fixAlignmentAmbiguity(&aln); set=toSequences(&aln); if(!(fo = fopen(outputFileName, "w"))) exitProg(ErrorWriting, outputFileName); distA = computeWholeDistancePairAln(aln, computeNorm1Aln); scheme = (TypeCodeScheme*) monmalloc(sizeof(TypeCodeScheme)); scheme->suffixTree = getSuffixTree(set); scheme->code = (TypePosition*) monmalloc(scheme->suffixTree->size*sizeof(TypePosition)); scheme->buffSize = INC_SIZE_CODE; scheme->lengthCode = (TypePosition*) monmalloc(scheme->buffSize*sizeof(TypePosition)); if(type == 't') { int l; model = estimateMarkovModel(set); // for(thre=tmin; thre<=tmax; thre *= 10.0) { for(l=tmin; l<=-1; l++) { double t; int k; thre = pow(10.0, (double) l); for(k=0; k<10; k++) { // for(t=thre; t<thre*10; t+=thre) { double corr, sc; TypeSetOfSequences *dec; t = ((double)k+1.)*thre; scheme->cardCode = 0; buildCodeThreshold(t, scheme->suffixTree->root, 0, 1., model, scheme); //printLengthDistribution(stdout, scheme->lengthCode,scheme->cardCode); dec = getDecodedFromScheme(scheme); //printf("cardinal dec = %ld\n", dec->cardinal); distB = computeWholeDistanceDec(dec); corr = computeCorrelation(distA, distB); monfree((void*)distB.table); sc = score(dec); printf("%lE\t%lf\t%.2lf\n", t, corr, sc); fprintf(fo, "%lE\t%lf\t%.2lf\n", t, corr, sc); for(n=0; n<dec->number; n++) monfree((void*) dec->sequence[n]); monfree((void*) dec->sequence); monfree((void*) dec->size); monfree((void*) dec); } } fprintf(stdout, "\n\n%.4lE\n\n", findMode(set, qmin, qmax, qprec, scheme, model)); freeModel(model); } else { for(l = lmax; l>=1; l--) { double corr; TypeSetOfSequences *dec; scheme->cardCode = 0; buildCodeLength(l, scheme->suffixTree->root, 0, scheme); //printLengthDistribution(stdout, scheme->lengthCode,scheme->cardCode); dec = getDecodedFromScheme(scheme); //printf("cardinal dec = %ld\n", dec->cardinal); distB = computeWholeDistanceDec(dec); corr = computeCorrelation(distA, distB); monfree((void*)distB.table); fprintf(fo, "%ld\t%lf\n", l, corr); fprintf(stdout, "%ld\t%lf\n", l, corr); for(n=0; n<dec->number; n++) monfree((void*) dec->sequence[n]); monfree((void*) dec->sequence); monfree((void*) dec->size); monfree((void*) dec); } } freeScheme(scheme); monfree((void*)distA.table); fprintf(stdout, "\n\n%ld\n\n", totalLength(*set)); monfree((void*)set->size); for(n=0; n<set->number; n++) monfree((void*)set->sequence[n]); monfree((void*)set->sequence); monfree((void*)set); fclose(fo); /* sprintf(bufferOutput, "%s_Ali.nex", outputFileName); if(!(fo = fopen(bufferOutput, "w"))) exitProg(ErrorWriting, bufferOutput); printDistanceNexus(fo, distA); fclose(fo); sprintf(bufferOutput, "%s_New.nex", outputFileName); if(!(fo = fopen(bufferOutput, "w"))) exitProg(ErrorWriting, bufferOutput); printDistanceNexus(fo, distB); fclose(fo); */ ; exitProg(ExitOk,NULL); return 0; }