From: Gordon L. K. <gl...@uc...> - 2013-07-24 21:34:26
|
Thanks for the further ideas. "mutate" is a great verb! For the time being I want to go with nrrdCastClampRound(), which is bulky, but its completely honest, and specific. Its also forward-compatible with renaming nrrdConvert --> nrrdCast and nrrdClampConvert --> nrrdCastClamp. The Teem naming convention is to put commonalities at the beginning of the name, instead of the end, with a hopeful eye towards IDEs with tab completion. nrrdClampConvert is in violation of this convention. The flexibility of nrrdCastClampRound() is different than the non-flexibility of nrrdClampConvert(), but that's a small wart. I think "Generic" could imply something more than the very limited functionality that nrrdCastClampRound() offers, and "mutate" is even more open-ended in its meaning. Longer term, there ought to be some more flexible way of creating efficient combinations of these kinds of low-level functions. Chains of "unu 1op" commands (or corresponding sequences of nrrdArithUnaryOp calls) can replicate the functionality of nrrdCastClampRound(), but will be slower because that would mean three sweeps through array memory instead of one. This is a special case of the general problem of compiling unu commands to efficient C code, which I've given some thought to. The first pass of "unu compile" will likely amount to a sequential calls to the unrrdu_CMDMain function calls that underly "unu CMD" (thereby avoid all disk IO, though as some of you know, that's all buffered in disk caches anyway, so it might not represent much of a performance win). Gordon On Jul 24, 2013, at 1:19 PM, Sam Quinan wrote: > Interjecting a little late here, but the digest just showed up in my email. > Another option might be nrrdMutate(), linking to the idea of 'mutation' as triggering changes at various gradations of discernibility through a wide variety of processes > > - Sam > On Wednesday, July 24, 2013 at 11:55 AM, tee...@li... wrote: > >> Send teem-users mailing list submissions to >> tee...@li... >> >> To subscribe or unsubscribe via the World Wide Web, visit >> https://lists.sourceforge.net/lists/listinfo/teem-users >> or, via email, send a message with subject or body 'help' to >> tee...@li... >> >> You can reach the person managing the list at >> tee...@li... >> >> When replying, please edit your Subject line so it is more specific >> than "Re: Contents of teem-users digest..." >> >> >> Today's Topics: >> >> 1. suggestions for nrrd function name? (Gordon L. Kindlmann) >> 2. Re: suggestions for nrrd function name? (Xavier Tricoche) >> 3. Re: Bug in Teem (Gordon L. Kindlmann) >> >> >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Sun, 21 Jul 2013 02:33:32 -0500 >> From: "Gordon L. Kindlmann" <gl...@uc...> >> Subject: [Teem-users] suggestions for nrrd function name? >> To: "tee...@li... Users" >> <tee...@li...> >> Message-ID: <D43...@uc...> >> Content-Type: text/plain; charset=us-ascii >> >> Hello, >> >> There is currently a function nrrdConvert() which is basically just a per-value cast of the values from one type to another type. This is the basis of "unu convert". >> >> Recognizing the need to sometimes avoid value wrap-around in integer types, there is also nrrdClampConvert(), which clamps values to the representable range of the output type prior to casting. This is accessed via "unu convert -clamp". >> >> However, sometimes you want to convert an array to an integer type via rounding, rather than plain casting. And at that point you could very well want a function that converts from one type to another, with the ability to turn on rounding and/or clamping, or neither. >> >> I'd want to call that function nrrdConvert(), and rename the old nrrdConvert() to nrrdCast(). But that be a needless loss of backwards compatibility. >> >> Strictly following Teem conventions, this function could be called something like nrrdMaybeRoundMaybeClampConvert, which is obviously silly, so the question is: what should this function be called? >> >> thanks, >> Gordon >> >> >> >> >> ------------------------------ >> >> Message: 2 >> Date: Sun, 21 Jul 2013 10:02:08 -0400 >> From: Xavier Tricoche <tri...@sc...> >> Subject: Re: [Teem-users] suggestions for nrrd function name? >> To: "Gordon L. Kindlmann" <gl...@uc...> >> Cc: "tee...@li... Users" >> <tee...@li...> >> Message-ID: <3F4...@sc...> >> Content-Type: text/plain; charset=us-ascii >> >> What about nrrdGenericConvert()? >> >> Xavier >> >> On Jul 21, 2013, at 3:33 AM, "Gordon L. Kindlmann" <gl...@uc...> wrote: >> >>> Hello, >>> >>> There is currently a function nrrdConvert() which is basically just a per-value cast of the values from one type to another type. This is the basis of "unu convert". >>> >>> Recognizing the need to sometimes avoid value wrap-around in integer types, there is also nrrdClampConvert(), which clamps values to the representable range of the output type prior to casting. This is accessed via "unu convert -clamp". >>> >>> However, sometimes you want to convert an array to an integer type via rounding, rather than plain casting. And at that point you could very well want a function that converts from one type to another, with the ability to turn on rounding and/or clamping, or neither. >>> >>> I'd want to call that function nrrdConvert(), and rename the old nrrdConvert() to nrrdCast(). But that be a needless loss of backwards compatibility. >>> >>> Strictly following Teem conventions, this function could be called something like nrrdMaybeRoundMaybeClampConvert, which is obviously silly, so the question is: what should this function be called? >>> >>> thanks, >>> Gordon >>> >>> >>> ------------------------------------------------------------------------------ >>> See everything from the browser to the database with AppDynamics >>> Get end-to-end visibility with application monitoring from AppDynamics >>> Isolate bottlenecks and diagnose root cause in seconds. >>> Start your free trial of AppDynamics Pro today! >>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> teem-users mailing list >>> tee...@li... >>> https://lists.sourceforge.net/lists/listinfo/teem-users >> >> >> >> ------------------------------ >> >> Message: 3 >> Date: Wed, 24 Jul 2013 12:54:55 -0500 >> From: "Gordon L. Kindlmann" <gl...@uc...> >> Subject: Re: [Teem-users] Bug in Teem >> To: Michael G?tz <m....@dk...> >> Cc: "tee...@li... Users" >> <tee...@li...> >> Message-ID: <71E...@uc...> >> Content-Type: text/plain; charset="windows-1252" >> >> >> The bug has been fixed in Teem, and Teem's distribution of NrrdIO, and now also in ITK's NrrdIO: >> >> http://review.source.kitware.com/#/c/12072/ >> >> Thanks again, >> Gordon >> >> On Jul 6, 2013, at 4:44 PM, Gordon L. Kindlmann wrote: >> >>> >>> On Jul 5, 2013, at 1:57 PM, Gordon L. Kindlmann wrote: >>> >>>> Hello, >>>> >>>> I'm planning on a June 1 patch release of Teem 1.11.1 ... >>> >>> By which I meant an August 1 release (thanks Xavier). >>> >>> Do let me know if you find any other bugs! >>> >>> Thanks, >>> Gordon >>> >>>> , and before then I will go through the process of making sure ITK's NrrdIO has the same bug fix. >>>> >>>> Thanks, >>>> Gordon >>>> >>>> On Jul 5, 2013, at 5:23 AM, G?tz, Michael wrote: >>>> >>>>> Hello Gordon, >>>>> this bug was discovered using MITK, which in returns uses ITK for nrrd-support >>>>> Regards >>>>> Michael >>>>> Von: Gordon L. Kindlmann [mailto:gl...@uc...] >>>>> Gesendet: Freitag, 5. Juli 2013 12:12 >>>>> An: G?tz, Michael >>>>> Cc: tee...@li... >>>>> Betreff: Re: [Teem-users] Bug in Teem >>>>> Hello, >>>>> Thank you very much for the bug report and the very specific information on fixing it. >>>>> I've just committed a fix to the svn trunk. >>>>> May I ask - was this bug discovered through ITK's NrrdIO, or something separate? >>>>> Gordon >>>>> On Jul 3, 2013, at 9:45 AM, G?tz, Michael wrote: >>>>> >>>>> >>>>> Hi list, >>>>> i found a bug in the NrrdIO-library. It is in the file NrrdIO/string.c in the function airOneLinify() (be more specific in line 274-278) >>>>> If a non-printable character is in the given string, every element it is replaced by copying the following elements back by one and reading the given position again. The problem is, that \0 will also be copied and therefore s[len-1] will be \0. Since \0 is non-printable the algorithm will continue to repeat the ?remove-nonprintable?-part again and again. -> Endless loop. >>>>> The problem can be solved by checking for \0 in the loop: >>>>> for (i=0; i<len && s[i] != \0; i++) { >>>>> if (isspace(AIR_CAST(int, s[i]))) { >>>>> s[i] = ' '; >>>>> continue; >>>>> } >>>>> if (!isprint(AIR_CAST(int, s[i]))) { >>>>> for (j=i; j<len; j++) { >>>>> /* this will copy the '\0' at the end */ >>>>> s[j] = s[j+1]; >>>>> } >>>>> i--; >>>>> continue; >>>>> } >>>>> } >>>>> Best Regards >>>>> Michael Goetz >>>>> -------------- >>>>> M.Sc. Michael G?tz >>>>> Computational Disease Analysis Group >>>>> Div. Medical and Biological Informatics (E130) >>>>> German Cancer Research Center (DKFZ) >>>>> Im Neuenheimer Feld 280 >>>>> 69120 Heidelberg, Germany >>>>> Email: m....@dk... >>>>> Phone: (+49) 6221/42-3559 >>>>> Fax: (+49) 6221/42-2345 >>>>> http://www.dkfz.de/de/mbi/people/Michael_Goetz.html >> -------------- next part -------------- >> An HTML attachment was scrubbed... >> >> ------------------------------ >> >> ------------------------------------------------------------------------------ >> See everything from the browser to the database with AppDynamics >> Get end-to-end visibility with application monitoring from AppDynamics >> Isolate bottlenecks and diagnose root cause in seconds. >> Start your free trial of AppDynamics Pro today! >> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk >> >> ------------------------------ >> >> _______________________________________________ >> teem-users mailing list >> tee...@li... >> https://lists.sourceforge.net/lists/listinfo/teem-users >> >> >> End of teem-users Digest, Vol 65, Issue 5 >> ***************************************** > > ------------------------------------------------------------------------------ > See everything from the browser to the database with AppDynamics > Get end-to-end visibility with application monitoring from AppDynamics > Isolate bottlenecks and diagnose root cause in seconds. > Start your free trial of AppDynamics Pro today! > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk_______________________________________________ > teem-users mailing list > tee...@li... > https://lists.sourceforge.net/lists/listinfo/teem-users |