| Author | Topic |
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
Problems found so far
|
29 Nov '10 08:55
|
 |
|
Problems found so far while trying to have the current libsbml test
files working and checking the current tracker items :
* Some of the unsetMethod are not working and return an exception all
the time.
for ex : species.unsetCompartment()
* getAnnotation() != null even is no annotation defined : We have to
check if people use a lot this test before reading an annotation.
* getDerivedUnitDefinition() is not working properly if there is not
unit defined.
see
http://sbml.svn.sourceforge.net/viewvc/sbml/trunk/libsbml/src/units/UnitFormulaFormatter.cpp?revision=12199&view=markup
see
http://sbml.svn.sourceforge.net/viewvc/sbml/trunk/libsbml/src/sbml/Model.cpp?revision=12199&view=markup
In Model.cpp, see the method populateListFormulaUnitsData
Seems to be a lot of work not going to be part of the first release
for sure and may be one of the functionality to get via webservices ?
* finish implementing the Notes related methods, people need to test
that the output of their files is fine. Any UTF-8 character allowed
character would still
be written in plain instead of using the html or xml code.
* fd1.setMath(ASTNode.parseFormula("lamda(2)")); does not work. an
ASTNode of type LAMBDA is expected and it is of type FUNCTION
* fd2.setMath(ASTNode.parseFormula("lamda(x, x+2)")); does not work
either, there is a ParserException
* UnitDefinition.createUnit() can not work at the moment.
* Model.findSymbol to update to support SpeciesReference (SBML level 3),
eventualy reaction (SBML level 2). And review the code that can
manipulate these beast, not sure which interface we decided to use at
the end
* just thinking about the use of initDefaults() for L3. In fact, people
might want to use this method or a similar method to set the default as
in L2, I don't think it is possible at the moment.
* add a method taking an XMLEventReader in the stax.SBMLReader
* add more libsbml tests files
Differences to document :
* we cannot add several times the same object to a list
* we cannot use the same ASTNode in several objects as it is not cloned.
In general, the values are not copied in java when passed to a method.
Documentation :
* more complete javadoc : remove as much as possible of the warning when
building the doc (currently 937 warnings)
* build the new web site on the sbml.org wiki
* complete the document about differences with libsbml (did not read the
existing document yet), may be have a developer documentation as well
for newcomers.
* update the Authors list to put all the contributors and may be alumni.
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 413
Registered: May 2004
|
|
|
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
|
Posts: 273
Registered: June 2006
|
|
Re: Problems found so far
|
02 Dec '10 09:32

|
 |
|
>> Just a note on this. The populateListFormulaUnitsData function is only
>> necessary if you either
>>
>> 1) use unit consistency checking - which if you are doing this by
>> webservice is not necessary
>>
>> or
>>
>> 2) use the getDerivedUnitDefinition functions.
>>
>> If the populateList... function is not working fully then you cannot
>> guarantee that the getDerivedUnitDefinition functions are either. You
>> might need to consider the options on this. You could do a release
>> without the getDerivedUnitDefinition functions and see how many people
>> want them.
>>
> We have no populateListFormulaUnitsData at all in fact. We have the
> getDerivedUnitDefinition
> but they are just creating a unitDefinition if a unit was define on the
> element.
>> You are right having the unit stuff as a web service might not be a bad
>> idea overall anyway.
>>
> yes, at least, we should postpone it for later and evaluate the
> different possibilities and their performance.
> We should find a way where you don't have to pass along the whole model
> each time your are calling the getDerivedUnitDefinition !!
Hello everybody,
the getDerivedUnitDefinition should indeed be revised. In some cases it
works already, but it is probably full of bugs. Furthermore, this method
recursively tries to identify the unitDefinition of ASTNodes, but it
does not compare the derived units from other equations to find
something like a mapping. I aggree that this would be a big effort.
Furthermore, there are still so many things on our list and when reading
through earlier e-mails I found even more open problems then those Nico
mentioned recently. Maybe we should do a first alpha release and leafe
some things unfinished. We know already what is still not fully
implemented, so we could say that these things are not part of the first
release.
>From my perspective, JSBML is now nearly complete. We should better
provide a list of open issues, put it on the web site and make a first
alpha release of 0.8 before Christmas. Otherwise we will continue to
spent huge effort in making small missing things better and better and
the community will have to wait for too long.
Cheers
Andreas
--
Dipl.-Bioinform. Andreas Dräger
Eberhard Karls University Tübingen
Center for Bioinformatics (ZBIT)
Sand 1
72076 Tübingen
Germany
Phone: +49-7071-29-70436
Fax: +49-7071-29-5091
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 273
Registered: June 2006
|
|
Re: Problems found so far
|
02 Dec '10 09:40

|
 |
|
Hello everybody,
> * Some of the unsetMethod are not working and return an exception all
> the time.
> for ex : species.unsetCompartment()
Can you provide more error messages, please, Nico? I don't know what's
not working.
> * getAnnotation() != null even is no annotation defined : We have to
> check if people use a lot this test before reading an annotation.
I think this corresponds to our decision to initialize things on demand.
This is done for ListOf instances and similar things happen with ids
etc. Maybe we should change it for Annotations?
> * fd1.setMath(ASTNode.parseFormula("lamda(2)")); does not work. an
> ASTNode of type LAMBDA is expected and it is of type FUNCTION
> * fd2.setMath(ASTNode.parseFormula("lamda(x, x+2)")); does not work
> either, there is a ParserException
Alexander and I will look for that.
> * UnitDefinition.createUnit() can not work at the moment.
Corrected.
> * Model.findSymbol to update to support SpeciesReference (SBML level 3),
> eventualy reaction (SBML level 2). And review the code that can
> manipulate these beast, not sure which interface we decided to use at
> the end
What does not work? Can you give an example, please, Nico?
>
> * just thinking about the use of initDefaults() for L3. In fact, people
> might want to use this method or a similar method to set the default as
> in L2, I don't think it is possible at the moment.
The current implementation requires to have a common method to
initialize objects, because we often find constructors that cannot call
each other. Hence, we need to have some method called from all
incompatible constructors, which initializes all parts of the objects.
In some cases, depending on LV setting, some elements will be set to
null. There is currently no other way to achieve that. Furthermore, the
default value for attributes in Level 3 is: UNDEFINED. That's what
initDefault() does. And if people call this method for an SBase with
Level >= 3, it will set some elements to null, which is what they can
expect. I don't see, why this is a problem.
> * we cannot use the same ASTNode in several objects as it is not cloned.
> In general, the values are not copied in java when passed to a method.
I don't think it is a good idea to clone everything that is passed to a
set method. What if people want to set an object such as an ASTNode as a
child for some MathContainer and then continue working and manipulating
the same data structure. What will happen is that inconsistencies occur
and people won't understand why their changes get lost. If people want
to clone an object, they will call the clone method.
> * build the new web site on the sbml.org wiki
Mike, if you find a little time, it would be very nice to set up this
wiki for us.
Cheers
Andreas
--
Dipl.-Bioinform. Andreas Dräger
Eberhard Karls University Tübingen
Center for Bioinformatics (ZBIT)
Sand 1
72076 Tübingen
Germany
Phone: +49-7071-29-70436
Fax: +49-7071-29-5091
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
Re: Problems found so far
|
02 Dec '10 13:56

|
 |
|
Le 02/12/2010 17:40, Andreas Draeger a écrit :
>> * Some of the unsetMethod are not working and return an exception all
>> the time.
>> for ex : species.unsetCompartment()
> Can you provide more error messages, please, Nico? I don't know what's
> not working.
it seems to be working fine now, I have added a test anyway and I think
we should in general add some tests for the unsetMethod
as they are calling the setMethod and there is plenty of check there. It
is also bizarre that the method checkIdentifier(String) return true
when you pass null as argument, I would have tested for null before
calling this method.
>> * getAnnotation() != null even is no annotation defined : We have to
>> check if people use a lot this test before reading an annotation.
> I think this corresponds to our decision to initialize things on demand.
> This is done for ListOf instances and similar things happen with ids
> etc. Maybe we should change it for Annotations?
I don't know, may be. But we have to have an easy way to test if an
annotation is empty or not.
This just that in libSBML getAnnotation() return null and we are
returning an empty object.
>
>
>> * Model.findSymbol to update to support SpeciesReference (SBML level 3),
>> eventualy reaction (SBML level 2). And review the code that can
>> manipulate these beast, not sure which interface we decided to use at
>> the end
> What does not work? Can you give an example, please, Nico?
>
:-) not again :-)
May be we should rename the method. The method is doing perfectly what
the javadoc tell, so that is good.
The method is there to find the symbol element which was in the
beginning of L2 only compartment, species and parameter.
In the later L2, reaction has been added as one of the possibilities and
SpeciesReference in L3.
If you really want to have the method findSymbol do only what she is
doing at the moment, we should add
a method findNamesSBaseWithDerivedUnit that will return any of the 5 types.
>> * just thinking about the use of initDefaults() for L3. In fact, people
>> might want to use this method or a similar method to set the default as
>> in L2, I don't think it is possible at the moment.
> The current implementation requires to have a common method to
> initialize objects, because we often find constructors that cannot call
> each other. Hence, we need to have some method called from all
> incompatible constructors, which initializes all parts of the objects.
> In some cases, depending on LV setting, some elements will be set to
> null. There is currently no other way to achieve that. Furthermore, the
> default value for attributes in Level 3 is: UNDEFINED. That's what
> initDefault() does. And if people call this method for an SBase with
> Level>= 3, it will set some elements to null, which is what they can
> expect. I don't see, why this is a problem.
>
There has been request in libsbml to have a method to set the L2
defaults for L3 elements, so that you do not have
to do all the setXX yourself, having to recode the same methods as in
libsbml if you want to provide some default values for your users.
I think we should have for the next release, something equivalent.
>> * we cannot use the same ASTNode in several objects as it is not cloned.
>> In general, the values are not copied in java when passed to a method.
> I don't think it is a good idea to clone everything that is passed to a
> set method. What if people want to set an object such as an ASTNode as a
> child for some MathContainer and then continue working and manipulating
> the same data structure. What will happen is that inconsistencies occur
> and people won't understand why their changes get lost. If people want
> to clone an object, they will call the clone method.
>
I don't want to change anything there. It was on the section of things
we need to document.
In libsbml, the objects are cloned, in jsbml not, people need to know
that in case they re-use the same object trusting
that it will not modify the object they have just added to the model. In
libsbml it is possible, I think, to create one species, add it to the model,
then change the id, add it to the model and then you have two different
objects in your model element.
Cheers,
Nico
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
Re: Problems found so far
|
02 Dec '10 14:04

|
 |
|
Le 02/12/2010 17:32, Andreas Draeger a écrit :
>
> Furthermore, there are still so many things on our list and when reading
> through earlier e-mails I found even more open problems then those Nico
> mentioned recently. Maybe we should do a first alpha release and leafe
> some things unfinished. We know already what is still not fully
> implemented, so we could say that these things are not part of the first
> release.
>
> From my perspective, JSBML is now nearly complete. We should better
> provide a list of open issues, put it on the web site and make a first
> alpha release of 0.8 before Christmas. Otherwise we will continue to
> spent huge effort in making small missing things better and better and
> the community will have to wait for too long.
>
Yes, this is what we are doing now, we need to review a bit the code,
clean a bit and list the issues.
Then we can release, even a beta release, we are more than an alpha
stage, I think.
Nico
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 273
Registered: June 2006
|
|
Re: Problems found so far
|
03 Dec '10 02:04

|
 |
|
Hello everybody,
>>> * we cannot use the same ASTNode in several objects as it is not cloned.
>>> In general, the values are not copied in java when passed to a method.
>> I don't think it is a good idea to clone everything that is passed to a
>> set method. What if people want to set an object such as an ASTNode as a
>> child for some MathContainer and then continue working and manipulating
>> the same data structure. What will happen is that inconsistencies occur
>> and people won't understand why their changes get lost. If people want
>> to clone an object, they will call the clone method.
>>
> I don't want to change anything there. It was on the section of things
> we need to document.
> In libsbml, the objects are cloned, in jsbml not, people need to know
> that in case they re-use the same object trusting
> that it will not modify the object they have just added to the model. In
> libsbml it is possible, I think, to create one species, add it to the model,
> then change the id, add it to the model and then you have two different
> objects in your model element.
What is meant with "I don't want to change anything there"? As far as I
know, we don't clone things at the moment. And I am not sure if we have
to do this in the libSBML way. To me it is not logical to clone things
when adding them to some element. We should ask the community what
people want. I would like to stick with not cloning by default. It is
also unnecessarily expensive. I can add this as one additional
difference between both libraries in the TeX document.
Cheers
Andreas
--
Dipl.-Bioinform. Andreas Dräger
Eberhard Karls University Tübingen
Center for Bioinformatics (ZBIT)
Sand 1
72076 Tübingen
Germany
Phone: +49-7071-29-70436
Fax: +49-7071-29-5091
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 273
Registered: June 2006
|
|
Re: Problems found so far
|
03 Dec '10 02:08

|
 |
|
Hi everybody,
> There has been request in libsbml to have a method to set the L2
> defaults for L3 elements, so that you do not have
> to do all the setXX yourself, having to recode the same methods as in
> libsbml if you want to provide some default values for your users.
> I think we should have for the next release, something equivalent.
We could provide such an additional method. But I would suggest to have
a method such as
public boolean initDefaults(int level, int version)
which is not necessarily bound to L2V4 or what ever. The return type
would say wether calling this method lead to a change or not. We could
then change all these existing initDefault methods to
public void initDefaults() {
initDefaults(getLevel(), getVersion());
}
That's it. In this way, we would give people the chance to re-initialize
a data type as it would be for a certain LV combination.
Furthermore, we should also make sure that listeners are triggered even
in the initDefaults method. I think this is currently not the case.
Cheers
Andreas
--
Dipl.-Bioinform. Andreas Dräger
Eberhard Karls University Tübingen
Center for Bioinformatics (ZBIT)
Sand 1
72076 Tübingen
Germany
Phone: +49-7071-29-70436
Fax: +49-7071-29-5091
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
Re: Problems found so far
|
03 Dec '10 02:10

|
 |
|
On 12/03/2010 10:04 AM, Andreas Draeger wrote:
> Hello everybody,
>
>>>> * we cannot use the same ASTNode in several objects as it is not cloned.
>>>> In general, the values are not copied in java when passed to a method.
>>> I don't think it is a good idea to clone everything that is passed to a
>>> set method. What if people want to set an object such as an ASTNode as a
>>> child for some MathContainer and then continue working and manipulating
>>> the same data structure. What will happen is that inconsistencies occur
>>> and people won't understand why their changes get lost. If people want
>>> to clone an object, they will call the clone method.
>>>
>> I don't want to change anything there. It was on the section of things
>> we need to document.
>> In libsbml, the objects are cloned, in jsbml not, people need to know
>> that in case they re-use the same object trusting
>> that it will not modify the object they have just added to the model. In
>> libsbml it is possible, I think, to create one species, add it to the model,
>> then change the id, add it to the model and then you have two different
>> objects in your model element.
> What is meant with "I don't want to change anything there"? As far as I
> know, we don't clone things at the moment. And I am not sure if we have
> to do this in the libSBML way. To me it is not logical to clone things
> when adding them to some element. We should ask the community what
> people want. I would like to stick with not cloning by default. It is
> also unnecessarily expensive.
:-) To be clear, I am totally agreeing with you, since the beginning.
We should not clone anything, it is not java-like.
> I can add this as one additional
> difference between both libraries in the TeX document.
>
Yess, that was I meant in the first place, that we have to add it in the
documentation as
a difference between both libraries in case there is some fancy code out
there making use of the libsbml way.
Thanks,
Nico
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
Posts: 307
Location: Cambridge UK
Registered: February 2005
|
|
Re: Problems found so far
|
03 Dec '10 02:11
|
 |
|
On 12/03/2010 10:08 AM, Andreas Draeger wrote:
> Hi everybody,
>
>> There has been request in libsbml to have a method to set the L2
>> defaults for L3 elements, so that you do not have
>> to do all the setXX yourself, having to recode the same methods as in
>> libsbml if you want to provide some default values for your users.
>> I think we should have for the next release, something equivalent.
> We could provide such an additional method. But I would suggest to have
> a method such as
>
> public boolean initDefaults(int level, int version)
>
> which is not necessarily bound to L2V4 or what ever. The return type
> would say wether calling this method lead to a change or not. We could
> then change all these existing initDefault methods to
>
> public void initDefaults() {
> initDefaults(getLevel(), getVersion());
> }
Yes, that's a good idea and that was what I was thinking too.
But we should postpone that for next year, I think
Thanks,
Nico
____________________________________________________________
To manage your jsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/jsbml-development
For a web interface to the jsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the jsbml-development list,
contact sbml-team@caltech.edu
|
|
|
|