CellML Discussion List

Text archives Help


[cellml-discussion] on a CellML format


Chronological Thread 
  • From: david.nickerson at nus.edu.sg (David Nickerson)
  • Subject: [cellml-discussion] on a CellML format
  • Date: Wed, 22 Aug 2007 10:26:36 +0800

Hi Taishin,

Firstly, I think most people on the team list are also on the
cellml-discussion list so I'm dropping off the CC to the team list. Rest
on my comments inline below...

Taishin Nomura wrote:
> Dear all,
>
> We had a discussion on CellML format in response to the comment
> made by Bandall. In our discussion, we tried to illustrate structure
> of coupled_pendulum.cellml. We are not sure whether or not you are
> interseted in this discussion. Nevertheless, we would like to make
> this clear so that we can continue our effort to completely support
> cellml API since we believe it has a definite meaning.
>
> A dominant part of the file we are going to argue may be like fig. 1
> shown temporalily at
> http://www3.bpe.es.osaka-u.ac.jp/~suzuki/coupled_pendulum.pdf
> This page will be closed when dicussion stops.
>
> The corresponding structue may roughly be represented in fig. 2
> as a schematic diagram.
>
> Then, possible implication of "private_interface" and "public_interface",
> based on our understanding, is added to the diagram as fig. 3,
> where
> red lines indicate "public_interface"
> and
> blue lines "private_interface".
>
> Can we share the understanding of this diagram?

yep - very nice diagrams!

> Suppose yes, then we have several questions and comments.
>
> # On a Redundant definition of the initial value
> The initial value of
> <variable name="b"> at <component name="Pendulum">
> and
> <variable name="b"> at <component name="PendulumLowerSegment">
> are defined redundantly as indicated by fig. 4.
> Is there any reason for this redundant definition?
> Please let us know. This is becuase if these two redundantly
> defined initial values are not identical, it may cause a problem.

definitely, as you describe the model the initial_value attribute for
the b variable in the Pendulum component is not only redundant it is
invalid CellML. (you can't have an initial_value if any of the
interfaces is 'in'.)

> Note that we are aware of the fact that
> <variable name="b"> at <component name="Pendulum">
> implies
> <variable name="b"> at <component name="PendulumLowerSegment">
> using <connection> property.
> We are also aware of the fact that
> the redundant definition of
> <variable name="b"> at <component name="Pendulum">
> and
> <variable name="b"> at <component name="PendulumLowerSegment">
> is natural and necessary to allow other components to utilze
> <variable name="b"> of <component name="Pendulum"> which is encapsulated.

yep - that all makes sense.

> # Policy on location of definition of equations and initial values
> For example,
> <variable name="a_angular_velocity"> is defined both
> in <component name="Pendulum">
> and
> in <component name="PendulumUpperSegment">.
> This is okay for the same reason mentined above.
> However, in this case, the initial value is defined
> in <component name="Pendulum">, but no definition of equations,
> while
> the equation is defined in <component name="PendulumUpperSegment">,
> but no definition of the initial value.

I think you have name="Pendulum" and name="PendulumUpperSegment" swapped
around, but again this is invalid CellML. Since variable
a_angular_velocity (and also b_angular_velocity) has a private interface
of 'in', it is invalid to define the differential equation
d(a_angular_velocity)/dt in the Pendulum component.

> Regarding this sort of distributed definitions of properties of
> an object, we would like to know your policy. Of course,
> the current situation is fairly lax and the user can define a property
> anywhere within an encapsuled component, even in a component
> in the encapsulated component. However, it could be a source of
> errors if we have to deal with a complicated model with many
> properties and components.

I think this is because the model you are describing is invalid. This
kind of distributed definition of properties is invalid CellML (as far
as I can tell). Only the component which "owns" a variable (i.e., the
component in which the variable is defined with no interface of "in") is
allowed to alter the variable's value - either with an initial_value or
some mathematical equation.

> # An alternative way to describe the pendulum (A proposal)
> Fig. 5 is an alternative structure to describe the pendulum.
> It seems that this is natural in the following sense:
> every <variable> such as
> <variable name="a_angular_velocity">
> or
> <variable name="b_angular_velocity">
> has both the initial value and the equation together.
> Then, the encapsulted <component name="Pendulum"> plays a
> simple role to put
> <component name="PendulumUpperSegment">
> and
> <component name="PendulumLowerSegment">
> together within a single component.
>
> There may be other kinds of structure such as a case
> illustrated in Fig. 6.

Both of these look correct to me, although the one in Fig. 5 seems more
natural to me :-)

Looking back, I see this is the PCEnv test model that Randall mentioned
a while back. And looking at that original code it certainly looks like
an invalid model to me...and passing it through Jonathan's validator
(https://chaste.ediamond.ox.ac.uk/cellml/) that seems to agree with me...


Hope that helps clear things up,
David.





Archive powered by MHonArc 2.6.18.

Top of page