206 |
207 |
208 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
--------------------------------------------------------------------------------
/docs/build/html/searchindex.js:
--------------------------------------------------------------------------------
1 | Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst"],objects:{"":{simplesbml:[0,0,0,"module-0"]},"simplesbml.SbmlModel":{addAssignmentRule:[0,2,1,""],addCompartment:[0,2,1,""],addEvent:[0,2,1,""],addInitialAssignment:[0,2,1,""],addParameter:[0,2,1,""],addRateRule:[0,2,1,""],addReaction:[0,2,1,""],addSpecies:[0,2,1,""],getCompartmentId:[0,2,1,""],getCompartmentIdSpeciesIsIn:[0,2,1,""],getCompartmentVolume:[0,2,1,""],getDocument:[0,2,1,""],getEventAssignment:[0,2,1,""],getEventId:[0,2,1,""],getEventString:[0,2,1,""],getEventTrigger:[0,2,1,""],getEventVariable:[0,2,1,""],getFunctionBody:[0,2,1,""],getFunctionId:[0,2,1,""],getListOfAllSpecies:[0,2,1,""],getListOfArgumentsInUserFunction:[0,2,1,""],getListOfBoundarySpecies:[0,2,1,""],getListOfCompartmentIds:[0,2,1,""],getListOfFloatingSpecies:[0,2,1,""],getListOfFunctionIds:[0,2,1,""],getListOfModifiers:[0,2,1,""],getListOfParameterIds:[0,2,1,""],getListOfReactionIds:[0,2,1,""],getListOfRuleIds:[0,2,1,""],getModel:[0,2,1,""],getModelId:[0,2,1,""],getNthBoundarySpeciesId:[0,2,1,""],getNthFloatingSpeciesId:[0,2,1,""],getNthReactionId:[0,2,1,""],getNumArgumentsInUserFunction:[0,2,1,""],getNumBoundarySpecies:[0,2,1,""],getNumCompartments:[0,2,1,""],getNumEventAssignments:[0,2,1,""],getNumEvents:[0,2,1,""],getNumFloatingSpecies:[0,2,1,""],getNumFunctionDefinitions:[0,2,1,""],getNumInitialAssignments:[0,2,1,""],getNumModifiers:[0,2,1,""],getNumParameters:[0,2,1,""],getNumProducts:[0,2,1,""],getNumReactants:[0,2,1,""],getNumReactions:[0,2,1,""],getNumRules:[0,2,1,""],getNumSpecies:[0,2,1,""],getParameterId:[0,2,1,""],getParameterValue:[0,2,1,""],getProduct:[0,2,1,""],getProductStoichiometry:[0,2,1,""],getRateLaw:[0,2,1,""],getReactant:[0,2,1,""],getReactantStoichiometry:[0,2,1,""],getRuleId:[0,2,1,""],getRuleRightSide:[0,2,1,""],getRuleType:[0,2,1,""],getSpeciesInitialAmount:[0,2,1,""],getSpeciesInitialConcentration:[0,2,1,""],isAmount:[0,2,1,""],isBoundarySpecies:[0,2,1,""],isConcentration:[0,2,1,""],isFloatingSpecies:[0,2,1,""],isParameterValueSet:[0,2,1,""],isRuleType_Algebraic:[0,2,1,""],isRuleType_Assignment:[0,2,1,""],isRuleType_Rate:[0,2,1,""],isSpeciesValueSet:[0,2,1,""],toSBML:[0,2,1,""]},simplesbml:{SbmlModel:[0,1,1,""],loadSBMLFile:[0,3,1,""],loadSBMLStr:[0,3,1,""],writeCode:[0,3,1,""],writeCodeFromFile:[0,3,1,""],writeCodeFromString:[0,3,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"boolean":0,"default":0,"float":0,"function":0,"import":0,"int":0,"new":0,"return":0,"short":0,"switch":0,"true":0,"var":0,For:0,Ids:0,The:0,Then:0,Using:0,about:0,accept:0,access:0,add:0,addassignmentrul:0,addcompart:0,added:0,addev:0,adding:0,addinitialassign:0,addparamet:0,addraterul:0,addreact:0,addspeci:0,algebra:0,alist:0,all:0,alloc:0,allow:0,alreadi:0,also:0,amount:0,amt:0,api:0,argument:0,assign:0,assignemnt:0,assignmentindex:0,assignmentindexth:0,assignmentrul:0,assum:0,astr:0,atp:0,attribut:0,author:[],back:0,base:0,been:0,between:0,bio:0,biolog:0,biologi:0,bold:[],boundari:0,bracket:0,build:0,built:0,call:0,can:0,care:0,carolc24:[],cell:0,certain:0,chang:0,check:0,classlibsbml_1_1_model:[],classlibsbml_1_1_s_b_m_l_docu:[],close:0,code:0,com:0,command:0,comp:0,comp_id:0,compart:0,compartmetn:0,compat:0,compelt:0,complic:0,concentr:0,condit:0,consist:0,constant:0,construct:0,contain:0,content:0,convert:0,creat:0,current:0,decid:0,defin:0,definit:0,delai:0,depend:0,deriv:0,describ:0,desir:0,determin:0,dictionari:0,difficult:0,direct:0,directli:0,doc:0,doe:0,dog:[],due:0,each:0,easili:0,edit:0,einfix:[],either:0,element:0,enclos:0,equal:0,equat:0,error:0,even:0,event:0,event_id:0,eventref:[],example_cod:0,execut:0,exist:[],explicitli:0,express:0,extent_unit:0,fals:0,familiar:0,few:0,file:0,filenam:0,find:0,floatingspeciesid:0,folder:0,follow:0,form:0,formal:0,format:0,formula:0,formulastr:0,found:0,from:0,fucntion:0,func:0,g6p:0,get:0,getcompartmentid:0,getcompartmentidspeciesisin:0,getcompartmentvolum:0,getdocu:0,geteventassign:0,geteventid:0,geteventstr:0,geteventtrigg:0,geteventvari:0,getfunctionbodi:0,getfunctionid:0,getlistofallspeci:0,getlistofargumentsinuserfunct:0,getlistofboundaryspeci:0,getlistofcompart:0,getlistofcompartmentid:0,getlistoffloatingspeci:0,getlistoffunctionid:0,getlistofmodifi:0,getlistofparamet:[],getlistofparameterid:0,getlistofreact:[],getlistofreactionid:0,getlistofrul:0,getlistofruleid:0,getlistofspeci:0,getmodel:0,getmodelid:0,getnthboundaryspeciesid:0,getnthfloatingspeciesid:0,getnthreactionid:0,getnumargumentsinuserfunct:0,getnumboundaryspeci:0,getnumcompart:0,getnumcompartmentid:0,getnumev:0,getnumeventassign:0,getnumfloatingspeci:0,getnumfunctiondefinit:0,getnuminitialassign:0,getnummodifi:0,getnumparamet:0,getnumproduct:0,getnumreact:0,getnumrul:0,getnumspeci:0,getparameterid:0,getparametervalu:0,getproduct:0,getproductstoichiometri:0,getratelaw:0,getreact:0,getreactantstoichiometri:0,getruleid:0,getrulerightsid:0,getruletyp:0,getsbml:0,getspeciesinitialamount:0,getspeciesinitialconcentr:0,github:0,given:0,givenin:0,global:0,glucos:0,had:[],hand:0,has:0,have:0,here:0,hill:0,how:0,hsauro:[],html:0,http:0,ids:0,implement:0,index:0,indexth:0,indic:0,infix:[],inform:0,initi:0,initial_valu:0,initialassign:0,instal:0,instanc:0,instantan:0,instead:0,intend:0,interact:0,interfac:0,interpret:0,intuit:0,isamount:0,isboundaryspeci:0,isconcentr:0,isfloatingspeci:0,isparametervalueset:0,isruletype_algebra:0,isruletype_assign:0,isruletype_r:0,isspeciesvalueset:0,ith:0,its:0,jan:[],just:0,kcat:0,kei:0,kinet:[],koff:0,kon:0,kyle:[],lamb:[],languag:0,larger:0,law:0,learn:0,left:0,level:0,libsbml:0,like:0,limit:0,line:0,list:0,litr:0,littl:[],load:0,loada:0,loadfromfil:0,loadsbmlfil:0,loadsbmlstr:0,local:0,local_param:0,logic:0,look:0,low:[],made:0,main_pag:0,make:0,mari:[],markup:0,math:0,mathstr:0,matrix:0,mean:0,medl:[],model:[],modelrefer:[],modifi:0,modul:[],mol:0,mole:0,more:0,mymodel:0,mysbmlstr:0,name:0,narg:0,need:0,none:0,nth:0,num:0,number:0,numer:0,numpi:0,numproduct:0,numreact:0,object:0,obtain:0,ode:0,one:0,onli:0,open:0,org:0,origin:0,other:0,otherwis:0,out:0,output:0,packag:0,page:0,param_id:0,paramet:0,pass:0,per_second:0,persist:0,possibl:0,previous:0,print:0,prioriti:0,produc:0,product:0,productid:0,productindex:0,productindexth:0,productstoichiometri:0,properli:0,pytest:0,python:0,question:0,rang:0,rate:0,raterul:0,rather:0,reactant:0,reactantid:0,reactantindex:0,reactantindexth:0,reactantstoichiometri:0,reaction:0,reactionid:0,reacvtion:[],read:0,readi:0,rel:0,relationship:0,repres:0,represent:0,reproduc:0,respect:0,result:0,retun:0,right:0,rule:0,rulestr:0,run:0,runtest:0,rxn_id:0,same:0,save:0,sbml:0,sbmldocument:0,sbmlfile:0,sbmlmodel:0,sbmlstr:0,sbmlstring:0,scan:0,script:0,sec:0,second:0,see:0,self:[],set:0,setlevelandvers:[],side:0,similar:0,simlesbml:0,simpl:0,simpli:0,simplifi:0,softwar:0,some:0,someth:0,somth:[],sourc:0,space:0,spece:[],speci:0,species_id:0,speciesid:0,specifi:0,start:0,state:0,still:0,stint:0,stoich:0,stoichiomeetri:[],stoichiometri:0,store:0,strfile:[],string:0,strsbml:[],sub_unit:0,support:0,sure:0,symbol:0,synthet:[],sys:0,system:0,take:0,taken:0,tau:0,teh:[],tellurium:0,term:0,thei:0,them:0,therefor:0,thi:0,through:0,time:0,time_unit:0,toctre:[],tosbml:0,trigger:0,tue:[],two:0,type:0,under:0,unit:0,unittest:0,unless:0,unmanag:0,unser:[],until:0,usag:0,use:0,used:0,user:0,uses:0,using:0,val:0,valu:0,variabl:0,vcat:0,veq:0,verison:0,version:[],view:0,vol:0,volum:0,volumn:[],warn:0,when:0,where:0,whether:0,which:0,who:0,wide:0,wish:0,within:0,without:0,write:0,writecod:0,writecodefromfil:0,writecodefromstr:0,xml:0,you:0,zero:0},titles:["Welcome to the SimpleSBML documentation for Version 2.0"],titleterms:{"class":0,document:0,exampl:0,exist:0,exxampl:[],interog:[],interrog:0,method:0,model:0,overview:0,simplesbml:0,test:0,version:0,welcom:0}})
--------------------------------------------------------------------------------
/docs/make.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 |
3 | REM Command file for Sphinx documentation
4 |
5 | if "%SPHINXBUILD%" == "" (
6 | set SPHINXBUILD=sphinx-build
7 | )
8 | set BUILDDIR=build
9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
10 | set I18NSPHINXOPTS=%SPHINXOPTS% source
11 | if NOT "%PAPER%" == "" (
12 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
13 | set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
14 | )
15 |
16 | if "%1" == "" goto help
17 |
18 | if "%1" == "help" (
19 | :help
20 | echo.Please use `make ^` where ^ is one of
21 | echo. html to make standalone HTML files
22 | echo. dirhtml to make HTML files named index.html in directories
23 | echo. singlehtml to make a single large HTML file
24 | echo. pickle to make pickle files
25 | echo. json to make JSON files
26 | echo. htmlhelp to make HTML files and a HTML help project
27 | echo. qthelp to make HTML files and a qthelp project
28 | echo. devhelp to make HTML files and a Devhelp project
29 | echo. epub to make an epub
30 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
31 | echo. text to make text files
32 | echo. man to make manual pages
33 | echo. texinfo to make Texinfo files
34 | echo. gettext to make PO message catalogs
35 | echo. changes to make an overview over all changed/added/deprecated items
36 | echo. xml to make Docutils-native XML files
37 | echo. pseudoxml to make pseudoxml-XML files for display purposes
38 | echo. linkcheck to check all external links for integrity
39 | echo. doctest to run all doctests embedded in the documentation if enabled
40 | echo. coverage to run coverage check of the documentation if enabled
41 | goto end
42 | )
43 |
44 | if "%1" == "clean" (
45 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
46 | del /q /s %BUILDDIR%\*
47 | goto end
48 | )
49 |
50 |
51 | REM Check if sphinx-build is available and fallback to Python version if any
52 | %SPHINXBUILD% 2> nul
53 | if errorlevel 9009 goto sphinx_python
54 | goto sphinx_ok
55 |
56 | :sphinx_python
57 |
58 | set SPHINXBUILD=python -m sphinx.__init__
59 | %SPHINXBUILD% 2> nul
60 | if errorlevel 9009 (
61 | echo.
62 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
63 | echo.installed, then set the SPHINXBUILD environment variable to point
64 | echo.to the full path of the 'sphinx-build' executable. Alternatively you
65 | echo.may add the Sphinx directory to PATH.
66 | echo.
67 | echo.If you don't have Sphinx installed, grab it from
68 | echo.http://sphinx-doc.org/
69 | exit /b 1
70 | )
71 |
72 | :sphinx_ok
73 |
74 |
75 | if "%1" == "html" (
76 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
77 | if errorlevel 1 exit /b 1
78 | echo.
79 | echo.Build finished. The HTML pages are in %BUILDDIR%/html.
80 | goto end
81 | )
82 |
83 | if "%1" == "dirhtml" (
84 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
85 | if errorlevel 1 exit /b 1
86 | echo.
87 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
88 | goto end
89 | )
90 |
91 | if "%1" == "singlehtml" (
92 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
93 | if errorlevel 1 exit /b 1
94 | echo.
95 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
96 | goto end
97 | )
98 |
99 | if "%1" == "pickle" (
100 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
101 | if errorlevel 1 exit /b 1
102 | echo.
103 | echo.Build finished; now you can process the pickle files.
104 | goto end
105 | )
106 |
107 | if "%1" == "json" (
108 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
109 | if errorlevel 1 exit /b 1
110 | echo.
111 | echo.Build finished; now you can process the JSON files.
112 | goto end
113 | )
114 |
115 | if "%1" == "htmlhelp" (
116 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
117 | if errorlevel 1 exit /b 1
118 | echo.
119 | echo.Build finished; now you can run HTML Help Workshop with the ^
120 | .hhp project file in %BUILDDIR%/htmlhelp.
121 | goto end
122 | )
123 |
124 | if "%1" == "qthelp" (
125 | %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
126 | if errorlevel 1 exit /b 1
127 | echo.
128 | echo.Build finished; now you can run "qcollectiongenerator" with the ^
129 | .qhcp project file in %BUILDDIR%/qthelp, like this:
130 | echo.^> qcollectiongenerator %BUILDDIR%\qthelp\SimpleSBML.qhcp
131 | echo.To view the help file:
132 | echo.^> assistant -collectionFile %BUILDDIR%\qthelp\SimpleSBML.ghc
133 | goto end
134 | )
135 |
136 | if "%1" == "devhelp" (
137 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
138 | if errorlevel 1 exit /b 1
139 | echo.
140 | echo.Build finished.
141 | goto end
142 | )
143 |
144 | if "%1" == "epub" (
145 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
146 | if errorlevel 1 exit /b 1
147 | echo.
148 | echo.Build finished. The epub file is in %BUILDDIR%/epub.
149 | goto end
150 | )
151 |
152 | if "%1" == "latex" (
153 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
154 | if errorlevel 1 exit /b 1
155 | echo.
156 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
157 | goto end
158 | )
159 |
160 | if "%1" == "latexpdf" (
161 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
162 | cd %BUILDDIR%/latex
163 | make all-pdf
164 | cd %~dp0
165 | echo.
166 | echo.Build finished; the PDF files are in %BUILDDIR%/latex.
167 | goto end
168 | )
169 |
170 | if "%1" == "latexpdfja" (
171 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
172 | cd %BUILDDIR%/latex
173 | make all-pdf-ja
174 | cd %~dp0
175 | echo.
176 | echo.Build finished; the PDF files are in %BUILDDIR%/latex.
177 | goto end
178 | )
179 |
180 | if "%1" == "text" (
181 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
182 | if errorlevel 1 exit /b 1
183 | echo.
184 | echo.Build finished. The text files are in %BUILDDIR%/text.
185 | goto end
186 | )
187 |
188 | if "%1" == "man" (
189 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
190 | if errorlevel 1 exit /b 1
191 | echo.
192 | echo.Build finished. The manual pages are in %BUILDDIR%/man.
193 | goto end
194 | )
195 |
196 | if "%1" == "texinfo" (
197 | %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
198 | if errorlevel 1 exit /b 1
199 | echo.
200 | echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
201 | goto end
202 | )
203 |
204 | if "%1" == "gettext" (
205 | %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
206 | if errorlevel 1 exit /b 1
207 | echo.
208 | echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
209 | goto end
210 | )
211 |
212 | if "%1" == "changes" (
213 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
214 | if errorlevel 1 exit /b 1
215 | echo.
216 | echo.The overview file is in %BUILDDIR%/changes.
217 | goto end
218 | )
219 |
220 | if "%1" == "linkcheck" (
221 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
222 | if errorlevel 1 exit /b 1
223 | echo.
224 | echo.Link check complete; look for any errors in the above output ^
225 | or in %BUILDDIR%/linkcheck/output.txt.
226 | goto end
227 | )
228 |
229 | if "%1" == "doctest" (
230 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
231 | if errorlevel 1 exit /b 1
232 | echo.
233 | echo.Testing of doctests in the sources finished, look at the ^
234 | results in %BUILDDIR%/doctest/output.txt.
235 | goto end
236 | )
237 |
238 | if "%1" == "coverage" (
239 | %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
240 | if errorlevel 1 exit /b 1
241 | echo.
242 | echo.Testing of coverage in the sources finished, look at the ^
243 | results in %BUILDDIR%/coverage/python.txt.
244 | goto end
245 | )
246 |
247 | if "%1" == "xml" (
248 | %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
249 | if errorlevel 1 exit /b 1
250 | echo.
251 | echo.Build finished. The XML files are in %BUILDDIR%/xml.
252 | goto end
253 | )
254 |
255 | if "%1" == "pseudoxml" (
256 | %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
257 | if errorlevel 1 exit /b 1
258 | echo.
259 | echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
260 | goto end
261 | )
262 |
263 | :end
264 |
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line.
5 | SPHINXOPTS =
6 | SPHINXBUILD = sphinx-build
7 | PAPER =
8 | BUILDDIR = build
9 |
10 | # User-friendly check for sphinx-build
11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
13 | endif
14 |
15 | # Internal variables.
16 | PAPEROPT_a4 = -D latex_paper_size=a4
17 | PAPEROPT_letter = -D latex_paper_size=letter
18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
19 | # the i18n builder cannot share the environment and doctrees with the others
20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
21 |
22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
23 |
24 | help:
25 | @echo "Please use \`make ' where is one of"
26 | @echo " html to make standalone HTML files"
27 | @echo " dirhtml to make HTML files named index.html in directories"
28 | @echo " singlehtml to make a single large HTML file"
29 | @echo " pickle to make pickle files"
30 | @echo " json to make JSON files"
31 | @echo " htmlhelp to make HTML files and a HTML help project"
32 | @echo " qthelp to make HTML files and a qthelp project"
33 | @echo " applehelp to make an Apple Help Book"
34 | @echo " devhelp to make HTML files and a Devhelp project"
35 | @echo " epub to make an epub"
36 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
37 | @echo " latexpdf to make LaTeX files and run them through pdflatex"
38 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
39 | @echo " text to make text files"
40 | @echo " man to make manual pages"
41 | @echo " texinfo to make Texinfo files"
42 | @echo " info to make Texinfo files and run them through makeinfo"
43 | @echo " gettext to make PO message catalogs"
44 | @echo " changes to make an overview of all changed/added/deprecated items"
45 | @echo " xml to make Docutils-native XML files"
46 | @echo " pseudoxml to make pseudoxml-XML files for display purposes"
47 | @echo " linkcheck to check all external links for integrity"
48 | @echo " doctest to run all doctests embedded in the documentation (if enabled)"
49 | @echo " coverage to run coverage check of the documentation (if enabled)"
50 |
51 | clean:
52 | rm -rf $(BUILDDIR)/*
53 |
54 | html:
55 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
56 | @echo
57 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
58 |
59 | dirhtml:
60 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
61 | @echo
62 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
63 |
64 | singlehtml:
65 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
66 | @echo
67 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
68 |
69 | pickle:
70 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
71 | @echo
72 | @echo "Build finished; now you can process the pickle files."
73 |
74 | json:
75 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
76 | @echo
77 | @echo "Build finished; now you can process the JSON files."
78 |
79 | htmlhelp:
80 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
81 | @echo
82 | @echo "Build finished; now you can run HTML Help Workshop with the" \
83 | ".hhp project file in $(BUILDDIR)/htmlhelp."
84 |
85 | qthelp:
86 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
87 | @echo
88 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \
89 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
90 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SimpleSBML.qhcp"
91 | @echo "To view the help file:"
92 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SimpleSBML.qhc"
93 |
94 | applehelp:
95 | $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
96 | @echo
97 | @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
98 | @echo "N.B. You won't be able to view it unless you put it in" \
99 | "~/Library/Documentation/Help or install it in your application" \
100 | "bundle."
101 |
102 | devhelp:
103 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
104 | @echo
105 | @echo "Build finished."
106 | @echo "To view the help file:"
107 | @echo "# mkdir -p $$HOME/.local/share/devhelp/SimpleSBML"
108 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SimpleSBML"
109 | @echo "# devhelp"
110 |
111 | epub:
112 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
113 | @echo
114 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
115 |
116 | latex:
117 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
118 | @echo
119 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
120 | @echo "Run \`make' in that directory to run these through (pdf)latex" \
121 | "(use \`make latexpdf' here to do that automatically)."
122 |
123 | latexpdf:
124 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
125 | @echo "Running LaTeX files through pdflatex..."
126 | $(MAKE) -C $(BUILDDIR)/latex all-pdf
127 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
128 |
129 | latexpdfja:
130 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
131 | @echo "Running LaTeX files through platex and dvipdfmx..."
132 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
133 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
134 |
135 | text:
136 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
137 | @echo
138 | @echo "Build finished. The text files are in $(BUILDDIR)/text."
139 |
140 | man:
141 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
142 | @echo
143 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
144 |
145 | texinfo:
146 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
147 | @echo
148 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
149 | @echo "Run \`make' in that directory to run these through makeinfo" \
150 | "(use \`make info' here to do that automatically)."
151 |
152 | info:
153 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
154 | @echo "Running Texinfo files through makeinfo..."
155 | make -C $(BUILDDIR)/texinfo info
156 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
157 |
158 | gettext:
159 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
160 | @echo
161 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
162 |
163 | changes:
164 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
165 | @echo
166 | @echo "The overview file is in $(BUILDDIR)/changes."
167 |
168 | linkcheck:
169 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
170 | @echo
171 | @echo "Link check complete; look for any errors in the above output " \
172 | "or in $(BUILDDIR)/linkcheck/output.txt."
173 |
174 | doctest:
175 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
176 | @echo "Testing of doctests in the sources finished, look at the " \
177 | "results in $(BUILDDIR)/doctest/output.txt."
178 |
179 | coverage:
180 | $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
181 | @echo "Testing of coverage in the sources finished, look at the " \
182 | "results in $(BUILDDIR)/coverage/python.txt."
183 |
184 | xml:
185 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
186 | @echo
187 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
188 |
189 | pseudoxml:
190 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
191 | @echo
192 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
193 |
--------------------------------------------------------------------------------
/docs/build/html/_sources/index.rst.txt:
--------------------------------------------------------------------------------
1 | .. SimpleSBML documentation master file, created by
2 | sphinx-quickstart on Mon Mar 30 17:50:17 2015.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | .. module:: simplesbml
7 |
8 | =======================================================
9 | Welcome to the SimpleSBML documentation for Version 2.0
10 | =======================================================
11 |
12 | This page describes the SimpleSBML package and its contents. To install
13 | SimpleSBML, go to
14 | https://github.com/sys-bio/simplesbml
15 | .
16 |
17 | To see the documentation for libSBML, go to
18 | http://sbml.org/Software/libSBML/docs/python-api/index.html
19 | .
20 |
21 | To read more about SBML (Systems Biology Markup Language), go to
22 | http://sbml.org/Main_Page
23 | .
24 |
25 | --------
26 | Overview
27 | --------
28 |
29 | SimpleSBML is a package that can be used to construct biological models in
30 | SBML format using Python without interacting directly with the libSBML package. Using
31 | libSBML to build models can be difficult and complicated, even when the model
32 | is relatively simple, and it can take time for a user to learn how to use the
33 | package properly. This package is intended as an intuitive interface for
34 | users who are not already familiar with libSBML. It can be used to construct
35 | models with only a few lines of code, print out the resulting models in SBML
36 | format, and simplify existing models in SBML format by finding the SimpleSBML
37 | methods that can be used to build a libSBML version of the model.
38 |
39 | --------
40 | Examples
41 | --------
42 |
43 | Example models are taken from the SBML Level 3 Version 1 documentation.
44 |
45 | Here is an example of a simple reaction-based model built with SbmlModel::
46 |
47 | import simplesbml
48 | model = simplesbml.SbmlModel()
49 | model.addCompartment(1e-14, comp_id='comp')
50 | model.addSpecies('E', 5e-21, comp='comp')
51 | model.addSpecies('S', 1e-20, comp='comp')
52 | model.addSpecies('P', 0.0, comp='comp')
53 | model.addSpecies('ES', 0.0, comp='comp')
54 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
55 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
56 |
57 | In this example, reaction rate constants are stored locally with the reactions where they are used. It is also possible to define global parameters and use them in reaction expressions. Here is an example of this usage::
58 |
59 | import simplesbml
60 | model = simplesbml.SbmlModel()
61 | model.addCompartment(1e-14, comp_id='comp')
62 | model.addSpecies('E', 5e-21, comp='comp')
63 | model.addSpecies('S', 1e-20, comp='comp')
64 | model.addSpecies('P', 0.0, comp='comp')
65 | model.addSpecies('ES', 0.0, comp='comp')
66 | model.addParameter('koff', 0.2)
67 | model.addParameter('kon', 1000000.0)
68 | model.addParameter('kcat', 0.1)
69 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', rxn_id='veq')
70 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', rxn_id='vcat')
71 |
72 | SbmlModel also supports the use of events to change the system state under certain conditions, and the use of assignment rules and rate rules to explicitly define variable values as a function of the system state. Here is an example of events and rate rules. In this example, the value of parameter G2 is instantaneously determined by the relationship between P1 and tau, and the rates of change of P1 and P2 are explicitly defined in equation form instead of with a reaction::
73 |
74 | import simplesbml
75 | model = simplesbml.SbmlModel()
76 | model.addCompartment(vol=1.0, comp_id='cell')
77 | model.addSpecies('[P1]', 0.0, comp='cell')
78 | model.addSpecies('[P2]', 0.0, comp='cell')
79 | model.addParameter('k1', 1.0)
80 | model.addParameter('k2', 1.0)
81 | model.addParameter('tau', 0.25)
82 | model.addParameter('G1', 1.0)
83 | model.addParameter('G2', 0.0)
84 | model.addEvent(trigger='P1 > tau', assignments={'G2': '1'})
85 | model.addEvent(trigger='P1 <= tau', assignments={'G2': '0'})
86 | model.addRateRule('P1', 'k1 * (G1 - P1)')
87 | model.addRateRule('P2', 'k2 * (G2 - P2)')
88 |
89 | Users can edit existing models with the writeCode() method, which accepts an SBML document and produces a script of SimpleSBML commands in string format. This method converts the SBML document into a libSBML Model and scans through its elements, adding lines of code for each SimpleSBML-compatible element it finds. The output can be saved to a .py file and edited to create new models based on the original import. For instance, here is an example of a short script that reproduces the SimpleSBML code to reproduce an SbmlModel object::
90 |
91 | import simplesbml
92 | model = simplesbml.SbmlModel()
93 | model.addCompartment(1e-14, comp_id='comp')
94 | model.addSpecies('E', 5e-21, comp='comp')
95 | model.addSpecies('S', 1e-20, comp='comp')
96 | model.addSpecies('P', 0.0, comp='comp')
97 | model.addSpecies('ES', 0.0, comp='comp')
98 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
99 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
100 |
101 | code = simplesbml.writeCodeFromString(model.toSBML())
102 | f = open('example_code.py', 'w')
103 | f.write(code)
104 | f.close()
105 |
106 | The output saved to 'example_code.py' will look like this::
107 |
108 | import simplesbml
109 | model = simplesbml.SbmlModel(sub_units='')
110 | model.addCompartment(vol=1e-14, comp_id='comp')
111 | model.addSpecies(species_id='E', amt=5e-21, comp='comp')
112 | model.addSpecies(species_id='S', amt=1e-20, comp='comp')
113 | model.addSpecies(species_id='P', amt=0.0, comp='comp')
114 | model.addSpecies(species_id='ES', amt=0.0, comp='comp')
115 | model.addReaction(reactants=['E', 'S'], products=['ES'], expression='comp * (kon * E * S - koff * ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
116 | model.addReaction(reactants=['ES'], products=['E', 'P'], expression='comp * kcat * ES', local_params={'kcat': 0.1}, rxn_id='vcat')
117 |
118 | Examples of Interrogating an Existing Model
119 | ============================================
120 |
121 | Verison 2.0.0 has a set of new 'get' methods that allows a user to easily interrogate a model for its contents.::
122 |
123 | import simplesbml
124 | mymodel = loadFromFile ('mymodel.xml') # Load the model into a string variable
125 | model = simplesbml.loadSBMLStr(mymodel)
126 |
127 | # Or:
128 |
129 | model = simplesbml.loadSBMLFile('mymodel.xml')
130 |
131 | # Or of you're using the Tellurium package:
132 |
133 | model = simplesbml.loadSBMLStr(r.getSBML())
134 |
135 | print ('Num compartmetns = ', s.getNumCompartmentIds())
136 | print ('Num parameters =', s.getNumParameters())
137 | print ('Num species =', s.getNumSpecies())
138 | print ('Num floating species = ', s.getNumFloatingSpecies())
139 | print ('Num floating species = ', s.getNumBoundarySpecies())
140 | print ('Num reactions = ', s.getNumReactions())
141 | print (s.getListOfCompartments())
142 | print (s.getListOfAllSpecies())
143 | print ('list of floating species = ', s.getListOfFloatingSpecies())
144 | print ('list of boundary species = ', s.getListOfBoundarySpecies())
145 | print ('List of reactions = ', s.getListOfReactionIds())
146 | print ('List of rules = ', s.getListOfRuleIds())
147 |
148 | Here is an example script that uses simplesbml to create a stoichiometry matrix for a model::
149 |
150 | import tellurium as te, simplesbml, numpy as np
151 |
152 | r = te.loada("""
153 | S0 + S3 -> S2; k0*S0*S3;
154 | S3 + S2 -> S0; k1*S3*S2;
155 | S5 -> S2 + S4; k2*S5;
156 | S0 + S1 -> S3; k3*S0*S1;
157 | S5 -> S0 + S4; k4*S5;
158 | S0 -> S5; k5*S0;
159 | S1 + S1 -> S5; k6*S1*S1;
160 | S3 + S5 -> S1; k7*S3*S5;
161 | S1 -> $S4 + S4; k8*S1;
162 |
163 | S0 = 0; S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0;
164 | k0 = 0; k1 = 0; k2 = 0; k3 = 0; k4 = 0
165 | k5 = 0; k6 = 0; k7 = 0; k8 = 0
166 | """)
167 |
168 | model = simplesbml.loadSBMLStr(r.getSBML())
169 |
170 | # Allocate space for the stoichiometry matrix
171 | stoich = np.zeros((model.getNumFloatingSpecies(), model.getNumReactions()))
172 | for i in range (model.getNumFloatingSpecies()):
173 | floatingSpeciesId = model.getNthFloatingSpeciesId (i)
174 |
175 | for j in range (model.getNumReactions()):
176 | productStoichiometry = 0; reactantStoichiometry = 0
177 |
178 | numProducts = model.getNumProducts (j)
179 | for k1 in range (numProducts):
180 | productId = model.getProduct (j, k1)
181 |
182 | if (floatingSpeciesId == productId):
183 | productStoichiometry += model.getProductStoichiometry (j, k1)
184 |
185 | numReactants = model.getNumReactants(j)
186 | for k1 in range (numReactants):
187 | reactantId = model.getReactant (j, k1)
188 | if (floatingSpeciesId == reactantId):
189 | reactantStoichiometry += model.getReactantStoichiometry (j, k1)
190 |
191 | st = int(productStoichiometry - reactantStoichiometry)
192 | stoich[i,j] = st
193 |
194 | print (stoich)
195 |
196 | -------------------
197 | Tests and Examples
198 | -------------------
199 |
200 | Two test files can be found in the tests folder. The runTest.py is the more formal testing file. It was decided not to use the Python unittest due to its limitations and pyTest simply made the code unmanagable. A simple test system was therefore created. To run the tests just execute runTests.py. Make sure you have libsbml installed or are running the code under Tellurium.
201 |
202 | -------------------
203 | Classes and Methods
204 | -------------------
205 |
206 | .. automodule:: simplesbml
207 | :members:
208 | :member-order: bysource
209 |
210 |
--------------------------------------------------------------------------------
/docs/source/index.rst:
--------------------------------------------------------------------------------
1 | .. SimpleSBML documentation master file, created by
2 | sphinx-quickstart on Mon Mar 30 17:50:17 2015.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | .. module:: simplesbml
7 |
8 | =======================================================
9 | Welcome to the SimpleSBML documentation: Version 2.0
10 | =======================================================
11 |
12 | This page describes the SimpleSBML package and its contents. To install
13 | SimpleSBML, go to
14 | https://github.com/sys-bio/simplesbml
15 | .
16 |
17 | To see the documentation for libSBML, go to
18 | http://sbml.org/Software/libSBML/docs/python-api/index.html
19 | .
20 |
21 | To read more about SBML (Systems Biology Markup Language), go to
22 | http://sbml.org/Main_Page
23 | .
24 |
25 | --------
26 | Overview
27 | --------
28 |
29 | SimpleSBML is a package that can be used to construct biological models in
30 | SBML format using Python without interacting directly with the libSBML package. Using
31 | libSBML to build models can be difficult and complicated, even when the model
32 | is relatively simple, and it can take time for a user to learn how to use the
33 | package properly. This package is intended as an intuitive interface for
34 | users who are not already familiar with libSBML. It can be used to construct
35 | models with only a few lines of code, print out the resulting models in SBML
36 | format, and edit existing models in SBML format.
37 |
38 | --------
39 | Examples
40 | --------
41 |
42 | Example models are taken from the SBML Level 3 Version 1 documentation.
43 |
44 | Here is an example of a simple reaction-based model built with SbmlModel::
45 |
46 | import simplesbml
47 | model = simplesbml.SbmlModel()
48 | model.addCompartment(1e-14, comp_id='comp')
49 | model.addSpecies('E', 5e-21, comp='comp')
50 | model.addSpecies('S', 1e-20, comp='comp')
51 | model.addSpecies('P', 0.0, comp='comp')
52 | model.addSpecies('ES', 0.0, comp='comp')
53 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
54 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
55 |
56 | In this example, reaction rate constants are stored locally with the reactions where they are used. It is also possible to define global parameters and use them in reaction expressions. Here is an example of using global parameters which is the most common use case::
57 |
58 | import simplesbml
59 | model = simplesbml.SbmlModel()
60 | model.addCompartment(1e-14, comp_id='comp')
61 | model.addSpecies('E', 5e-21, comp='comp')
62 | model.addSpecies('S', 1e-20, comp='comp')
63 | model.addSpecies('P', 0.0, comp='comp')
64 | model.addSpecies('ES', 0.0, comp='comp')
65 | model.addParameter('koff', 0.2)
66 | model.addParameter('kon', 1000000.0)
67 | model.addParameter('kcat', 0.1)
68 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', rxn_id='veq')
69 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', rxn_id='vcat')
70 |
71 | SbmlModel also supports the use of events to change the system state under certain conditions, use of assignment rules and rate rules to explicitly
72 | define variable values as a function of the system state. Here is an example of events and rate rules. In this example, the value of parameter G2
73 | is determined by the relationship between P1 and tau, and the rates of change of P1 and P2 are explicitly defined in equation form
74 | instead of with a reaction::
75 |
76 | import simplesbml
77 | model = simplesbml.SbmlModel()
78 | model.addCompartment(vol=1.0, comp_id='cell')
79 | model.addSpecies('[P1]', 0.0, comp='cell')
80 | model.addSpecies('[P2]', 0.0, comp='cell')
81 | model.addParameter('k1', 1.0)
82 | model.addParameter('k2', 1.0)
83 | model.addParameter('tau', 0.25)
84 | model.addParameter('G1', 1.0)
85 | model.addParameter('G2', 0.0)
86 | model.addEvent(trigger='P1 > tau', assignments={'G2': '1'})
87 | model.addEvent(trigger='P1 <= tau', assignments={'G2': '0'})
88 | model.addRateRule('P1', 'k1 * (G1 - P1)')
89 | model.addRateRule('P2', 'k2 * (G2 - P2)')
90 |
91 | Users can edit existing models with the writeCode() method which accepts an SBML document and produces a script of
92 | SimpleSBML commands in string format. This method converts the SBML document into a libSBML Model and scans through
93 | its elements, adding lines of code for each SimpleSBML-compatible element it finds. The output can be saved to a .py file
94 | and edited to create new models based on the original import. This can be very useful for editing existing SBML models. For instance,
95 | here is an example of a short script that reproduces the SimpleSBML to reproduce an SbmlModel object::
96 |
97 | import simplesbml
98 | model = simplesbml.SbmlModel()
99 | model.addCompartment(1e-14, comp_id='comp')
100 | model.addSpecies('E', 5e-21, comp='comp')
101 | model.addSpecies('S', 1e-20, comp='comp')
102 | model.addSpecies('P', 0.0, comp='comp')
103 | model.addSpecies('ES', 0.0, comp='comp')
104 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
105 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
106 |
107 | # Load the sbml model and output the equivalent simplesbml scipt
108 | code = simplesbml.writeCodeFromString(model.toSBML())
109 | f = open('example_code.py', 'w')
110 | f.write(code)
111 | f.close()
112 |
113 | The output saved to 'example_code.py' will look like this::
114 |
115 | import simplesbml
116 | model = simplesbml.SbmlModel(sub_units='')
117 | model.addCompartment(vol=1e-14, comp_id='comp')
118 | model.addSpecies(species_id='E', amt=5e-21, comp='comp')
119 | model.addSpecies(species_id='S', amt=1e-20, comp='comp')
120 | model.addSpecies(species_id='P', amt=0.0, comp='comp')
121 | model.addSpecies(species_id='ES', amt=0.0, comp='comp')
122 | model.addReaction(reactants=['E', 'S'], products=['ES'], expression='comp * (kon * E * S - koff * ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
123 | model.addReaction(reactants=['ES'], products=['E', 'P'], expression='comp * kcat * ES', local_params={'kcat': 0.1}, rxn_id='vcat')
124 |
125 | Examples of Interrogating an Existing Model
126 | ============================================
127 |
128 | Verison 2.0 has a set of new 'get' methods that allows a user to easily interrogate a model for its contents.::
129 |
130 | import simplesbml
131 | mymodel = loadFromFile ('mymodel.xml') # Load the model into a string variable
132 | model = simplesbml.loadSBMLStr(mymodel)
133 |
134 | # Or:
135 |
136 | model = simplesbml.loadSBMLFile('mymodel.xml')
137 |
138 | # Or if you're using the Tellurium package:
139 |
140 | model = simplesbml.loadSBMLStr(r.getSBML())
141 |
142 | print ('Num compartmetns = ', model.getNumCompartmentIds())
143 | print ('Num parameters =', model.getNumParameters())
144 | print ('Num species =', model.getNumSpecies())
145 | print ('Num floating species = ', model.getNumFloatingSpecies())
146 | print ('Num floating species = ', model.getNumBoundarySpecies())
147 | print ('Num reactions = ', model.getNumReactions())
148 | print (model.getListOfCompartments())
149 | print (model.getListOfAllSpecies())
150 | print ('list of floating species = ', model.getListOfFloatingSpecies())
151 | print ('list of boundary species = ', model.getListOfBoundarySpecies())
152 | print ('List of reactions = ', model.getListOfReactionIds())
153 | print ('List of rules = ', model.getListOfRuleIds())
154 |
155 | Here is an example script that uses simplesbml to create a stoichiometry matrix for a model::
156 |
157 | import tellurium as te, simplesbml, numpy as np
158 |
159 | r = te.loada("""
160 | S0 + S3 -> S2; k0*S0*S3;
161 | S3 + S2 -> S0; k1*S3*S2;
162 | S5 -> S2 + S4; k2*S5;
163 | S0 + S1 -> S3; k3*S0*S1;
164 | S5 -> S0 + S4; k4*S5;
165 | S0 -> S5; k5*S0;
166 | S1 + S1 -> S5; k6*S1*S1;
167 | S3 + S5 -> S1; k7*S3*S5;
168 | S1 -> $S4 + S4; k8*S1;
169 |
170 | S0 = 0; S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0;
171 | k0 = 0; k1 = 0; k2 = 0; k3 = 0; k4 = 0
172 | k5 = 0; k6 = 0; k7 = 0; k8 = 0
173 | """)
174 |
175 | model = simplesbml.loadSBMLStr(r.getSBML())
176 |
177 | # Allocate space for the stoichiometry matrix
178 | stoich = np.zeros((model.getNumFloatingSpecies(), model.getNumReactions()))
179 | for i in range (model.getNumFloatingSpecies()):
180 | floatingSpeciesId = model.getNthFloatingSpeciesId (i)
181 |
182 | for j in range (model.getNumReactions()):
183 | productStoichiometry = 0; reactantStoichiometry = 0
184 |
185 | numProducts = model.getNumProducts (j)
186 | for k1 in range (numProducts):
187 | productId = model.getProduct (j, k1)
188 |
189 | if (floatingSpeciesId == productId):
190 | productStoichiometry += model.getProductStoichiometry (j, k1)
191 |
192 | numReactants = model.getNumReactants(j)
193 | for k1 in range (numReactants):
194 | reactantId = model.getReactant (j, k1)
195 | if (floatingSpeciesId == reactantId):
196 | reactantStoichiometry += model.getReactantStoichiometry (j, k1)
197 |
198 | st = int(productStoichiometry - reactantStoichiometry)
199 | stoich[i,j] = st
200 |
201 | print (stoich)
202 |
203 | -------------------
204 | Tests and Examples
205 | -------------------
206 |
207 | Two test files can be found in the tests folder. The runTest.py is the more formal testing file. It was decided not to use the Python unittest due to its limitations
208 | and pyTest simply made the code unmanagable. A simple test system was therefore created. To run the tests just execute runTests.py or more simply::
209 |
210 | simplesbml.tests.run()
211 |
212 | Make sure you have libsbml or Tellurium installed (it can provide libsbml).
213 |
214 | -------------------
215 | Classes and Methods
216 | -------------------
217 |
218 | .. automodule:: simplesbml
219 | :members:
220 | :member-order: bysource
221 |
222 |
--------------------------------------------------------------------------------
/docs/build/html/_static/doctools.js:
--------------------------------------------------------------------------------
1 | /*
2 | * doctools.js
3 | * ~~~~~~~~~~~
4 | *
5 | * Sphinx JavaScript utilities for all documentation.
6 | *
7 | * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
8 | * :license: BSD, see LICENSE for details.
9 | *
10 | */
11 |
12 | /**
13 | * select a different prefix for underscore
14 | */
15 | $u = _.noConflict();
16 |
17 | /**
18 | * make the code below compatible with browsers without
19 | * an installed firebug like debugger
20 | if (!window.console || !console.firebug) {
21 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
22 | "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
23 | "profile", "profileEnd"];
24 | window.console = {};
25 | for (var i = 0; i < names.length; ++i)
26 | window.console[names[i]] = function() {};
27 | }
28 | */
29 |
30 | /**
31 | * small helper function to urldecode strings
32 | */
33 | jQuery.urldecode = function(x) {
34 | return decodeURIComponent(x).replace(/\+/g, ' ');
35 | };
36 |
37 | /**
38 | * small helper function to urlencode strings
39 | */
40 | jQuery.urlencode = encodeURIComponent;
41 |
42 | /**
43 | * This function returns the parsed url parameters of the
44 | * current request. Multiple values per key are supported,
45 | * it will always return arrays of strings for the value parts.
46 | */
47 | jQuery.getQueryParameters = function(s) {
48 | if (typeof s === 'undefined')
49 | s = document.location.search;
50 | var parts = s.substr(s.indexOf('?') + 1).split('&');
51 | var result = {};
52 | for (var i = 0; i < parts.length; i++) {
53 | var tmp = parts[i].split('=', 2);
54 | var key = jQuery.urldecode(tmp[0]);
55 | var value = jQuery.urldecode(tmp[1]);
56 | if (key in result)
57 | result[key].push(value);
58 | else
59 | result[key] = [value];
60 | }
61 | return result;
62 | };
63 |
64 | /**
65 | * highlight a given string on a jquery object by wrapping it in
66 | * span elements with the given class name.
67 | */
68 | jQuery.fn.highlightText = function(text, className) {
69 | function highlight(node, addItems) {
70 | if (node.nodeType === 3) {
71 | var val = node.nodeValue;
72 | var pos = val.toLowerCase().indexOf(text);
73 | if (pos >= 0 &&
74 | !jQuery(node.parentNode).hasClass(className) &&
75 | !jQuery(node.parentNode).hasClass("nohighlight")) {
76 | var span;
77 | var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
78 | if (isInSVG) {
79 | span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
80 | } else {
81 | span = document.createElement("span");
82 | span.className = className;
83 | }
84 | span.appendChild(document.createTextNode(val.substr(pos, text.length)));
85 | node.parentNode.insertBefore(span, node.parentNode.insertBefore(
86 | document.createTextNode(val.substr(pos + text.length)),
87 | node.nextSibling));
88 | node.nodeValue = val.substr(0, pos);
89 | if (isInSVG) {
90 | var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
91 | var bbox = node.parentElement.getBBox();
92 | rect.x.baseVal.value = bbox.x;
93 | rect.y.baseVal.value = bbox.y;
94 | rect.width.baseVal.value = bbox.width;
95 | rect.height.baseVal.value = bbox.height;
96 | rect.setAttribute('class', className);
97 | addItems.push({
98 | "parent": node.parentNode,
99 | "target": rect});
100 | }
101 | }
102 | }
103 | else if (!jQuery(node).is("button, select, textarea")) {
104 | jQuery.each(node.childNodes, function() {
105 | highlight(this, addItems);
106 | });
107 | }
108 | }
109 | var addItems = [];
110 | var result = this.each(function() {
111 | highlight(this, addItems);
112 | });
113 | for (var i = 0; i < addItems.length; ++i) {
114 | jQuery(addItems[i].parent).before(addItems[i].target);
115 | }
116 | return result;
117 | };
118 |
119 | /*
120 | * backward compatibility for jQuery.browser
121 | * This will be supported until firefox bug is fixed.
122 | */
123 | if (!jQuery.browser) {
124 | jQuery.uaMatch = function(ua) {
125 | ua = ua.toLowerCase();
126 |
127 | var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
128 | /(webkit)[ \/]([\w.]+)/.exec(ua) ||
129 | /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
130 | /(msie) ([\w.]+)/.exec(ua) ||
131 | ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
132 | [];
133 |
134 | return {
135 | browser: match[ 1 ] || "",
136 | version: match[ 2 ] || "0"
137 | };
138 | };
139 | jQuery.browser = {};
140 | jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
141 | }
142 |
143 | /**
144 | * Small JavaScript module for the documentation.
145 | */
146 | var Documentation = {
147 |
148 | init : function() {
149 | this.fixFirefoxAnchorBug();
150 | this.highlightSearchWords();
151 | this.initIndexTable();
152 | if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
153 | this.initOnKeyListeners();
154 | }
155 | },
156 |
157 | /**
158 | * i18n support
159 | */
160 | TRANSLATIONS : {},
161 | PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
162 | LOCALE : 'unknown',
163 |
164 | // gettext and ngettext don't access this so that the functions
165 | // can safely bound to a different name (_ = Documentation.gettext)
166 | gettext : function(string) {
167 | var translated = Documentation.TRANSLATIONS[string];
168 | if (typeof translated === 'undefined')
169 | return string;
170 | return (typeof translated === 'string') ? translated : translated[0];
171 | },
172 |
173 | ngettext : function(singular, plural, n) {
174 | var translated = Documentation.TRANSLATIONS[singular];
175 | if (typeof translated === 'undefined')
176 | return (n == 1) ? singular : plural;
177 | return translated[Documentation.PLURALEXPR(n)];
178 | },
179 |
180 | addTranslations : function(catalog) {
181 | for (var key in catalog.messages)
182 | this.TRANSLATIONS[key] = catalog.messages[key];
183 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
184 | this.LOCALE = catalog.locale;
185 | },
186 |
187 | /**
188 | * add context elements like header anchor links
189 | */
190 | addContextElements : function() {
191 | $('div[id] > :header:first').each(function() {
192 | $('\u00B6').
193 | attr('href', '#' + this.id).
194 | attr('title', _('Permalink to this headline')).
195 | appendTo(this);
196 | });
197 | $('dt[id]').each(function() {
198 | $('\u00B6').
199 | attr('href', '#' + this.id).
200 | attr('title', _('Permalink to this definition')).
201 | appendTo(this);
202 | });
203 | },
204 |
205 | /**
206 | * workaround a firefox stupidity
207 | * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
208 | */
209 | fixFirefoxAnchorBug : function() {
210 | if (document.location.hash && $.browser.mozilla)
211 | window.setTimeout(function() {
212 | document.location.href += '';
213 | }, 10);
214 | },
215 |
216 | /**
217 | * highlight the search words provided in the url in the text
218 | */
219 | highlightSearchWords : function() {
220 | var params = $.getQueryParameters();
221 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
222 | if (terms.length) {
223 | var body = $('div.body');
224 | if (!body.length) {
225 | body = $('body');
226 | }
227 | window.setTimeout(function() {
228 | $.each(terms, function() {
229 | body.highlightText(this.toLowerCase(), 'highlighted');
230 | });
231 | }, 10);
232 | $('
')
234 | .appendTo($('#searchbox'));
235 | }
236 | },
237 |
238 | /**
239 | * init the domain index toggle buttons
240 | */
241 | initIndexTable : function() {
242 | var togglers = $('img.toggler').click(function() {
243 | var src = $(this).attr('src');
244 | var idnum = $(this).attr('id').substr(7);
245 | $('tr.cg-' + idnum).toggle();
246 | if (src.substr(-9) === 'minus.png')
247 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
248 | else
249 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
250 | }).css('display', '');
251 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
252 | togglers.click();
253 | }
254 | },
255 |
256 | /**
257 | * helper function to hide the search marks again
258 | */
259 | hideSearchWords : function() {
260 | $('#searchbox .highlight-link').fadeOut(300);
261 | $('span.highlighted').removeClass('highlighted');
262 | },
263 |
264 | /**
265 | * make the url absolute
266 | */
267 | makeURL : function(relativeURL) {
268 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
269 | },
270 |
271 | /**
272 | * get the current relative url
273 | */
274 | getCurrentURL : function() {
275 | var path = document.location.pathname;
276 | var parts = path.split(/\//);
277 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
278 | if (this === '..')
279 | parts.pop();
280 | });
281 | var url = parts.join('/');
282 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
283 | },
284 |
285 | initOnKeyListeners: function() {
286 | $(document).keydown(function(event) {
287 | var activeElementType = document.activeElement.tagName;
288 | // don't navigate when in search box or textarea
289 | if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
290 | && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
291 | switch (event.keyCode) {
292 | case 37: // left
293 | var prevHref = $('link[rel="prev"]').prop('href');
294 | if (prevHref) {
295 | window.location.href = prevHref;
296 | return false;
297 | }
298 | case 39: // right
299 | var nextHref = $('link[rel="next"]').prop('href');
300 | if (nextHref) {
301 | window.location.href = nextHref;
302 | return false;
303 | }
304 | }
305 | }
306 | });
307 | }
308 | };
309 |
310 | // quick alias for translations
311 | _ = Documentation.gettext;
312 |
313 | $(document).ready(function() {
314 | Documentation.init();
315 | });
316 |
--------------------------------------------------------------------------------
/docs/source/conf.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # -*- coding: utf-8 -*-
3 | #
4 | # SimpleSBML documentation build configuration file, created by
5 | # sphinx-quickstart on Wed Apr 1 19:33:27 2015.
6 | #
7 | # This file is execfile()d with the current directory set to its
8 | # containing dir.
9 | #
10 | # Note that not all possible configuration values are present in this
11 | # autogenerated file.
12 | #
13 | # All configuration values have a default; values that are commented out
14 | # serve to show the default.
15 |
16 | import sys
17 | import os
18 | import shlex
19 |
20 | import os
21 | import sys
22 | sys.path.insert(0, os.path.abspath('../../simplesbml'))
23 |
24 | import sphinx_rtd_theme
25 |
26 | # If extensions (or modules to document with autodoc) are in another directory,
27 | # add these directories to sys.path here. If the directory is relative to the
28 | # documentation root, use os.path.abspath to make it absolute, like shown here.
29 | #sys.path.insert(0, os.path.abspath('.'))
30 |
31 | # -- General configuration ------------------------------------------------
32 |
33 | # If your documentation needs a minimal Sphinx version, state it here.
34 | #needs_sphinx = '1.0'
35 |
36 | # Add any Sphinx extension module names here, as strings. They can be
37 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
38 | # ones.
39 | extensions = [
40 | 'sphinx.ext.viewcode',
41 | 'sphinx.ext.autodoc',
42 | ]
43 |
44 | # Add any paths that contain templates here, relative to this directory.
45 | templates_path = ['_templates']
46 |
47 | # The suffix(es) of source filenames.
48 | # You can specify multiple suffix as a list of string:
49 | # source_suffix = ['.rst', '.md']
50 | source_suffix = '.rst'
51 |
52 | # The encoding of source files.
53 | #source_encoding = 'utf-8-sig'
54 |
55 | # The master toctree document.
56 | master_doc = 'index'
57 |
58 | # General information about the project.
59 | project = 'SimpleSBML'
60 | copyright = '2015, 2021, Caroline Cannistra, Kyle Medley, Herbert Sauro'
61 | author = 'Caroline Cannistra, Kyle medley, Herbert Sauro'
62 |
63 | # The version info for the project you're documenting, acts as replacement for
64 | # |version| and |release|, also used in various other places throughout the
65 | # built documents.
66 | #
67 | # The short X.Y version.
68 | version = '2.3.0'
69 | # The full version, including alpha/beta/rc tags.
70 | release = '2.3.0'
71 |
72 | # The language for content autogenerated by Sphinx. Refer to documentation
73 | # for a list of supported languages.
74 | #
75 | # This is also used if you do content translation via gettext catalogs.
76 | # Usually you set "language" from the command line for these cases.
77 | language = None
78 |
79 | # There are two options for replacing |today|: either, you set today to some
80 | # non-false value, then it is used:
81 | #today = ''
82 | # Else, today_fmt is used as the format for a strftime call.
83 | #today_fmt = '%B %d, %Y'
84 |
85 | # List of patterns, relative to source directory, that match files and
86 | # directories to ignore when looking for source files.
87 | exclude_patterns = []
88 |
89 | # The reST default role (used for this markup: `text`) to use for all
90 | # documents.
91 | #default_role = None
92 |
93 | # If true, '()' will be appended to :func: etc. cross-reference text.
94 | #add_function_parentheses = True
95 |
96 | # If true, the current module name will be prepended to all description
97 | # unit titles (such as .. function::).
98 | #add_module_names = True
99 |
100 | # If true, sectionauthor and moduleauthor directives will be shown in the
101 | # output. They are ignored by default.
102 | #show_authors = False
103 |
104 | # The name of the Pygments (syntax highlighting) style to use.
105 | pygments_style = 'sphinx'
106 |
107 | # A list of ignored prefixes for module index sorting.
108 | #modindex_common_prefix = []
109 |
110 | # If true, keep warnings as "system message" paragraphs in the built documents.
111 | #keep_warnings = False
112 |
113 | # If true, `todo` and `todoList` produce output, else they produce nothing.
114 | todo_include_todos = False
115 |
116 |
117 | # -- Options for HTML output ----------------------------------------------
118 |
119 | # The theme to use for HTML and HTML Help pages. See the documentation for
120 | # a list of builtin themes.
121 | html_theme = 'sphinx_rtd_theme'
122 |
123 | # Theme options are theme-specific and customize the look and feel of a theme
124 | # further. For a list of options available for each theme, see the
125 | # documentation.
126 | #html_theme_options = {}
127 |
128 | # Add any paths that contain custom themes here, relative to this directory.
129 | html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
130 |
131 | # The name for this set of Sphinx documents. If None, it defaults to
132 | # " v documentation".
133 | #html_title = None
134 |
135 | # A shorter title for the navigation bar. Default is the same as html_title.
136 | #html_short_title = None
137 |
138 | # The name of an image file (relative to this directory) to place at the top
139 | # of the sidebar.
140 | #html_logo = None
141 |
142 | # The name of an image file (within the static path) to use as favicon of the
143 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
144 | # pixels large.
145 | #html_favicon = None
146 |
147 | # Add any paths that contain custom static files (such as style sheets) here,
148 | # relative to this directory. They are copied after the builtin static files,
149 | # so a file named "default.css" will overwrite the builtin "default.css".
150 | html_static_path = []
151 |
152 | # Add any extra paths that contain custom files (such as robots.txt or
153 | # .htaccess) here, relative to this directory. These files are copied
154 | # directly to the root of the documentation.
155 | #html_extra_path = []
156 |
157 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
158 | # using the given strftime format.
159 | #html_last_updated_fmt = '%b %d, %Y'
160 |
161 | # If true, SmartyPants will be used to convert quotes and dashes to
162 | # typographically correct entities.
163 | #html_use_smartypants = True
164 |
165 | # Custom sidebar templates, maps document names to template names.
166 | #html_sidebars = {}
167 |
168 | # Additional templates that should be rendered to pages, maps page names to
169 | # template names.
170 | #html_additional_pages = {}
171 |
172 | # If false, no module index is generated.
173 | #html_domain_indices = True
174 |
175 | # If false, no index is generated.
176 | #html_use_index = True
177 |
178 | # If true, the index is split into individual pages for each letter.
179 | #html_split_index = False
180 |
181 | # If true, links to the reST sources are added to the pages.
182 | #html_show_sourcelink = True
183 |
184 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
185 | #html_show_sphinx = True
186 |
187 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
188 | #html_show_copyright = True
189 |
190 | # If true, an OpenSearch description file will be output, and all pages will
191 | # contain a tag referring to it. The value of this option must be the
192 | # base URL from which the finished HTML is served.
193 | #html_use_opensearch = ''
194 |
195 | # This is the file name suffix for HTML files (e.g. ".xhtml").
196 | #html_file_suffix = None
197 |
198 | # Language to be used for generating the HTML full-text search index.
199 | # Sphinx supports the following languages:
200 | # 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
201 | # 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
202 | #html_search_language = 'en'
203 |
204 | # A dictionary with options for the search language support, empty by default.
205 | # Now only 'ja' uses this config value
206 | #html_search_options = {'type': 'default'}
207 |
208 | # The name of a javascript file (relative to the configuration directory) that
209 | # implements a search results scorer. If empty, the default will be used.
210 | #html_search_scorer = 'scorer.js'
211 |
212 | # Output file base name for HTML help builder.
213 | htmlhelp_basename = 'SimpleSBMLdoc'
214 |
215 | # -- Options for LaTeX output ---------------------------------------------
216 |
217 | latex_elements = {
218 | # The paper size ('letterpaper' or 'a4paper').
219 | #'papersize': 'letterpaper',
220 |
221 | # The font size ('10pt', '11pt' or '12pt').
222 | #'pointsize': '10pt',
223 |
224 | # Additional stuff for the LaTeX preamble.
225 | #'preamble': '',
226 |
227 | # Latex figure (float) alignment
228 | #'figure_align': 'htbp',
229 | }
230 |
231 | # Grouping the document tree into LaTeX files. List of tuples
232 | # (source start file, target name, title,
233 | # author, documentclass [howto, manual, or own class]).
234 | latex_documents = [
235 | (master_doc, 'SimpleSBML.tex', u'SimpleSBML Documentation',
236 | u'Caroline Cannistra, Kyle Medley', 'manual'),
237 | ]
238 |
239 | # The name of an image file (relative to this directory) to place at the top of
240 | # the title page.
241 | #latex_logo = None
242 |
243 | # For "manual" documents, if this is true, then toplevel headings are parts,
244 | # not chapters.
245 | #latex_use_parts = False
246 |
247 | # If true, show page references after internal links.
248 | #latex_show_pagerefs = False
249 |
250 | # If true, show URL addresses after external links.
251 | #latex_show_urls = False
252 |
253 | # Documents to append as an appendix to all manuals.
254 | #latex_appendices = []
255 |
256 | # If false, no module index is generated.
257 | #latex_domain_indices = True
258 |
259 |
260 | # -- Options for manual page output ---------------------------------------
261 |
262 | # One entry per manual page. List of tuples
263 | # (source start file, name, description, authors, manual section).
264 | man_pages = [
265 | (master_doc, 'simplesbml', u'SimpleSBML Documentation',
266 | [author], 1)
267 | ]
268 |
269 | # If true, show URL addresses after external links.
270 | #man_show_urls = False
271 |
272 |
273 | # -- Options for Texinfo output -------------------------------------------
274 |
275 | # Grouping the document tree into Texinfo files. List of tuples
276 | # (source start file, target name, title, author,
277 | # dir menu entry, description, category)
278 | texinfo_documents = [
279 | (master_doc, 'SimpleSBML', u'SimpleSBML Documentation',
280 | author, 'SimpleSBML', 'Simplified SBML model creation commands.',
281 | 'Miscellaneous'),
282 | ]
283 |
284 | # Documents to append as an appendix to all manuals.
285 | #texinfo_appendices = []
286 |
287 | # If false, no module index is generated.
288 | #texinfo_domain_indices = True
289 |
290 | # How to display URL addresses: 'footnote', 'no', or 'inline'.
291 | #texinfo_show_urls = 'footnote'
292 |
293 | # If true, do not generate a @detailmenu in the "Top" node's menu.
294 | #texinfo_no_detailmenu = False
295 |
--------------------------------------------------------------------------------
/docs/build/html/_static/underscore.js:
--------------------------------------------------------------------------------
1 | // Underscore.js 1.3.1
2 | // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
3 | // Underscore is freely distributable under the MIT license.
4 | // Portions of Underscore are inspired or borrowed from Prototype,
5 | // Oliver Steele's Functional, and John Resig's Micro-Templating.
6 | // For all details and documentation:
7 | // http://documentcloud.github.com/underscore
8 | (function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
9 | c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
10 | h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
11 | b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a==
12 | null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
13 | function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
14 | e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
15 | function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
17 | c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}};
24 | b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
25 | 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
26 | b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
27 | b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
28 | function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
29 | u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
30 | function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
31 | true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
32 |
--------------------------------------------------------------------------------
/docs/build/html/_static/language_data.js:
--------------------------------------------------------------------------------
1 | /*
2 | * language_data.js
3 | * ~~~~~~~~~~~~~~~~
4 | *
5 | * This script contains the language-specific data used by searchtools.js,
6 | * namely the list of stopwords, stemmer, scorer and splitter.
7 | *
8 | * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
9 | * :license: BSD, see LICENSE for details.
10 | *
11 | */
12 |
13 | var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
14 |
15 |
16 | /* Non-minified version JS is _stemmer.js if file is provided */
17 | /**
18 | * Porter Stemmer
19 | */
20 | var Stemmer = function() {
21 |
22 | var step2list = {
23 | ational: 'ate',
24 | tional: 'tion',
25 | enci: 'ence',
26 | anci: 'ance',
27 | izer: 'ize',
28 | bli: 'ble',
29 | alli: 'al',
30 | entli: 'ent',
31 | eli: 'e',
32 | ousli: 'ous',
33 | ization: 'ize',
34 | ation: 'ate',
35 | ator: 'ate',
36 | alism: 'al',
37 | iveness: 'ive',
38 | fulness: 'ful',
39 | ousness: 'ous',
40 | aliti: 'al',
41 | iviti: 'ive',
42 | biliti: 'ble',
43 | logi: 'log'
44 | };
45 |
46 | var step3list = {
47 | icate: 'ic',
48 | ative: '',
49 | alize: 'al',
50 | iciti: 'ic',
51 | ical: 'ic',
52 | ful: '',
53 | ness: ''
54 | };
55 |
56 | var c = "[^aeiou]"; // consonant
57 | var v = "[aeiouy]"; // vowel
58 | var C = c + "[^aeiouy]*"; // consonant sequence
59 | var V = v + "[aeiou]*"; // vowel sequence
60 |
61 | var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
62 | var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
63 | var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
64 | var s_v = "^(" + C + ")?" + v; // vowel in stem
65 |
66 | this.stemWord = function (w) {
67 | var stem;
68 | var suffix;
69 | var firstch;
70 | var origword = w;
71 |
72 | if (w.length < 3)
73 | return w;
74 |
75 | var re;
76 | var re2;
77 | var re3;
78 | var re4;
79 |
80 | firstch = w.substr(0,1);
81 | if (firstch == "y")
82 | w = firstch.toUpperCase() + w.substr(1);
83 |
84 | // Step 1a
85 | re = /^(.+?)(ss|i)es$/;
86 | re2 = /^(.+?)([^s])s$/;
87 |
88 | if (re.test(w))
89 | w = w.replace(re,"$1$2");
90 | else if (re2.test(w))
91 | w = w.replace(re2,"$1$2");
92 |
93 | // Step 1b
94 | re = /^(.+?)eed$/;
95 | re2 = /^(.+?)(ed|ing)$/;
96 | if (re.test(w)) {
97 | var fp = re.exec(w);
98 | re = new RegExp(mgr0);
99 | if (re.test(fp[1])) {
100 | re = /.$/;
101 | w = w.replace(re,"");
102 | }
103 | }
104 | else if (re2.test(w)) {
105 | var fp = re2.exec(w);
106 | stem = fp[1];
107 | re2 = new RegExp(s_v);
108 | if (re2.test(stem)) {
109 | w = stem;
110 | re2 = /(at|bl|iz)$/;
111 | re3 = new RegExp("([^aeiouylsz])\\1$");
112 | re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
113 | if (re2.test(w))
114 | w = w + "e";
115 | else if (re3.test(w)) {
116 | re = /.$/;
117 | w = w.replace(re,"");
118 | }
119 | else if (re4.test(w))
120 | w = w + "e";
121 | }
122 | }
123 |
124 | // Step 1c
125 | re = /^(.+?)y$/;
126 | if (re.test(w)) {
127 | var fp = re.exec(w);
128 | stem = fp[1];
129 | re = new RegExp(s_v);
130 | if (re.test(stem))
131 | w = stem + "i";
132 | }
133 |
134 | // Step 2
135 | re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
136 | if (re.test(w)) {
137 | var fp = re.exec(w);
138 | stem = fp[1];
139 | suffix = fp[2];
140 | re = new RegExp(mgr0);
141 | if (re.test(stem))
142 | w = stem + step2list[suffix];
143 | }
144 |
145 | // Step 3
146 | re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
147 | if (re.test(w)) {
148 | var fp = re.exec(w);
149 | stem = fp[1];
150 | suffix = fp[2];
151 | re = new RegExp(mgr0);
152 | if (re.test(stem))
153 | w = stem + step3list[suffix];
154 | }
155 |
156 | // Step 4
157 | re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
158 | re2 = /^(.+?)(s|t)(ion)$/;
159 | if (re.test(w)) {
160 | var fp = re.exec(w);
161 | stem = fp[1];
162 | re = new RegExp(mgr1);
163 | if (re.test(stem))
164 | w = stem;
165 | }
166 | else if (re2.test(w)) {
167 | var fp = re2.exec(w);
168 | stem = fp[1] + fp[2];
169 | re2 = new RegExp(mgr1);
170 | if (re2.test(stem))
171 | w = stem;
172 | }
173 |
174 | // Step 5
175 | re = /^(.+?)e$/;
176 | if (re.test(w)) {
177 | var fp = re.exec(w);
178 | stem = fp[1];
179 | re = new RegExp(mgr1);
180 | re2 = new RegExp(meq1);
181 | re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
182 | if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
183 | w = stem;
184 | }
185 | re = /ll$/;
186 | re2 = new RegExp(mgr1);
187 | if (re.test(w) && re2.test(w)) {
188 | re = /.$/;
189 | w = w.replace(re,"");
190 | }
191 |
192 | // and turn initial Y back to y
193 | if (firstch == "y")
194 | w = firstch.toLowerCase() + w.substr(1);
195 | return w;
196 | }
197 | }
198 |
199 |
200 |
201 |
202 |
203 | var splitChars = (function() {
204 | var result = {};
205 | var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
206 | 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
207 | 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
208 | 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
209 | 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
210 | 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
211 | 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
212 | 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
213 | 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
214 | 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
215 | var i, j, start, end;
216 | for (i = 0; i < singles.length; i++) {
217 | result[singles[i]] = true;
218 | }
219 | var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
220 | [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
221 | [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
222 | [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
223 | [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
224 | [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
225 | [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
226 | [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
227 | [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
228 | [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
229 | [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
230 | [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
231 | [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
232 | [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
233 | [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
234 | [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
235 | [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
236 | [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
237 | [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
238 | [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
239 | [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
240 | [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
241 | [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
242 | [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
243 | [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
244 | [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
245 | [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
246 | [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
247 | [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
248 | [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
249 | [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
250 | [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
251 | [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
252 | [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
253 | [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
254 | [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
255 | [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
256 | [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
257 | [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
258 | [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
259 | [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
260 | [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
261 | [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
262 | [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
263 | [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
264 | [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
265 | [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
266 | [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
267 | [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
268 | for (i = 0; i < ranges.length; i++) {
269 | start = ranges[i][0];
270 | end = ranges[i][1];
271 | for (j = start; j <= end; j++) {
272 | result[j] = true;
273 | }
274 | }
275 | return result;
276 | })();
277 |
278 | function splitQuery(query) {
279 | var result = [];
280 | var start = -1;
281 | for (var i = 0; i < query.length; i++) {
282 | if (splitChars[query.charCodeAt(i)]) {
283 | if (start !== -1) {
284 | result.push(query.slice(start, i));
285 | start = -1;
286 | }
287 | } else if (start === -1) {
288 | start = i;
289 | }
290 | }
291 | if (start !== -1) {
292 | result.push(query.slice(start));
293 | }
294 | return result;
295 | }
296 |
297 |
298 |
--------------------------------------------------------------------------------
/docs/build/html/_sources/oldindex.rst.txt:
--------------------------------------------------------------------------------
1 | .. SimpleSBML documentation master file, created by
2 | sphinx-quickstart on Mon Mar 30 17:50:17 2015.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | .. module:: simplesbml
7 |
8 | ========================================
9 | Welcome to the SimpleSBML documentation!
10 | ========================================
11 |
12 | This page describes the SimpleSBML package and its contents. To install
13 | SimpleSBML, go to
14 | https://github.com/sys-bio/simplesbml
15 | .
16 |
17 | To see the documentation for libSBML, go to
18 | http://sbml.org/Software/libSBML/docs/python-api/index.html
19 | .
20 |
21 | To read more about SBML (Synthetic Biology Markup Language), go to
22 | http://sbml.org/Main_Page
23 | .
24 |
25 | --------
26 | Overview
27 | --------
28 |
29 | SimpleSBML is a package that can be used to construct biological models in
30 | SBML format using Python without interacting directly with the libSBML package. Using
31 | libSBML to build models can be difficult and complicated, even when the model
32 | is relatively simple, and it can take time for a user to learn how to use the
33 | package properly. This package is intended as an intuitive interface for
34 | users who are not already familiar with libSBML. It can be used to construct
35 | models with only a few lines of code, print out the resulting models in SBML
36 | format, and simplify existing models in SBML format by finding the SimpleSBML
37 | methods that can be used to build a libSBML version of the model.
38 |
39 | -------------------
40 | Classes and Methods
41 | -------------------
42 |
43 | .. class:: sbmlModel(self, time_units='second', extent_units='mole', sub_units='mole', level=3, version=1)
44 |
45 | sbmlModel is used to construct simple models using libSBML methods and
46 | print out the model in SBML format. A user can add species, parameters,
47 | reactions, events, assignment rules, rate rules, and initial assignments
48 | to a model. Then, the user can view the model in SBML format by printing
49 | the string representation of the class.
50 |
51 | sbmlModel contains two attributes: *document*, an
52 | `SBMLDocument `_
53 | object, an
54 | *model*, the
55 | `Model `_
56 | attribute of *document*.
57 |
58 | .. function:: addCompartment(self, vol=1, comp_id='')
59 |
60 | Adds a `Compartment `_
61 | of volume *vol* litres to the model. The default volume is 1 litre. If the user does
62 | not specify *comp_id*, the id is set to 'c' where the new compartment
63 | is the nth compartment added to the model. All sbmlModel objects are
64 | initialized with a default compartment 'c1'.
65 |
66 | .. function:: addSpecies(self, species_id, amt, comp='c1')
67 |
68 | Adds a `Species `_
69 | to the model. If *species_id* starts
70 | with the '$' symbol, the species is set as a boundary condition. If
71 | *species_id* is enclosed in brackets, the *amt* is the initial
72 | concentration of species within the specified compartment in mol/L.
73 | Otherwise, *amt* is the initial amount of species in moles.
74 |
75 | .. function:: addParameter(self, param_id, val, units='per_second')
76 |
77 | Adds a `Parameter `_
78 | to the model. *val* is the value of the parameter, and
79 | *param_id* is the parameter id. If units are not specified by the user,
80 | the default units are 1/sec.
81 |
82 | .. function:: addReaction(self, reactants, products, expression, local_params={}, rxn_id='')
83 |
84 | Adds a `Reaction `_
85 | to the model.
86 |
87 | *reactants* and *products* are lists of species
88 | ids that the user wishes to define as reactants and products, respectively.
89 | If one of these lists contains a string with a number followed by a species
90 | id (i.e. '2 G6P') then the number is interpreted as the stoichiometry of
91 | the species. Otherwise it is assumed to be 1.
92 |
93 | *expression* is a string that represents the reaction rate expression.
94 |
95 | *local_params* is a dictionary where the keys are local parameter ids and
96 | the values are the desired values of the respective parameters.
97 |
98 | If the
99 | user does not define a reaction id, it is set as 'v' where the new
100 | reaction is the nth reaction added.
101 |
102 | .. function:: addEvent(self, trigger, assignments, persistent=True, initial_value=False, priority=0, delay=0, event_id='')
103 |
104 | Adds an `Event `_
105 | to the model.
106 |
107 | *trigger* is the string representation of a
108 | logical expression that defines when an event is 'triggered', meaning
109 | when the event is ready to be executed.
110 |
111 | *delay* is a numerical value that defines the amount of time between when
112 | the event is triggered and when the event assignment is implemented, in
113 | previously defined model-wide time units.
114 |
115 | *assignments* is a dictionary
116 | where the keys are variables to be changed and the values are the
117 | variables' new values.
118 |
119 | *persistent* is a boolean that defines whether the
120 | event will still be executed if the trigger switches from ``True`` to ``False``
121 | between the event's trigger and its execution.
122 |
123 | *initial_value* is the value of *trigger* when t < 0.
124 |
125 | *priority* is a numerical value that determines
126 | which event is executed if two events are executed at the same time. The
127 | event with the larger ``priority`` is executed.
128 |
129 | .. note:: An event is only triggered when the trigger switches from ``False`` to
130 | ``True``. If the trigger's initial value is ``True``, the event will not be
131 | triggered until the value switches to ``False`` and then back to ``True``.
132 |
133 | .. function:: addAssignmentRule(self, var, math)
134 |
135 | Adds an `AssignmentRule `_
136 | to the model. An assignment rule is an equation
137 | where one side is equal to the value of a state variable and the other side
138 | is equal to some expression. *var* is the id of the state variable and *math*
139 | is the string representation of the expression.
140 |
141 | .. function:: addRateRule(self, var, math)
142 |
143 | Adds a `RateRule `_
144 | to the model. A rate rule is similar to an assignment
145 | rule, but instead of describing a state variable's value as an
146 | expression, it describes the derivative of the state variable's value
147 | with respect to time as an expression. *var* is the id of the state variable
148 | and *math* is the string representation of the expression.
149 |
150 | .. function:: addInitialAssignment(self, symbol, math)
151 |
152 | Adds an `InitialAssignment `_
153 | to the model. If the
154 | initial value of a variable depends on other variables or parameters, this
155 | method can be used to define an expression that describes the initial value
156 | of the variable in terms of other variables or parameters. *symbol* is the
157 | id of the variable and *math* is the string representation of the expression.
158 |
159 | .. function:: getDocument(self)
160 |
161 | Returns the
162 | `SBMLDocument `_
163 | object of the sbmlModel.
164 |
165 | .. function:: getModel(self)
166 |
167 | Returns the
168 | `Model `_
169 | object of the sbmlModel.
170 |
171 | .. function:: toSBML(self)
172 |
173 | Returns the model in SBML format as a string. Also checks model consistency
174 | and prints all errors and warnings.
175 |
176 | .. function:: writeCode(doc)
177 |
178 | Returns a string containing calls to SimpleSBML functions that reproduce
179 | the model contained in the SBMLDocument *doc* in an sbmlModel object.
180 |
181 | .. function:: writeCodeFromFile(filename)
182 |
183 | Reads the file saved under *filename* as an SBML format model and
184 | returns a string containing calls to SimpleSBML functions that reproduce
185 | the model in an sbmlModel object.
186 |
187 | .. function:: writeCodeFromString(sbmlstring)
188 |
189 | Reads *sbmlstring* as an SBML format model and
190 | returns a string containing calls to SimpleSBML functions that reproduce
191 | the model in an sbmlModel object.
192 |
193 | --------
194 | Examples
195 | --------
196 |
197 | Example models are taken from the SBML Level 3 Version 1 documentation.
198 |
199 | Here is an example of a simple reaction-based model built with sbmlModel::
200 |
201 | import simplesbml
202 | model = simplesbml.sbmlModel()
203 | model.addCompartment(1e-14, comp_id='comp')
204 | model.addSpecies('E', 5e-21, comp='comp')
205 | model.addSpecies('S', 1e-20, comp='comp')
206 | model.addSpecies('P', 0.0, comp='comp')
207 | model.addSpecies('ES', 0.0, comp='comp')
208 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
209 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
210 |
211 | In this example, reaction rate constants are stored locally with the reactions where they are used. It is also possible to define global parameters and use them in reaction expressions. Here is an example of this usage::
212 |
213 | import simplesbml
214 | model = simplesbml.sbmlModel()
215 | model.addCompartment(1e-14, comp_id='comp')
216 | model.addSpecies('E', 5e-21, comp='comp')
217 | model.addSpecies('S', 1e-20, comp='comp')
218 | model.addSpecies('P', 0.0, comp='comp')
219 | model.addSpecies('ES', 0.0, comp='comp')
220 | model.addParameter('koff', 0.2)
221 | model.addParameter('kon', 1000000.0)
222 | model.addParameter('kcat', 0.1)
223 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', rxn_id='veq')
224 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', rxn_id='vcat')
225 |
226 | sbmlModel also supports the use of events to change the system state under certain conditions, and the use of assignment rules and rate rules to explicitly define variable values as a function of the system state. Here is an example of events and rate rules. In this example, the value of parameter G2 is instantaneously determined by the relationship between P1 and tau, and the rates of change of P1 and P2 are explicitly defined in equation form instead of with a reaction::
227 |
228 | import simplesbml
229 | model = simplesbml.sbmlModel()
230 | model.addCompartment(vol=1.0, comp_id='cell')
231 | model.addSpecies('[P1]', 0.0, comp='cell')
232 | model.addSpecies('[P2]', 0.0, comp='cell')
233 | model.addParameter('k1', 1.0)
234 | model.addParameter('k2', 1.0)
235 | model.addParameter('tau', 0.25)
236 | model.addParameter('G1', 1.0)
237 | model.addParameter('G2', 0.0)
238 | model.addEvent(trigger='P1 > tau', assignments={'G2': '1'})
239 | model.addEvent(trigger='P1 <= tau', assignments={'G2': '0'})
240 | model.addRateRule('P1', 'k1 * (G1 - P1)')
241 | model.addRateRule('P2', 'k2 * (G2 - P2)')
242 |
243 | Users can edit existing models with the writeCode() method, which accepts an SBML document and produces a script of SimpleSBML commands in string format. This method converts the SBML document into a libSBML Model and scans through its elements, adding lines of code for each SimpleSBML-compatible element it finds. The output can be saved to a .py file and edited to create new models based on the original import. For instance, here is an example of a short script that reproduces the SimpleSBML code to reproduce an sbmlModel object::
244 |
245 | import simplesbml
246 | model = simplesbml.sbmlModel()
247 | model.addCompartment(1e-14, comp_id='comp')
248 | model.addSpecies('E', 5e-21, comp='comp')
249 | model.addSpecies('S', 1e-20, comp='comp')
250 | model.addSpecies('P', 0.0, comp='comp')
251 | model.addSpecies('ES', 0.0, comp='comp')
252 | model.addReaction(['E', 'S'], ['ES'], 'comp*(kon*E*S-koff*ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
253 | model.addReaction(['ES'], ['E', 'P'], 'comp*kcat*ES', local_params={'kcat': 0.1}, rxn_id='vcat')
254 |
255 | code = simplesbml.writeCodeFromString(model.toSBML())
256 | f = open('example_code.py', 'w')
257 | f.write(code)
258 | f.close()
259 |
260 | The output saved to 'example_code.py' will look like this::
261 |
262 | import simplesbml
263 | model = simplesbml.sbmlModel(sub_units='')
264 | model.addCompartment(vol=1e-14, comp_id='comp')
265 | model.addSpecies(species_id='E', amt=5e-21, comp='comp')
266 | model.addSpecies(species_id='S', amt=1e-20, comp='comp')
267 | model.addSpecies(species_id='P', amt=0.0, comp='comp')
268 | model.addSpecies(species_id='ES', amt=0.0, comp='comp')
269 | model.addReaction(reactants=['E', 'S'], products=['ES'], expression='comp * (kon * E * S - koff * ES)', local_params={'koff': 0.2, 'kon': 1000000.0}, rxn_id='veq')
270 | model.addReaction(reactants=['ES'], products=['E', 'P'], expression='comp * kcat * ES', local_params={'kcat': 0.1}, rxn_id='vcat')
271 |
272 | .. automodule:: simplesbml
273 |
274 | .. autoclass:: sbmlModel
275 | :members:
--------------------------------------------------------------------------------
/docs/build/html/_static/js/modernizr.min.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD
2 | * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
3 | */
4 | ;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f
4 |
5 |
6 |
7 |
8 |
9 |
10 | Index — SimpleSBML 2.0.1 documentation
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |