Could we perhaps consider built-in scaling factors for CellML 1.2? That way could still support the SI units but just that one of them (mole) is as a scaling factor which is what it is as far as I can see.
We might also include built-in scaling factors for converting between prefixes. For example if I have a variable A in nanomolar and another B in micromolar I might want to say: A = 1e3 * B One way to do this is to define a scaling factor unit say (in CORspeak) def unit nanospermicro from unit liter {pref: nano}; unit liter {pref: micro, expo:-1}; enddef; and then have A = 1e3 {nanospermicro} * B. Which is slightly clunky. (I think the use of 'liter' above should also be replaced with 'dimensionless', but that is a different issue). We could also include dozen, which would aid the bakery-modelling community too ;). -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Hunter Sent: Tuesday, 3 June 2008 11:35 a.m. To: CellML Discussion List Subject: Re: [cellml-discussion] unit conversion Hi Mike, I agree - but there they are in the SI base unit list see http://physics.nist.gov/cuu/Units/units.html so probably 150 years too late to do much about it! Cheers, Peter Mike Cooling wrote: > Does it strike anyone else as inconsistent that 'moles' are a unit > when moles are just a scaling factor? Like dozen. Maybe they should be > implemented using 'multiplier' or similar rather than a base unit. > > For example, I could have a mole of amps. I couldn't have a second of amps. > > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of James > Lawson > Sent: Tuesday, 3 June 2008 11:07 a.m. > To: Erik B > Cc: cellml-discussion@cellml.org > Subject: Re: [cellml-discussion] unit conversion > > Thanks Erik, > > I managed to fix the issue before receiving your email, but this > clears things up for me very concisely. I would venture to say that > the reason that so many CellML models in the CellML repository do not > pass Jsim's units checking is not because of CellML, or any tools used > to create CellML models. Rather it is often because the models > themselves contain unit inconsistencies. It does not help that units > are irrelevant to most modelling tools, but I think the modelling > community is starting to raise the bar with regards to this issue. > Unfortunately it is often quite difficult to 'fix' inappropriate units > (both quantitatively and > qualitatively,) in a model without breaking it. > > FYI I've uploaded the model in question, which now runs in Jsim, COR > and PCEnv, at: > http://www.cellml.org/models/sachse_moreno_abildskov_2008_version02 > > The 'auto' setting for the integrator in Jsim will not run the model - > the CVode integrator must be selected manually. > > Kind regards, > James Lawson > > Erik Butterworth wrote: >> On Thu, 29 May 2008, Andrew Miller wrote: >> >>> I think James had something more along the lines of: >>> I_inter_fibro = 10^6 * (V_fibro - V) / R_mf (where 10^6 is marked as >>> a dimensionless number). >>> >>> In this case the intention of the modeller is that the expression >>> being equated to I_inter_fibro is already in nanoamps, and this will >>> give the correct results in PCEnv and COR, I believe. >>> >>> I agree that it would be better modelling practice to mark 10^6 as >>> being in units nanoamps per milliamps, and in this case PCEnv and >>> COR will give correct results of 1E6 nanoamperes (and I presume also JSim?). >> Short answer: yes. >> >> Long answer: JSim has two unit conversion modes, on and off. With >> conversion on, the simplest correct formation in MML is >> >> 1. I_inter_fibro = (V_fibro - V) / R_mf; >> >> With unit conversion off, the simplest correct formation is: >> >> 2. I_inter_fibro = 10^6 * (V_fibro - V) / R_mf; >> >> With either unit conversion on or off, a dimensionalized constant >> will produce correct results, at the expense of conciseness: >> >> 3. I_inter_fibro = (10^6 nanoamp/milliamp) * (V_fibro - V) / R_mf; >> >> To be compatible with (my understanding of) the CellML units spec, >> JSim's CellML -> MML converter creates MML with unit conversion on. >> However, due the the historically large (although perhaps decreasing) >> number of CellML models that didn't pass JSim unit balance, the JSim >> WWW site provides (for CellML models not passing unit balance) an >> "imperfect" MML translation with unit conversion off. This allows >> the models to be compiled and run, even if they may need conversion >> factor editing. Even if the CellML model doesn't pass JSim unit >> balance, it would still run correctly if all needed conversion >> factors were in the CellML in form #3 above. >> >> Hope this helps, >> >> Erik B. >> >> >> >>> At least my reading of the CellML specification is that tools should >>> not be automatically inserting conversion factors like this when >>> processing CellML models, although they may optionally warn the user >>> that a conversion factor may be missing and / or offer to insert it >>> for them. >>> >>> Best regards, >>> Andrew >>> >>>> Erik Butterworth [EMAIL PROTECTED] 206-685-2007 >>>> >>>> On Thu, 29 May 2008, Andrew Miller wrote: >>>> >>>>> Date: Thu, 29 May 2008 11:29:50 +1200 >>>>> From: Andrew Miller <[EMAIL PROTECTED]> >>>>> To: James Lawson <[EMAIL PROTECTED]> >>>>> Cc: James Lawson <[EMAIL PROTECTED]>, >>>>> [EMAIL PROTECTED] >>>>> Subject: Re: unit conversion >>>>> >>>>> James Lawson wrote: >>>>>> Hi Andrew, Justin, >>>>>> >>>>>> Thanks for your help. Basically, I've had to multiply a current >>>>>> by a scaling factor of 1 million to get the model to run in >>>>>> PCEnv. It was made in Jsim and worked fine, but now I have a >>>>>> model that will run in PCEnv but not Jsim. Do you guys have any >>>>>> idea about what I could do to get it running in both? Would >>>>>> showing you the model help? I could email the Jsim guys and ask >>>>>> them if I knew what to ask.. It seems like Jsim doesn't really >>>>>> convert nanoamps into >>>>>> 10e-6 amps and work with the value from there, whereas PCEnv does. >>>>>> Would this be right? >>>>>> >>>>>> Basically the issue that I have addressed is that units for the >>>>>> variables in the equation for I_inter_fibro aren't dimensionally >>>>>> equivalent: >>>>>> >>>>>> The equation is: I_inter_fibro =(V_fibro - V) / R_mf >>>>>> >>>>>> Where I_inter_fibro is in nanoamperes, V_fibro and V are in >>>>>> millivolts and R_mf is in ohms. So the equation says that >>>>>> nanoamps = millivolts / ohms. Thus I have changed the equation to >>>>>> say I_inter_fibro = 1e+06 * (V_fibro - V) / R_mf >>>>> Hi James, >>>>> >>>>> What are the units on the 1E6 scaling factor? If you put them in >>>>> nanoamps_per_milliamp or something like that, then I think all >>>>> software should do the right thing. Automatically inserting the >>>>> conversion factor is not the correct software behaviour however; >>>>> at most software should be flagging the problem and helping the >>>>> user to insert the factor if they decide there is an actual problem. >>>>> >>>>> Best regards, >>>>> Andrew >>>>> >>>>>> So at the moment I do not know how to get the model to run in >>>>>> both PCEnv and Jsim. What I'll do is upload a variant of the >>>>>> model to the repository with different curation notes, but >>>>>> ideally I should be able to get one model that runs in both >>>>>> environments. This looks like it might be a pretty persistent problem unfortunately. >>>>>> >>>>>> Thanks, >>>>>> James >>>>>> >>>>>> Andrew Miller wrote: >>>>>>> James Lawson wrote: >>>>>>>> Hi guys, >>>>>>>> >>>>>>>> I was wondering if you might be able to help me out with a >>>>>>>> curation issue. I've been working on a model that was tested in >>>>>>>> Jsim that just wasn't producing the right results in PCEnv. >>>>>>>> Finally I figured out that it was something to do with the >>>>>>>> magnitude of a current being out by a factor of a million - >>>>>>>> milli to nano. So obviously this is something to do with unit >>>>>>>> conversions being applied in one tool and not the other. I was >>>>>>>> under the impression that it was Jsim that doesn't apply units >>>>>>>> conversions and PCEnv and COR that do - am I right here? I'm >>>>>>>> worried that having fixed the model under PCEnv, I've broken it >>>>>>>> under Jsim. Could you guys please explain here? >>>>>>>> >>>>>>>> I do have JSim on my computer but I'm unable to figure out how >>>>>>>> to import a CellML file into it and run it. >>>>>>> PCEnv carries out units conversions at the connections (so if >>>>>>> you cannot something in millimol/L to something in nanomol/L it >>>>>>> will convert for you; this is what the CellML specificatin requires). >>>>>>> COR doesn't do this, and instead gives an error if you try to >>>>>>> connect variables in diffferent units. I've heard that some >>>>>>> versions of JSim try to actually change the maths to insert >>>>>>> conversion factors in at the equation level - but I believe this >>>>>>> is usually turned off. >>>>>>> >>>>>>> Best regards, >>>>>>> Andrew >>>>> >>> > > > _______________________________________________ > cellml-discussion mailing list > cellml-discussion@cellml.org > http://www.cellml.org/mailman/listinfo/cellml-discussion _______________________________________________ cellml-discussion mailing list cellml-discussion@cellml.org http://www.cellml.org/mailman/listinfo/cellml-discussion