From: <kin...@us...> - 2009-03-10 17:55:09
|
Revision: 4166 http://teem.svn.sourceforge.net/teem/?rev=4166&view=rev Author: kindlmann Date: 2009-03-10 17:54:51 +0000 (Tue, 10 Mar 2009) Log Message: ----------- noted that Raul computed this Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-10 17:52:46 UTC (rev 4165) +++ teem/trunk/src/gage/optimsig.c 2009-03-10 17:54:51 UTC (rev 4166) @@ -26,8 +26,10 @@ #define N -1 /* -** basic indexing idea: [sigma max][total # samples][which sample] +** NOTE: This table was computed by Raul San Jose Estepar ** +** Basic indexing idea: [sigma max][total # samples][which sample] +** ** "sigma max" can't be 0; smallest value is 1 ** ==> index with (sigma max)-1 ** biggest value is GAGE_OPTIMSIG_SIGMA_MAX, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 14:22:22
|
Revision: 4176 http://teem.svn.sourceforge.net/teem/?rev=4176&view=rev Author: kindlmann Date: 2009-03-12 13:32:45 +0000 (Thu, 12 Mar 2009) Log Message: ----------- tweaked gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 12:08:22 UTC (rev 4175) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 13:32:45 UTC (rev 4176) @@ -588,7 +588,7 @@ lastErr = _errTotal(parm); newErr = AIR_NAN; - decavg = 2; + decavg = parm->sampleNum; /* hack */ /* meaningful discrete difference for looking at error gradient is bounded by the resolution of the sampling we're doing along scale */ sigeps = parm->sigmatru[1]/4; @@ -605,7 +605,7 @@ } pnt = 1 + (iter % (parm->sampleNum-2)); lastPos = parm->scalePos[pnt]; - printf("%s: ***** iter %u; err %g; moving pnt %u (%g)\n", + printf("%s: ***** iter %u; [[ err %g ]] moving pnt %u (%g)\n", me, iter, lastErr, pnt, lastPos); limit = AIR_MIN((parm->scalePos[pnt] - parm->scalePos[pnt-1])/3, (parm->scalePos[pnt+1] - parm->scalePos[pnt])/3); @@ -641,7 +641,7 @@ newErr, newErr > lastErr ? ">" : "<=", lastErr); if (badStep) { parm->step[pnt] *= backoff; - if (parm->step[pnt] < sigeps/4) { + if (parm->step[pnt] < sigeps/100) { /* step got so small its stupid to be moving this point */ printf("... !! step %g < %g pointlessly small, moving on\n", parm->step[pnt], sigeps/4); @@ -652,8 +652,11 @@ } tryi++; } while (badStep); - decavg = AIR_AFFINE(0, 1, parm->sampleNum, - decavg, (lastErr - newErr)/lastErr); + if (newErr < lastErr) { + /* only update decavg when there was a decrease */ + decavg = AIR_AFFINE(0, 1, parm->sampleNum, + decavg, (lastErr - newErr)/lastErr); + } if (decavg <= parm->convEps) { printf("%s: converged (%g <= %g) after %u iters\n", me, decavg, parm->convEps, iter); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 18:15:10
|
Revision: 4178 http://teem.svn.sourceforge.net/teem/?rev=4178&view=rev Author: kindlmann Date: 2009-03-12 18:15:01 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 14:03:26 UTC (rev 4177) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 18:15:01 UTC (rev 4178) @@ -579,19 +579,49 @@ gagePointReset(&(parm->gctx->point)); } +static char * +_timefmt(char tstr[AIR_STRLEN_MED], double deltim) { + + if (deltim < 60) { + sprintf(tstr, "%g secs", deltim); + return tstr; + } + deltim /= 60; + if (deltim < 60) { + sprintf(tstr, "%g mins", deltim); + return tstr; + } + deltim /= 60; + if (deltim < 24) { + sprintf(tstr, "%g hours", deltim); + return tstr; + } + deltim /= 24; + if (deltim < 7) { + sprintf(tstr, "%g days", deltim); + return tstr; + } + deltim /= 7; + sprintf(tstr, "%g weeks", deltim); + return tstr; +} + static int _optsigrun(gageOptimSigParm *parm) { - char me[]="_optsigrun", err[BIFF_STRLEN]; + char me[]="_optsigrun", err[BIFF_STRLEN], tstr[AIR_STRLEN_MED]; unsigned int iter, pnt; - double lastErr, newErr, sigeps, oppor, lastPos, backoff, decavg; + double lastErr, newErr, sigeps, oppor, lastPos, backoff, decavg, time0; int badStep; + time0 = airTime(); lastErr = _errTotal(parm); + printf("%s: (%s for initial error measr)\n", me, + _timefmt(tstr, airTime() - time0)); newErr = AIR_NAN; decavg = parm->sampleNum; /* hack */ /* meaningful discrete difference for looking at error gradient is bounded by the resolution of the sampling we're doing along scale */ - sigeps = parm->sigmatru[1]/4; + sigeps = parm->sigmatru[1]/10; oppor = 3; backoff = 0.1; for (pnt=1; pnt<parm->sampleNum-1; pnt++) { @@ -600,23 +630,31 @@ for (iter=0; iter<parm->maxIter; iter++) { double limit, err1, grad, delta; unsigned int tryi; + int zerodelta; for (pnt=1; pnt<parm->sampleNum-1; pnt++) { parm->step[pnt] *= oppor; } pnt = 1 + (iter % (parm->sampleNum-2)); lastPos = parm->scalePos[pnt]; - printf("%s: ***** iter %u; [[ err %g ]] moving pnt %u (%g)\n", - me, iter, lastErr, pnt, lastPos); + printf("%s: ***** iter %u; [[ err %g ]] %s\n", + me, iter, lastErr, _timefmt(tstr, airTime() - time0)); limit = AIR_MIN((parm->scalePos[pnt] - parm->scalePos[pnt-1])/3, (parm->scalePos[pnt+1] - parm->scalePos[pnt])/3); + printf(". pnt %u: pos %g, step %g\n", pnt, lastPos, parm->step[pnt]); printf(". limit = min((%g-%g)/3,(%g-%g)/3) = %g\n", parm->scalePos[pnt], parm->scalePos[pnt-1], parm->scalePos[pnt+1], parm->scalePos[pnt], limit); _scalePosSet(parm, pnt, lastPos + sigeps); err1 = _errTotal(parm); + _scalePosSet(parm, pnt, lastPos); grad = (err1 - lastErr)/sigeps; printf(". grad = %g\n", grad); delta = -grad*parm->step[pnt]; + if (!AIR_EXISTS(delta)) { + sprintf(err, "%s: got non-exist delta %g on iter %u (pnt %u) err %g", + me, delta, iter, pnt, lastErr); + biffAdd(GAGE, err); return 1; + } if (AIR_ABS(delta) > limit) { parm->step[pnt] *= limit/AIR_ABS(delta); printf(". step *= %g/%g -> %g\n", @@ -627,10 +665,17 @@ tryi = 0; badStep = AIR_FALSE; do { + if (tryi == parm->maxIter) { + sprintf(err, "%s: confusion (tryi %u) on iter %u (pnt %u) err %g", + me, tryi, iter, pnt, lastErr); + biffAdd(GAGE, err); return 1; + } if (!delta) { printf("... try %u: delta = 0; nothing to do\n", tryi); newErr = lastErr; + zerodelta = AIR_TRUE; } else { + zerodelta = AIR_FALSE; _scalePosSet(parm, pnt, lastPos + delta); newErr = _errTotal(parm); badStep = newErr > lastErr; @@ -641,19 +686,22 @@ newErr, newErr > lastErr ? ">" : "<=", lastErr); if (badStep) { parm->step[pnt] *= backoff; - if (parm->step[pnt] < sigeps/100) { + if (parm->step[pnt] < sigeps/10) { /* step got so small its stupid to be moving this point */ printf("... !! step %g < %g pointlessly small, moving on\n", - parm->step[pnt], sigeps/4); + parm->step[pnt], sigeps/10); + _scalePosSet(parm, pnt, lastPos); + newErr = lastErr; badStep = AIR_FALSE; + } else { + delta = -grad*parm->step[pnt]; } - delta = -grad*parm->step[pnt]; } } tryi++; } while (badStep); - if (newErr < lastErr) { - /* only update decavg when there was a decrease */ + if (!zerodelta) { + /* don't update decavg if we moved on because slope was EXACTLY zero */ decavg = AIR_AFFINE(0, 1, parm->sampleNum, decavg, (lastErr - newErr)/lastErr); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 19:35:18
|
Revision: 4180 http://teem.svn.sourceforge.net/teem/?rev=4180&view=rev Author: kindlmann Date: 2009-03-12 19:35:05 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 19:00:21 UTC (rev 4179) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 19:35:05 UTC (rev 4180) @@ -701,6 +701,7 @@ /* don't update decavg if we moved on because slope was EXACTLY zero */ decavg = AIR_AFFINE(0, 1, parm->sampleNum, decavg, (lastErr - newErr)/lastErr); + parm->step[pnt] *= oppor; } if (decavg <= parm->convEps) { printf("%s: converged (%g <= %g) after %u iters\n", me, @@ -710,7 +711,6 @@ printf("%s: _____ iter %u done; decavg = %g > %g\n", me, iter, decavg, parm->convEps); } - parm->step[pnt] *= oppor; lastErr = newErr; } if (iter == parm->maxIter) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 19:49:18
|
Revision: 4181 http://teem.svn.sourceforge.net/teem/?rev=4181&view=rev Author: kindlmann Date: 2009-03-12 19:49:16 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 19:35:05 UTC (rev 4180) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 19:49:16 UTC (rev 4181) @@ -763,10 +763,12 @@ printf("done.\n"); /* set up gage */ + printf("%s: setting up gage ... ", me); fflush(stdout); if (_gageSetup(parm)) { sprintf(err, "%s: problem setting up gage", me); biffAdd(GAGE, err); return 1; } + printf("done.\n"); /* run the optimization */ if (num > 2) { @@ -775,9 +777,11 @@ biffAdd(GAGE, err); return 1; } } else { + printf("%s: num==2, no optimization, finding error ... ", me); fflush(stdout); parm->finalErr = _errTotal(parm); + printf("done.\n"); } - + /* save output */ for (ii=0; ii<num; ii++) { scalePos[ii] = parm->scalePos[ii]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 19:51:38
|
Revision: 4182 http://teem.svn.sourceforge.net/teem/?rev=4182&view=rev Author: kindlmann Date: 2009-03-12 19:51:29 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 19:49:16 UTC (rev 4181) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 19:51:29 UTC (rev 4182) @@ -777,7 +777,8 @@ biffAdd(GAGE, err); return 1; } } else { - printf("%s: num==2, no optimization, finding error ... ", me); fflush(stdout); + printf("%s: num == 2, no optimization, finding error ... ", me); + fflush(stdout); parm->finalErr = _errTotal(parm); printf("done.\n"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 20:15:28
|
Revision: 4183 http://teem.svn.sourceforge.net/teem/?rev=4183&view=rev Author: kindlmann Date: 2009-03-12 20:15:15 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 19:51:29 UTC (rev 4182) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 20:15:15 UTC (rev 4183) @@ -368,7 +368,7 @@ unsigned int measrSampleNum) { char me[]="gageOptimSigTruthSet", err[BIFF_STRLEN], doneStr[AIR_STRLEN_SMALL]; - double kparm[NRRD_KERNEL_PARMS_NUM]; + double kparm[NRRD_KERNEL_PARMS_NUM], tauMax; unsigned int support, ii; if (!parm) { @@ -448,15 +448,16 @@ 1.0, 1.0, 1.0); } printf("%s: computing reference blurrings ... ", me); + tauMax = gageTauOfSig(parm->sigmaMax); for (ii=0; ii<parm->measrSampleNum; ii++) { - double sigma; - if (!(ii%10)) { + double sigma, tau; + if (!(ii % 10)) { printf("%s", airDoneStr(0, ii, parm->measrSampleNum, doneStr)); fflush(stdout); } parm->ntruline->data = parm->truth + ii*parm->sx*parm->sy*parm->sz; - sigma = parm->sigmatru[ii] = AIR_AFFINE(0, ii, parm->measrSampleNum-1, - 0.0, parm->sigmaMax); + tau = AIR_AFFINE(0, ii, parm->measrSampleNum-1, 0.0, tauMax); + sigma = parm->sigmatru[ii] = gageSigOfTau(tau); _volTrueBlur(parm->ntruline, sigma, parm); } printf("%s\n", airDoneStr(0, ii, parm->measrSampleNum, doneStr)); @@ -622,8 +623,8 @@ /* meaningful discrete difference for looking at error gradient is bounded by the resolution of the sampling we're doing along scale */ sigeps = parm->sigmatru[1]/10; - oppor = 2; - backoff = 0.1; + oppor = 1.3333; + backoff = 0.25; for (pnt=1; pnt<parm->sampleNum-1; pnt++) { parm->step[pnt] = 10; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 20:27:20
|
Revision: 4184 http://teem.svn.sourceforge.net/teem/?rev=4184&view=rev Author: kindlmann Date: 2009-03-12 20:27:08 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 20:15:15 UTC (rev 4183) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 20:27:08 UTC (rev 4184) @@ -541,34 +541,43 @@ double kparm[NRRD_KERNEL_PARMS_NUM]; int E; + printf("%s: ... hi!\n", me); if (parm->gctx) { gageContextNix(parm->gctx); } + printf("%s: ... 0\n", me); parm->gctx = gageContextNew(); gageParmSet(parm->gctx, gageParmVerbose, 0); gageParmSet(parm->gctx, gageParmRenormalize, AIR_FALSE); gageParmSet(parm->gctx, gageParmCheckIntegrals, AIR_FALSE); gageParmSet(parm->gctx, gageParmOrientationFromSpacing, AIR_TRUE); gageParmSet(parm->gctx, gageParmStackUse, AIR_TRUE); + printf("%s: ... 1\n", me); E = 0; if (!E) E |= !(parm->pvl = gagePerVolumeNew(parm->gctx, parm->nsampvol[0], gageKindScl)); + printf("%s: ... 2\n", me); if (!E) E |= gageStackPerVolumeNew(parm->gctx, parm->pvlSS, AIR_CAST(const Nrrd**, parm->nsampvol), parm->sampleNum, gageKindScl); + printf("%s: ... 3\n", me); if (!E) E |= gageStackPerVolumeAttach(parm->gctx, parm->pvl, parm->pvlSS, parm->scalePos, parm->sampleNum); kparm[0] = 1; + printf("%s: ... 4\n", me); if (!E) E |= gageKernelSet(parm->gctx, gageKernel00, nrrdKernelTent, kparm); if (!E) E |= gageKernelSet(parm->gctx, gageKernelStack, nrrdKernelHermiteFlag, kparm); + printf("%s: ... 5\n", me); if (!E) E |= gageQueryItemOn(parm->gctx, parm->pvl, gageSclValue); if (!E) E |= gageUpdate(parm->gctx); + printf("%s: ... 6\n", me); if (E) { sprintf(err, "%s: problem setting up gage", me); biffAdd(GAGE, err); return 1; } + printf("%s: ... 7\n", me); return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 20:37:09
|
Revision: 4185 http://teem.svn.sourceforge.net/teem/?rev=4185&view=rev Author: kindlmann Date: 2009-03-12 20:36:47 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 20:27:08 UTC (rev 4184) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 20:36:47 UTC (rev 4185) @@ -538,46 +538,47 @@ static int _gageSetup(gageOptimSigParm *parm) { char me[]="_gageSetup", err[BIFF_STRLEN]; - double kparm[NRRD_KERNEL_PARMS_NUM]; + double kparm[NRRD_KERNEL_PARMS_NUM], time0; int E; + time0 = airTime(); printf("%s: ... hi!\n", me); if (parm->gctx) { gageContextNix(parm->gctx); } - printf("%s: ... 0\n", me); + printf("%s: ... 0 %g\n", me, airTime() - time0); parm->gctx = gageContextNew(); gageParmSet(parm->gctx, gageParmVerbose, 0); gageParmSet(parm->gctx, gageParmRenormalize, AIR_FALSE); gageParmSet(parm->gctx, gageParmCheckIntegrals, AIR_FALSE); gageParmSet(parm->gctx, gageParmOrientationFromSpacing, AIR_TRUE); gageParmSet(parm->gctx, gageParmStackUse, AIR_TRUE); - printf("%s: ... 1\n", me); + printf("%s: ... 1 %g\n", me, airTime() - time0); E = 0; if (!E) E |= !(parm->pvl = gagePerVolumeNew(parm->gctx, parm->nsampvol[0], gageKindScl)); - printf("%s: ... 2\n", me); + printf("%s: ... 2 %g\n", me, airTime() - time0); if (!E) E |= gageStackPerVolumeNew(parm->gctx, parm->pvlSS, AIR_CAST(const Nrrd**, parm->nsampvol), parm->sampleNum, gageKindScl); - printf("%s: ... 3\n", me); + printf("%s: ... 3 %g\n", me, airTime() - time0); if (!E) E |= gageStackPerVolumeAttach(parm->gctx, parm->pvl, parm->pvlSS, parm->scalePos, parm->sampleNum); kparm[0] = 1; - printf("%s: ... 4\n", me); + printf("%s: ... 4 %g\n", me, airTime() - time0); if (!E) E |= gageKernelSet(parm->gctx, gageKernel00, nrrdKernelTent, kparm); if (!E) E |= gageKernelSet(parm->gctx, gageKernelStack, nrrdKernelHermiteFlag, kparm); - printf("%s: ... 5\n", me); + printf("%s: ... 5 %g\n", me, airTime() - time0); if (!E) E |= gageQueryItemOn(parm->gctx, parm->pvl, gageSclValue); if (!E) E |= gageUpdate(parm->gctx); - printf("%s: ... 6\n", me); + printf("%s: ... 6 %g\n", me, airTime() - time0); if (E) { sprintf(err, "%s: problem setting up gage", me); biffAdd(GAGE, err); return 1; } - printf("%s: ... 7\n", me); + printf("%s: ... 7 %g\n", me, airTime() - time0); return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 20:39:28
|
Revision: 4186 http://teem.svn.sourceforge.net/teem/?rev=4186&view=rev Author: kindlmann Date: 2009-03-12 20:39:18 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 20:36:47 UTC (rev 4185) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 20:39:18 UTC (rev 4186) @@ -774,12 +774,12 @@ printf("done.\n"); /* set up gage */ - printf("%s: setting up gage ... ", me); fflush(stdout); + printf("%s: setting up gage ... \n", me); if (_gageSetup(parm)) { sprintf(err, "%s: problem setting up gage", me); biffAdd(GAGE, err); return 1; } - printf("done.\n"); + printf("%s: gage setup done.\n", me); /* run the optimization */ if (num > 2) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2009-03-12 21:47:02
|
Revision: 4188 http://teem.svn.sourceforge.net/teem/?rev=4188&view=rev Author: kindlmann Date: 2009-03-12 21:46:56 +0000 (Thu, 12 Mar 2009) Log Message: ----------- still tweaking gageOptimSigCalculate Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2009-03-12 20:50:35 UTC (rev 4187) +++ teem/trunk/src/gage/optimsig.c 2009-03-12 21:46:56 UTC (rev 4188) @@ -641,7 +641,8 @@ for (iter=0; iter<parm->maxIter; iter++) { double limit, err1, grad, delta; unsigned int tryi; - int zerodelta; + int zerodelta, esgn; + esgn = 2*AIR_CAST(int, airRandInt(2)) - 1; pnt = 1 + (iter % (parm->sampleNum-2)); lastPos = parm->scalePos[pnt]; printf("%s: ***** iter %u; [[ err %g ]] %s\n", @@ -652,10 +653,10 @@ printf(". limit = min((%g-%g)/3,(%g-%g)/3) = %g\n", parm->scalePos[pnt], parm->scalePos[pnt-1], parm->scalePos[pnt+1], parm->scalePos[pnt], limit); - _scalePosSet(parm, pnt, lastPos + sigeps); + _scalePosSet(parm, pnt, lastPos + esgn*sigeps); err1 = _errTotal(parm); _scalePosSet(parm, pnt, lastPos); - grad = (err1 - lastErr)/sigeps; + grad = (err1 - lastErr)/(esgn*sigeps); printf(". grad = %g\n", grad); delta = -grad*parm->step[pnt]; if (!AIR_EXISTS(delta)) { @@ -694,10 +695,10 @@ newErr, newErr > lastErr ? ">" : "<=", lastErr); if (badStep) { parm->step[pnt] *= backoff; - if (parm->step[pnt] < sigeps/10) { + if (parm->step[pnt] < sigeps/1000) { /* step got so small its stupid to be moving this point */ printf("... !! step %g < %g pointlessly small, moving on\n", - parm->step[pnt], sigeps/10); + parm->step[pnt], sigeps/1000); _scalePosSet(parm, pnt, lastPos); newErr = lastErr; badStep = AIR_FALSE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2013-08-25 19:30:21
|
Revision: 6060 http://sourceforge.net/p/teem/code/6060 Author: kindlmann Date: 2013-08-25 19:30:18 +0000 (Sun, 25 Aug 2013) Log Message: ----------- more tweaks Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2013-08-25 19:28:09 UTC (rev 6059) +++ teem/trunk/src/gage/optimsig.c 2013-08-25 19:30:18 UTC (rev 6060) @@ -1016,8 +1016,8 @@ /* Linf uses a single scalar step istead of oscx->step array */ step = 0.1; - oppor = 1.4; - backoff = 0.8; + oppor = 1.1; + backoff = 0.5; /* more demanding for more points */ ceps = oscx->convEps/sn; @@ -1040,7 +1040,7 @@ shrink = AIR_TRUE; } midp = (srho[gap] + srho[gap+1])/2; - fprintf(stderr, "%s: ---- iter %u (step %g): gap %u/%g (%s)\n", + fprintf(stderr, "%s: ---- iter %u (step %g): gap [%u]/%g (%s)\n", me, iter, step, gap, gerr, shrink ? "shrinking tallest" : "growing lowest"); /* save last set of positions to restore after bad step */ @@ -1080,10 +1080,11 @@ } fprintf(stderr, "%s: min %u %g max %u %g\n", me, mmIdx[0], mmErr[0], mmIdx[1], mmErr[1]); - if (shrink) { + if (iter % 3) { badStep = newErr > lastErr; - fprintf(stderr, "... try %u: step %g -> newErr %g %s lastErr %g %s\n", - tryi, step, newErr, + fprintf(stderr, "... try %u [%u] step %g -> newErr %g %s " + "lastErr %g %s\n", + tryi, gap, step, newErr, badStep ? ">" : "<=", lastErr, badStep ? "*BAD*" : "good"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2013-10-23 10:37:56
|
Revision: 6138 http://sourceforge.net/p/teem/code/6138 Author: kindlmann Date: 2013-10-23 10:37:52 +0000 (Wed, 23 Oct 2013) Log Message: ----------- fixing unused variable warning Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2013-10-23 04:11:04 UTC (rev 6137) +++ teem/trunk/src/gage/optimsig.c 2013-10-23 10:37:52 UTC (rev 6138) @@ -1247,12 +1247,11 @@ } fprintf(stderr, "%s: plotting ... ", me); fflush(stderr); for (ii=0; ii<oscx->trueImgNum; ii++) { - double rho, sig, err; + double rho, err; fprintf(stderr, "%s", airDoneStr(0, ii, oscx->trueImgNum, doneStr)); fflush(stderr); rho = AIR_AFFINE(0, ii, oscx->trueImgNum-1, oscx->rhoRange[0], oscx->rhoRange[1]); - sig = _SigOfRho(rho); out[0 + 2*ii] = rho; /* debugii = ii; */ if (_errSingle(&err, oscx, rho)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kin...@us...> - 2022-08-09 15:54:11
|
Revision: 6732 http://sourceforge.net/p/teem/code/6732 Author: kindlmann Date: 2022-08-09 15:54:09 +0000 (Tue, 09 Aug 2022) Log Message: ----------- better commenting out unused code Modified Paths: -------------- teem/trunk/src/gage/optimsig.c Modified: teem/trunk/src/gage/optimsig.c =================================================================== --- teem/trunk/src/gage/optimsig.c 2022-08-09 15:49:43 UTC (rev 6731) +++ teem/trunk/src/gage/optimsig.c 2022-08-09 15:54:09 UTC (rev 6732) @@ -256,41 +256,41 @@ ** scaled version of the taylor expansion of tau(sigma=0) which meets ** up with the large-scale approximation of tau from Lindeberg. ** However, because its so flat at sigma=0, its not really invertible -** there, so its a poor basis for computations that are parameterized +** there, so it's a poor basis for computations that are parameterized ** by rho. Keeping it around for reference. - -static double -_RhoOfSig(double sig) { - double rho; - - if (sig < 1.05189095) { - rho = sig*sig*(0.2775733212544225 + 0.13078298856958057*sig*sig); - } else { - double tee; - tee = sig*sig; - rho = 0.53653222368715360118 + log(tee)/2.0 + log(1.0 - 1.0/(8.0*tee)); - } - return rho; -} - -static double -_SigOfRho(double rho) { - double sig; - - if (rho < 0.46724360022171363) { - sig = 0.00033978812426865065 * - sqrt(-9.191366355042886e6 + 245.3752559286824 * - sqrt(1.403132301e9 + 9.526961876920057e9*rho)); - } else { - double ee, tee; - ee = exp(2.0*rho); - tee = 0.0063325739776461107152*(27.0*ee + 2*AIR_PI*AIR_PI - + 3.0*sqrt(81.0*ee*ee - + 12*ee*AIR_PI*AIR_PI)); - sig = sqrt(tee); - } - return sig; -} +* +*static double +*_RhoOfSig(double sig) { +* double rho; +* +* if (sig < 1.05189095) { +* rho = sig*sig*(0.2775733212544225 + 0.13078298856958057*sig*sig); +* } else { +* double tee; +* tee = sig*sig; +* rho = 0.53653222368715360118 + log(tee)/2.0 + log(1.0 - 1.0/(8.0*tee)); +* } +* return rho; +*} +* +*static double +*_SigOfRho(double rho) { +* double sig; +* +* if (rho < 0.46724360022171363) { +* sig = 0.00033978812426865065 * +* sqrt(-9.191366355042886e6 + 245.3752559286824 * +* sqrt(1.403132301e9 + 9.526961876920057e9*rho)); +* } else { +* double ee, tee; +* ee = exp(2.0*rho); +* tee = 0.0063325739776461107152*(27.0*ee + 2*AIR_PI*AIR_PI +* + 3.0*sqrt(81.0*ee*ee +* + 12*ee*AIR_PI*AIR_PI)); +* sig = sqrt(tee); +* } +* return sig; +*} */ static double This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |