diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo new file mode 100644 index 0000000000000000000000000000000000000000..1b7d1a29551920e9c183442a4d3f965d2e8654a3 --- /dev/null +++ b/doc/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 433d99f3c433e3d2ae1ca349a4cb112f +tags: a205e9ed8462ae86fdd2f73488852ba9 diff --git a/doc/html/.doctrees/buildsystem.doctree b/doc/html/.doctrees/buildsystem.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1da4019d470eb5e4d60038d08761ab5433c55185 Binary files /dev/null and b/doc/html/.doctrees/buildsystem.doctree differ diff --git a/doc/html/.doctrees/changelog.doctree b/doc/html/.doctrees/changelog.doctree new file mode 100644 index 0000000000000000000000000000000000000000..35f6e77688e21f01cf91ecb366ee5bb5f2c32ade Binary files /dev/null and b/doc/html/.doctrees/changelog.doctree differ diff --git a/doc/html/.doctrees/contributing.doctree b/doc/html/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d67492c4878823593f58d4d4f4a83db6986f2afd Binary files /dev/null and b/doc/html/.doctrees/contributing.doctree differ diff --git a/doc/html/.doctrees/core/argcheck.doctree b/doc/html/.doctrees/core/argcheck.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b365f6bc7f363c4d5cf376d2e00a3bde10c9f4be Binary files /dev/null and b/doc/html/.doctrees/core/argcheck.doctree differ diff --git a/doc/html/.doctrees/core/index.doctree b/doc/html/.doctrees/core/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..40919b3335b649e091d9d27008b1f90edee544cb Binary files /dev/null and b/doc/html/.doctrees/core/index.doctree differ diff --git a/doc/html/.doctrees/developers.doctree b/doc/html/.doctrees/developers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a0cd700186e512f9ad641f979dad05f77193d257 Binary files /dev/null and b/doc/html/.doctrees/developers.doctree differ diff --git a/doc/html/.doctrees/environment.pickle b/doc/html/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..51c79e4e616c99ec8f6571fce8974ebf04f379af Binary files /dev/null and b/doc/html/.doctrees/environment.pickle differ diff --git a/doc/html/.doctrees/index.doctree b/doc/html/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a39c124e95a4a25e2d1881671c83ce1ed7819cf2 Binary files /dev/null and b/doc/html/.doctrees/index.doctree differ diff --git a/doc/html/.doctrees/meld/index.doctree b/doc/html/.doctrees/meld/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5ae1693e977e7f3913e22ed3bbadc59d31f3ef1b Binary files /dev/null and b/doc/html/.doctrees/meld/index.doctree differ diff --git a/doc/html/.doctrees/meld/loop.doctree b/doc/html/.doctrees/meld/loop.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7d6ab0a94e753103d6372d2a161e976dcc3c97d6 Binary files /dev/null and b/doc/html/.doctrees/meld/loop.doctree differ diff --git a/doc/html/.doctrees/meld/rawmodel.doctree b/doc/html/.doctrees/meld/rawmodel.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4e8f300f4bc8581cb59b45ed848ee7bef730b0dd Binary files /dev/null and b/doc/html/.doctrees/meld/rawmodel.doctree differ diff --git a/doc/html/.doctrees/users.doctree b/doc/html/.doctrees/users.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12a2625a1c0b78f31faf7e483bcf152abfd73100 Binary files /dev/null and b/doc/html/.doctrees/users.doctree differ diff --git a/doc/html/_modules/index.html b/doc/html/_modules/index.html new file mode 100644 index 0000000000000000000000000000000000000000..e70c128d53fe4064b75459b77bfba3938432881a --- /dev/null +++ b/doc/html/_modules/index.html @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Overview: module code — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <h1>All modules for which code is available</h1> +<ul><li><a href="promod3/core/argcheck.html">promod3.core.argcheck</a></li> +<li><a href="sm/meld.html">sm.meld</a></li> +</ul> + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/_modules/promod3/core/argcheck.html b/doc/html/_modules/promod3/core/argcheck.html new file mode 100644 index 0000000000000000000000000000000000000000..7983666a30c0a07057b7c24326d486c489bbe924 --- /dev/null +++ b/doc/html/_modules/promod3/core/argcheck.html @@ -0,0 +1,180 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>promod3.core.argcheck — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../../../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../../../_static/jquery.js"></script> + <script type="text/javascript" src="../../../_static/underscore.js"></script> + <script type="text/javascript" src="../../../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../../../index.html" /> + <link rel="up" title="Module code" href="../../index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../../../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="../../../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../../index.html" accesskey="U">Module code</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <h1>Source code for promod3.core.argcheck</h1><div class="highlight"><pre> +<span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span> + +<div class="viewcode-block" id="FileExists"><a class="viewcode-back" href="../../../core/argcheck.html#promod3.core.argcheck.FileExists">[docs]</a><span class="k">def</span> <span class="nf">FileExists</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span> + <span class="sd">'''</span> +<span class="sd"> Checks if a file exists, terminates if not. The error message displayed is</span> +<span class="sd"> fixed and only needs a *prefix* describing the specimen of file.</span> + +<span class="sd"> :param prefix: String to put in front of the failure-message</span> +<span class="sd"> "file does not exist: ``file``".</span> +<span class="sd"> :type prefix: :class:`str`</span> + +<span class="sd"> :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span> +<span class="sd"> shell. ``0`` is traditionally reserved to successful commands.</span> +<span class="sd"> :type exit_status: :class:`int`</span> + +<span class="sd"> :param file: Path including file name to be checked.</span> +<span class="sd"> :type file: :class:`str`</span> + +<span class="sd"> :returns: No return value, exits script with value ``exit_status`` if file is</span> +<span class="sd"> missing.</span> +<span class="sd"> '''</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span> + <span class="k">print</span> <span class="s">'</span><span class="si">%s</span><span class="s"> file does not exist: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span> +</div> +<div class="viewcode-block" id="FileExtension"><a class="viewcode-back" href="../../../core/argcheck.html#promod3.core.argcheck.FileExtension">[docs]</a><span class="k">def</span> <span class="nf">FileExtension</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">extensions</span><span class="p">,</span> <span class="n">gz</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> + <span class="sd">'''</span> +<span class="sd"> Checks a file to carry a known extension given by a list of strings. Since</span> +<span class="sd"> files are very often compressed these days, an additional "gz" suffix can be</span> +<span class="sd"> tracked automatically by this function. Thus, the list of *extensions* only</span> +<span class="sd"> needs to contain what you are really looking for, e.g. ("pdb") instead of</span> +<span class="sd"> ("pdb", "pdb.gz"). The *gz* flag also determines the output of this function.</span> +<span class="sd"> If enabled, a triple is returned: name of the file without extension, its</span> +<span class="sd"> extension and a Boolean to tell whether the file carries the gzip extension</span> +<span class="sd"> or not. If *gz* detection is turned of, only a tuple is returned: file name</span> +<span class="sd"> and extension. If the tested file name has an unrecognised extension, this</span> +<span class="sd"> function terminates the script.</span> + +<span class="sd"> :param prefix: String to put in front of the failure-message</span> +<span class="sd"> "file extension not supported: ``file``".</span> +<span class="sd"> :type prefix: :class:`str`</span> + +<span class="sd"> :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span> +<span class="sd"> shell. ``0`` is traditionally reserved to successful commands.</span> +<span class="sd"> :type exit_status: :class:`int`</span> + +<span class="sd"> :param file: Path including file name to be checked.</span> +<span class="sd"> :type file: :class:`str`</span> + +<span class="sd"> :param extensions: List of strings without a leading ".".</span> +<span class="sd"> :type extensions: :class:`list`</span> + +<span class="sd"> :param gz: Indicates whether to check for an additional "gz" extension.</span> +<span class="sd"> :type gz: :class:`bool`</span> + +<span class="sd"> :returns: (base name of ``file`` (:class:`str`), extension of file without a</span> +<span class="sd"> ".gz" (:class:`str`), flag to indicate an additional ".gz"</span> +<span class="sd"> (:class:`bool`)) **if** ``gz`` is set, (base name of ``file``</span> +<span class="sd"> (:class:`str`), extension of file if not).</span> +<span class="sd"> '''</span> + <span class="n">filename</span><span class="p">,</span> <span class="n">fileext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> + <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">False</span> + <span class="k">if</span> <span class="n">fileext</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">'.gz'</span><span class="p">:</span> + <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">True</span> + <span class="n">filename</span><span class="p">,</span> <span class="n">fileext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gz</span><span class="p">:</span> + <span class="k">print</span> <span class="s">'</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span> + <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> + <span class="k">print</span> <span class="s">'</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span> + <span class="n">fileext</span> <span class="o">=</span> <span class="n">fileext</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">for</span> <span class="n">ext</span> <span class="ow">in</span> <span class="n">extensions</span><span class="p">:</span> + <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="n">ext</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> + <span class="k">if</span> <span class="n">gz</span><span class="p">:</span> + <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="n">fileext</span><span class="p">,</span> <span class="n">is_gz</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="n">fileext</span> + <span class="k">print</span> <span class="s">'</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span> +</div> +<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span> + <span class="s">'FileExists'</span><span class="p">,</span> + <span class="s">'FileExtension'</span><span class="p">,</span> +<span class="p">)</span> + +<span class="c"># LocalWords: gz pdb gzip bool</span> +</pre></div> + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../../../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../../../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="../../../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/_sources/buildsystem.txt b/doc/html/_sources/buildsystem.txt new file mode 100644 index 0000000000000000000000000000000000000000..8d59f3b901d2b65d796687817a2791c872afd9b6 --- /dev/null +++ b/doc/html/_sources/buildsystem.txt @@ -0,0 +1,77 @@ +Building |project| +================================================================================ +-------------------------------------------------------------------------------- +Dependencies +-------------------------------------------------------------------------------- +|project| is build on top of |ost_l|_ (|ost_s|) and needs at least version +1.4. To create the build system, |cmake|_ is required in version 2.8.7 or +higher. |python|_ works well from version 2.7. For |ost_s| and the C++ bit of +|project|, |boost|_ is required in version 1.47.0. To build documentation, +|sphinx|_ 1.2b1 is used. + +* |ost_s|_ 1.4 +* |cmake|_ 2.8.7 +* |python|_ 2.7 +* |boost|_ 1.47.0 +* |sphinx|_ 1.2b1 + +-------------------------------------------------------------------------------- + Using |cmake| +-------------------------------------------------------------------------------- +|cmake| is used to configure the build system and in the end produces makefiles +and certain directories needed for building |project|. Basically it is called +right from a shell with the directory containing the top-level +:file:`CMakeLists.txt` as an argument: + +.. code-block:: console + + $ cmake . -DOST_ROOT=<PATH TO OST> + +For us, at least a pointer to the |ost_s| installation directory is needed, +handed over to |cmake| by ``-D`` into the variable ``OST_ROOT``. Other important +variables would be ``BOOST_ROOT``, set to the same path as for |ost_s| and +probably ``PYTHON_ROOT`` if you want to use a certain |python|. Don't forget to +put a ``-D`` in front of options. + +Here is a list of more options used within |project|: + +* ``DISABLE_DOCUMENTATION`` Don't build documentation, don't search for |sphinx| +* ``DISABLE_DOCTEST`` Don't run example code from documentation on 'make check' + (implicit by ``DISABLE_DOCUMENTATION``) +* ``DISABLE_LINKCHECK`` Don't test links from documentation on 'make check + (implicit by ``DISABLE_DOCUMENTATION``) + +Instead of calling |cmake| by yourself, there is the :file:`conf-scripts` +directory, providing smallish scripts to invoke |cmake| the right way for +various systems. Usually those scripts just need the |ost_s| path and the +location of the top-level :file:`CMakeLists.txt`. + +What we highly recommend is going for out-of-source builds. This means creating +a dedicated directory for building |project| and calling |cmake|/ a +configuration script from there. This way, you can have several builds with +different configurations. Also if anything goes wrong, just remove the build +directory to get to a clean state again. No searching for |cmake| cache files or +checking if certain files really got rebuild and similar things required. + + +Important Make Targets +-------------------------------------------------------------------------------- +Beside the usual ``make all`` and other default targets, there are a few +special targets: + +* ``check`` Runs unit tests and if |cmake| was invoked in its standard + configuration also |sphinx| with the ``doctest`` and ``linkcheck`` builders +* ``html`` Creates documentation as web page using the |sphinx| ``html`` builder +* ``man`` Creates a manual page using the |sphinx| ``man`` builder +* ``doc`` Creates documentation using the ``html`` and ``man`` targets +* ``help`` Prints a list of targets available + + +.. _ost_l: http://www.OpenStructure.org +.. _ost_s: http://www.OpenStructure.org +.. _cmake: http://www.cmake.org/ +.. _python: https://www.python.org/ +.. _boost: http://www.boost.org/ + +.. LocalWords: cmake makefiles CMakeLists txt DOCTEST LINKCHECK conf html +.. LocalWords: doctest linkcheck diff --git a/doc/html/_sources/changelog.txt b/doc/html/_sources/changelog.txt new file mode 100644 index 0000000000000000000000000000000000000000..abea2cec422d0ec556ffc5817888ee2e624e499a --- /dev/null +++ b/doc/html/_sources/changelog.txt @@ -0,0 +1,14 @@ +.. ProMod3 Changelog file. This is actually a reStructuredText formatted file, + which will be copied to the right place in the stage directory as + 'changelog.txt'. This way it is immediately available in the documentation. + +Changelog +================================================================================ + +Changes in Release 0.1 +-------------------------------------------------------------------------------- + * initial setup of the CMake build system + * first idea of the documentation system + * meld included from SMNG as first module (to be modified/ renamed) + +.. LocalWords: Changelog reStructuredText changelog txt diff --git a/doc/html/_sources/contributing.txt b/doc/html/_sources/contributing.txt new file mode 100644 index 0000000000000000000000000000000000000000..c4ba7c73478aee3dbd85fa8a2bb3dec1036b1a79 --- /dev/null +++ b/doc/html/_sources/contributing.txt @@ -0,0 +1,226 @@ +Contributing +================================================================================ +The following should explain, in a coarse grain manner, how to add new +features/ your project to |project|. Important topics are |git| branches, the +directory structure and tightly linked with this also |cmake|. The most general +advice would be to use existing bits and pieces as examples and to be +consistent with what you already find here. As an example, documentation +explaining what a whole module is supposed to do usually goes into a +:file:`doc` directory within the modules tree, while the API itself is +documented inline. One exception exists on the example-driven approach: +following the :mod:`~promod3.core` module for your setup is not advisable. This +one is a bit special and provides core functionality to everybody else. + +-------------------------------------------------------------------------------- +|git| Branches +-------------------------------------------------------------------------------- +Basically we have two, sometimes three major branches. ``master``, ``develop`` +and in front of a new release a dedicated release branch. For bugs, hotfix +branches of a rather short life are used. + +``master`` is the stable branch, corresponding to a released version. It is +solely fed by a release or hotfix branch. + +Release branches, usually labelled ``release-<VERSION>``, are branched of +``develop`` to fix features and thoroughly test them before a new major +release. Once everything looks trustworthy, such a branch is merged into +``master`` and since there should be a few bug fixes in, ``master`` is merged +into ``develop``. Bugs are fixed in dedicated hotfix branches, which should +only exist for the fix and testing itself. Those are forged from release +branches or ``master``. If created for ``master``, they are also merged back +into ``develop``. + +The ``develop`` branch exists to introduce new features up to the level of +whole projects extending |project| and see that they work seamlessly together +with the rest of the system. There do exist a couple of rather strict rules for +what goes into this branch: + +* Your code must have been (briefly) reviewed by others +* There have to be unit tests +* It needs to pass ``make check`` **including** ``doctest`` & ``linkcheck`` +* Your project needs documentation +* It must not break the ability of out-of-source builds + +The reason to be a bit restrictive on branches which end up in actual releases, should be mostly obvious: |project| is used by productive services as a third party toolbox. There it is not an item of active development and people probably have no insight in its internals. So messing up a new release creates a lot of extra work for a lot of people. First for the developer of a service to find out that |project| has turned malicious, then for the maintainer of this package to figure out that its your contribution messing things up and in the end for you, fixing the problems. + +The place where you may get messy is your own |git| branch within the |project| +repository. This is basically where you should develop your project. Once you +created something that could go into a release, tidy things up according to the +rules from above and merge it into ``develop``. From there it will +automatically find its way into the next release. + +To set up your own branch, start from a current ``develop`` branch: + +.. code-block:: console + + $ git checkout develop # switch to branch develop + $ git pull --rebase # update branch develop + $ git checkout -b <BRANCHNAME> # create branch <BRANCHNAME> and switch to it + +Over time, ``develop`` may recognise some changes, e.g. new features, which you +want to make use of in your project. Keeping your branch up to date is a three +step process. |git| does not allow updates on top of changed code, so either +changes have to be committed, or if in the middle of implementing something, +stored away temporarily. Making commits is straight forward: + +.. code-block:: console + + $ git commit -m '<DESCRIPTION>' # commit changes including a comment + +Hiding your changes away from |git| just for updating files is a bit more +involved. Everything is easily stored on an internal stack and needs to be +fetched from there, once the branch was updated. One major problem in the past +was a possible loss of code by those operations. If the update changes a file +you have changed, too, and stashed away, this may end up in a non-resolvable +merge conflict and your changes are lost. Usually the log tells you, which +files were recently modified. Moving all current changes to the stack is +achieved by: + +.. code-block:: console + + $ git stash save + +To revive them, use: + +.. code-block:: console + + $ git stash pop + +After cleaning up your branch, switch to ``develop``, update it and switch back: + +.. code-block:: console + + $ git checkout develop + $ git pull --rebase + $ git checkout <BRANCHNAME> + +Now for actually updating your branch, there are two different ways: merging +and rebasing. A rebase may only be done, if you **never** pushed your branch to +the origin of the repository (otherwise you will mess up history, in the worst +case ``develop`` may be unusable once you merge): + +.. code-block:: console + + $ git rebase develop + +For branches which are available to others, do a proper merge: + +.. code-block:: console + + $ git merge develop + +This may require some manual conflict solving and will end up in a merge commit. + +-------------------------------------------------------------------------------- +Directory Structure +-------------------------------------------------------------------------------- +The directory structure of the |project| repository is supposed to 'keep +everything together that belongs together'. That is, code, documentation and +extra data should be gathered on a per-module basis immediately in the +repository root. The directory structure of your module should look like this: + +.. code-block:: text + + promod3.git/ Project folder + your_module/ Directory housing your project + CMakeLists.txt CMake configuration for this module + data/ Extra data (if needed) + CMakeLists.txt CMake configuration + ... + doc/ Documentation + CMakeLists.txt CMake configuration + your_module.rst Overview/ frame of your module + ... + pymod/ Python code + CMakeLists.txt CMake configuration + __init__.py Init file needed for importing + submodule1.py Code + ... + src/ C/ C++ code + CMakeLists.txt CMake configuration + source1.cc C++ code + source2.hh Header + ... + tests/ Unit tests + CMakeLists.txt CMake configuration + data/ Test data (if needed) + ... + test_your_module.py Unit tests for your_module + test_submodule1.py Unit tests for submodule1 + ... + +-------------------------------------------------------------------------------- +|cmake| +-------------------------------------------------------------------------------- +The attentive reader may have noticed all the :file:`CMakeLists.txt` files in +the directory structure. Those are needed to configure the build system, e.g. +tell it which files have to be considered packaging, compiling, etc.. Also +|python| modules are declared there as well as which files belong to the +documentation. |cmake| is a rather complex topic (unfortunately all usable +build systems seem to be) so we skip a detailed view, here, and just advice you +to go by example. There is a tiny bit of documentation on our additions to +|cmake| in the top-level :file:`cmake_support` directory. If you really need to +make changes to the build system, other than adding new files and modules, you +have to dive into |cmake| documentation all by yourself and on your own +responsibility. You have been warned. + +-------------------------------------------------------------------------------- +The :file:`stage` Directory +-------------------------------------------------------------------------------- +Once you hit :command:`make` in your build directory, a directory :file:`stage` +in this path will be populated. It just resembles a directory structure as of a +usual Unix file system filled with the build products of |project|. The +:file:`stage` directory tree can already be utilised. You may import Python +modules from there, use the binaries from :file:`stage/bin`, etc.. + +-------------------------------------------------------------------------------- +Unit Tests +-------------------------------------------------------------------------------- +Of course your code should contain tests. But we cannot give an elaborate +tutorial on unit testing here. Again, have a look at how other modules treat +this topic and then there is quite a lot of educated material to be found on +the Internet. Nevertheless, here is a short list of most important advices: + +* Tests go into dedicated scripts in the :file:`tests` directory +* No external data dependencies, if tests need data, they find it in + :file:`tests/data` +* If 'exotic' |python| modules are used, consider making the test aware of the + possibility that the module is not available +* Test do not fail on purpose +* No failing tests, that are considered 'this does not affect anything' + +To run the whole test suite, ``make check`` is enough. This will also trigger +the ``doctest`` and ``linkcheck`` targets. To avoid this, e.g. when just +testing a smallish change in code, ``codetest`` exists as a separate target, +only running unit tests from all modules in |project|. Actually ``make check`` +does nothing more but invoking ``doctest``, ``linkcheck`` and ``codetest`` as +dependencies. You could even go with running tests gathered in a single file: +assuming you have :file:`your_module/tests/test_awesome_feature.py`, |cmake| +will provide you with a target ``test_awesome_feature.py_run``. + +-------------------------------------------------------------------------------- +Writing Documentation +-------------------------------------------------------------------------------- +To create documentation, we use |sphinx|_ to go from |restructuredtext|_ files +and API documentation in source files to HTML or man pages. + +For each module, at least one |restructuredtext| document exists, that gives an +idea of concepts and pulls in interfaces from source. Copying files to the +build directory, issuing the |sphinx| call and everything else that is needed +to create the actual documentation is done by |cmake| and its makefiles. Hence, +the :file:`CMakeLists.txt` of the :file:`doc` directory of a module is crucial. +For documentation which does not relate to a particular module, the repository +comes with a top-level :file:`doc` directory. + +While you should not spend to much time thinking about how to format +documentation, here is a helpful list of standard formatters: +http://sphinx-doc.org/markup/inline.html + +If you write new functionality for |project|, or fix bugs, feel free to extend +the Changelog. It will be automatically pulled into the documentation. + +.. _restructuredtext: http://docutils.sourceforge.net/rst.html + +.. LocalWords: cmake hotfix doctest linkcheck rebase BRANCHNAME rebasing py +.. LocalWords: CMakeLists txt rst pymod init submodule src restructuredtext +.. LocalWords: makefiles formatters Changelog codetest promod diff --git a/doc/html/_sources/core/argcheck.txt b/doc/html/_sources/core/argcheck.txt new file mode 100644 index 0000000000000000000000000000000000000000..be77ef7384cacace9aa51f62e2152f1f8eb90047 --- /dev/null +++ b/doc/html/_sources/core/argcheck.txt @@ -0,0 +1,66 @@ +:mod:`~promod3.core.argcheck` - Standard tests for command line arguments +================================================================================ + +.. currentmodule:: promod3.core.argcheck + +Introduction +-------------------------------------------------------------------------------- + +For parsing command line arguments - +:py_docs:`optional <howto/argparse.html#introducing-optional-arguments>` and +:py_docs:`positional <howto/argparse.html#introducing-positional-arguments>` - +|project| tools should utilise Pythons own :py_docs:`argparse <library/argparse.html>` +module. While this comes with a lot of functionality to fetch values from the +command line comfortably, it has no means in checking/ verifying input. Some of +the most common tests are covered here. All tests are designed to exit a script +on failure. + +.. testcode:: argcheck + :hide: + + import os + import argparse + import tempfile + from promod3.core import argcheck + + (fh, fn) = tempfile.mkstemp(suffix='.pdb') + os.close(fh) + + p = argparse.ArgumentParser() + p.add_argument('file', type=str) + opts = p.parse_args([fn]) + + argcheck.FileExists('Test file', 1, opts.file) + + opts.name, opts.ext, opts.gz = argcheck.FileExtension('Test file', 2, + opts.file, + ('pdb', 'mmcif'), + gz=True) + + os.remove(fn) + +.. doctest:: argcheck + + import argparse + from promod3.core import argcheck + + p = argparse.ArgumentParser() + p.add_argument('file', type=str) + opts = p.parse_args() + + argcheck.FileExists('Test file', 1, opts.file) + + opts.name, opts.ext, opts.gz = argcheck.FileExtension('Test file', 2, + opts.file, + ('pdb', 'mmcif'), + gz=True) + + +File Tests +-------------------------------------------------------------------------------- + +.. autofunction:: FileExists + +.. autofunction:: FileExtension + +.. LocalWords: currentmodule py howto argparse diff --git a/doc/html/_sources/core/index.txt b/doc/html/_sources/core/index.txt new file mode 100644 index 0000000000000000000000000000000000000000..4ec3a4454ab9ecafa019186d2b6f9a3b665b206e --- /dev/null +++ b/doc/html/_sources/core/index.txt @@ -0,0 +1,14 @@ +:mod:`~promod3.core` - ProMod3 core functionality +================================================================================ + +.. module:: promod3.core + :synopsis: Basic functionality, supporting standard tasks in your code. + +This module gathers functions and classes which are not devoted to homology modeling per se but cover standard programming issues. + +.. toctree:: + :maxdepth: 2 + + argcheck + +.. LocalWords: promod se toctree maxdepth argcheck diff --git a/doc/html/_sources/developers.txt b/doc/html/_sources/developers.txt new file mode 100644 index 0000000000000000000000000000000000000000..71d0344731b59d15b1f80d99f37d97bf27245f74 --- /dev/null +++ b/doc/html/_sources/developers.txt @@ -0,0 +1,17 @@ +Documentation For Developes +=============================================================================== +.. give an intro on what will be stored here +.. topics: how to create a new module, how to do doc (rst_epillog), + little bit on doctest & linkcheck, unit tests, directory structure + +Contents: + +.. toctree:: + :maxdepth: 2 + + core/index + meld/index + buildsystem + contributing + +.. todolist:: diff --git a/doc/html/_sources/index.txt b/doc/html/_sources/index.txt new file mode 100644 index 0000000000000000000000000000000000000000..b0330546a818c96c7013d474aeeebed85f633a43 --- /dev/null +++ b/doc/html/_sources/index.txt @@ -0,0 +1,25 @@ +.. ProMod3 documentation master file, created by + sphinx-quickstart on Thu Oct 10 23:17:00 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ProMod3's documentation! +=================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + Users <users> + Developers <developers> + changelog + +.. todolist:: + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/html/_sources/meld/index.txt b/doc/html/_sources/meld/index.txt new file mode 100644 index 0000000000000000000000000000000000000000..fec388e6369affe35445eb20f171bdac43ad71a4 --- /dev/null +++ b/doc/html/_sources/meld/index.txt @@ -0,0 +1,13 @@ +:mod:`~sm.meld` - Coordinate modeling +================================================================================ + +.. module:: sm.meld + :synopsis: Coordinate modeling and sampling + +This module contains functions and classes to model protein structures from sequence. + +.. toctree:: + :maxdepth: 2 + + loop + rawmodel diff --git a/doc/html/_sources/meld/loop.txt b/doc/html/_sources/meld/loop.txt new file mode 100644 index 0000000000000000000000000000000000000000..0b015ed7e75fc8aa02f09e2291f9c599a7eb8ef7 --- /dev/null +++ b/doc/html/_sources/meld/loop.txt @@ -0,0 +1,153 @@ +Loop Modeling +================================================================================ + +.. currentmodule:: sm.meld + + +Loop Modeling API +-------------------------------------------------------------------------------- + +.. class:: LoopCandidate(gap, bb_list) + + A loop candidate holds the coordinates of the four backbone atoms for a given + peptide fragment as well as the sequence. + + :param gap: The structural gap + :type gap: :class:`StructuralGap` + + :param bb_list: List of peptide backbone coordinates + :type bb_list: :class:`BackboneList` + + .. method:: InsertInto(entity) + + Inserts the loop candidate into the given entity. This honours the start and + end point stored in the gap. Missing residues and atoms will be inserted + into the structure. + + + :param entity: + :type entity: :class:`~ost.mol.EntityHandle` + :returns: True on success, false if the insertion failed + :rtype: bool + + .. method:: RmsdTo(entity) + + Calculates the RMSD to the corresponding backbone fragment in *entity*. + Raises a RuntimeError if not all backbone atoms exist. + + :param entity: + :type entity: :class:`~ost.mol.EntityHandle` + :rtype: float + + .. method:: ToEntity() + + Returns an entity holding this backbone fragment. Residue numbers go from + gap.start to gap.end. + + :rtype: :class:`~ost.mol.EntityHandle` + + + .. attribute:: allatom_score + + If set, the allatom_score of this fragment + + + + .. attribute:: clash_bb_score + + The clash score of the loop candidate with sidechain atoms + + + + .. attribute:: clash_score + + The sum of backbone and sidechain clash scores + + + + .. attribute:: clash_sc_score + + Clash score with sidechain atoms + + + + .. attribute:: coords + + Access to the actual coordinates + + :type: :class:`BackboneList` + + + + .. attribute:: correl + + Correlation with density + + + + .. attribute:: gap + + The structural gap + + + + .. attribute:: packing_score + + Packing score of this loop candidate + + + + .. attribute:: reduced_score + + Reduced score + + + + .. attribute:: score + + Total score of this loop candidate. + + + + .. attribute:: torsion_score + + Torsion score of this loop candidate + + +.. class:: LoopCandidates(model) + + A list of loop candidates with a few helper methods to make your life easier. + The candidates are supposed to be loop candidates for the same gap. However, + they are not required to have the same start and end position, e.g. due to + extension of the gap. + + :param model: The model the candidates are for. + + :type model: :class:`~ost.mol.EntityHandle` + + .. method:: Add(candidate) + + Add a new candidate + :param candidate: + :type candidate: :class:`LoopCandidate` + + .. method:: SortByCorrel([, increasing]) + + Sort loop candidates by correlation score + + :param increasing: If true, the candidates are sorted in increasing order + :type increasing: bool + + .. method:: SortByScore([, increasing]) + + Sort loop canditates by total score + + :param increasing: If true, the candidates are sorted in increasing order + :type increasing: bool + + + .. attribute:: model + + The model the candidates are for + + :type: :class:`~ost.mol.EntityHandle` diff --git a/doc/html/_sources/meld/rawmodel.txt b/doc/html/_sources/meld/rawmodel.txt new file mode 100644 index 0000000000000000000000000000000000000000..ebaa142086316e24cc5dd57daff80fe8acbd4e14 --- /dev/null +++ b/doc/html/_sources/meld/rawmodel.txt @@ -0,0 +1,80 @@ +Raw Coordinate Modeling +================================================================================ + +.. currentmodule:: sm.meld + +Introduction +-------------------------------------------------------------------------------- + +Contains function to build raw (pseudo) models based on a sequence alignment. Here is an example of how to build a model from an alignment and a structure. + +.. code-block:: python + + from sm.meld import * + + aln=io.LoadAlignment('parwise.fasta') + template_structure=io.LoadPDB('1ake.pdb', restrict_chains='A') + aln.AttachView(1, template_structure.Select('peptide=true')) + result=BuildRawModel(aln) + io.SavePDB(result.model, 'model.pdb') + print 'remaining gaps:' + for gap in result.gaps: + print ' * %s' % str(gap) + + +Raw Coordinate Modeling API +-------------------------------------------------------------------------------- + +.. function:: BuildRawModel(alignment, calpha_only=False) + BuildRawModel(alignments, calpha_only=False) + + Builds a raw (pseudo) model from the alignment. + Can either take a single alignment handle or an alignment handle list. + Every list item is treated as a single chain in the final raw model. + + This is a basic protein core modeling algorithm that copies backbone + coordinates based on the sequence alignment. For matching residues, the + sidechain coordinates are also copied. Gaps are ignored. Hydrogen an deuterium + atoms are not copied into the model. + + The function tries to reuse as much as possible from the template. Modified + residues are treated as follows: + + - Selenium methionine residues are converted to methionines + + - Sidechains which contain all atoms of the parent amino acid, e.g. + phosphoserine are copied as a whole with the modifications stripped off. + + Residue numbers are set such that missing residue in gaps are honored and + subsequent loop modeling can insert new residues without having to + renumber. + + The returned :class:`RawModelingResult` stores the obtained raw model as well + as information about insertions and deletions in the gaps list. + + :param calpha_only: If true, only Calpha atoms will be copied. Sidechains and + other backbone atoms are completely ignored. + :raises: A :exc:`RuntimeError` when the second sequence does not have an + attached structure + +.. class:: RawModelingResult + + Holds the result of raw model building. Incredibly minimalistic for now. Will + most likely grow a few more members over time to, e.g. to store a detailed + report. + + .. attribute:: model + + The resulting model. + + :type: :class:`~ost.mol.EntityHandle` + + .. attribute:: gaps + + List of gaps in the model that could not be copied from the template. These + gaps may be the result of insertions/deletions in the alignment or due to + missing or incomplete backbone coordinates in the template structure. + + + :type: :class:`StructuralGapList` + diff --git a/doc/html/_sources/users.txt b/doc/html/_sources/users.txt new file mode 100644 index 0000000000000000000000000000000000000000..cf364d753b239e63b75aaa433a481e00868f69ed --- /dev/null +++ b/doc/html/_sources/users.txt @@ -0,0 +1,3 @@ +Documentation For Users +======================= +.. intro, primer on concept of actions, holistic ProMod and hint towards modules diff --git a/doc/html/_static/ajax-loader.gif b/doc/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 Binary files /dev/null and b/doc/html/_static/ajax-loader.gif differ diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css new file mode 100644 index 0000000000000000000000000000000000000000..a04c8e13727d62c67fa6364f16e3ac28115c7a79 --- /dev/null +++ b/doc/html/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/doc/html/_static/comment-bright.png b/doc/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 Binary files /dev/null and b/doc/html/_static/comment-bright.png differ diff --git a/doc/html/_static/comment-close.png b/doc/html/_static/comment-close.png new file mode 100644 index 0000000000000000000000000000000000000000..09b54be46da3f0d4a5061da289dc91d8a2cdbc9c Binary files /dev/null and b/doc/html/_static/comment-close.png differ diff --git a/doc/html/_static/comment.png b/doc/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 Binary files /dev/null and b/doc/html/_static/comment.png differ diff --git a/doc/html/_static/default.css b/doc/html/_static/default.css new file mode 100644 index 0000000000000000000000000000000000000000..e534a07802b94d88019ee1b61e28541e6fc05856 --- /dev/null +++ b/doc/html/_static/default.css @@ -0,0 +1,256 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #355f7c; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js new file mode 100644 index 0000000000000000000000000000000000000000..8614442ebe8ad266d77621d08295d7de77c952cd --- /dev/null +++ b/doc/html/_static/doctools.js @@ -0,0 +1,235 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('<a class="headerlink">\u00B6</a>'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('<a class="headerlink">\u00B6</a>'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('<p class="highlight-link"><a href="javascript:Documentation.' + + 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/html/_static/down-pressed.png b/doc/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7ad782782e4f8e39b0c6e15c7344700cdd2527 Binary files /dev/null and b/doc/html/_static/down-pressed.png differ diff --git a/doc/html/_static/down.png b/doc/html/_static/down.png new file mode 100644 index 0000000000000000000000000000000000000000..3003a88770de3977d47a2ba69893436a2860f9e7 Binary files /dev/null and b/doc/html/_static/down.png differ diff --git a/doc/html/_static/file.png b/doc/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4 Binary files /dev/null and b/doc/html/_static/file.png differ diff --git a/doc/html/_static/jquery.js b/doc/html/_static/jquery.js new file mode 100644 index 0000000000000000000000000000000000000000..198b3ff07d801dffa2c42fcf3b67eb3295eef85f --- /dev/null +++ b/doc/html/_static/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/doc/html/_static/minus.png b/doc/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..da1c5620d10c047525a467a425abe9ff5269cfc2 Binary files /dev/null and b/doc/html/_static/minus.png differ diff --git a/doc/html/_static/plus.png b/doc/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cb37425ea68b39ffa7b2e5fb69161275a87541 Binary files /dev/null and b/doc/html/_static/plus.png differ diff --git a/doc/html/_static/pygments.css b/doc/html/_static/pygments.css new file mode 100644 index 0000000000000000000000000000000000000000..d79caa151c28f0b24a636319b0d9d732f6c597b5 --- /dev/null +++ b/doc/html/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js new file mode 100644 index 0000000000000000000000000000000000000000..56676b25be8e5307fd607bd01f212ff72456a705 --- /dev/null +++ b/doc/html/_static/searchtools.js @@ -0,0 +1,622 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + +/** + * Simple result scoring code. + */ +var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [filename, title, anchor, descr, score] + // and returns the new score. + /* + score: function(result) { + return result[4]; + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: {0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5}, // used to be unimportantResults + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + // query found in terms + term: 5 +}; + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, + dataType: "script", cache: true, + complete: function(jqxhr, textstatus) { + if (textstatus != "success") { + document.getElementById("searchindexloader").src = url; + } + }}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + var i; + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + } + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out); + this.dots = $('<span></span>').appendTo(this.title); + this.status = $('<p style="display: none"></p>').appendTo(this.out); + this.output = $('<ul class="search"/>').appendTo(this.out); + + $('#search-progress').text(_('Preparing search...')); + this.startPulse(); + + // index already loaded, the browser was quick! + if (this.hasIndex()) + this.query(query); + else + this.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query : function(query) { + var i; + 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"]; + + // stem the searchterms and add them to the correct list + var stemmer = new Stemmer(); + var searchterms = []; + var excluded = []; + var hlterms = []; + var tmp = query.split(/\s+/); + var objectterms = []; + for (i = 0; i < tmp.length; i++) { + if (tmp[i] !== "") { + objectterms.push(tmp[i].toLowerCase()); + } + + if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) || + tmp[i] === "") { + // skip this "word" + continue; + } + // stem the word + var word = stemmer.stemWord(tmp[i]).toLowerCase(); + var toAppend; + // select the correct list + if (word[0] == '-') { + toAppend = excluded; + word = word.substr(1); + } + else { + toAppend = searchterms; + hlterms.push(tmp[i].toLowerCase()); + } + // only add if not already in the list + if (!$u.contains(toAppend, word)) + toAppend.push(word); + } + var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" ")); + + // console.debug('SEARCH: searching for:'); + // console.info('required: ', searchterms); + // console.info('excluded: ', excluded); + + // prepare search + var terms = this._index.terms; + var titleterms = this._index.titleterms; + + // array of [filename, title, anchor, descr, score] + var results = []; + $('#search-progress').empty(); + + // lookup as object + for (i = 0; i < objectterms.length; i++) { + var others = [].concat(objectterms.slice(0, i), + objectterms.slice(i+1, objectterms.length)); + results = results.concat(this.performObjectSearch(objectterms[i], others)); + } + + // lookup as search terms in fulltext + results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term)) + .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + for (i = 0; i < results.length; i++) + results[i][4] = Scorer.score(results[i]); + } + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort(function(a, b) { + var left = a[4]; + var right = b[4]; + if (left > right) { + return 1; + } else if (left < right) { + return -1; + } else { + // same score: sort alphabetically + left = a[1].toLowerCase(); + right = b[1].toLowerCase(); + return (left > right) ? -1 : ((left < right) ? 1 : 0); + } + }); + + // for debugging + //Search.lastresults = results.slice(); // a copy + //console.info('search results:', Search.lastresults); + + // print the results + var resultCount = results.length; + function displayNextItem() { + // results left, load the summary and display it + if (results.length) { + var item = results.pop(); + var listItem = $('<li style="display:none"></li>'); + if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') { + // dirhtml builder + var dirname = item[0] + '/'; + if (dirname.match(/\/index\/$/)) { + dirname = dirname.substring(0, dirname.length-6); + } else if (dirname == 'index/') { + dirname = ''; + } + listItem.append($('<a/>').attr('href', + DOCUMENTATION_OPTIONS.URL_ROOT + dirname + + highlightstring + item[2]).html(item[1])); + } else { + // normal html builders + listItem.append($('<a/>').attr('href', + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + + highlightstring + item[2]).html(item[1])); + } + if (item[3]) { + listItem.append($('<span> (' + item[3] + ')</span>')); + Search.output.append(listItem); + listItem.slideDown(5, function() { + displayNextItem(); + }); + } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { + $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt', + dataType: "text", + complete: function(jqxhr, textstatus) { + var data = jqxhr.responseText; + if (data !== '') { + listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); + } + Search.output.append(listItem); + listItem.slideDown(5, function() { + displayNextItem(); + }); + }}); + } else { + // no source available, just display title + Search.output.append(listItem); + listItem.slideDown(5, function() { + displayNextItem(); + }); + } + } + // search finished, update title and status message + else { + Search.stopPulse(); + Search.title.text(_('Search Results')); + if (!resultCount) + Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.')); + else + Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount)); + Search.status.fadeIn(500); + } + } + displayNextItem(); + }, + + /** + * search for object names + */ + performObjectSearch : function(object, otherterms) { + var filenames = this._index.filenames; + var objects = this._index.objects; + var objnames = this._index.objnames; + var titles = this._index.titles; + + var i; + var results = []; + + for (var prefix in objects) { + for (var name in objects[prefix]) { + var fullname = (prefix ? prefix + '.' : '') + name; + if (fullname.toLowerCase().indexOf(object) > -1) { + var score = 0; + var parts = fullname.split('.'); + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullname == object || parts[parts.length - 1] == object) { + score += Scorer.objNameMatch; + // matches in last name + } else if (parts[parts.length - 1].indexOf(object) > -1) { + score += Scorer.objPartialMatch; + } + var match = objects[prefix][name]; + var objname = objnames[match[1]][2]; + var title = titles[match[0]]; + // If more than one term searched for, we require other words to be + // found in the name/title/description + if (otherterms.length > 0) { + var haystack = (prefix + ' ' + name + ' ' + + objname + ' ' + title).toLowerCase(); + var allfound = true; + for (i = 0; i < otherterms.length; i++) { + if (haystack.indexOf(otherterms[i]) == -1) { + allfound = false; + break; + } + } + if (!allfound) { + continue; + } + } + var descr = objname + _(', in ') + title; + + var anchor = match[3]; + if (anchor === '') + anchor = fullname; + else if (anchor == '-') + anchor = objnames[match[1]][1] + '-' + fullname; + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) { + score += Scorer.objPrio[match[2]]; + } else { + score += Scorer.objPrioDefault; + } + results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]); + } + } + } + + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch : function(searchterms, excluded, terms, score) { + var filenames = this._index.filenames; + var titles = this._index.titles; + + var i, j, file, files; + var fileMap = {}; + var results = []; + + // perform the search on the required terms + for (i = 0; i < searchterms.length; i++) { + var word = searchterms[i]; + // no match but word was a required one + if (!(files = terms[word])) + break; + if (files.length === undefined) { + files = [files]; + } + // create the mapping + for (j = 0; j < files.length; j++) { + file = files[j]; + if (file in fileMap) + fileMap[file].push(word); + else + fileMap[file] = [word]; + } + } + + // now check if the files don't contain excluded terms + for (file in fileMap) { + var valid = true; + + // check if all requirements are matched + if (fileMap[file].length != searchterms.length) + continue; + + // ensure that none of the excluded terms is in the search result + for (i = 0; i < excluded.length; i++) { + if (terms[excluded[i]] == file || + $u.contains(terms[excluded[i]] || [], file)) { + valid = false; + break; + } + } + + // if we have still a valid result we can add it to the result list + if (valid) { + results.push([filenames[file], titles[file], '', null, score]); + } + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + makeSearchSummary : function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('<div class="context"></div>').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; + } +}; + +$(document).ready(function() { + Search.init(); +}); \ No newline at end of file diff --git a/doc/html/_static/sidebar.js b/doc/html/_static/sidebar.js new file mode 100644 index 0000000000000000000000000000000000000000..5adf8952297c2ea094b95d1ecf6363f665d5d07a --- /dev/null +++ b/doc/html/_static/sidebar.js @@ -0,0 +1,159 @@ +/* + * sidebar.js + * ~~~~~~~~~~ + * + * This script makes the Sphinx sidebar collapsible. + * + * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds + * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton + * used to collapse and expand the sidebar. + * + * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden + * and the width of the sidebar and the margin-left of the document + * are decreased. When the sidebar is expanded the opposite happens. + * This script saves a per-browser/per-session cookie used to + * remember the position of the sidebar among the pages. + * Once the browser is closed the cookie is deleted and the position + * reset to the default (expanded). + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +$(function() { + + + + + + + + + // global elements used by the functions. + // the 'sidebarbutton' element is defined as global after its + // creation, in the add_sidebar_button function + var bodywrapper = $('.bodywrapper'); + var sidebar = $('.sphinxsidebar'); + var sidebarwrapper = $('.sphinxsidebarwrapper'); + + // for some reason, the document has no sidebar; do not run into errors + if (!sidebar.length) return; + + // original margin-left of the bodywrapper and width of the sidebar + // with the sidebar expanded + var bw_margin_expanded = bodywrapper.css('margin-left'); + var ssb_width_expanded = sidebar.width(); + + // margin-left of the bodywrapper and width of the sidebar + // with the sidebar collapsed + var bw_margin_collapsed = '.8em'; + var ssb_width_collapsed = '.8em'; + + // colors used by the current theme + var dark_color = $('.related').css('background-color'); + var light_color = $('.document').css('background-color'); + + function sidebar_is_collapsed() { + return sidebarwrapper.is(':not(:visible)'); + } + + function toggle_sidebar() { + if (sidebar_is_collapsed()) + expand_sidebar(); + else + collapse_sidebar(); + } + + function collapse_sidebar() { + sidebarwrapper.hide(); + sidebar.css('width', ssb_width_collapsed); + bodywrapper.css('margin-left', bw_margin_collapsed); + sidebarbutton.css({ + 'margin-left': '0', + 'height': bodywrapper.height() + }); + sidebarbutton.find('span').text('»'); + sidebarbutton.attr('title', _('Expand sidebar')); + document.cookie = 'sidebar=collapsed'; + } + + function expand_sidebar() { + bodywrapper.css('margin-left', bw_margin_expanded); + sidebar.css('width', ssb_width_expanded); + sidebarwrapper.show(); + sidebarbutton.css({ + 'margin-left': ssb_width_expanded-12, + 'height': bodywrapper.height() + }); + sidebarbutton.find('span').text('«'); + sidebarbutton.attr('title', _('Collapse sidebar')); + document.cookie = 'sidebar=expanded'; + } + + function add_sidebar_button() { + sidebarwrapper.css({ + 'float': 'left', + 'margin-right': '0', + 'width': ssb_width_expanded - 28 + }); + // create the button + sidebar.append( + '<div id="sidebarbutton"><span>«</span></div>' + ); + var sidebarbutton = $('#sidebarbutton'); + light_color = sidebarbutton.css('background-color'); + // find the height of the viewport to center the '<<' in the page + var viewport_height; + if (window.innerHeight) + viewport_height = window.innerHeight; + else + viewport_height = $(window).height(); + sidebarbutton.find('span').css({ + 'display': 'block', + 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 + }); + + sidebarbutton.click(toggle_sidebar); + sidebarbutton.attr('title', _('Collapse sidebar')); + sidebarbutton.css({ + 'color': '#FFFFFF', + 'border-left': '1px solid ' + dark_color, + 'font-size': '1.2em', + 'cursor': 'pointer', + 'height': bodywrapper.height(), + 'padding-top': '1px', + 'margin-left': ssb_width_expanded - 12 + }); + + sidebarbutton.hover( + function () { + $(this).css('background-color', dark_color); + }, + function () { + $(this).css('background-color', light_color); + } + ); + } + + function set_position_from_cookie() { + if (!document.cookie) + return; + var items = document.cookie.split(';'); + for(var k=0; k<items.length; k++) { + var key_val = items[k].split('='); + var key = key_val[0]; + if (key == 'sidebar') { + var value = key_val[1]; + if ((value == 'collapsed') && (!sidebar_is_collapsed())) + collapse_sidebar(); + else if ((value == 'expanded') && (sidebar_is_collapsed())) + expand_sidebar(); + } + } + } + + add_sidebar_button(); + var sidebarbutton = $('#sidebarbutton'); + set_position_from_cookie(); +}); \ No newline at end of file diff --git a/doc/html/_static/underscore.js b/doc/html/_static/underscore.js new file mode 100644 index 0000000000000000000000000000000000000000..5b55f32beaca186f84cca115514f02cddbd1bbd5 --- /dev/null +++ b/doc/html/_static/underscore.js @@ -0,0 +1,31 @@ +// Underscore.js 1.3.1 +// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the MIT license. +// Portions of Underscore are inspired or borrowed from Prototype, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore +(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== +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, +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= +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;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a== +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= +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= +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= +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;b<e.computed&&(e={value:a,computed:b})}); +return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?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, +c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest= +b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]); +return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=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<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c, +d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g}; +var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a, +c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true: +a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}}; +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, +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)}; +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]"}; +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<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), +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("+ +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]= +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= +true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); diff --git a/doc/html/_static/up-pressed.png b/doc/html/_static/up-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd587afee2fe38989383ff82010147ea56b93dd Binary files /dev/null and b/doc/html/_static/up-pressed.png differ diff --git a/doc/html/_static/up.png b/doc/html/_static/up.png new file mode 100644 index 0000000000000000000000000000000000000000..b94625680b4a4b9647c3a6f3f283776930696aa9 Binary files /dev/null and b/doc/html/_static/up.png differ diff --git a/doc/html/_static/websupport.js b/doc/html/_static/websupport.js new file mode 100644 index 0000000000000000000000000000000000000000..19fcda5647b4c91f66bd99c653c15475ec86fcc2 --- /dev/null +++ b/doc/html/_static/websupport.js @@ -0,0 +1,808 @@ +/* + * websupport.js + * ~~~~~~~~~~~~~ + * + * sphinx.websupport utilties for all documentation. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +(function($) { + $.fn.autogrow = function() { + return this.each(function() { + var textarea = this; + + $.fn.autogrow.resize(textarea); + + $(textarea) + .focus(function() { + textarea.interval = setInterval(function() { + $.fn.autogrow.resize(textarea); + }, 500); + }) + .blur(function() { + clearInterval(textarea.interval); + }); + }); + }; + + $.fn.autogrow.resize = function(textarea) { + var lineHeight = parseInt($(textarea).css('line-height'), 10); + var lines = textarea.value.split('\n'); + var columns = textarea.cols; + var lineCount = 0; + $.each(lines, function() { + lineCount += Math.ceil(this.length / columns) || 1; + }); + var height = lineHeight * (lineCount + 1); + $(textarea).css('height', height); + }; +})(jQuery); + +(function($) { + var comp, by; + + function init() { + initEvents(); + initComparator(); + } + + function initEvents() { + $('a.comment-close').live("click", function(event) { + event.preventDefault(); + hide($(this).attr('id').substring(2)); + }); + $('a.vote').live("click", function(event) { + event.preventDefault(); + handleVote($(this)); + }); + $('a.reply').live("click", function(event) { + event.preventDefault(); + openReply($(this).attr('id').substring(2)); + }); + $('a.close-reply').live("click", function(event) { + event.preventDefault(); + closeReply($(this).attr('id').substring(2)); + }); + $('a.sort-option').live("click", function(event) { + event.preventDefault(); + handleReSort($(this)); + }); + $('a.show-proposal').live("click", function(event) { + event.preventDefault(); + showProposal($(this).attr('id').substring(2)); + }); + $('a.hide-proposal').live("click", function(event) { + event.preventDefault(); + hideProposal($(this).attr('id').substring(2)); + }); + $('a.show-propose-change').live("click", function(event) { + event.preventDefault(); + showProposeChange($(this).attr('id').substring(2)); + }); + $('a.hide-propose-change').live("click", function(event) { + event.preventDefault(); + hideProposeChange($(this).attr('id').substring(2)); + }); + $('a.accept-comment').live("click", function(event) { + event.preventDefault(); + acceptComment($(this).attr('id').substring(2)); + }); + $('a.delete-comment').live("click", function(event) { + event.preventDefault(); + deleteComment($(this).attr('id').substring(2)); + }); + $('a.comment-markup').live("click", function(event) { + event.preventDefault(); + toggleCommentMarkupBox($(this).attr('id').substring(2)); + }); + } + + /** + * Set comp, which is a comparator function used for sorting and + * inserting comments into the list. + */ + function setComparator() { + // If the first three letters are "asc", sort in ascending order + // and remove the prefix. + if (by.substring(0,3) == 'asc') { + var i = by.substring(3); + comp = function(a, b) { return a[i] - b[i]; }; + } else { + // Otherwise sort in descending order. + comp = function(a, b) { return b[by] - a[by]; }; + } + + // Reset link styles and format the selected sort option. + $('a.sel').attr('href', '#').removeClass('sel'); + $('a.by' + by).removeAttr('href').addClass('sel'); + } + + /** + * Create a comp function. If the user has preferences stored in + * the sortBy cookie, use those, otherwise use the default. + */ + function initComparator() { + by = 'rating'; // Default to sort by rating. + // If the sortBy cookie is set, use that instead. + if (document.cookie.length > 0) { + var start = document.cookie.indexOf('sortBy='); + if (start != -1) { + start = start + 7; + var end = document.cookie.indexOf(";", start); + if (end == -1) { + end = document.cookie.length; + by = unescape(document.cookie.substring(start, end)); + } + } + } + setComparator(); + } + + /** + * Show a comment div. + */ + function show(id) { + $('#ao' + id).hide(); + $('#ah' + id).show(); + var context = $.extend({id: id}, opts); + var popup = $(renderTemplate(popupTemplate, context)).hide(); + popup.find('textarea[name="proposal"]').hide(); + popup.find('a.by' + by).addClass('sel'); + var form = popup.find('#cf' + id); + form.submit(function(event) { + event.preventDefault(); + addComment(form); + }); + $('#s' + id).after(popup); + popup.slideDown('fast', function() { + getComments(id); + }); + } + + /** + * Hide a comment div. + */ + function hide(id) { + $('#ah' + id).hide(); + $('#ao' + id).show(); + var div = $('#sc' + id); + div.slideUp('fast', function() { + div.remove(); + }); + } + + /** + * Perform an ajax request to get comments for a node + * and insert the comments into the comments tree. + */ + function getComments(id) { + $.ajax({ + type: 'GET', + url: opts.getCommentsURL, + data: {node: id}, + success: function(data, textStatus, request) { + var ul = $('#cl' + id); + var speed = 100; + $('#cf' + id) + .find('textarea[name="proposal"]') + .data('source', data.source); + + if (data.comments.length === 0) { + ul.html('<li>No comments yet.</li>'); + ul.data('empty', true); + } else { + // If there are comments, sort them and put them in the list. + var comments = sortComments(data.comments); + speed = data.comments.length * 100; + appendComments(comments, ul); + ul.data('empty', false); + } + $('#cn' + id).slideUp(speed + 200); + ul.slideDown(speed); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem retrieving the comments.'); + }, + dataType: 'json' + }); + } + + /** + * Add a comment via ajax and insert the comment into the comment tree. + */ + function addComment(form) { + var node_id = form.find('input[name="node"]').val(); + var parent_id = form.find('input[name="parent"]').val(); + var text = form.find('textarea[name="comment"]').val(); + var proposal = form.find('textarea[name="proposal"]').val(); + + if (text == '') { + showError('Please enter a comment.'); + return; + } + + // Disable the form that is being submitted. + form.find('textarea,input').attr('disabled', 'disabled'); + + // Send the comment to the server. + $.ajax({ + type: "POST", + url: opts.addCommentURL, + dataType: 'json', + data: { + node: node_id, + parent: parent_id, + text: text, + proposal: proposal + }, + success: function(data, textStatus, error) { + // Reset the form. + if (node_id) { + hideProposeChange(node_id); + } + form.find('textarea') + .val('') + .add(form.find('input')) + .removeAttr('disabled'); + var ul = $('#cl' + (node_id || parent_id)); + if (ul.data('empty')) { + $(ul).empty(); + ul.data('empty', false); + } + insertComment(data.comment); + var ao = $('#ao' + node_id); + ao.find('img').attr({'src': opts.commentBrightImage}); + if (node_id) { + // if this was a "root" comment, remove the commenting box + // (the user can get it back by reopening the comment popup) + $('#ca' + node_id).slideUp(); + } + }, + error: function(request, textStatus, error) { + form.find('textarea,input').removeAttr('disabled'); + showError('Oops, there was a problem adding the comment.'); + } + }); + } + + /** + * Recursively append comments to the main comment list and children + * lists, creating the comment tree. + */ + function appendComments(comments, ul) { + $.each(comments, function() { + var div = createCommentDiv(this); + ul.append($(document.createElement('li')).html(div)); + appendComments(this.children, div.find('ul.comment-children')); + // To avoid stagnating data, don't store the comments children in data. + this.children = null; + div.data('comment', this); + }); + } + + /** + * After adding a new comment, it must be inserted in the correct + * location in the comment tree. + */ + function insertComment(comment) { + var div = createCommentDiv(comment); + + // To avoid stagnating data, don't store the comments children in data. + comment.children = null; + div.data('comment', comment); + + var ul = $('#cl' + (comment.node || comment.parent)); + var siblings = getChildren(ul); + + var li = $(document.createElement('li')); + li.hide(); + + // Determine where in the parents children list to insert this comment. + for(i=0; i < siblings.length; i++) { + if (comp(comment, siblings[i]) <= 0) { + $('#cd' + siblings[i].id) + .parent() + .before(li.html(div)); + li.slideDown('fast'); + return; + } + } + + // If we get here, this comment rates lower than all the others, + // or it is the only comment in the list. + ul.append(li.html(div)); + li.slideDown('fast'); + } + + function acceptComment(id) { + $.ajax({ + type: 'POST', + url: opts.acceptCommentURL, + data: {id: id}, + success: function(data, textStatus, request) { + $('#cm' + id).fadeOut('fast'); + $('#cd' + id).removeClass('moderate'); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem accepting the comment.'); + } + }); + } + + function deleteComment(id) { + $.ajax({ + type: 'POST', + url: opts.deleteCommentURL, + data: {id: id}, + success: function(data, textStatus, request) { + var div = $('#cd' + id); + if (data == 'delete') { + // Moderator mode: remove the comment and all children immediately + div.slideUp('fast', function() { + div.remove(); + }); + return; + } + // User mode: only mark the comment as deleted + div + .find('span.user-id:first') + .text('[deleted]').end() + .find('div.comment-text:first') + .text('[deleted]').end() + .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id + + ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id) + .remove(); + var comment = div.data('comment'); + comment.username = '[deleted]'; + comment.text = '[deleted]'; + div.data('comment', comment); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem deleting the comment.'); + } + }); + } + + function showProposal(id) { + $('#sp' + id).hide(); + $('#hp' + id).show(); + $('#pr' + id).slideDown('fast'); + } + + function hideProposal(id) { + $('#hp' + id).hide(); + $('#sp' + id).show(); + $('#pr' + id).slideUp('fast'); + } + + function showProposeChange(id) { + $('#pc' + id).hide(); + $('#hc' + id).show(); + var textarea = $('#pt' + id); + textarea.val(textarea.data('source')); + $.fn.autogrow.resize(textarea[0]); + textarea.slideDown('fast'); + } + + function hideProposeChange(id) { + $('#hc' + id).hide(); + $('#pc' + id).show(); + var textarea = $('#pt' + id); + textarea.val('').removeAttr('disabled'); + textarea.slideUp('fast'); + } + + function toggleCommentMarkupBox(id) { + $('#mb' + id).toggle(); + } + + /** Handle when the user clicks on a sort by link. */ + function handleReSort(link) { + var classes = link.attr('class').split(/\s+/); + for (var i=0; i<classes.length; i++) { + if (classes[i] != 'sort-option') { + by = classes[i].substring(2); + } + } + setComparator(); + // Save/update the sortBy cookie. + var expiration = new Date(); + expiration.setDate(expiration.getDate() + 365); + document.cookie= 'sortBy=' + escape(by) + + ';expires=' + expiration.toUTCString(); + $('ul.comment-ul').each(function(index, ul) { + var comments = getChildren($(ul), true); + comments = sortComments(comments); + appendComments(comments, $(ul).empty()); + }); + } + + /** + * Function to process a vote when a user clicks an arrow. + */ + function handleVote(link) { + if (!opts.voting) { + showError("You'll need to login to vote."); + return; + } + + var id = link.attr('id'); + if (!id) { + // Didn't click on one of the voting arrows. + return; + } + // If it is an unvote, the new vote value is 0, + // Otherwise it's 1 for an upvote, or -1 for a downvote. + var value = 0; + if (id.charAt(1) != 'u') { + value = id.charAt(0) == 'u' ? 1 : -1; + } + // The data to be sent to the server. + var d = { + comment_id: id.substring(2), + value: value + }; + + // Swap the vote and unvote links. + link.hide(); + $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id) + .show(); + + // The div the comment is displayed in. + var div = $('div#cd' + d.comment_id); + var data = div.data('comment'); + + // If this is not an unvote, and the other vote arrow has + // already been pressed, unpress it. + if ((d.value !== 0) && (data.vote === d.value * -1)) { + $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide(); + $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show(); + } + + // Update the comments rating in the local data. + data.rating += (data.vote === 0) ? d.value : (d.value - data.vote); + data.vote = d.value; + div.data('comment', data); + + // Change the rating text. + div.find('.rating:first') + .text(data.rating + ' point' + (data.rating == 1 ? '' : 's')); + + // Send the vote information to the server. + $.ajax({ + type: "POST", + url: opts.processVoteURL, + data: d, + error: function(request, textStatus, error) { + showError('Oops, there was a problem casting that vote.'); + } + }); + } + + /** + * Open a reply form used to reply to an existing comment. + */ + function openReply(id) { + // Swap out the reply link for the hide link + $('#rl' + id).hide(); + $('#cr' + id).show(); + + // Add the reply li to the children ul. + var div = $(renderTemplate(replyTemplate, {id: id})).hide(); + $('#cl' + id) + .prepend(div) + // Setup the submit handler for the reply form. + .find('#rf' + id) + .submit(function(event) { + event.preventDefault(); + addComment($('#rf' + id)); + closeReply(id); + }) + .find('input[type=button]') + .click(function() { + closeReply(id); + }); + div.slideDown('fast', function() { + $('#rf' + id).find('textarea').focus(); + }); + } + + /** + * Close the reply form opened with openReply. + */ + function closeReply(id) { + // Remove the reply div from the DOM. + $('#rd' + id).slideUp('fast', function() { + $(this).remove(); + }); + + // Swap out the hide link for the reply link + $('#cr' + id).hide(); + $('#rl' + id).show(); + } + + /** + * Recursively sort a tree of comments using the comp comparator. + */ + function sortComments(comments) { + comments.sort(comp); + $.each(comments, function() { + this.children = sortComments(this.children); + }); + return comments; + } + + /** + * Get the children comments from a ul. If recursive is true, + * recursively include childrens' children. + */ + function getChildren(ul, recursive) { + var children = []; + ul.children().children("[id^='cd']") + .each(function() { + var comment = $(this).data('comment'); + if (recursive) + comment.children = getChildren($(this).find('#cl' + comment.id), true); + children.push(comment); + }); + return children; + } + + /** Create a div to display a comment in. */ + function createCommentDiv(comment) { + if (!comment.displayed && !opts.moderator) { + return $('<div class="moderate">Thank you! Your comment will show up ' + + 'once it is has been approved by a moderator.</div>'); + } + // Prettify the comment rating. + comment.pretty_rating = comment.rating + ' point' + + (comment.rating == 1 ? '' : 's'); + // Make a class (for displaying not yet moderated comments differently) + comment.css_class = comment.displayed ? '' : ' moderate'; + // Create a div for this comment. + var context = $.extend({}, opts, comment); + var div = $(renderTemplate(commentTemplate, context)); + + // If the user has voted on this comment, highlight the correct arrow. + if (comment.vote) { + var direction = (comment.vote == 1) ? 'u' : 'd'; + div.find('#' + direction + 'v' + comment.id).hide(); + div.find('#' + direction + 'u' + comment.id).show(); + } + + if (opts.moderator || comment.text != '[deleted]') { + div.find('a.reply').show(); + if (comment.proposal_diff) + div.find('#sp' + comment.id).show(); + if (opts.moderator && !comment.displayed) + div.find('#cm' + comment.id).show(); + if (opts.moderator || (opts.username == comment.username)) + div.find('#dc' + comment.id).show(); + } + return div; + } + + /** + * A simple template renderer. Placeholders such as <%id%> are replaced + * by context['id'] with items being escaped. Placeholders such as <#id#> + * are not escaped. + */ + function renderTemplate(template, context) { + var esc = $(document.createElement('div')); + + function handle(ph, escape) { + var cur = context; + $.each(ph.split('.'), function() { + cur = cur[this]; + }); + return escape ? esc.text(cur || "").html() : cur; + } + + return template.replace(/<([%#])([\w\.]*)\1>/g, function() { + return handle(arguments[2], arguments[1] == '%' ? true : false); + }); + } + + /** Flash an error message briefly. */ + function showError(message) { + $(document.createElement('div')).attr({'class': 'popup-error'}) + .append($(document.createElement('div')) + .attr({'class': 'error-message'}).text(message)) + .appendTo('body') + .fadeIn("slow") + .delay(2000) + .fadeOut("slow"); + } + + /** Add a link the user uses to open the comments popup. */ + $.fn.comment = function() { + return this.each(function() { + var id = $(this).attr('id').substring(1); + var count = COMMENT_METADATA[id]; + var title = count + ' comment' + (count == 1 ? '' : 's'); + var image = count > 0 ? opts.commentBrightImage : opts.commentImage; + var addcls = count == 0 ? ' nocomment' : ''; + $(this) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-open' + addcls, + id: 'ao' + id + }) + .append($(document.createElement('img')).attr({ + src: image, + alt: 'comment', + title: title + })) + .click(function(event) { + event.preventDefault(); + show($(this).attr('id').substring(2)); + }) + ) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-close hidden', + id: 'ah' + id + }) + .append($(document.createElement('img')).attr({ + src: opts.closeCommentImage, + alt: 'close', + title: 'close' + })) + .click(function(event) { + event.preventDefault(); + hide($(this).attr('id').substring(2)); + }) + ); + }); + }; + + var opts = { + processVoteURL: '/_process_vote', + addCommentURL: '/_add_comment', + getCommentsURL: '/_get_comments', + acceptCommentURL: '/_accept_comment', + deleteCommentURL: '/_delete_comment', + commentImage: '/static/_static/comment.png', + closeCommentImage: '/static/_static/comment-close.png', + loadingImage: '/static/_static/ajax-loader.gif', + commentBrightImage: '/static/_static/comment-bright.png', + upArrow: '/static/_static/up.png', + downArrow: '/static/_static/down.png', + upArrowPressed: '/static/_static/up-pressed.png', + downArrowPressed: '/static/_static/down-pressed.png', + voting: false, + moderator: false + }; + + if (typeof COMMENT_OPTIONS != "undefined") { + opts = jQuery.extend(opts, COMMENT_OPTIONS); + } + + var popupTemplate = '\ + <div class="sphinx-comments" id="sc<%id%>">\ + <p class="sort-options">\ + Sort by:\ + <a href="#" class="sort-option byrating">best rated</a>\ + <a href="#" class="sort-option byascage">newest</a>\ + <a href="#" class="sort-option byage">oldest</a>\ + </p>\ + <div class="comment-header">Comments</div>\ + <div class="comment-loading" id="cn<%id%>">\ + loading comments... <img src="<%loadingImage%>" alt="" /></div>\ + <ul id="cl<%id%>" class="comment-ul"></ul>\ + <div id="ca<%id%>">\ + <p class="add-a-comment">Add a comment\ + (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ + <div class="comment-markup-box" id="mb<%id%>">\ + reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \ + <tt>``code``</tt>, \ + code blocks: <tt>::</tt> and an indented block after blank line</div>\ + <form method="post" id="cf<%id%>" class="comment-form" action="">\ + <textarea name="comment" cols="80"></textarea>\ + <p class="propose-button">\ + <a href="#" id="pc<%id%>" class="show-propose-change">\ + Propose a change ▹\ + </a>\ + <a href="#" id="hc<%id%>" class="hide-propose-change">\ + Propose a change ▿\ + </a>\ + </p>\ + <textarea name="proposal" id="pt<%id%>" cols="80"\ + spellcheck="false"></textarea>\ + <input type="submit" value="Add comment" />\ + <input type="hidden" name="node" value="<%id%>" />\ + <input type="hidden" name="parent" value="" />\ + </form>\ + </div>\ + </div>'; + + var commentTemplate = '\ + <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\ + <div class="vote">\ + <div class="arrow">\ + <a href="#" id="uv<%id%>" class="vote" title="vote up">\ + <img src="<%upArrow%>" />\ + </a>\ + <a href="#" id="uu<%id%>" class="un vote" title="vote up">\ + <img src="<%upArrowPressed%>" />\ + </a>\ + </div>\ + <div class="arrow">\ + <a href="#" id="dv<%id%>" class="vote" title="vote down">\ + <img src="<%downArrow%>" id="da<%id%>" />\ + </a>\ + <a href="#" id="du<%id%>" class="un vote" title="vote down">\ + <img src="<%downArrowPressed%>" />\ + </a>\ + </div>\ + </div>\ + <div class="comment-content">\ + <p class="tagline comment">\ + <span class="user-id"><%username%></span>\ + <span class="rating"><%pretty_rating%></span>\ + <span class="delta"><%time.delta%></span>\ + </p>\ + <div class="comment-text comment"><#text#></div>\ + <p class="comment-opts comment">\ + <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\ + <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\ + <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\ + <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\ + <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\ + <span id="cm<%id%>" class="moderation hidden">\ + <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\ + </span>\ + </p>\ + <pre class="proposal" id="pr<%id%>">\ +<#proposal_diff#>\ + </pre>\ + <ul class="comment-children" id="cl<%id%>"></ul>\ + </div>\ + <div class="clearleft"></div>\ + </div>\ + </div>'; + + var replyTemplate = '\ + <li>\ + <div class="reply-div" id="rd<%id%>">\ + <form id="rf<%id%>">\ + <textarea name="comment" cols="80"></textarea>\ + <input type="submit" value="Add reply" />\ + <input type="button" value="Cancel" />\ + <input type="hidden" name="parent" value="<%id%>" />\ + <input type="hidden" name="node" value="" />\ + </form>\ + </div>\ + </li>'; + + $(document).ready(function() { + init(); + }); +})(jQuery); + +$(document).ready(function() { + // add comment anchors for all paragraphs that are commentable + $('.sphinx-has-comment').comment(); + + // highlight search words in search results + $("div.context").each(function() { + var params = $.getQueryParameters(); + var terms = (params.q) ? params.q[0].split(/\s+/) : []; + var result = $(this); + $.each(terms, function() { + result.highlightText(this.toLowerCase(), 'highlighted'); + }); + }); + + // directly open comment window if requested + var anchor = document.location.hash; + if (anchor.substring(0, 9) == '#comment-') { + $('#ao' + anchor.substring(9)).click(); + document.location.hash = '#s' + anchor.substring(9); + } +}); diff --git a/doc/html/buildsystem.html b/doc/html/buildsystem.html new file mode 100644 index 0000000000000000000000000000000000000000..9d3a59c3c7f615273ee80e1aa1a62670f94433dc --- /dev/null +++ b/doc/html/buildsystem.html @@ -0,0 +1,193 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Building ProMod3 — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <link rel="up" title="Documentation For Developes" href="developers.html" /> + <link rel="next" title="Contributing" href="contributing.html" /> + <link rel="prev" title="Raw Coordinate Modeling" href="meld/rawmodel.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="contributing.html" title="Contributing" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="meld/rawmodel.html" title="Raw Coordinate Modeling" + accesskey="P">previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + <li><a href="developers.html" accesskey="U">Documentation For Developes</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="building-project"> +<h1>Building ProMod3<a class="headerlink" href="#building-project" title="Permalink to this headline">¶</a></h1> +<div class="section" id="dependencies"> +<h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2> +<p>ProMod3 is build on top of <a class="reference external" href="http://www.OpenStructure.org">OpenStructure</a> (OST) and needs at least version +1.4. To create the build system, <a class="reference external" href="http://www.cmake.org/">CMake</a> is required in version 2.8.7 or +higher. <a class="reference external" href="https://www.python.org/">Python</a> works well from version 2.7. For OST and the C++ bit of +ProMod3, <a class="reference external" href="http://www.boost.org/">Boost</a> is required in version 1.47.0. To build documentation, +<a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> 1.2b1 is used.</p> +<ul class="simple"> +<li><a class="reference external" href="http://www.OpenStructure.org">OST</a> 1.4</li> +<li><a class="reference external" href="http://www.cmake.org/">CMake</a> 2.8.7</li> +<li><a class="reference external" href="https://www.python.org/">Python</a> 2.7</li> +<li><a class="reference external" href="http://www.boost.org/">Boost</a> 1.47.0</li> +<li><a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> 1.2b1</li> +</ul> +</div> +<div class="section" id="using-cmake"> +<h2>Using CMake<a class="headerlink" href="#using-cmake" title="Permalink to this headline">¶</a></h2> +<p>CMake is used to configure the build system and in the end produces makefiles +and certain directories needed for building ProMod3. Basically it is called +right from a shell with the directory containing the top-level +<tt class="file docutils literal"><span class="pre">CMakeLists.txt</span></tt> as an argument:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> cmake . -DOST_ROOT<span class="o">=</span><PATH TO OST> +</pre></div> +</div> +<p>For us, at least a pointer to the OST installation directory is needed, +handed over to CMake by <tt class="docutils literal"><span class="pre">-D</span></tt> into the variable <tt class="docutils literal"><span class="pre">OST_ROOT</span></tt>. Other important +variables would be <tt class="docutils literal"><span class="pre">BOOST_ROOT</span></tt>, set to the same path as for OST and +probably <tt class="docutils literal"><span class="pre">PYTHON_ROOT</span></tt> if you want to use a certain Python. Don’t forget to +put a <tt class="docutils literal"><span class="pre">-D</span></tt> in front of options.</p> +<p>Here is a list of more options used within ProMod3:</p> +<ul class="simple"> +<li><tt class="docutils literal"><span class="pre">DISABLE_DOCUMENTATION</span></tt> Don’t build documentation, don’t search for Sphinx</li> +<li><tt class="docutils literal"><span class="pre">DISABLE_DOCTEST</span></tt> Don’t run example code from documentation on ‘make check’ +(implicit by <tt class="docutils literal"><span class="pre">DISABLE_DOCUMENTATION</span></tt>)</li> +<li><tt class="docutils literal"><span class="pre">DISABLE_LINKCHECK</span></tt> Don’t test links from documentation on ‘make check +(implicit by <tt class="docutils literal"><span class="pre">DISABLE_DOCUMENTATION</span></tt>)</li> +</ul> +<p>Instead of calling CMake by yourself, there is the <tt class="file docutils literal"><span class="pre">conf-scripts</span></tt> +directory, providing smallish scripts to invoke CMake the right way for +various systems. Usually those scripts just need the OST path and the +location of the top-level <tt class="file docutils literal"><span class="pre">CMakeLists.txt</span></tt>.</p> +<p>What we highly recommend is going for out-of-source builds. This means creating +a dedicated directory for building ProMod3 and calling CMake/ a +configuration script from there. This way, you can have several builds with +different configurations. Also if anything goes wrong, just remove the build +directory to get to a clean state again. No searching for CMake cache files or +checking if certain files really got rebuild and similar things required.</p> +<div class="section" id="important-make-targets"> +<h3>Important Make Targets<a class="headerlink" href="#important-make-targets" title="Permalink to this headline">¶</a></h3> +<p>Beside the usual <tt class="docutils literal"><span class="pre">make</span> <span class="pre">all</span></tt> and other default targets, there are a few +special targets:</p> +<ul class="simple"> +<li><tt class="docutils literal"><span class="pre">check</span></tt> Runs unit tests and if CMake was invoked in its standard +configuration also Sphinx with the <tt class="docutils literal"><span class="pre">doctest</span></tt> and <tt class="docutils literal"><span class="pre">linkcheck</span></tt> builders</li> +<li><tt class="docutils literal"><span class="pre">html</span></tt> Creates documentation as web page using the Sphinx <tt class="docutils literal"><span class="pre">html</span></tt> builder</li> +<li><tt class="docutils literal"><span class="pre">man</span></tt> Creates a manual page using the Sphinx <tt class="docutils literal"><span class="pre">man</span></tt> builder</li> +<li><tt class="docutils literal"><span class="pre">doc</span></tt> Creates documentation using the <tt class="docutils literal"><span class="pre">html</span></tt> and <tt class="docutils literal"><span class="pre">man</span></tt> targets</li> +<li><tt class="docutils literal"><span class="pre">help</span></tt> Prints a list of targets available</li> +</ul> +</div> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Building ProMod3</a><ul> +<li><a class="reference internal" href="#dependencies">Dependencies</a></li> +<li><a class="reference internal" href="#using-cmake">Using CMake</a><ul> +<li><a class="reference internal" href="#important-make-targets">Important Make Targets</a></li> +</ul> +</li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="meld/rawmodel.html" + title="previous chapter">Raw Coordinate Modeling</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="contributing.html" + title="next chapter">Contributing</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/buildsystem.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="contributing.html" title="Contributing" + >next</a> |</li> + <li class="right" > + <a href="meld/rawmodel.html" title="Raw Coordinate Modeling" + >previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + <li><a href="developers.html" >Documentation For Developes</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/changelog.html b/doc/html/changelog.html new file mode 100644 index 0000000000000000000000000000000000000000..ba32c057a85f890973aa2415896cd2e47d73cdf7 --- /dev/null +++ b/doc/html/changelog.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Changelog — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <link rel="prev" title="Contributing" href="contributing.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="contributing.html" title="Contributing" + accesskey="P">previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="changelog"> +<h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1> +<div class="section" id="changes-in-release-0-1"> +<h2>Changes in Release 0.1<a class="headerlink" href="#changes-in-release-0-1" title="Permalink to this headline">¶</a></h2> +<blockquote> +<div><ul class="simple"> +<li>initial setup of the CMake build system</li> +<li>first idea of the documentation system</li> +<li>meld included from SMNG as first module (to be modified/ renamed)</li> +</ul> +</div></blockquote> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Changelog</a><ul> +<li><a class="reference internal" href="#changes-in-release-0-1">Changes in Release 0.1</a></li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="contributing.html" + title="previous chapter">Contributing</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/changelog.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="contributing.html" title="Contributing" + >previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/contributing.html b/doc/html/contributing.html new file mode 100644 index 0000000000000000000000000000000000000000..14622752d530083782888067fb2d7f69c9886152 --- /dev/null +++ b/doc/html/contributing.html @@ -0,0 +1,322 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Contributing — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <link rel="up" title="Documentation For Developes" href="developers.html" /> + <link rel="next" title="Changelog" href="changelog.html" /> + <link rel="prev" title="Building ProMod3" href="buildsystem.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="changelog.html" title="Changelog" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="buildsystem.html" title="Building ProMod3" + accesskey="P">previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + <li><a href="developers.html" accesskey="U">Documentation For Developes</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="contributing"> +<h1>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h1> +<p>The following should explain, in a coarse grain manner, how to add new +features/ your project to ProMod3. Important topics are Git branches, the +directory structure and tightly linked with this also CMake. The most general +advice would be to use existing bits and pieces as examples and to be +consistent with what you already find here. As an example, documentation +explaining what a whole module is supposed to do usually goes into a +<tt class="file docutils literal"><span class="pre">doc</span></tt> directory within the modules tree, while the API itself is +documented inline. One exception exists on the example-driven approach: +following the <a class="reference internal" href="core/index.html#module-promod3.core" title="promod3.core: Basic functionality, supporting standard tasks in your code."><tt class="xref py py-mod docutils literal"><span class="pre">core</span></tt></a> module for your setup is not advisable. This +one is a bit special and provides core functionality to everybody else.</p> +<div class="section" id="git-branches"> +<h2>Git Branches<a class="headerlink" href="#git-branches" title="Permalink to this headline">¶</a></h2> +<p>Basically we have two, sometimes three major branches. <tt class="docutils literal"><span class="pre">master</span></tt>, <tt class="docutils literal"><span class="pre">develop</span></tt> +and in front of a new release a dedicated release branch. For bugs, hotfix +branches of a rather short life are used.</p> +<p><tt class="docutils literal"><span class="pre">master</span></tt> is the stable branch, corresponding to a released version. It is +solely fed by a release or hotfix branch.</p> +<p>Release branches, usually labelled <tt class="docutils literal"><span class="pre">release-<VERSION></span></tt>, are branched of +<tt class="docutils literal"><span class="pre">develop</span></tt> to fix features and thoroughly test them before a new major +release. Once everything looks trustworthy, such a branch is merged into +<tt class="docutils literal"><span class="pre">master</span></tt> and since there should be a few bug fixes in, <tt class="docutils literal"><span class="pre">master</span></tt> is merged +into <tt class="docutils literal"><span class="pre">develop</span></tt>. Bugs are fixed in dedicated hotfix branches, which should +only exist for the fix and testing itself. Those are forged from release +branches or <tt class="docutils literal"><span class="pre">master</span></tt>. If created for <tt class="docutils literal"><span class="pre">master</span></tt>, they are also merged back +into <tt class="docutils literal"><span class="pre">develop</span></tt>.</p> +<p>The <tt class="docutils literal"><span class="pre">develop</span></tt> branch exists to introduce new features up to the level of +whole projects extending ProMod3 and see that they work seamlessly together +with the rest of the system. There do exist a couple of rather strict rules for +what goes into this branch:</p> +<ul class="simple"> +<li>Your code must have been (briefly) reviewed by others</li> +<li>There have to be unit tests</li> +<li>It needs to pass <tt class="docutils literal"><span class="pre">make</span> <span class="pre">check</span></tt> <strong>including</strong> <tt class="docutils literal"><span class="pre">doctest</span></tt> & <tt class="docutils literal"><span class="pre">linkcheck</span></tt></li> +<li>Your project needs documentation</li> +<li>It must not break the ability of out-of-source builds</li> +</ul> +<p>The reason to be a bit restrictive on branches which end up in actual releases, should be mostly obvious: ProMod3 is used by productive services as a third party toolbox. There it is not an item of active development and people probably have no insight in its internals. So messing up a new release creates a lot of extra work for a lot of people. First for the developer of a service to find out that ProMod3 has turned malicious, then for the maintainer of this package to figure out that its your contribution messing things up and in the end for you, fixing the problems.</p> +<p>The place where you may get messy is your own Git branch within the ProMod3 +repository. This is basically where you should develop your project. Once you +created something that could go into a release, tidy things up according to the +rules from above and merge it into <tt class="docutils literal"><span class="pre">develop</span></tt>. From there it will +automatically find its way into the next release.</p> +<p>To set up your own branch, start from a current <tt class="docutils literal"><span class="pre">develop</span></tt> branch:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout develop <span class="c"># switch to branch develop</span> +<span class="gp">$</span> git pull --rebase <span class="c"># update branch develop</span> +<span class="gp">$</span> git checkout -b <BRANCHNAME> <span class="c"># create branch <BRANCHNAME> and switch to it</span> +</pre></div> +</div> +<p>Over time, <tt class="docutils literal"><span class="pre">develop</span></tt> may recognise some changes, e.g. new features, which you +want to make use of in your project. Keeping your branch up to date is a three +step process. Git does not allow updates on top of changed code, so either +changes have to be committed, or if in the middle of implementing something, +stored away temporarily. Making commits is straight forward:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git commit -m <span class="s1">'<DESCRIPTION>'</span> <span class="c"># commit changes including a comment</span> +</pre></div> +</div> +<p>Hiding your changes away from Git just for updating files is a bit more +involved. Everything is easily stored on an internal stack and needs to be +fetched from there, once the branch was updated. One major problem in the past +was a possible loss of code by those operations. If the update changes a file +you have changed, too, and stashed away, this may end up in a non-resolvable +merge conflict and your changes are lost. Usually the log tells you, which +files were recently modified. Moving all current changes to the stack is +achieved by:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git stash save +</pre></div> +</div> +<p>To revive them, use:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git stash pop +</pre></div> +</div> +<p>After cleaning up your branch, switch to <tt class="docutils literal"><span class="pre">develop</span></tt>, update it and switch back:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout develop +<span class="gp">$</span> git pull --rebase +<span class="gp">$</span> git checkout <BRANCHNAME> +</pre></div> +</div> +<p>Now for actually updating your branch, there are two different ways: merging +and rebasing. A rebase may only be done, if you <strong>never</strong> pushed your branch to +the origin of the repository (otherwise you will mess up history, in the worst +case <tt class="docutils literal"><span class="pre">develop</span></tt> may be unusable once you merge):</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git rebase develop +</pre></div> +</div> +<p>For branches which are available to others, do a proper merge:</p> +<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git merge develop +</pre></div> +</div> +<p>This may require some manual conflict solving and will end up in a merge commit.</p> +</div> +<div class="section" id="directory-structure"> +<h2>Directory Structure<a class="headerlink" href="#directory-structure" title="Permalink to this headline">¶</a></h2> +<p>The directory structure of the ProMod3 repository is supposed to ‘keep +everything together that belongs together’. That is, code, documentation and +extra data should be gathered on a per-module basis immediately in the +repository root. The directory structure of your module should look like this:</p> +<div class="highlight-text"><div class="highlight"><pre>promod3.git/ Project folder + your_module/ Directory housing your project + CMakeLists.txt CMake configuration for this module + data/ Extra data (if needed) + CMakeLists.txt CMake configuration + ... + doc/ Documentation + CMakeLists.txt CMake configuration + your_module.rst Overview/ frame of your module + ... + pymod/ Python code + CMakeLists.txt CMake configuration + __init__.py Init file needed for importing + submodule1.py Code + ... + src/ C/ C++ code + CMakeLists.txt CMake configuration + source1.cc C++ code + source2.hh Header + ... + tests/ Unit tests + CMakeLists.txt CMake configuration + data/ Test data (if needed) + ... + test_your_module.py Unit tests for your_module + test_submodule1.py Unit tests for submodule1 + ... +</pre></div> +</div> +</div> +<div class="section" id="cmake"> +<h2>CMake<a class="headerlink" href="#cmake" title="Permalink to this headline">¶</a></h2> +<p>The attentive reader may have noticed all the <tt class="file docutils literal"><span class="pre">CMakeLists.txt</span></tt> files in +the directory structure. Those are needed to configure the build system, e.g. +tell it which files have to be considered packaging, compiling, etc.. Also +Python modules are declared there as well as which files belong to the +documentation. CMake is a rather complex topic (unfortunately all usable +build systems seem to be) so we skip a detailed view, here, and just advice you +to go by example. There is a tiny bit of documentation on our additions to +CMake in the top-level <tt class="file docutils literal"><span class="pre">cmake_support</span></tt> directory. If you really need to +make changes to the build system, other than adding new files and modules, you +have to dive into CMake documentation all by yourself and on your own +responsibility. You have been warned.</p> +</div> +<div class="section" id="the-stage-directory"> +<h2>The <tt class="file docutils literal"><span class="pre">stage</span></tt> Directory<a class="headerlink" href="#the-stage-directory" title="Permalink to this headline">¶</a></h2> +<p>Once you hit <strong class="command">make</strong> in your build directory, a directory <tt class="file docutils literal"><span class="pre">stage</span></tt> +in this path will be populated. It just resembles a directory structure as of a +usual Unix file system filled with the build products of ProMod3. The +<tt class="file docutils literal"><span class="pre">stage</span></tt> directory tree can already be utilised. You may import Python +modules from there, use the binaries from <tt class="file docutils literal"><span class="pre">stage/bin</span></tt>, etc..</p> +</div> +<div class="section" id="unit-tests"> +<h2>Unit Tests<a class="headerlink" href="#unit-tests" title="Permalink to this headline">¶</a></h2> +<p>Of course your code should contain tests. But we cannot give an elaborate +tutorial on unit testing here. Again, have a look at how other modules treat +this topic and then there is quite a lot of educated material to be found on +the Internet. Nevertheless, here is a short list of most important advices:</p> +<ul class="simple"> +<li>Tests go into dedicated scripts in the <tt class="file docutils literal"><span class="pre">tests</span></tt> directory</li> +<li>No external data dependencies, if tests need data, they find it in +<tt class="file docutils literal"><span class="pre">tests/data</span></tt></li> +<li>If ‘exotic’ Python modules are used, consider making the test aware of the +possibility that the module is not available</li> +<li>Test do not fail on purpose</li> +<li>No failing tests, that are considered ‘this does not affect anything’</li> +</ul> +<p>To run the whole test suite, <tt class="docutils literal"><span class="pre">make</span> <span class="pre">check</span></tt> is enough. This will also trigger +the <tt class="docutils literal"><span class="pre">doctest</span></tt> and <tt class="docutils literal"><span class="pre">linkcheck</span></tt> targets. To avoid this, e.g. when just +testing a smallish change in code, <tt class="docutils literal"><span class="pre">codetest</span></tt> exists as a separate target, +only running unit tests from all modules in ProMod3. Actually <tt class="docutils literal"><span class="pre">make</span> <span class="pre">check</span></tt> +does nothing more but invoking <tt class="docutils literal"><span class="pre">doctest</span></tt>, <tt class="docutils literal"><span class="pre">linkcheck</span></tt> and <tt class="docutils literal"><span class="pre">codetest</span></tt> as +dependencies. You could even go with running tests gathered in a single file: +assuming you have <tt class="file docutils literal"><span class="pre">your_module/tests/test_awesome_feature.py</span></tt>, CMake +will provide you with a target <tt class="docutils literal"><span class="pre">test_awesome_feature.py_run</span></tt>.</p> +</div> +<div class="section" id="writing-documentation"> +<h2>Writing Documentation<a class="headerlink" href="#writing-documentation" title="Permalink to this headline">¶</a></h2> +<p>To create documentation, we use <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> to go from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> files +and API documentation in source files to HTML or man pages.</p> +<p>For each module, at least one reStructuredText document exists, that gives an +idea of concepts and pulls in interfaces from source. Copying files to the +build directory, issuing the Sphinx call and everything else that is needed +to create the actual documentation is done by CMake and its makefiles. Hence, +the <tt class="file docutils literal"><span class="pre">CMakeLists.txt</span></tt> of the <tt class="file docutils literal"><span class="pre">doc</span></tt> directory of a module is crucial. +For documentation which does not relate to a particular module, the repository +comes with a top-level <tt class="file docutils literal"><span class="pre">doc</span></tt> directory.</p> +<p>While you should not spend to much time thinking about how to format +documentation, here is a helpful list of standard formatters: +<a class="reference external" href="http://sphinx-doc.org/markup/inline.html">http://sphinx-doc.org/markup/inline.html</a></p> +<p>If you write new functionality for ProMod3, or fix bugs, feel free to extend +the Changelog. It will be automatically pulled into the documentation.</p> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Contributing</a><ul> +<li><a class="reference internal" href="#git-branches">Git Branches</a></li> +<li><a class="reference internal" href="#directory-structure">Directory Structure</a></li> +<li><a class="reference internal" href="#cmake">CMake</a></li> +<li><a class="reference internal" href="#the-stage-directory">The <tt class="file docutils literal"><span class="pre">stage</span></tt> Directory</a></li> +<li><a class="reference internal" href="#unit-tests">Unit Tests</a></li> +<li><a class="reference internal" href="#writing-documentation">Writing Documentation</a></li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="buildsystem.html" + title="previous chapter">Building ProMod3</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="changelog.html" + title="next chapter">Changelog</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/contributing.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="changelog.html" title="Changelog" + >next</a> |</li> + <li class="right" > + <a href="buildsystem.html" title="Building ProMod3" + >previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + <li><a href="developers.html" >Documentation For Developes</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/core/argcheck.html b/doc/html/core/argcheck.html new file mode 100644 index 0000000000000000000000000000000000000000..5335428067aca8869aa8a841341175ad61117fbd --- /dev/null +++ b/doc/html/core/argcheck.html @@ -0,0 +1,224 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>argcheck - Standard tests for command line arguments — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + <link rel="up" title="core - ProMod3 core functionality" href="index.html" /> + <link rel="next" title="meld - Coordinate modeling" href="../meld/index.html" /> + <link rel="prev" title="core - ProMod3 core functionality" href="index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="../meld/index.html" title="meld - Coordinate modeling" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="index.html" title="core - ProMod3 core functionality" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" accesskey="U"><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="argcheck-standard-tests-for-command-line-arguments"> +<h1><tt class="xref py py-mod docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments<a class="headerlink" href="#argcheck-standard-tests-for-command-line-arguments" title="Permalink to this headline">¶</a></h1> +<div class="section" id="introduction"> +<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2> +<p>For parsing command line arguments - +<a class="reference external" href="https://docs.python.org/2.7/howto/argparse.html#introducing-optional-arguments">optional</a> and +<a class="reference external" href="https://docs.python.org/2.7/howto/argparse.html#introducing-positional-arguments">positional</a> - +ProMod3 tools should utilise Pythons own <a class="reference external" href="https://docs.python.org/2.7/library/argparse.html">argparse</a> +module. While this comes with a lot of functionality to fetch values from the +command line comfortably, it has no means in checking/ verifying input. Some of +the most common tests are covered here. All tests are designed to exit a script +on failure.</p> +<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">argparse</span> +<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">argcheck</span> + +<span class="n">p</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">()</span> +<span class="n">p</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'file'</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">)</span> +<span class="n">opts</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> + +<span class="n">argcheck</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s">'Test file'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">file</span><span class="p">)</span> + +<span class="n">opts</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">ext</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">gz</span> <span class="o">=</span> <span class="n">argcheck</span><span class="o">.</span><span class="n">FileExtension</span><span class="p">(</span><span class="s">'Test file'</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> + <span class="n">opts</span><span class="o">.</span><span class="n">file</span><span class="p">,</span> + <span class="p">(</span><span class="s">'pdb'</span><span class="p">,</span> <span class="s">'mmcif'</span><span class="p">),</span> + <span class="n">gz</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="section" id="file-tests"> +<h2>File Tests<a class="headerlink" href="#file-tests" title="Permalink to this headline">¶</a></h2> +<dl class="function"> +<dt id="promod3.core.argcheck.FileExists"> +<tt class="descclassname">promod3.core.argcheck.</tt><tt class="descname">FileExists</tt><big>(</big><em>prefix</em>, <em>exit_status</em>, <em>file</em><big>)</big><a class="reference internal" href="../_modules/promod3/core/argcheck.html#FileExists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.argcheck.FileExists" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks if a file exists, terminates if not. The error message displayed is +fixed and only needs a <em>prefix</em> describing the specimen of file.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>prefix</strong> (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>) – String to put in front of the failure-message +“file does not exist: <tt class="docutils literal"><span class="pre">file</span></tt>”.</li> +<li><strong>exit_status</strong> (<tt class="xref py py-class docutils literal"><span class="pre">int</span></tt>) – Exit code on missing file, ends up in <tt class="docutils literal"><span class="pre">$?</span></tt> in the +shell. <tt class="docutils literal"><span class="pre">0</span></tt> is traditionally reserved to successful commands.</li> +<li><strong>file</strong> (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>) – Path including file name to be checked.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">No return value, exits script with value <tt class="docutils literal"><span class="pre">exit_status</span></tt> if file is +missing.</p> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="promod3.core.argcheck.FileExtension"> +<tt class="descclassname">promod3.core.argcheck.</tt><tt class="descname">FileExtension</tt><big>(</big><em>prefix</em>, <em>exit_status</em>, <em>file</em>, <em>extensions</em>, <em>gz=False</em><big>)</big><a class="reference internal" href="../_modules/promod3/core/argcheck.html#FileExtension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.argcheck.FileExtension" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks a file to carry a known extension given by a list of strings. Since +files are very often compressed these days, an additional “gz” suffix can be +tracked automatically by this function. Thus, the list of <em>extensions</em> only +needs to contain what you are really looking for, e.g. (“pdb”) instead of +(“pdb”, “pdb.gz”). The <em>gz</em> flag also determines the output of this function. +If enabled, a triple is returned: name of the file without extension, its +extension and a Boolean to tell whether the file carries the gzip extension +or not. If <em>gz</em> detection is turned of, only a tuple is returned: file name +and extension. If the tested file name has an unrecognised extension, this +function terminates the script.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>prefix</strong> (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>) – String to put in front of the failure-message +“file extension not supported: <tt class="docutils literal"><span class="pre">file</span></tt>”.</li> +<li><strong>exit_status</strong> (<tt class="xref py py-class docutils literal"><span class="pre">int</span></tt>) – Exit code on missing file, ends up in <tt class="docutils literal"><span class="pre">$?</span></tt> in the +shell. <tt class="docutils literal"><span class="pre">0</span></tt> is traditionally reserved to successful commands.</li> +<li><strong>file</strong> (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>) – Path including file name to be checked.</li> +<li><strong>extensions</strong> (<tt class="xref py py-class docutils literal"><span class="pre">list</span></tt>) – List of strings without a leading ”.”.</li> +<li><strong>gz</strong> (<tt class="xref py py-class docutils literal"><span class="pre">bool</span></tt>) – Indicates whether to check for an additional “gz” extension.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">(base name of <tt class="docutils literal"><span class="pre">file</span></tt> (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>), extension of file without a +”.gz” (<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>), flag to indicate an additional ”.gz” +(<tt class="xref py py-class docutils literal"><span class="pre">bool</span></tt>)) <strong>if</strong> <tt class="docutils literal"><span class="pre">gz</span></tt> is set, (base name of <tt class="docutils literal"><span class="pre">file</span></tt> +(<tt class="xref py py-class docutils literal"><span class="pre">str</span></tt>), extension of file if not).</p> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="../index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments</a><ul> +<li><a class="reference internal" href="#introduction">Introduction</a></li> +<li><a class="reference internal" href="#file-tests">File Tests</a></li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="index.html" + title="previous chapter"><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="../meld/index.html" + title="next chapter"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/core/argcheck.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="../meld/index.html" title="meld - Coordinate modeling" + >next</a> |</li> + <li class="right" > + <a href="index.html" title="core - ProMod3 core functionality" + >previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" ><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 15:38, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/core/index.html b/doc/html/core/index.html new file mode 100644 index 0000000000000000000000000000000000000000..f29228abce94c08a0f7cfc16bb7c64272852af8c --- /dev/null +++ b/doc/html/core/index.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>core - ProMod3 core functionality — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + <link rel="up" title="Documentation For Developes" href="../developers.html" /> + <link rel="next" title="argcheck - Standard tests for command line arguments" href="argcheck.html" /> + <link rel="prev" title="Documentation For Developes" href="../developers.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="argcheck.html" title="argcheck - Standard tests for command line arguments" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="../developers.html" title="Documentation For Developes" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" accesskey="U">Documentation For Developes</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="module-promod3.core"> +<span id="core-promod3-core-functionality"></span><h1><a class="reference internal" href="#module-promod3.core" title="promod3.core: Basic functionality, supporting standard tasks in your code."><tt class="xref py py-mod docutils literal"><span class="pre">core</span></tt></a> - ProMod3 core functionality<a class="headerlink" href="#module-promod3.core" title="Permalink to this headline">¶</a></h1> +<p>This module gathers functions and classes which are not devoted to homology modeling per se but cover standard programming issues.</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="argcheck.html"><tt class="docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments</a><ul> +<li class="toctree-l2"><a class="reference internal" href="argcheck.html#introduction">Introduction</a></li> +<li class="toctree-l2"><a class="reference internal" href="argcheck.html#file-tests">File Tests</a></li> +</ul> +</li> +</ul> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h4>Previous topic</h4> + <p class="topless"><a href="../developers.html" + title="previous chapter">Documentation For Developes</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="argcheck.html" + title="next chapter"><tt class="docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/core/index.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="argcheck.html" title="argcheck - Standard tests for command line arguments" + >next</a> |</li> + <li class="right" > + <a href="../developers.html" title="Documentation For Developes" + >previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 15:38, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/developers.html b/doc/html/developers.html new file mode 100644 index 0000000000000000000000000000000000000000..3d5b6e38e663c832d1f91b102dcc0c82b785d35a --- /dev/null +++ b/doc/html/developers.html @@ -0,0 +1,145 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Documentation For Developes — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <link rel="next" title="core - ProMod3 core functionality" href="core/index.html" /> + <link rel="prev" title="Documentation For Users" href="users.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="core/index.html" title="core - ProMod3 core functionality" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="users.html" title="Documentation For Users" + accesskey="P">previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="documentation-for-developes"> +<h1>Documentation For Developes<a class="headerlink" href="#documentation-for-developes" title="Permalink to this headline">¶</a></h1> +<p>Contents:</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="core/index.html"><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a><ul> +<li class="toctree-l2"><a class="reference internal" href="core/argcheck.html"><tt class="docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="meld/index.html"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a><ul> +<li class="toctree-l2"><a class="reference internal" href="meld/loop.html">Loop Modeling</a></li> +<li class="toctree-l2"><a class="reference internal" href="meld/rawmodel.html">Raw Coordinate Modeling</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="buildsystem.html">Building ProMod3</a><ul> +<li class="toctree-l2"><a class="reference internal" href="buildsystem.html#dependencies">Dependencies</a></li> +<li class="toctree-l2"><a class="reference internal" href="buildsystem.html#using-cmake">Using CMake</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a><ul> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#git-branches">Git Branches</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#directory-structure">Directory Structure</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#cmake">CMake</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#the-stage-directory">The <tt class="file docutils literal"><span class="pre">stage</span></tt> Directory</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#unit-tests">Unit Tests</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html#writing-documentation">Writing Documentation</a></li> +</ul> +</li> +</ul> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h4>Previous topic</h4> + <p class="topless"><a href="users.html" + title="previous chapter">Documentation For Users</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="core/index.html" + title="next chapter"><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/developers.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="core/index.html" title="core - ProMod3 core functionality" + >next</a> |</li> + <li class="right" > + <a href="users.html" title="Documentation For Users" + >previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/genindex.html b/doc/html/genindex.html new file mode 100644 index 0000000000000000000000000000000000000000..0b29f2bdbeee864ebe13e337c276f1484b96f95d --- /dev/null +++ b/doc/html/genindex.html @@ -0,0 +1,315 @@ + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Index — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="#" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + +<h1 id="index">Index</h1> + +<div class="genindex-jumpbox"> + <a href="#A"><strong>A</strong></a> + | <a href="#B"><strong>B</strong></a> + | <a href="#C"><strong>C</strong></a> + | <a href="#F"><strong>F</strong></a> + | <a href="#G"><strong>G</strong></a> + | <a href="#I"><strong>I</strong></a> + | <a href="#L"><strong>L</strong></a> + | <a href="#M"><strong>M</strong></a> + | <a href="#P"><strong>P</strong></a> + | <a href="#R"><strong>R</strong></a> + | <a href="#S"><strong>S</strong></a> + | <a href="#T"><strong>T</strong></a> + +</div> +<h2 id="A">A</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidates.Add">Add() (sm.meld.LoopCandidates method)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.allatom_score">allatom_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="B">B</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/rawmodel.html#sm.meld.BuildRawModel">BuildRawModel() (in module sm.meld)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="C">C</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.clash_bb_score">clash_bb_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.clash_sc_score">clash_sc_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.clash_score">clash_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.coords">coords (sm.meld.LoopCandidate attribute)</a> + </dt> + + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.correl">correl (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="F">F</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="core/argcheck.html#promod3.core.argcheck.FileExists">FileExists() (in module promod3.core.argcheck)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="core/argcheck.html#promod3.core.argcheck.FileExtension">FileExtension() (in module promod3.core.argcheck)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="G">G</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.gap">gap (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/rawmodel.html#sm.meld.RawModelingResult.gaps">gaps (sm.meld.RawModelingResult attribute)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="I">I</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.InsertInto">InsertInto() (sm.meld.LoopCandidate method)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="L">L</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate">LoopCandidate (class in sm.meld)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidates">LoopCandidates (class in sm.meld)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="M">M</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidates.model">model (sm.meld.LoopCandidates attribute)</a> + </dt> + + <dd><dl> + + <dt><a href="meld/rawmodel.html#sm.meld.RawModelingResult.model">(sm.meld.RawModelingResult attribute)</a> + </dt> + + </dl></dd> + </dl></td> +</tr></table> + +<h2 id="P">P</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.packing_score">packing_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="core/index.html#module-promod3.core">promod3.core (module)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="R">R</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/rawmodel.html#sm.meld.RawModelingResult">RawModelingResult (class in sm.meld)</a> + </dt> + + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.reduced_score">reduced_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.RmsdTo">RmsdTo() (sm.meld.LoopCandidate method)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="S">S</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.score">score (sm.meld.LoopCandidate attribute)</a> + </dt> + + + <dt><a href="meld/index.html#module-sm.meld">sm.meld (module)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidates.SortByCorrel">SortByCorrel() (sm.meld.LoopCandidates method)</a> + </dt> + + + <dt><a href="meld/loop.html#sm.meld.LoopCandidates.SortByScore">SortByScore() (sm.meld.LoopCandidates method)</a> + </dt> + + </dl></td> +</tr></table> + +<h2 id="T">T</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.ToEntity">ToEntity() (sm.meld.LoopCandidate method)</a> + </dt> + + </dl></td> + <td style="width: 33%" valign="top"><dl> + + <dt><a href="meld/loop.html#sm.meld.LoopCandidate.torsion_score">torsion_score (sm.meld.LoopCandidate attribute)</a> + </dt> + + </dl></td> +</tr></table> + + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + + + +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="#" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000000000000000000000000000000000000..29ff149490c5b27c7fb9eb77c55fc1b8ce53e074 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,140 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Welcome to ProMod3’s documentation! — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="#" /> + <link rel="next" title="Documentation For Users" href="users.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="users.html" title="Documentation For Users" + accesskey="N">next</a> |</li> + <li><a href="#">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="welcome-to-promod3-s-documentation"> +<h1>Welcome to ProMod3’s documentation!<a class="headerlink" href="#welcome-to-promod3-s-documentation" title="Permalink to this headline">¶</a></h1> +<p>Contents:</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="users.html">Users</a></li> +<li class="toctree-l1"><a class="reference internal" href="developers.html">Developers</a><ul> +<li class="toctree-l2"><a class="reference internal" href="core/index.html"><tt class="docutils literal"><span class="pre">core</span></tt> - ProMod3 core functionality</a></li> +<li class="toctree-l2"><a class="reference internal" href="meld/index.html"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a></li> +<li class="toctree-l2"><a class="reference internal" href="buildsystem.html">Building ProMod3</a></li> +<li class="toctree-l2"><a class="reference internal" href="contributing.html">Contributing</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul> +<li class="toctree-l2"><a class="reference internal" href="changelog.html#changes-in-release-0-1">Changes in Release 0.1</a></li> +</ul> +</li> +</ul> +</div> +</div> +<div class="section" id="indices-and-tables"> +<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1> +<ul class="simple"> +<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li> +<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li> +<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li> +</ul> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="#">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Welcome to ProMod3’s documentation!</a><ul> +</ul> +</li> +<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li> +</ul> + + <h4>Next topic</h4> + <p class="topless"><a href="users.html" + title="next chapter">Documentation For Users</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/index.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="users.html" title="Documentation For Users" + >next</a> |</li> + <li><a href="#">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/meld/index.html b/doc/html/meld/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c51bc70c22a95c4d55faa8fa27cf9c2d13e7e422 --- /dev/null +++ b/doc/html/meld/index.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>meld - Coordinate modeling — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + <link rel="up" title="Documentation For Developes" href="../developers.html" /> + <link rel="next" title="Loop Modeling" href="loop.html" /> + <link rel="prev" title="argcheck - Standard tests for command line arguments" href="../core/argcheck.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="loop.html" title="Loop Modeling" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="../core/argcheck.html" title="argcheck - Standard tests for command line arguments" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" accesskey="U">Documentation For Developes</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="module-sm.meld"> +<span id="meld-coordinate-modeling"></span><h1><a class="reference internal" href="#module-sm.meld" title="sm.meld: Coordinate modeling and sampling"><tt class="xref py py-mod docutils literal"><span class="pre">meld</span></tt></a> - Coordinate modeling<a class="headerlink" href="#module-sm.meld" title="Permalink to this headline">¶</a></h1> +<p>This module contains functions and classes to model protein structures from sequence.</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="loop.html">Loop Modeling</a><ul> +<li class="toctree-l2"><a class="reference internal" href="loop.html#loop-modeling-api">Loop Modeling API</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="rawmodel.html">Raw Coordinate Modeling</a><ul> +<li class="toctree-l2"><a class="reference internal" href="rawmodel.html#introduction">Introduction</a></li> +<li class="toctree-l2"><a class="reference internal" href="rawmodel.html#raw-coordinate-modeling-api">Raw Coordinate Modeling API</a></li> +</ul> +</li> +</ul> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h4>Previous topic</h4> + <p class="topless"><a href="../core/argcheck.html" + title="previous chapter"><tt class="docutils literal"><span class="pre">argcheck</span></tt> - Standard tests for command line arguments</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="loop.html" + title="next chapter">Loop Modeling</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/meld/index.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="loop.html" title="Loop Modeling" + >next</a> |</li> + <li class="right" > + <a href="../core/argcheck.html" title="argcheck - Standard tests for command line arguments" + >previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/meld/loop.html b/doc/html/meld/loop.html new file mode 100644 index 0000000000000000000000000000000000000000..542b8e3032dc46e909987180c7539e7e5b901fea --- /dev/null +++ b/doc/html/meld/loop.html @@ -0,0 +1,345 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Loop Modeling — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + <link rel="up" title="meld - Coordinate modeling" href="index.html" /> + <link rel="next" title="Raw Coordinate Modeling" href="rawmodel.html" /> + <link rel="prev" title="meld - Coordinate modeling" href="index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="rawmodel.html" title="Raw Coordinate Modeling" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="index.html" title="meld - Coordinate modeling" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" accesskey="U"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="loop-modeling"> +<h1>Loop Modeling<a class="headerlink" href="#loop-modeling" title="Permalink to this headline">¶</a></h1> +<div class="section" id="loop-modeling-api"> +<h2>Loop Modeling API<a class="headerlink" href="#loop-modeling-api" title="Permalink to this headline">¶</a></h2> +<dl class="class"> +<dt id="sm.meld.LoopCandidate"> +<em class="property">class </em><tt class="descclassname">sm.meld.</tt><tt class="descname">LoopCandidate</tt><big>(</big><em>gap</em>, <em>bb_list</em><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidate" title="Permalink to this definition">¶</a></dt> +<dd><p>A loop candidate holds the coordinates of the four backbone atoms for a given +peptide fragment as well as the sequence.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>gap</strong> (<tt class="xref py py-class docutils literal"><span class="pre">StructuralGap</span></tt>) – The structural gap</li> +<li><strong>bb_list</strong> (<tt class="xref py py-class docutils literal"><span class="pre">BackboneList</span></tt>) – List of peptide backbone coordinates</li> +</ul> +</td> +</tr> +</tbody> +</table> +<dl class="method"> +<dt id="sm.meld.LoopCandidate.InsertInto"> +<tt class="descname">InsertInto</tt><big>(</big><em>entity</em><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidate.InsertInto" title="Permalink to this definition">¶</a></dt> +<dd><p>Inserts the loop candidate into the given entity. This honours the start and +end point stored in the gap. Missing residues and atoms will be inserted +into the structure.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>entity</strong> (<a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a>) – </td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">True on success, false if the insertion failed</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">bool</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="sm.meld.LoopCandidate.RmsdTo"> +<tt class="descname">RmsdTo</tt><big>(</big><em>entity</em><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidate.RmsdTo" title="Permalink to this definition">¶</a></dt> +<dd><p>Calculates the RMSD to the corresponding backbone fragment in <em>entity</em>. +Raises a RuntimeError if not all backbone atoms exist.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>entity</strong> (<a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a>) – </td> +</tr> +<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">float</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="sm.meld.LoopCandidate.ToEntity"> +<tt class="descname">ToEntity</tt><big>(</big><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidate.ToEntity" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns an entity holding this backbone fragment. Residue numbers go from +gap.start to gap.end.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a></td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.allatom_score"> +<tt class="descname">allatom_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.allatom_score" title="Permalink to this definition">¶</a></dt> +<dd><p>If set, the allatom_score of this fragment</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.clash_bb_score"> +<tt class="descname">clash_bb_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.clash_bb_score" title="Permalink to this definition">¶</a></dt> +<dd><p>The clash score of the loop candidate with sidechain atoms</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.clash_score"> +<tt class="descname">clash_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.clash_score" title="Permalink to this definition">¶</a></dt> +<dd><p>The sum of backbone and sidechain clash scores</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.clash_sc_score"> +<tt class="descname">clash_sc_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.clash_sc_score" title="Permalink to this definition">¶</a></dt> +<dd><p>Clash score with sidechain atoms</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.coords"> +<tt class="descname">coords</tt><a class="headerlink" href="#sm.meld.LoopCandidate.coords" title="Permalink to this definition">¶</a></dt> +<dd><p>Access to the actual coordinates</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Type :</th><td class="field-body"><tt class="xref py py-class docutils literal"><span class="pre">BackboneList</span></tt></td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.correl"> +<tt class="descname">correl</tt><a class="headerlink" href="#sm.meld.LoopCandidate.correl" title="Permalink to this definition">¶</a></dt> +<dd><p>Correlation with density</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.gap"> +<tt class="descname">gap</tt><a class="headerlink" href="#sm.meld.LoopCandidate.gap" title="Permalink to this definition">¶</a></dt> +<dd><p>The structural gap</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.packing_score"> +<tt class="descname">packing_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.packing_score" title="Permalink to this definition">¶</a></dt> +<dd><p>Packing score of this loop candidate</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.reduced_score"> +<tt class="descname">reduced_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.reduced_score" title="Permalink to this definition">¶</a></dt> +<dd><p>Reduced score</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.score"> +<tt class="descname">score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.score" title="Permalink to this definition">¶</a></dt> +<dd><p>Total score of this loop candidate.</p> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidate.torsion_score"> +<tt class="descname">torsion_score</tt><a class="headerlink" href="#sm.meld.LoopCandidate.torsion_score" title="Permalink to this definition">¶</a></dt> +<dd><p>Torsion score of this loop candidate</p> +</dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="sm.meld.LoopCandidates"> +<em class="property">class </em><tt class="descclassname">sm.meld.</tt><tt class="descname">LoopCandidates</tt><big>(</big><em>model</em><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidates" title="Permalink to this definition">¶</a></dt> +<dd><p>A list of loop candidates with a few helper methods to make your life easier. +The candidates are supposed to be loop candidates for the same gap. However, +they are not required to have the same start and end position, e.g. due to +extension of the gap.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>model</strong> (<a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a>) – The model the candidates are for.</td> +</tr> +</tbody> +</table> +<dl class="method"> +<dt id="sm.meld.LoopCandidates.Add"> +<tt class="descname">Add</tt><big>(</big><em>candidate</em><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidates.Add" title="Permalink to this definition">¶</a></dt> +<dd><p>Add a new candidate +:param candidate: +:type candidate: <a class="reference internal" href="#sm.meld.LoopCandidate" title="sm.meld.LoopCandidate"><tt class="xref py py-class docutils literal"><span class="pre">LoopCandidate</span></tt></a></p> +</dd></dl> + +<dl class="method"> +<dt id="sm.meld.LoopCandidates.SortByCorrel"> +<tt class="descname">SortByCorrel</tt><big>(</big><span class="optional">[</span><em>increasing</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidates.SortByCorrel" title="Permalink to this definition">¶</a></dt> +<dd><p>Sort loop candidates by correlation score</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>increasing</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><em>bool</em></a>) – If true, the candidates are sorted in increasing order</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="sm.meld.LoopCandidates.SortByScore"> +<tt class="descname">SortByScore</tt><big>(</big><span class="optional">[</span><em>increasing</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#sm.meld.LoopCandidates.SortByScore" title="Permalink to this definition">¶</a></dt> +<dd><p>Sort loop canditates by total score</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>increasing</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><em>bool</em></a>) – If true, the candidates are sorted in increasing order</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.LoopCandidates.model"> +<tt class="descname">model</tt><a class="headerlink" href="#sm.meld.LoopCandidates.model" title="Permalink to this definition">¶</a></dt> +<dd><p>The model the candidates are for</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Type :</th><td class="field-body"><a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a></td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> + +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="../index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Loop Modeling</a><ul> +<li><a class="reference internal" href="#loop-modeling-api">Loop Modeling API</a></li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="index.html" + title="previous chapter"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="rawmodel.html" + title="next chapter">Raw Coordinate Modeling</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/meld/loop.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="rawmodel.html" title="Raw Coordinate Modeling" + >next</a> |</li> + <li class="right" > + <a href="index.html" title="meld - Coordinate modeling" + >previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" ><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/meld/rawmodel.html b/doc/html/meld/rawmodel.html new file mode 100644 index 0000000000000000000000000000000000000000..a923efc24c5d62560d2badb890281c69ebf64a18 --- /dev/null +++ b/doc/html/meld/rawmodel.html @@ -0,0 +1,228 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Raw Coordinate Modeling — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="../index.html" /> + <link rel="up" title="meld - Coordinate modeling" href="index.html" /> + <link rel="next" title="Building ProMod3" href="../buildsystem.html" /> + <link rel="prev" title="Loop Modeling" href="loop.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="../buildsystem.html" title="Building ProMod3" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="loop.html" title="Loop Modeling" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" accesskey="U"><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="raw-coordinate-modeling"> +<h1>Raw Coordinate Modeling<a class="headerlink" href="#raw-coordinate-modeling" title="Permalink to this headline">¶</a></h1> +<div class="section" id="introduction"> +<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2> +<p>Contains function to build raw (pseudo) models based on a sequence alignment. Here is an example of how to build a model from an alignment and a structure.</p> +<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">sm.meld</span> <span class="kn">import</span> <span class="o">*</span> + +<span class="n">aln</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">LoadAlignment</span><span class="p">(</span><span class="s">'parwise.fasta'</span><span class="p">)</span> +<span class="n">template_structure</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">LoadPDB</span><span class="p">(</span><span class="s">'1ake.pdb'</span><span class="p">,</span> <span class="n">restrict_chains</span><span class="o">=</span><span class="s">'A'</span><span class="p">)</span> +<span class="n">aln</span><span class="o">.</span><span class="n">AttachView</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">template_structure</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s">'peptide=true'</span><span class="p">))</span> +<span class="n">result</span><span class="o">=</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span> +<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="s">'model.pdb'</span><span class="p">)</span> +<span class="k">print</span> <span class="s">'remaining gaps:'</span> +<span class="k">for</span> <span class="n">gap</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">gaps</span><span class="p">:</span> + <span class="k">print</span> <span class="s">' * </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="section" id="raw-coordinate-modeling-api"> +<h2>Raw Coordinate Modeling API<a class="headerlink" href="#raw-coordinate-modeling-api" title="Permalink to this headline">¶</a></h2> +<dl class="function"> +<dt id="sm.meld.BuildRawModel"> +<tt class="descclassname">sm.meld.</tt><tt class="descname">BuildRawModel</tt><big>(</big><em>alignment</em>, <em>calpha_only=False</em><big>)</big><a class="headerlink" href="#sm.meld.BuildRawModel" title="Permalink to this definition">¶</a></dt> +<dt> +<tt class="descclassname">sm.meld.</tt><tt class="descname">BuildRawModel</tt><big>(</big><em>alignments</em>, <em>calpha_only=False</em><big>)</big></dt> +<dd><p>Builds a raw (pseudo) model from the alignment. +Can either take a single alignment handle or an alignment handle list. +Every list item is treated as a single chain in the final raw model.</p> +<p>This is a basic protein core modeling algorithm that copies backbone +coordinates based on the sequence alignment. For matching residues, the +sidechain coordinates are also copied. Gaps are ignored. Hydrogen an deuterium +atoms are not copied into the model.</p> +<p>The function tries to reuse as much as possible from the template. Modified +residues are treated as follows:</p> +<blockquote> +<div><ul class="simple"> +<li>Selenium methionine residues are converted to methionines</li> +<li>Sidechains which contain all atoms of the parent amino acid, e.g. +phosphoserine are copied as a whole with the modifications stripped off.</li> +</ul> +</div></blockquote> +<p>Residue numbers are set such that missing residue in gaps are honored and +subsequent loop modeling can insert new residues without having to +renumber.</p> +<p>The returned <a class="reference internal" href="#sm.meld.RawModelingResult" title="sm.meld.RawModelingResult"><tt class="xref py py-class docutils literal"><span class="pre">RawModelingResult</span></tt></a> stores the obtained raw model as well +as information about insertions and deletions in the gaps list.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>calpha_only</strong> – If true, only Calpha atoms will be copied. Sidechains and +other backbone atoms are completely ignored.</td> +</tr> +<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body">A <tt class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></tt> when the second sequence does not have an +attached structure</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="class"> +<dt id="sm.meld.RawModelingResult"> +<em class="property">class </em><tt class="descclassname">sm.meld.</tt><tt class="descname">RawModelingResult</tt><a class="headerlink" href="#sm.meld.RawModelingResult" title="Permalink to this definition">¶</a></dt> +<dd><p>Holds the result of raw model building. Incredibly minimalistic for now. Will +most likely grow a few more members over time to, e.g. to store a detailed +report.</p> +<dl class="attribute"> +<dt id="sm.meld.RawModelingResult.model"> +<tt class="descname">model</tt><a class="headerlink" href="#sm.meld.RawModelingResult.model" title="Permalink to this definition">¶</a></dt> +<dd><p>The resulting model.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Type :</th><td class="field-body"><a class="reference external" href="http://www.openstructure.org/docs/1.3/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.3.3)"><tt class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></tt></a></td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="attribute"> +<dt id="sm.meld.RawModelingResult.gaps"> +<tt class="descname">gaps</tt><a class="headerlink" href="#sm.meld.RawModelingResult.gaps" title="Permalink to this definition">¶</a></dt> +<dd><p>List of gaps in the model that could not be copied from the template. These +gaps may be the result of insertions/deletions in the alignment or due to +missing or incomplete backbone coordinates in the template structure.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Type :</th><td class="field-body"><tt class="xref py py-class docutils literal"><span class="pre">StructuralGapList</span></tt></td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> + +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="../index.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">Raw Coordinate Modeling</a><ul> +<li><a class="reference internal" href="#introduction">Introduction</a></li> +<li><a class="reference internal" href="#raw-coordinate-modeling-api">Raw Coordinate Modeling API</a></li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="loop.html" + title="previous chapter">Loop Modeling</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="../buildsystem.html" + title="next chapter">Building ProMod3</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/meld/rawmodel.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="../buildsystem.html" title="Building ProMod3" + >next</a> |</li> + <li class="right" > + <a href="loop.html" title="Loop Modeling" + >previous</a> |</li> + <li><a href="../index.html">ProMod3 0 documentation</a> »</li> + <li><a href="../developers.html" >Documentation For Developes</a> »</li> + <li><a href="index.html" ><tt class="docutils literal"><span class="pre">meld</span></tt> - Coordinate modeling</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/objects.inv b/doc/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..9edb0b756a685738eb8d0edad56c9be36e9bc55c --- /dev/null +++ b/doc/html/objects.inv @@ -0,0 +1,5 @@ +# Sphinx inventory version 2 +# Project: ProMod3 +# Version: 0.1 +# The remainder of this file is compressed using zlib. +xڥT�n�0����k�F�q+$�V��{��������� A�)�$7k=�;;k�2\h��!�J����$*��:]��|�> /%D��d��!5���:����:v�mj��`RX�˾f,x SU}�Bॕ�����x�Q �<���%�ˁ��RHX�F�T?�f�I]�����Y)$_ӽ7�wwI�tX�W�K�0��S��d�X\i4U/���M���TJ�F}��=�hEZ"�����X���ں��B��.�2�*i�0����w· ��K|�c�:vC,Q`c�N�$����2�}46|�����ہ�������WVR�YIw��朢�ڭYhx��h1�ゲ��Y�I5�s��J�D5����� o-i������q]ȃ�t���~��~��A���# \ No newline at end of file diff --git a/doc/html/py-modindex.html b/doc/html/py-modindex.html new file mode 100644 index 0000000000000000000000000000000000000000..823015676683c75ecfcb1177a3e74896ac362cc9 --- /dev/null +++ b/doc/html/py-modindex.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Python Module Index — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + + + + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="#" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + + <h1>Python Module Index</h1> + + <div class="modindex-jumpbox"> + <a href="#cap-p"><strong>p</strong></a> | + <a href="#cap-s"><strong>s</strong></a> + </div> + + <table class="indextable modindextable" cellspacing="0" cellpadding="2"> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-p"><td></td><td> + <strong>p</strong></td><td></td></tr> + <tr> + <td><img src="_static/minus.png" class="toggler" + id="toggle-1" style="display: none" alt="-" /></td> + <td> + <tt class="xref">promod3</tt></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td> + <a href="core/index.html#module-promod3.core"><tt class="xref">promod3.core</tt></a></td><td> + <em>Basic functionality, supporting standard tasks in your code.</em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-s"><td></td><td> + <strong>s</strong></td><td></td></tr> + <tr> + <td><img src="_static/minus.png" class="toggler" + id="toggle-2" style="display: none" alt="-" /></td> + <td> + <tt class="xref">sm</tt></td><td> + <em></em></td></tr> + <tr class="cg-2"> + <td></td> + <td> + <a href="meld/index.html#module-sm.meld"><tt class="xref">sm.meld</tt></a></td><td> + <em>Coordinate modeling and sampling</em></td></tr> + </table> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="#" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/search.html b/doc/html/search.html new file mode 100644 index 0000000000000000000000000000000000000000..3f771e55c1d5aa742c01fe5a24609b46112609a3 --- /dev/null +++ b/doc/html/search.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Search — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="_static/searchtools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <script type="text/javascript"> + jQuery(function() { Search.loadIndex("searchindex.js"); }); + </script> + + <script type="text/javascript" id="searchindexloader"></script> + + + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <h1 id="search-documentation">Search</h1> + <div id="fallback" class="admonition warning"> + <script type="text/javascript">$('#fallback').hide();</script> + <p> + Please activate JavaScript to enable the search + functionality. + </p> + </div> + <p> + From here you can search these documents. Enter your search + words into the box below and click "search". Note that the search + function will automatically search for all of the words. Pages + containing fewer words won't appear in the result list. + </p> + <form action="" method="get"> + <input type="text" name="q" value="" /> + <input type="submit" value="search" /> + <span id="search-progress" style="padding-left: 10px"></span> + </form> + + <div id="search-results"> + + </div> + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 09 14:45, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js new file mode 100644 index 0000000000000000000000000000000000000000..d1a7a707fd99e812b8eba088f7aedada584b2775 --- /dev/null +++ b/doc/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({envversion:42,terms:{aln:6,all:[8,0,1,4,6],code:[8,0,4],forget:4,structuralgap:1,messi:8,skip:8,ost:[0,1,2,3,4,5,6,7,8,9,10],disable_document:4,prefix:0,correl:1,abil:8,follow:[8,6],middl:8,chain:6,init:8,program:7,wavread:[],introduc:8,"case":8,sourc:[8,0,4],everi:6,string:0,fals:[0,1,6],internet:8,candid:1,worst:8,failur:0,veri:0,affect:8,tri:6,four:1,foo:[],level:[8,4],list:[8,0,1,4,6],item:[8,6],fileextens:0,smallish:[8,4],servic:8,malici:8,your_modul:8,past:8,second:6,design:0,pass:8,acid:6,even:8,index:3,what:[8,0,4],hide:8,resembl:8,sum:1,"while":[8,0],access:1,delet:6,version:[8,4],"new":[8,1,6],boost:[0,1,2,3,4,5,6,7,8,9,10],method:1,meld:[],submodule1:8,honour:1,gener:8,never:8,here:[8,0,4,6],modif:6,"1ake":6,path:[8,0,4],modifi:[8,6,5],implicit:4,valu:0,search:[4,3],convers:[],doctest:[8,4],implement:8,honor:6,extra:8,modul:[0,3,5,7,8,9],unix:8,api:[],instal:4,total:1,unit:[],highli:4,fed:8,from:[0,1,5,4,6,8,9],describ:0,would:[8,4],two:8,next:8,everybodi:8,few:[8,4,1,6],call:[8,4],recommend:4,loadalign:6,checkout:8,tell:[8,0],tightli:8,more:[8,4,6],sort:1,peopl:8,relat:8,notic:8,warn:8,flag:0,templat:6,particular:8,known:0,hold:[1,6],cach:4,must:8,py_run:8,hous:8,setup:[8,5],work:[8,4],histori:8,remain:6,can:[8,0,4,6],torsion_scor:1,purpos:8,root:8,fetch:[8,0],give:8,process:8,add_argu:0,indic:[],topic:8,candit:1,want:[8,4],backbonelist:1,hydrogen:6,packing_scor:1,concept:8,cours:8,end:[8,0,1,4],turn:[8,0],rather:8,peptid:[1,6],comfort:0,calpha_onli:6,how:[8,6],sever:4,verifi:0,updat:8,attachview:6,entityhandl:[1,6],rebas:8,mess:8,dive:8,after:8,usabl:8,sortbyscor:1,befor:8,wrong:4,attent:8,date:8,data:8,grow:6,aiffread:[],man:[8,4],"short":8,third:8,correspond:[8,1],stash:8,issu:[8,7],inform:6,"switch":8,maintain:8,allow:8,order:1,origin:8,help:[8,4],over:[8,4,6],insight:8,report:6,immed:[],pointer:4,paramet:[0,1,6],binari:8,fix:[8,0],selenium:6,structuralgaplist:6,feel:8,complex:8,easier:1,linkcheck:[8,4],them:8,"float":1,"return":[0,1,6],thei:[8,1],fragment:1,dai:0,exot:8,"break":8,clash_bb_scor:1,instead:[4,0],front:[8,0,4],now:[8,6],align:6,minimalist:6,name:0,rmsd:1,anyth:[8,4],revers:[],separ:8,easili:8,achiev:8,each:8,found:8,higher:4,mean:[4,0],compil:8,parwis:6,idea:[8,5],realli:[8,0,4],coord:1,our:8,special:[8,4],out:[8,4],variabl:4,goe:[8,4],crucial:8,content:[3,10],reader:8,print:[4,6],got:4,runtimeerror:[1,6],given:[0,1],free:8,standard:[],reason:8,base:[0,6],put:[4,0],org:8,basi:8,could:[8,6],insert:[1,6],success:[0,1],keep:8,filter:[],thing:[8,4],clash_sc_scor:1,place:8,think:8,first:[8,5],oper:8,major:8,suffix:0,obviou:8,carri:0,onc:8,number:[1,6],yourself:[8,4],restrict:8,mai:[8,6],alreadi:8,done:8,messag:0,stabl:8,miss:[0,1,6],exit_statu:0,differ:[8,4],script:[8,0,4],top:[8,4],system:[8,4,5],least:[8,4],tradition:0,attach:6,master:8,too:8,termin:0,recent:8,"final":6,store:[8,1,6],shell:[4,0],option:[4,0],tool:0,copi:[8,6],restrict_chain:6,openstructur:[0,1,2,3,4,5,6,7,8,9,10],karaok:[],pars:0,mostli:8,rst:8,than:8,provid:[8,4],seamlessli:8,tree:8,structur:[],unrecognis:0,project:8,reus:6,str:[0,6],were:8,posit:[0,1],thu:0,sometim:8,argument:[],packag:8,manner:8,have:[8,4,1,6],need:[8,0,4],fasta:6,tidi:8,rmsdto:1,advic:8,also:[8,0,4,6],without:[0,6],take:6,which:[8,6,7],thoroughli:8,noth:8,singl:[8,6],clash:1,track:0,buildrawmodel:6,compress:0,most:[8,0,6],hotfix:8,model:[],renam:5,doc:[8,4],gather:[8,7],cover:[0,7],doe:[8,0,6],ext:0,declar:8,clean:[8,4],review:8,cmakelist:[8,4],vocod:[],disable_doctest:4,find:8,involv:8,current:8,onli:[8,0,6],locat:4,explain:8,configur:[8,4],activ:8,figur:8,should:[8,0],suppos:[8,1],folder:8,move:8,hit:8,unus:8,variou:4,get:[8,4],cannot:8,loadpdb:6,increas:1,toolbox:8,requir:[8,4,1],enabl:0,"2b1":4,whether:0,calcul:1,common:0,contain:[8,0,4,6,9],auwrit:[],python_root:4,where:8,remov:4,view:8,user:[],set:[8,0,1,4,6],allatom_scor:1,frame:8,see:8,temporarili:8,result:6,respons:8,fail:[8,1],reserv:0,awar:8,detect:0,parent:6,someth:8,label:8,state:4,score:1,awai:8,entiti:1,approach:8,accord:8,extend:8,sole:8,extens:[0,1],test_your_modul:8,solv:8,come:[8,0],popul:8,howev:1,equal:[],etc:8,tutori:8,grain:8,whole:[8,6],pdb:[0,6],comment:8,point:1,overview:8,argumentpars:0,pop:8,except:8,residu:[1,6],header:8,mmcif:0,assum:8,torsion:1,quit:8,template_structur:6,coupl:8,rebuild:4,three:8,been:8,sinc:[8,0],much:[8,6],besid:4,treat:[8,6],basic:[8,4,6],ost_root:4,addit:[8,0],tini:8,life:[8,1],convert:6,gap:[1,6],coordin:[],togeth:8,els:8,fileexist:0,educ:8,those:[8,4],sound:[],subsequ:6,look:[8,0],raw:[],straight:8,formatt:8,invok:[8,4],match:6,abov:8,error:0,dost_root:4,loop:[],pack:1,methionin:6,bin:8,smng:5,helper:1,sidechain:[1,6],henc:8,non:8,itself:8,conf:4,protein:[9,6],dedic:[8,4],"__init__":8,reviv:8,develop:[],parti:8,belong:8,savepdb:6,same:[4,1],member:6,python:[0,1,2,3,4,5,6,7,8,9,10],html:[8,4],document:[],conflict:8,complet:6,http:8,argpars:0,effect:[],hand:4,driven:8,rais:[1,6],disable_linkcheck:4,initi:5,extern:8,stack:8,codetest:8,subpackag:[],off:6,parse_arg:0,pymod:8,nevertheless:8,builder:4,well:[8,4,1,6],exampl:[8,4,6],branchnam:8,thi:[0,1,4,6,7,8,9],gzip:0,everyth:8,spend:8,usual:[8,4],cmake_support:8,clash_scor:1,just:[8,4],reduced_scor:1,obtain:6,rest:8,product:8,web:4,loopcandid:1,restructuredtext:[0,1,2,3,4,5,6,7,8,9,10],makefil:[8,4],rawmodelingresult:6,param:1,add:[8,1],densiti:1,input:0,save:8,boost_root:4,opt:0,advis:8,format:8,handl:6,specimen:0,piec:8,source2:8,source1:8,elabor:8,bit:[8,4],like:[8,6],loss:8,backbon:[1,6],lost:8,incred:6,manual:[8,4],resolv:8,test_awesome_featur:8,"boolean":0,either:[8,6],output:0,page:[8,3,4],right:4,often:0,test_submodule1:8,some:[8,0],back:8,intern:8,proper:8,txt:[8,4],lead:0,avoid:8,per:[8,7],exit:0,select:6,recognis:8,sequenc:[9,1,6],amino:6,core:[],aiffwrit:[],run:[8,4],step:8,repositori:8,trustworthi:8,src:8,about:[8,6],actual:[8,1],materi:8,surround:[],unfortun:8,coars:8,commit:8,produc:4,own:[8,0],within:[8,4],promot3:[],automat:[8,0],due:[1,6],strip:6,your:[8,1],merg:8,git:[],fill:8,log:8,wai:[8,4],support:0,renumb:6,avail:[8,4],start:[8,1],sortbycorrel:1,trigger:8,interfac:8,includ:[8,0,5],lot:[8,0],suit:8,forward:8,strict:8,"function":[],enough:8,tupl:0,forg:8,link:[8,4],atom:[1,6],don:4,inlin:8,"true":[0,1,6],bug:8,pull:8,tripl:0,immedi:8,consist:8,possibl:[8,6],"default":4,type:[0,1,6],insertinto:1,displai:0,wavwrit:[],otherwis:8,problem:8,similar:4,featur:8,creat:[8,4],"int":0,certain:4,utilis:[8,0],auread:[],incomplet:6,exist:[8,0,1],file:[],deuterium:6,check:[8,0,4],probabl:[8,4],echo:[],again:[8,4],calpha:6,when:[8,6],detail:[8,6],other:[8,4,6],bool:[0,1],seem:8,test:[],you:[8,0,4],phosphoserin:6,bb_list:1,toentiti:1,determin:0,devot:7,briefli:8,consid:8,homolog:7,reduc:1,markup:8,sphinx:[0,1,2,3,4,5,6,7,8,9,10],algorithm:6,directori:[],descript:8,pseudo:6,rule:8,ignor:6,time:[8,6],push:8},objtypes:{"0":"py:module","1":"py:function","2":"py:method","3":"py:attribute","4":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","class","Python class"]},filenames:["core/argcheck","meld/loop","users","index","buildsystem","changelog","meld/rawmodel","core/index","contributing","meld/index","developers"],titles:["<tt class=\"docutils literal\"><span class=\"pre\">argcheck</span></tt> - Standard tests for command line arguments","Loop Modeling","Documentation For Users","Welcome to ProMod3’s documentation!","Building ProMod3","Changelog","Raw Coordinate Modeling","<tt class=\"docutils literal\"><span class=\"pre\">core</span></tt> - ProMod3 core functionality","Contributing","<tt class=\"docutils literal\"><span class=\"pre\">meld</span></tt> - Coordinate modeling","Documentation For Developes"],objects:{"promod3.core.argcheck":{FileExtension:[0,1,1,""],FileExists:[0,1,1,""]},"sm.meld.LoopCandidate":{correl:[1,3,1,""],clash_score:[1,3,1,""],allatom_score:[1,3,1,""],score:[1,3,1,""],reduced_score:[1,3,1,""],torsion_score:[1,3,1,""],InsertInto:[1,2,1,""],gap:[1,3,1,""],clash_sc_score:[1,3,1,""],ToEntity:[1,2,1,""],clash_bb_score:[1,3,1,""],coords:[1,3,1,""],packing_score:[1,3,1,""],RmsdTo:[1,2,1,""]},"sm.meld":{LoopCandidate:[1,4,1,""],LoopCandidates:[1,4,1,""],BuildRawModel:[6,1,1,""],RawModelingResult:[6,4,1,""]},sm:{meld:[9,0,1,""]},"sm.meld.RawModelingResult":{model:[6,3,1,""],gaps:[6,3,1,""]},"sm.meld.LoopCandidates":{SortByScore:[1,2,1,""],model:[1,3,1,""],SortByCorrel:[1,2,1,""],Add:[1,2,1,""]},promod3:{core:[7,0,1,""]}},titleterms:{pre:[0,7,9],model:[9,1,6],argument:0,indic:3,raw:6,api:[1,6],file:0,tabl:3,unit:8,git:8,cmake:[8,4],welcom:3,make:4,write:8,build:4,branch:8,test:[8,0],"import":4,document:[8,3,10,2],promod3:[4,3,7],meld:9,"function":7,core:7,liter:[0,7,9],argcheck:0,contribut:8,standard:0,coordin:[9,6],user:2,releas:5,develop:10,line:0,"class":[0,7,9],stage:8,target:4,changelog:5,directori:8,docutil:[0,7,9],introduct:[0,6],structur:8,command:0,span:[0,7,9],chang:5,loop:1,depend:4}}) \ No newline at end of file diff --git a/doc/html/users.html b/doc/html/users.html new file mode 100644 index 0000000000000000000000000000000000000000..d68bc59d27636a9674a905631202526225852700 --- /dev/null +++ b/doc/html/users.html @@ -0,0 +1,117 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>Documentation For Users — ProMod3 0 documentation</title> + + <link rel="stylesheet" href="_static/default.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <link rel="top" title="ProMod3 0 documentation" href="index.html" /> + <link rel="next" title="Documentation For Developes" href="developers.html" /> + <link rel="prev" title="Welcome to ProMod3’s documentation!" href="index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="developers.html" title="Documentation For Developes" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="index.html" title="Welcome to ProMod3’s documentation!" + accesskey="P">previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="documentation-for-users"> +<h1>Documentation For Users<a class="headerlink" href="#documentation-for-users" title="Permalink to this headline">¶</a></h1> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h4>Previous topic</h4> + <p class="topless"><a href="index.html" + title="previous chapter">Welcome to ProMod3’s documentation!</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="developers.html" + title="next chapter">Documentation For Developes</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/users.txt" + rel="nofollow">Show Source</a></li> + </ul> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="developers.html" title="Documentation For Developes" + >next</a> |</li> + <li class="right" > + <a href="index.html" title="Welcome to ProMod3’s documentation!" + >previous</a> |</li> + <li><a href="index.html">ProMod3 0 documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2013, Bienchen. + Last updated on May 08 10:47, 2014. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </body> +</html> \ No newline at end of file