JSBML
Utvecklare | JSBML-teamet |
---|---|
Initial release | 1 februari 2011 |
Förvar | |
Skrivet i | Java |
Operativ system | plattformsoberoende |
Typ | XML - parserbibliotek |
Licens | LGPL-licens v2.1 |
Hemsida | sbml.org |
JSBML (Java Systems Biology Markup Language) är ett Java (API) med öppen källkod för formatet SBML (Systems Biology Markup Language). Dess API strävar efter att uppnå en stark likhet med Java-bindningen för motsvarande bibliotek libSBML , men är helt implementerat i Java och är därför plattformsoberoende . JSBML tillhandahåller en utarbetad abstrakt typhierarki, vars datatyper implementerar eller utökar många gränssnitt och abstrakta klasser från standard Java-biblioteket. På detta sätt integreras JSBML smidigt i befintliga Java-projekt och tillhandahåller metoder för att läsa, skriva, utvärdera och manipulera innehållet i SBML-dokument.
Utveckling
I maj 2009 genomförde SBML- teamet en samhällsenkät för förfrågningar om potentiell ytterligare mjukvaruutveckling. Det visade sig att även om biblioteket libSBML tillhandahåller en genererad bindning för programmeringsspråket Java , gör dess interna C- kod det svårt att implementera plattformsoberoende eller Web Start- applikationer.
Runt den tiden hade flera grupper från flera institut redan implementerat små Java-versioner av libSBML , var och en var ett skräddarsytt bibliotek som täcker behoven för det specifika forskningsprojektet. För att undvika onödiga dubbelarbete och förena befintlig utveckling, lanserades det internationella samfundsprojektet JSBML i september 2009, främst av grupper från EBI , Caltech och ett team av studenter vid universitetet i Tübingen ledd av Andreas Dräger .
Eftersom JSBML har implementerats avsevärt senare än den första versionen av libSBML , kan den därför dra nytta av att specifikationerna för SBML finns på nivåerna 1-3. Därför har JSBML inte bara utvecklats genom att portera befintlig C -kod från libSBML- projektet till en ny Java . Istället använde utvecklarna detta som en chans att helt omforma klassen och API -strukturen. Det är därför JSBML ger en mycket rikare abstrakt typhierarki jämfört med libSBML . Dessutom gjorde utvecklingen av JSBML det möjligt att fatta designbeslut som inte är möjliga i libSBML eftersom ingen bakåtkompatibilitet behövde övervägas vid denna tidpunkt.
Den första stabila versionen 0.8 av JSBML gjordes allmänt tillgänglig för nedladdning i februari 2011. Sedan dess har stöd för flera SBML-tilläggspaket implementerats och kommer att inkluderas i releasen av JSBML 1.0.
Mål
Utvecklingen av JSBML drivs av tre mål:
- Tillhandahåll ett rent Java API utan något inbyggt beroende.
- Uppnå högsta möjliga kompatibilitet med libSBML men får samtidigt biblioteket att bete sig som andra inbyggda Java- bibliotek, dvs som förväntat av erfarna Java-utvecklare.
- Stöd för alla nivå/versionskombinationer och tilläggspaket av SBML
Användande
Följande exempel förutsätter att en JAR- fil av JSBML har inkluderats i klasssökvägen och att en lokal installation av en Java Virtual Machine är tillgänglig på plattformen där koden exekveras.
Följande kodningsexempel visar hur en SBML- fil kan analyseras och dess innehåll kan visas i form av ett träd i ett fönster. Resultatet kan t.ex. se ut som bilden till höger. Det kan ses att själva analysen av SBML görs på en enda rad, genom att anropa en statisk metod i klassen SBMLReader. Skapandet av trädet för displayen är också trivialt, eftersom hela datastrukturen i JSBML är organiserad som ett träd .
0
importera javax.swing.* ; importera org.sbml.jsbml.* ; /** Visar innehållet i en SBML-fil i en {@link JTree} */ public class JSBMLvisualizer extends JFrame { /** @param document sbml-rotnoden för en SBML-fil */ public JSBMLvisualizer ( SBMLDocument document ) { super ( dokument . getModel (). getId ()); getContentPane (). add ( nytt JScrollPane ( nytt JTree ( dokument ))); pack (); // gör ramen kompakt setLocationRelativeTo ( null ); // Placera den i mitten av skärmen setVisible ( true ); } /** @param args Förväntar en giltig sökväg till en SBML-fil. */ public static void main ( String [] args ) throws Exception { new JSBMLvisualizer ( SBMLeader . read ( args [ ] )); } }
|