diff --git a/.gitignore b/.gitignore index 51a7b58c027..30591a95750 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,5 @@ help # Project specific statsmodels/version.py +cythonize.dat +statsmodels.egg-info/ diff --git a/.travis.orig.yml b/.travis.orig.yml new file mode 100644 index 00000000000..933005fcd6e --- /dev/null +++ b/.travis.orig.yml @@ -0,0 +1,57 @@ +# Adapted from M. Brett's .yaml file for nipy: +# https://github.com/nipy/nipy/blob/master/.travis.yml +# +# We pretend to be erlang because we can't use the python support in +# travis-ci; it uses virtualenvs, they do not have numpy, scipy, matplotlib, +# and it is impractical to build them +language: erlang +notifications: + email: + - statsmodels-commits@googlegroups.com +env: + # Enable python 2 and python 3 builds. Python3.2 available in Ubuntu 12.04. + - PYTHON=python PYSUF='' + - PYTHON=python3 PYSUF=3 +install: + - sudo apt-get update + - sudo apt-get install $PYTHON-dev + - sudo apt-get install $PYTHON-numpy + - sudo apt-get install $PYTHON-scipy + - sudo apt-get install $PYTHON-setuptools + - sudo apt-get install $PYTHON-nose + # Cython needs manual install under Python 3 + - if [ "${PYSUF}" == "3" ]; then + wget http://cython.org/release/Cython-0.17.1.tar.gz ; + tar xfvz Cython-0.17.1.tar.gz ; + cd Cython-0.17.1 ; + sudo python3 setup.py install ; + cd .. ; + else + sudo apt-get install cython ; + fi + - echo ${DISTRIB_CODENAME} + - wget -O- http://neuro.debian.net/lists/precise.us-nh.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list + - sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 2649A5A9 + - sudo apt-get update -qq + - sudo apt-get install $PYTHON-dateutil + - sudo apt-get --no-install-recommends install $PYTHON-pandas + - sudo apt-get --no-install-recommends install $PYTHON-pandas-lib + - sudo easy_install$PYSUF -U patsy + - if [ "${PYSUF}" != "3" ]; then sudo pip install coverage; fi + - if [ "${PYSUF}" != "3" ]; then sudo pip install coveralls; fi +script: + - SRCDIR=$PWD + - sudo $PYTHON setup.py install + # Ubuntu 12.04 installs statsmodels under the wrong path for Python 3 + - if [ "${PYSUF}" == "3" ]; then + sudo mv /usr/local/lib/python3.2/dist-packages/statsmodels-*/statsmodels /usr/local/lib/python3.2/dist-packages/statsmodels ; + sudo rm -rf /usr/lib/python3.2/dist-packages/statsmodels-* ; + fi + # statsmodels was installed "system-wide" thus cd under dedicated + # travis-test/ directory to not try using local version without built extensions + - mkdir -p "${SRCDIR}/travis-test"; cd "${SRCDIR}/travis-test" + # Compose a script to run testing with coverage + - echo 'import statsmodels as sm; a=sm.test(); import sys; sys.exit((len(a.failures)+len(a.errors))>0)' > test.py + - if [ "${PYSUF}" != "3" ]; then coverage run --rcfile=${SRCDIR}/.travis_coveragerc test.py; else $PYTHON test.py; fi +after_success: + - if [ "${PYSUF}" != "3" ]; then coveralls; fi diff --git a/.travis.yml b/.travis.yml index 995a4de0fb4..d6c9a1cf71f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,50 +1,97 @@ -# Adapted from M. Brett's .yaml file for nipy: -# https://github.com/nipy/nipy/blob/master/.travis.yml -# -# We pretend to be erlang because we can't use the python support in -# travis-ci; it uses virtualenvs, they do not have numpy, scipy, matplotlib, -# and it is impractical to build them -language: erlang -notifications: - email: - - statsmodels-commits@googlegroups.com +# Travis script that uses miniconda in place of the system installed python +# versions. Allows substantial flexability for choosing versions of +# required packages and is simpler to use to test up-to-date scientific Python +# stack +language: python + env: - # Enable python 2 and python 3 builds. Python3.2 available in Ubuntu 12.04. - - PYTHON=python PYSUF='' - - PYTHON=python3 PYSUF=3 + # Default values for common packages, override as needed + global: + - CYTHON=0.20 + - PATSY=0.2 + - PANDAS=0.12 + - MATPLOTLIB=1.3 + - OPTIONAL= + - COVERAGE=false + +matrix: + fast_finish: true + include: + - python: 2.7 + env: + - PYTHON=2.6 + - NUMPY="1.6.2=py26_4" + - SCIPY="0.11.0=np16py26_3" + - MATPLOTLIB=1.2 + - python: 2.7 + env: + - PYTHON=2.7 + - NUMPY=1.7 + - SCIPY=0.12 + - OPTIONAL=cvxopt + - COVERAGE=true + - python: 2.7 + env: + - PYTHON=3.3 + - NUMPY=1.8 + - SCIPY=0.13 + - PANDAS=0.13 + - python: 2.7 + env: + - PYTHON=2.7 + - NUMPY= + - SCIPY= + - MATPLOTLIB= + - PANDAS= + +notifications: + email: + on_success: always + +# Setup anaconda +before_install: + - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh + - chmod +x miniconda.sh + - ./miniconda.sh -b + - export PATH=/home/travis/miniconda/bin:$PATH + - conda update --yes --quiet conda + # Fix for headless TravisCI + - "export DISPLAY=:99.0" + - "sh -e /etc/init.d/xvfb start" + # Avoid noise from matplotlib + - mkdir $HOME/.config + - mkdir $HOME/.config/matplotlib + - SRCDIR=$PWD + - cp $SRCDIR/tools/matplotlibrc $HOME/.config/matplotlib/matplotlibrc + # Location for older version of matplotlib + - if [ ${MATPLOTLIB} = "1.2" ]; then mkdir $HOME/.matplotlib; fi + - if [ ${MATPLOTLIB} = "1.2" ]; then cp ${SRCDIR}/tools/matplotlibrc $HOME/.matplotlib/matplotlibrc; fi + # Build package list to avoid empty package=versions; only needed for versioned pacakges + - PKGS="python=${PYTHON}" + - PKGS="${PKGS} numpy"; if [ ${NUMPY} ]; then PKGS="${PKGS}=${NUMPY}"; fi + - PKGS="${PKGS} scipy"; if [ ${SCIPY} ]; then PKGS="${PKGS}=${SCIPY}"; fi + - PKGS="${PKGS} patsy"; if [ ${PATSY} ]; then PKGS="${PKGS}=${PATSY}"; fi + - PKGS="${PKGS} pandas"; if [ ${PANDAS} ]; then PKGS="${PKGS}=${PANDAS}"; fi + - PKGS="${PKGS} Cython"; if [ ${CYTHON} ]; then PKGS="${PKGS}=${CYTHON}"; fi + - PKGS="${PKGS} matplotlib"; if [ ${MATPLOTLIB} ]; then PKGS="${PKGS}=${MATPLOTLIB}"; fi + +# Install packages install: - - sudo apt-get update - - sudo apt-get install $PYTHON-dev - - sudo apt-get install $PYTHON-numpy - - sudo apt-get install $PYTHON-scipy - - sudo apt-get install $PYTHON-setuptools - - sudo apt-get install $PYTHON-nose - # Cython needs manual install under Python 3 - - if [ "${PYSUF}" == "3" ]; then - wget http://cython.org/release/Cython-0.17.1.tar.gz ; - tar xfvz Cython-0.17.1.tar.gz ; - cd Cython-0.17.1 ; - sudo python3 setup.py install ; - cd .. ; - else - sudo apt-get install cython ; - fi - - echo ${DISTRIB_CODENAME} - - wget -O- http://neuro.debian.net/lists/precise.us-nh.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list - - sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 2649A5A9 - - sudo apt-get update -qq - - sudo apt-get install $PYTHON-dateutil - - sudo apt-get --no-install-recommends install $PYTHON-pandas - - sudo apt-get --no-install-recommends install $PYTHON-pandas-lib - - sudo easy_install$PYSUF -U patsy + - conda create --yes --quiet -n statsmodels-test ${PKGS} ${OPTIONAL} dateutil nose pip pyyaml setuptools + - source activate statsmodels-test + - if [ ${COVERAGE} = true ]; then pip install coverage coveralls; fi + - python setup.py install + script: - - sudo $PYTHON setup.py install - # Ubuntu 12.04 installs statsmodels under the wrong path for Python 3 - - if [ "${PYSUF}" == "3" ]; then - sudo mv /usr/local/lib/python3.2/dist-packages/statsmodels-*/statsmodels /usr/local/lib/python3.2/dist-packages/statsmodels ; - sudo rm -rf /usr/lib/python3.2/dist-packages/statsmodels-* ; - fi - # For some reason, Python 3 will try to work with the build directory. Get out of folder to avoid breakage - - cd ../ - - sudo $PYTHON -c "import statsmodels as sm; a=sm.test(); import sys; sys.exit((len(a.failures)+len(a.errors))>0)" + - SRCDIR=$PWD + - python setup.py install + - mkdir -p "${SRCDIR}/travis-test"; cd "${SRCDIR}/travis-test" + # Show versions + - python -c 'import statsmodels.api as sm; sm.show_versions();' + # Compose a script to run testing with coverage + - echo 'import statsmodels as sm; a=sm.test(); import sys; sys.exit((len(a.failures)+len(a.errors))>0)' > test.py + - if [ ${COVERAGE} = true ]; then coverage run --rcfile=${SRCDIR}/.travis_coveragerc test.py; else python test.py; fi +after_success: + # Coverage only for 2.7 + - if [ ${COVERAGE} = true ]; then coveralls --rcfile=${SRCDIR}/.travis_coveragerc; fi diff --git a/.travis_coveragerc b/.travis_coveragerc new file mode 100644 index 00000000000..c41942d037e --- /dev/null +++ b/.travis_coveragerc @@ -0,0 +1,5 @@ + +[run] +branch = True +include = + */statsmodels/* diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index f090f07a6ca..033f01aa5da 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -7,23 +7,42 @@ by submitting patches, statistical tests, new models, or examples. `statsmodels` is developed on `Github `_ using the `Git `_ version control system. -License -~~~~~~~ +Submitting a Bug Report +~~~~~~~~~~~~~~~~~~~~~~~ -Statsmodels is released under the -`Modified (3-clause) BSD license `_. +- Include a short, self-contained code snippet that reproduces the problem +- Specify the statsmodels version used. You can do this with ``sm.version.full_version`` +- If the issue looks to involve other dependencies, also include the output of ``sm.show_versions()`` + +Making Changes to the Code +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For a pull request to be accepted, you must meet the below requirements. This greatly helps in keeping the job of maintaining and releasing the software a shared effort. + +- **One branch. One feature.** Branches are cheap and github makes it easy to merge and delete branches with a few clicks. Avoid the temptation to lump in a bunch of unrelated changes when working on a feature, if possible. This helps us keep track of what has changed when preparing a release. +- Commit messages should be clear and concise. This means a subject line of less than 80 characters, and, if necessary, a blank line followed by a commit message body. We have an `informal commit format standard `_ that we try to adhere to. You can see what this looks like in practice by ``git log --oneline -n 10``. If your commit references or closes a specific issue, you can close it by mentioning it in the `commit message `_. (*For maintainers*: These suggestions go for Merge commit comments too. These are partially the record for release notes.) +- Code submissions must always include tests. See our `notes on testing `_. +- Each function, class, method, and attribute needs to be documented using docstrings. We conform to the `numpy docstring standard `_. +- If you are adding new functionality, you need to add it to the documentation by editing (or creating) the appropriate file in ``docs/source``. +- Make sure your documentation changes parse correctly. Change into the top-level ``docs/`` directory and type:: + + make clean + make html -Submitting a Patch -~~~~~~~~~~~~~~~~~~ + Check that the build output does not have *any* warnings due to your changes. +- Finally, please add your changes to the release notes. Open the ``docs/source/release/versionX.X.rst`` file that has the version number of the next release and add your changes to the appropriate section. -So you want to submit a patch to `statsmodels`?. Great news! Here are the -steps you need to take. +How to Submit a Pull Request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +So you want to submit a patch to `statsmodels` but aren't too familiar with github? Here are the steps you need to take. 1. `Fork `_ the `statsmodels repository `_ on Github. -2. `Create a new feature branch `_ - + Each branch must be self-contained, with a single new feature or bugfix. - + Patches must always include tests. See our `notes on testing `_. -3. `Submit a pull request `_ +2. `Create a new feature branch `_. Each branch must be self-contained, with a single new feature or bugfix. +3. Make sure the test suite passes. This includes testing on Python 3. The easiest way to do this is to either enable `Travis-CI `_ on your fork, or to make a pull request and check there. +4. Document your changes by editing the appropriate file in ``docs/source/``. If it is a big, new feature add a note and an example to the latest ``docs/source/release/versionX.X.rst`` file. See older versions for examples. If it's a minor change, it will be included automatically in our relase notes. +5. Add an example. If it is a big, new feature please submit an example notebook by following `these instructions `_. +6. `Submit a pull request `_ Mailing List ~~~~~~~~~~~~ @@ -35,3 +54,9 @@ Learn More The ``statsmodels`` documentation's `developer page `_ offers much more detailed information about the process. + +License +~~~~~~~ + +Statsmodels is released under the +`Modified (3-clause) BSD license `_. diff --git a/INSTALL.txt b/INSTALL.txt index 39e5de9f46f..db088ab4128 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -9,7 +9,7 @@ numpy >= 1.5.1 www.numpy.org -scipy >= 0.7 +scipy >= 0.9.0 www.scipy.org @@ -22,13 +22,15 @@ patsy >= 0.1.0 patsy.readthedocs.org -cython >= 0.15.1 +cython >= 0.20.1 http://cython.org/ Cython is required if you are building the source from github. However, if you have are building from source distribution archive then the - generated C files are included and Cython is not necessary. + generated C files are included and Cython is not necessary. If you are + building for Python 3.4, then you must use Cython >= 0.20.1. Earlier + versions may be ok for Python < 3.4. Optional Dependencies --------------------- @@ -52,6 +54,9 @@ nose >= 1.0.0 Nose is needed to run the tests. +IPython >= 1.0 + + Needed to build the docs. Easy Install ------------ diff --git a/MANIFEST.in b/MANIFEST.in index 682069e91ae..c7a12f5ae56 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,13 +1,12 @@ -global-include *.csv *.py *.txt -#scikits*.* +global-include *.csv *.py *.txt *.pyx *.pxd *.pxi *.c *.h include MANIFEST.in -#exclude docs/build/htmlhelp* recursive-exclude build * recursive-exclude dist * recursive-exclude tools * include tools/examples_rst.py include tools/hash_funcs.py +include tools/cythonize.py graft statsmodels/datasets graft statsmodels/tests @@ -20,28 +19,16 @@ exclude docs/source/generated/* recursive-include docs/sphinxext * recursive-include docs/themes * recursive-exclude docs/build * -#recursive-include docs/build/html * recursive-exclude docs/build/htmlhelp * include statsmodels/statsmodelsdoc.chm include docs/make.bat include docs/Makefile -#include docs mak* -#include docs GLM* recursive-include examples * -#missed files: .npz, .npy -include statsmodels/tsa/vector_ar/tests/results/vars_results.npz -include statsmodels/iolib/tests/results/* -include statsmodels/stats/tests/results/influence_lsdiag_R.json -include statsmodels/sandbox/panel/test_data.txt -include statsmodels/stats/tests/results/influence_measures_R.csv -include statsmodels/stats/libqsturng/tests/results/* -include statsmodels/stats/libqsturng/tests/bootleg.dat -include statsmodels/stats/libqsturng/tests/bootleg.csv -include statsmodels/stats/libqsturng/CH.r -include statsmodels/stats/libqsturng/LICENSE.txt -include statsmodels/regression/tests/results/leverage_influence_ols_nostars.txt +# Cached Cython signatures +include cythonize.dat +prune */__pycache__ -global-exclude *~ *.swp *.pyc *.bak *.pyx +global-exclude *~ *.swp *.pyc *.pyo *.bak diff --git a/README.txt b/README.txt index b8ac66ecf2c..8b4285c4102 100644 --- a/README.txt +++ b/README.txt @@ -86,11 +86,11 @@ This can be opened from the python interpreter :: Discussion and Development ========================== -Discussions take place on our mailing list. +Discussions take place on our mailing list. http://groups.google.com/group/pystatsmodels -We are very interested in feedback about usability and suggestions for improvements. +We are very interested in feedback about usability and suggestions for improvements. Bug Reports diff --git a/build_bdists.bat b/build_bdists.bat index bc362686299..96aa183216f 100644 --- a/build_bdists.bat +++ b/build_bdists.bat @@ -4,4 +4,6 @@ call tools\build_win_bdist64-py27.bat call tools\build_win_bdist32-py27.bat call tools\build_win_bdist32-py32.bat call tools\build_win_bdist64-py32.bat +call tools\build_win_bdist33-py34.bat +call tools\build_win_bdist64-py34.bat call python setup.py sdist --formats=zip,gztar diff --git a/docs/Makefile b/docs/Makefile index d68245dc686..32d888a080f 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -7,6 +7,7 @@ SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build TOOLSPATH = ../tools/ +DATASETBUILD = dataset_rst.py EXAMPLEBUILD = examples_rst.py NOTEBOOKBUILD = nbgenerate.py FOLDTOC = fold_toc.py @@ -48,17 +49,24 @@ cleancache: -rm source/examples/generated/* -rm -rf source/examples/notebooks/generated/* -rm -rf ../tools/hash_dict.pickle + -rm -rf source/datasets/generated/* + +notebooks: + @echo "Generating notebooks from examples/notebooks folder" + $(TOOLSPATH)$(NOTEBOOKBUILD) html: # generate the examples rst files @echo "Generating reST from examples folder" - $(TOOLSPATH)$(EXAMPLEBUILD) + #$(TOOLSPATH)$(EXAMPLEBUILD) @echo "Generating notebooks from examples/notebooks folder" $(TOOLSPATH)$(NOTEBOOKBUILD) + @echo "Generating datasets from installed statsmodels.datasets" + $(TOOLSPATH)$(DATASETBUILD) $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - $(TOOLSPATH)$(EXAMPLEBUILD) + #$(TOOLSPATH)$(EXAMPLEBUILD) $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/index.html - $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/examples/index.html ../_static + #$(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/examples/index.html ../_static $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/dev/index.html ../_static @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." diff --git a/docs/source/_static/examples.css b/docs/source/_static/examples.css new file mode 100644 index 00000000000..6225bd11b31 --- /dev/null +++ b/docs/source/_static/examples.css @@ -0,0 +1,113 @@ +.examples-page { + /*override div.body padding of 30px */ + margin-left: -30px; + margin-right: -30px; +} + +.examples-page .padleft { + padding-left: 30px; +} + +.examples-page h1, h2, h3 { + padding-left: 30px; /* to make up for margin above */ +} + +.examples-page .toclist { + list-style:none; + margin-bottom:0px; + margin-top:0px; +} + +/* Marketing section of Overview +-------------------------------------------------- */ +.marketing p { + margin-right: 10px; +} + +/* Eaxmples page +------------------------- */ +.thumbnail { + margin-bottom: 9px; + background-color: #fff; +} + +/* Example sites showcase */ +.example-sites img { + max-width: 100%; + margin: 0 auto; +} + +.marketing-byline { + font-size: 18px; + font-weight: 300; + line-height: 24px; + color: #999; + text-align: center; +} + +/* From bootstrap.css */ +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + width: 360px; + max-width: 100%; + height: auto; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} diff --git a/docs/source/_static/images/anova.png b/docs/source/_static/images/anova.png new file mode 100644 index 00000000000..b47288cae24 Binary files /dev/null and b/docs/source/_static/images/anova.png differ diff --git a/docs/source/_static/images/categorical_interaction_plot.png b/docs/source/_static/images/categorical_interaction_plot.png new file mode 100644 index 00000000000..5759c5b1180 Binary files /dev/null and b/docs/source/_static/images/categorical_interaction_plot.png differ diff --git a/docs/source/_static/images/contrasts.png b/docs/source/_static/images/contrasts.png new file mode 100644 index 00000000000..2ff7fcab925 Binary files /dev/null and b/docs/source/_static/images/contrasts.png differ diff --git a/docs/source/_static/images/discrete_overview.png b/docs/source/_static/images/discrete_overview.png new file mode 100644 index 00000000000..838b0600c10 Binary files /dev/null and b/docs/source/_static/images/discrete_overview.png differ diff --git a/docs/source/_static/images/fairs_data.png b/docs/source/_static/images/fairs_data.png new file mode 100644 index 00000000000..47bcb2e0ba9 Binary files /dev/null and b/docs/source/_static/images/fairs_data.png differ diff --git a/docs/source/_static/images/formulas_intro.png b/docs/source/_static/images/formulas_intro.png new file mode 100644 index 00000000000..0e72b94c21b Binary files /dev/null and b/docs/source/_static/images/formulas_intro.png differ diff --git a/docs/source/_static/images/generic_mle.png b/docs/source/_static/images/generic_mle.png new file mode 100644 index 00000000000..e2aa31f3229 Binary files /dev/null and b/docs/source/_static/images/generic_mle.png differ diff --git a/docs/source/_static/images/glm_formulas.png b/docs/source/_static/images/glm_formulas.png new file mode 100644 index 00000000000..46fa9349b70 Binary files /dev/null and b/docs/source/_static/images/glm_formulas.png differ diff --git a/docs/source/_static/images/glm_overview.png b/docs/source/_static/images/glm_overview.png new file mode 100644 index 00000000000..0d6afe03422 Binary files /dev/null and b/docs/source/_static/images/glm_overview.png differ diff --git a/docs/source/_static/images/gls.png b/docs/source/_static/images/gls.png new file mode 100644 index 00000000000..52e552ce2e5 Binary files /dev/null and b/docs/source/_static/images/gls.png differ diff --git a/docs/source/_static/images/kde_overview.png b/docs/source/_static/images/kde_overview.png new file mode 100644 index 00000000000..d77c2ca0cad Binary files /dev/null and b/docs/source/_static/images/kde_overview.png differ diff --git a/docs/source/_static/images/ols.png b/docs/source/_static/images/ols.png new file mode 100644 index 00000000000..2978f95b721 Binary files /dev/null and b/docs/source/_static/images/ols.png differ diff --git a/docs/source/_static/images/prediction.png b/docs/source/_static/images/prediction.png new file mode 100644 index 00000000000..1aaefb1c80a Binary files /dev/null and b/docs/source/_static/images/prediction.png differ diff --git a/docs/source/_static/images/quantile_regression.png b/docs/source/_static/images/quantile_regression.png new file mode 100644 index 00000000000..799b1b5753f Binary files /dev/null and b/docs/source/_static/images/quantile_regression.png differ diff --git a/docs/source/_static/images/regression_diagnostics.png b/docs/source/_static/images/regression_diagnostics.png new file mode 100644 index 00000000000..6701ceb69dd Binary files /dev/null and b/docs/source/_static/images/regression_diagnostics.png differ diff --git a/docs/source/_static/images/regression_plots.png b/docs/source/_static/images/regression_plots.png new file mode 100644 index 00000000000..48d8400ee5f Binary files /dev/null and b/docs/source/_static/images/regression_plots.png differ diff --git a/docs/source/_static/images/rlm.png b/docs/source/_static/images/rlm.png new file mode 100644 index 00000000000..89b74ae5aac Binary files /dev/null and b/docs/source/_static/images/rlm.png differ diff --git a/docs/source/_static/images/rlm_overview.png b/docs/source/_static/images/rlm_overview.png new file mode 100644 index 00000000000..40bcbf724eb Binary files /dev/null and b/docs/source/_static/images/rlm_overview.png differ diff --git a/docs/source/_static/images/tsa_arma0.png b/docs/source/_static/images/tsa_arma0.png new file mode 100644 index 00000000000..36a83c8e3ff Binary files /dev/null and b/docs/source/_static/images/tsa_arma0.png differ diff --git a/docs/source/_static/images/tsa_arma1.png b/docs/source/_static/images/tsa_arma1.png new file mode 100644 index 00000000000..e01f52ae72e Binary files /dev/null and b/docs/source/_static/images/tsa_arma1.png differ diff --git a/docs/source/_static/images/tsa_dates.png b/docs/source/_static/images/tsa_dates.png new file mode 100644 index 00000000000..d8067e1c1d8 Binary files /dev/null and b/docs/source/_static/images/tsa_dates.png differ diff --git a/docs/source/_static/images/tsa_filters.png b/docs/source/_static/images/tsa_filters.png new file mode 100644 index 00000000000..f8a6ad64649 Binary files /dev/null and b/docs/source/_static/images/tsa_filters.png differ diff --git a/docs/source/_static/images/wls.png b/docs/source/_static/images/wls.png new file mode 100644 index 00000000000..ad465423069 Binary files /dev/null and b/docs/source/_static/images/wls.png differ diff --git a/docs/source/_static/ipython.min.css b/docs/source/_static/ipython.min.css new file mode 100644 index 00000000000..8d4fadedcc1 --- /dev/null +++ b/docs/source/_static/ipython.min.css @@ -0,0 +1,197 @@ +.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0} +.clearfix:after{clear:both} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +.border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box} +.corner-all{border-radius:4px} +.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none} +.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none} +.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;flex-direction:row-reverse} +.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none;width:auto} +.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2} +.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1} +.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2} +.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start} +.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end} +.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;justify-content:center} +.align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end;align-items:flex-end} +.align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center;align-items:center} +div.error{margin:2em;text-align:center} +div.error>h1{font-size:500%;line-height:normal} +div.error>p{font-size:200%;line-height:normal} +div.traceback-wrapper{text-align:left;max-width:800px;margin:auto} +.center-nav{display:inline-block;margin-bottom:-4px} +.alternate_upload{background-color:none;display:inline} +.alternate_upload.form{padding:0;margin:0} +.alternate_upload input.fileinput{background-color:#f00;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;height:26px} +ul#tabs{margin-bottom:4px} +ul#tabs a{padding-top:4px;padding-bottom:4px} +ul.breadcrumb a:focus,ul.breadcrumb a:hover{text-decoration:none} +ul.breadcrumb i.icon-home{font-size:16px;margin-right:4px} +ul.breadcrumb span{color:#5e5e5e} +.list_toolbar{padding:4px 0 4px 0} +.list_toolbar [class*="span"]{min-height:26px} +.list_header{font-weight:bold} +.list_container{margin-top:4px;margin-bottom:20px;border:1px solid #ababab;border-radius:4px} +.list_container>div{border-bottom:1px solid #ababab}.list_container>div:hover .list-item{background-color:#f00} +.list_container>div:last-child{border:none} +.list_item:hover .list_item{background-color:#ddd} +.list_item a{text-decoration:none} +.list_header>div,.list_item>div{padding-top:4px;padding-bottom:4px;padding-left:7px;padding-right:7px;height:22px;line-height:22px} +.item_name{line-height:22px;height:26px} +.item_icon{font-size:14px;color:#5e5e5e;margin-right:7px} +.item_buttons{line-height:1em} +.toolbar_info{height:26px;line-height:26px} +input.nbname_input,input.engine_num_input{padding-top:3px;padding-bottom:3px;height:14px;line-height:14px;margin:0} +input.engine_num_input{width:60px} +.highlight_text{color:#00f} +#project_name>.breadcrumb{padding:0;margin-bottom:0;background-color:transparent;font-weight:bold} +.ansibold{font-weight:bold} +.ansiblack{color:#000} +.ansired{color:#8b0000} +.ansigreen{color:#006400} +.ansiyellow{color:#a52a2a} +.ansiblue{color:#00008b} +.ansipurple{color:#9400d3} +.ansicyan{color:#4682b4} +.ansigray{color:#808080} +.ansibgblack{background-color:#000} +.ansibgred{background-color:#f00} +.ansibggreen{background-color:#008000} +.ansibgyellow{background-color:#ff0} +.ansibgblue{background-color:#00f} +.ansibgpurple{background-color:#f0f} +.ansibgcyan{background-color:#0ff} +.ansibggray{background-color:#808080} +div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}div.cell.selected{border-radius:4px;border:thin #ababab solid} +div.cell.edit_mode{border-radius:4px;border:thin #008000 solid} +div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none} +div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em} +div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7} +div.prompt:empty{padding-top:0;padding-bottom:0} +div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +div.input_prompt{color:#000080;border-top:1px solid transparent} +div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent} +div.input_area>div.highlight>pre{margin:0;border:0;padding:0;background-color:transparent;font-size:14px;line-height:1.21429em} +.CodeMirror{line-height:1.21429em;height:auto;background:none;} +.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto} +@-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em} +.CodeMirror-linenumber{padding:0 8px 0 4px} +.CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px} +.CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +pre code{display:block;padding:.5em} +.highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:#000} +.highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#ba2121} +.highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic} +.highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080} +pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#88f} +.highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold} +.highlight-builtin,pre .built_in{color:#008000} +pre .markdown .emphasis{font-style:italic} +pre .nginx .built_in{font-weight:normal} +pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5} +.cm-s-ipython span.cm-variable{color:#000} +.cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold} +.cm-s-ipython span.cm-number{color:#080} +.cm-s-ipython span.cm-comment{color:#408080;font-style:italic} +.cm-s-ipython span.cm-string{color:#ba2121} +.cm-s-ipython span.cm-builtin{color:#008000} +.cm-s-ipython span.cm-error{color:#f00} +.cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold} +.cm-s-ipython span.cm-meta{color:#a2f} +.cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat} +div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);-moz-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);display:block} +div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:4px} +div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;-moz-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)} +div.output_prompt{color:#8b0000} +div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.output_area .MathJax_Display{text-align:left !important} +div.output_area .rendered_html table{margin-left:0;margin-right:0} +div.output_area .rendered_html img{margin-left:0;margin-right:0} +.output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit} +div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.21429em} +div.output_stderr{background:#fdd;} +div.output_latex{text-align:left} +div.output_javascript:empty{padding:0} +.js-error{color:#8b0000} +div.raw_input{padding-top:0;padding-bottom:0;height:1em;line-height:1em;font-family:monospace} +span.input_prompt{font-family:inherit} +input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0 0 1px;padding-left:1px;padding-top:2px;height:1em} +p.p-space{margin-bottom:10px} +.rendered_html{color:#000;}.rendered_html em{font-style:italic} +.rendered_html strong{font-weight:bold} +.rendered_html u{text-decoration:underline} +.rendered_html :link{text-decoration:underline} +.rendered_html :visited{text-decoration:underline} +.rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic} +.rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic} +.rendered_html h1:first-child{margin-top:.538em} +.rendered_html h2:first-child{margin-top:.636em} +.rendered_html h3:first-child{margin-top:.777em} +.rendered_html h4:first-child{margin-top:1em} +.rendered_html h5:first-child{margin-top:1em} +.rendered_html h6:first-child{margin-top:1em} +.rendered_html ul{list-style:disc;margin:0 2em} +.rendered_html ul ul{list-style:square;margin:0 2em} +.rendered_html ul ul ul{list-style:circle;margin:0 2em} +.rendered_html ol{list-style:decimal;margin:0 2em} +.rendered_html ol ol{list-style:upper-alpha;margin:0 2em} +.rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em} +.rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em} +.rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em} +.rendered_html *+ul{margin-top:1em} +.rendered_html *+ol{margin-top:1em} +.rendered_html hr{color:#000;background-color:#000} +.rendered_html pre{margin:1em 2em} +.rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0} +.rendered_html blockquote{margin:1em 2em} +.rendered_html table{margin-left:auto;margin-right:auto;border:1px solid #000;border-collapse:collapse} +.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid #000;border-collapse:collapse;margin:1em 2em} +.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px} +.rendered_html th{font-weight:bold} +.rendered_html *+table{margin-top:1em} +.rendered_html p{text-align:justify} +.rendered_html *+p{margin-top:1em} +.rendered_html img{display:block;margin-left:auto;margin-right:auto} +.rendered_html *+img{margin-top:1em} +div.text_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000} +a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden} +h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible} +div.cell.text_cell.rendered{padding:0} +.widget-area{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-area .widget-subarea{padding:.44em .4em .4em 1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top} +.widget-vlabel{padding-bottom:5px;text-align:center;vertical-align:text-bottom} +.widget-hreadout{padding-left:8px;padding-top:3px;text-align:left;vertical-align:text-top} +.widget-vreadout{padding-top:5px;text-align:center;vertical-align:text-top} +.slide-track{border:1px solid #ccc;background:#fff;border-radius:4px;} +.widget-hslider{padding-left:8px;padding-right:5px;overflow:visible;width:348px;height:5px;max-height:5px;margin-top:11px;margin-bottom:10px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hslider .ui-slider{border:0 !important;background:none !important;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-hslider .ui-slider .ui-slider-handle{width:14px !important;height:28px !important;margin-top:-8px !important} +.widget-vslider{padding-bottom:8px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}.widget-vslider .ui-slider{border:0 !important;background:none !important;margin-left:-4px;margin-top:5px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-vslider .ui-slider .ui-slider-handle{width:28px !important;height:14px !important;margin-left:-9px} +.widget-text{width:350px;margin:0 !important} +.widget-listbox{width:364px;margin-bottom:0} +.widget-numeric-text{width:150px;margin:0 !important} +.widget-progress{width:363px}.widget-progress .bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none} +.widget-combo-btn{min-width:138px;} +.widget-box{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-hbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +.widget-hbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;height:30px} +.widget-vbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +.widget-vbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;width:30px} +.widget-modal{overflow:hidden;position:absolute !important;top:0;left:0;margin-left:0 !important} +.widget-modal-body{max-height:none !important} +.widget-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-radio-box{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:4px} +.docked-widget-modal{overflow:hidden;position:relative !important;top:0 !important;left:0 !important;margin-left:0 !important} diff --git a/docs/source/_static/nbviewer.min.css b/docs/source/_static/nbviewer.min.css deleted file mode 100644 index 9fe226f25bd..00000000000 --- a/docs/source/_static/nbviewer.min.css +++ /dev/null @@ -1,976 +0,0 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -#map_canvas img,.google-maps img{max-width:none;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;} -label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000000;background-color:#ffffff;} -a{color:#0088cc;text-decoration:none;} -a:hover{color:#005580;text-decoration:underline;} -.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} -.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} -[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -p{margin:0 0 10px;} -.lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px;} -small{font-size:85%;} -strong{font-weight:bold;} -em{font-style:italic;} -cite{font-style:normal;} -.muted{color:#999999;} -a.muted:hover{color:#808080;} -.text-warning{color:#c09853;} -a.text-warning:hover{color:#a47e3c;} -.text-error{color:#b94a48;} -a.text-error:hover{color:#953b39;} -.text-info{color:#3a87ad;} -a.text-info:hover{color:#2d6987;} -.text-success{color:#468847;} -a.text-success:hover{color:#356635;} -h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} -h1,h2,h3{line-height:40px;} -h1{font-size:35.75px;} -h2{font-size:29.25px;} -h3{font-size:22.75px;} -h4{font-size:16.25px;} -h5{font-size:13px;} -h6{font-size:11.049999999999999px;} -h1 small{font-size:22.75px;} -h2 small{font-size:16.25px;} -h3 small{font-size:13px;} -h4 small{font-size:13px;} -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {color: #000000;} -.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} -ul,ol{padding:0;margin:0 0 10px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -li{line-height:20px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;padding-left:5px;padding-right:5px;} -dl{margin-bottom:20px;} -dt,dd{line-height:20px;} -dt{font-weight:bold;} -dd{margin-left:10px;} -.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:180px;} -hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;} -blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -blockquote.pull-right small:before{content:'';} -blockquote.pull-right small:after{content:'\00A0 \2014';} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} -form{margin:0 0 20px;} -fieldset{padding:0;margin:0;border:0;} -legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} -label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px;} -input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} -label{display:block;margin-bottom:5px;} -select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;} -input,textarea,.uneditable-input{width:206px;} -textarea{height:auto;} -textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);} -input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;} -input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} -select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} -select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} -select[multiple],select[size]{height:auto;} -select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} -.uneditable-input{overflow:hidden;white-space:nowrap;} -.uneditable-textarea{width:auto;height:auto;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -.radio,.checkbox{min-height:20px;padding-left:20px;} -.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;} -.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} -.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} -.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} -.input-mini{width:60px;} -.input-small{width:90px;} -.input-medium{width:150px;} -.input-large{width:210px;} -.input-xlarge{width:270px;} -.input-xxlarge{width:530px;} -input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} -.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12, textarea.span12, .uneditable-input.span12{width:926px;} -input.span11, textarea.span11, .uneditable-input.span11{width:846px;} -input.span10, textarea.span10, .uneditable-input.span10{width:766px;} -input.span9, textarea.span9, .uneditable-input.span9{width:686px;} -input.span8, textarea.span8, .uneditable-input.span8{width:606px;} -input.span7, textarea.span7, .uneditable-input.span7{width:526px;} -input.span6, textarea.span6, .uneditable-input.span6{width:446px;} -input.span5, textarea.span5, .uneditable-input.span5{width:366px;} -input.span4, textarea.span4, .uneditable-input.span4{width:286px;} -input.span3, textarea.span3, .uneditable-input.span3{width:206px;} -input.span2, textarea.span2, .uneditable-input.span2{width:126px;} -input.span1, textarea.span1, .uneditable-input.span1{width:46px;} -.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;} -.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;} -input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} -input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} -.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.help-block,.help-inline{color:#262626;} -.help-block{display:block;margin-bottom:10px;} -.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} -.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:13px;} -.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} -.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} -.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} -.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} -.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;} -.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.input-prepend.input-append .btn-group:first-child{margin-left:0;} -input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} -.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} -.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} -.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} -.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} -.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} -.control-group{margin-bottom:10px;} -legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} -.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} -.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} -.form-horizontal .help-block{margin-bottom:0;} -.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;} -.form-horizontal .form-actions{padding-left:180px;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table .table{background-color:#ffffff;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} -.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;} -.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;} -.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} -.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;} -.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;} -table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;} -.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;} -.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;} -.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;} -.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;} -.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;} -.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;} -.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;} -.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;} -.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;} -.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;} -.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;} -.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;} -.table tbody tr.success td{background-color:#dff0d8;} -.table tbody tr.error td{background-color:#f2dede;} -.table tbody tr.warning td{background-color:#fcf8e3;} -.table tbody tr.info td{background-color:#d9edf7;} -.table-hover tbody tr.success:hover td{background-color:#d0e9c6;} -.table-hover tbody tr.error:hover td{background-color:#ebcccc;} -.table-hover tbody tr.warning:hover td{background-color:#faf2cc;} -.table-hover tbody tr.info:hover td{background-color:#c4e3f3;} -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} -.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");} -.icon-glass{background-position:0 0;} -.icon-music{background-position:-24px 0;} -.icon-search{background-position:-48px 0;} -.icon-envelope{background-position:-72px 0;} -.icon-heart{background-position:-96px 0;} -.icon-star{background-position:-120px 0;} -.icon-star-empty{background-position:-144px 0;} -.icon-user{background-position:-168px 0;} -.icon-film{background-position:-192px 0;} -.icon-th-large{background-position:-216px 0;} -.icon-th{background-position:-240px 0;} -.icon-th-list{background-position:-264px 0;} -.icon-ok{background-position:-288px 0;} -.icon-remove{background-position:-312px 0;} -.icon-zoom-in{background-position:-336px 0;} -.icon-zoom-out{background-position:-360px 0;} -.icon-off{background-position:-384px 0;} -.icon-signal{background-position:-408px 0;} -.icon-cog{background-position:-432px 0;} -.icon-trash{background-position:-456px 0;} -.icon-home{background-position:0 -24px;} -.icon-file{background-position:-24px -24px;} -.icon-time{background-position:-48px -24px;} -.icon-road{background-position:-72px -24px;} -.icon-download-alt{background-position:-96px -24px;} -.icon-download{background-position:-120px -24px;} -.icon-upload{background-position:-144px -24px;} -.icon-inbox{background-position:-168px -24px;} -.icon-play-circle{background-position:-192px -24px;} -.icon-repeat{background-position:-216px -24px;} -.icon-refresh{background-position:-240px -24px;} -.icon-list-alt{background-position:-264px -24px;} -.icon-lock{background-position:-287px -24px;} -.icon-flag{background-position:-312px -24px;} -.icon-headphones{background-position:-336px -24px;} -.icon-volume-off{background-position:-360px -24px;} -.icon-volume-down{background-position:-384px -24px;} -.icon-volume-up{background-position:-408px -24px;} -.icon-qrcode{background-position:-432px -24px;} -.icon-barcode{background-position:-456px -24px;} -.icon-tag{background-position:0 -48px;} -.icon-tags{background-position:-25px -48px;} -.icon-book{background-position:-48px -48px;} -.icon-bookmark{background-position:-72px -48px;} -.icon-print{background-position:-96px -48px;} -.icon-camera{background-position:-120px -48px;} -.icon-font{background-position:-144px -48px;} -.icon-bold{background-position:-167px -48px;} -.icon-italic{background-position:-192px -48px;} -.icon-text-height{background-position:-216px -48px;} -.icon-text-width{background-position:-240px -48px;} -.icon-align-left{background-position:-264px -48px;} -.icon-align-center{background-position:-288px -48px;} -.icon-align-right{background-position:-312px -48px;} -.icon-align-justify{background-position:-336px -48px;} -.icon-list{background-position:-360px -48px;} -.icon-indent-left{background-position:-384px -48px;} -.icon-indent-right{background-position:-408px -48px;} -.icon-facetime-video{background-position:-432px -48px;} -.icon-picture{background-position:-456px -48px;} -.icon-pencil{background-position:0 -72px;} -.icon-map-marker{background-position:-24px -72px;} -.icon-adjust{background-position:-48px -72px;} -.icon-tint{background-position:-72px -72px;} -.icon-edit{background-position:-96px -72px;} -.icon-share{background-position:-120px -72px;} -.icon-check{background-position:-144px -72px;} -.icon-move{background-position:-168px -72px;} -.icon-step-backward{background-position:-192px -72px;} -.icon-fast-backward{background-position:-216px -72px;} -.icon-backward{background-position:-240px -72px;} -.icon-play{background-position:-264px -72px;} -.icon-pause{background-position:-288px -72px;} -.icon-stop{background-position:-312px -72px;} -.icon-forward{background-position:-336px -72px;} -.icon-fast-forward{background-position:-360px -72px;} -.icon-step-forward{background-position:-384px -72px;} -.icon-eject{background-position:-408px -72px;} -.icon-chevron-left{background-position:-432px -72px;} -.icon-chevron-right{background-position:-456px -72px;} -.icon-plus-sign{background-position:0 -96px;} -.icon-minus-sign{background-position:-24px -96px;} -.icon-remove-sign{background-position:-48px -96px;} -.icon-ok-sign{background-position:-72px -96px;} -.icon-question-sign{background-position:-96px -96px;} -.icon-info-sign{background-position:-120px -96px;} -.icon-screenshot{background-position:-144px -96px;} -.icon-remove-circle{background-position:-168px -96px;} -.icon-ok-circle{background-position:-192px -96px;} -.icon-ban-circle{background-position:-216px -96px;} -.icon-arrow-left{background-position:-240px -96px;} -.icon-arrow-right{background-position:-264px -96px;} -.icon-arrow-up{background-position:-289px -96px;} -.icon-arrow-down{background-position:-312px -96px;} -.icon-share-alt{background-position:-336px -96px;} -.icon-resize-full{background-position:-360px -96px;} -.icon-resize-small{background-position:-384px -96px;} -.icon-plus{background-position:-408px -96px;} -.icon-minus{background-position:-433px -96px;} -.icon-asterisk{background-position:-456px -96px;} -.icon-exclamation-sign{background-position:0 -120px;} -.icon-gift{background-position:-24px -120px;} -.icon-leaf{background-position:-48px -120px;} -.icon-fire{background-position:-72px -120px;} -.icon-eye-open{background-position:-96px -120px;} -.icon-eye-close{background-position:-120px -120px;} -.icon-warning-sign{background-position:-144px -120px;} -.icon-plane{background-position:-168px -120px;} -.icon-calendar{background-position:-192px -120px;} -.icon-random{background-position:-216px -120px;width:16px;} -.icon-comment{background-position:-240px -120px;} -.icon-magnet{background-position:-264px -120px;} -.icon-chevron-up{background-position:-288px -120px;} -.icon-chevron-down{background-position:-313px -119px;} -.icon-retweet{background-position:-336px -120px;} -.icon-shopping-cart{background-position:-360px -120px;} -.icon-folder-close{background-position:-384px -120px;} -.icon-folder-open{background-position:-408px -120px;width:16px;} -.icon-resize-vertical{background-position:-432px -119px;} -.icon-resize-horizontal{background-position:-456px -118px;} -.icon-hdd{background-position:0 -144px;} -.icon-bullhorn{background-position:-24px -144px;} -.icon-bell{background-position:-48px -144px;} -.icon-certificate{background-position:-72px -144px;} -.icon-thumbs-up{background-position:-96px -144px;} -.icon-thumbs-down{background-position:-120px -144px;} -.icon-hand-right{background-position:-144px -144px;} -.icon-hand-left{background-position:-168px -144px;} -.icon-hand-up{background-position:-192px -144px;} -.icon-hand-down{background-position:-216px -144px;} -.icon-circle-arrow-right{background-position:-240px -144px;} -.icon-circle-arrow-left{background-position:-264px -144px;} -.icon-circle-arrow-up{background-position:-288px -144px;} -.icon-circle-arrow-down{background-position:-312px -144px;} -.icon-globe{background-position:-336px -144px;} -.icon-wrench{background-position:-360px -144px;} -.icon-tasks{background-position:-384px -144px;} -.icon-filter{background-position:-408px -144px;} -.icon-briefcase{background-position:-432px -144px;} -.icon-fullscreen{background-position:-456px -144px;} -.dropup,.dropdown{position:relative;} -.dropdown-toggle{*margin-bottom:-3px;} -.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} -.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} -.dropdown .caret{margin-top:8px;margin-left:2px;} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} -.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} -.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} -.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} -.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;} -.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;} -.open{*z-index:1000;}.open>.dropdown-menu{display:block;} -.pull-right>.dropdown-menu{right:0;left:auto;} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} -.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} -.dropdown-submenu{position:relative;} -.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} -.dropdown-submenu:hover>.dropdown-menu{display:block;} -.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;} -.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} -.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} -.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} -.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} -.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} -.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} -.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} -.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} -button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} -.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:first-child{*margin-left:0;} -.btn:hover{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} -.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} -.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-large{padding:11px 19px;font-size:16.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;} -.btn-small{padding:2px 10px;font-size:11.049999999999999px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;} -.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;} -.btn-mini{padding:0 6px;font-size:9.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.btn-block+.btn-block{margin-top:5px;} -input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} -.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} -.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);} -.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;} -.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} -.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} -button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} -button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} -button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} -.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent;} -.btn-link[disabled]:hover{color:#333333;text-decoration:none;} -.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} -.btn-group+.btn-group{margin-left:5px;} -.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;} -.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group>.btn+.btn{margin-left:-1px;} -.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px;} -.btn-group>.btn-mini{font-size:9.75px;} -.btn-group>.btn-small{font-size:11.049999999999999px;} -.btn-group>.btn-large{font-size:16.25px;} -.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} -.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} -.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} -.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} -.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;} -.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} -.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} -.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} -.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} -.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} -.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;} -.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} -.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} -.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} -.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} -.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} -.btn .caret{margin-top:8px;margin-left:0;} -.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;} -.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} -.dropup .btn-large .caret{border-bottom-width:5px;} -.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} -.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;} -.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} -.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} -.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} -.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.alert,.alert h4{color:#c09853;} -.alert h4{margin:0;} -.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} -.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} -.alert-success h4{color:#468847;} -.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} -.alert-danger h4,.alert-error h4{color:#b94a48;} -.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} -.alert-info h4{color:#3a87ad;} -.alert-block{padding-top:14px;padding-bottom:14px;} -.alert-block>p,.alert-block>ul{margin-bottom:0;} -.alert-block p+p{margin-top:5px;} -.nav{margin-left:0;margin-bottom:20px;list-style:none;} -.nav>li>a{display:block;} -.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} -.nav>li>a>img{max-width:none;} -.nav>.pull-right{float:right;} -.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} -.nav li+.nav-header{margin-top:9px;} -.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} -.nav-list>li>a{padding:3px 15px;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} -.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs>li,.nav-pills>li{float:left;} -.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} -.nav-tabs{border-bottom:1px solid #ddd;} -.nav-tabs>li{margin-bottom:-1px;} -.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} -.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} -.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;} -.nav-stacked>li{float:none;} -.nav-stacked>li>a{margin-right:0;} -.nav-tabs.nav-stacked{border-bottom:0;} -.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} -.nav-pills.nav-stacked>li>a{margin-bottom:3px;} -.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} -.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;} -.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;} -.nav-tabs .dropdown-toggle .caret{margin-top:8px;} -.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} -.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.nav>.dropdown.active>a:hover{cursor:pointer;} -.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} -.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} -.tabs-stacked .open>a:hover{border-color:#999999;} -.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tab-content{overflow:auto;} -.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} -.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} -.tab-content>.active,.pill-content>.active{display:block;} -.tabs-below>.nav-tabs{border-top:1px solid #ddd;} -.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} -.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} -.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;} -.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} -.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} -.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} -.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} -.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} -.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} -.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} -.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} -.nav>.disabled>a{color:#999999;} -.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;} -.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar .container{width:auto;} -.nav-collapse.collapse{height:auto;overflow:visible;} -.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover{text-decoration:none;} -.navbar-text{margin-bottom:0;line-height:40px;color:#777777;} -.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;} -.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;} -.navbar .btn,.navbar .btn-group{margin-top:5px;} -.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;} -.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} -.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} -.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} -.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} -.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} -.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} -.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.navbar-fixed-top{top:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);} -.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);} -.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} -.navbar .nav.pull-right{float:right;margin-right:0;} -.navbar .nav>li{float:left;} -.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;} -.navbar .nav .dropdown-toggle .caret{margin-top:8px;} -.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} -.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);} -.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;} -.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;} -.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);} -.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} -.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} -.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} -.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555555;border-bottom-color:#555555;} -.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} -.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} -.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} -.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} -.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} -.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} -.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;} -.navbar-inverse .brand{color:#999999;} -.navbar-inverse .navbar-text{color:#999999;} -.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} -.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} -.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} -.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} -.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} -.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;} -.breadcrumb>.active{color:#999999;} -.pagination{margin:20px 0;} -.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} -.pagination ul>li{display:inline;} -.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} -.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} -.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} -.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;} -.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.pagination-centered{text-align:center;} -.pagination-right{text-align:right;} -.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px;} -.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} -.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} -.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;} -.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;} -.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px;} -.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px;} -.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager li{display:inline;} -.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.pager li>a:hover{text-decoration:none;background-color:#f5f5f5;} -.pager .next>a,.pager .next>span{float:right;} -.pager .previous>a,.pager .previous>span{float:left;} -.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;} -.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} -.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} -.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} -.modal.fade.in{top:10%;} -.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} -.modal-header h3{margin:0;line-height:30px;} -.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;} -.modal-form{margin-bottom:0;} -.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} -.modal-footer .btn-group .btn+.btn{margin-left:-1px;} -.modal-footer .btn-block+.btn-block{margin-left:0;} -.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} -.tooltip.top{margin-top:-3px;} -.tooltip.right{margin-left:3px;} -.tooltip.bottom{margin-top:3px;} -.tooltip.left{margin-left:-3px;} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} -.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} -.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} -.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} -.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} -.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;} -.popover.right{margin-left:10px;} -.popover.bottom{margin-top:10px;} -.popover.left{margin-left:-10px;} -.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} -.popover-content{padding:9px 14px;} -.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;} -.popover .arrow{border-width:11px;} -.popover .arrow:after{border-width:10px;content:"";} -.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;} -.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;} -.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;} -.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;} -.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.row-fluid .thumbnails{margin-left:0;} -.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} -.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} -a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} -.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} -.thumbnail .caption{padding:9px;color:#555555;} -.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;} -.media,.media .media{margin-top:15px;} -.media:first-child{margin-top:0;} -.media-object{display:block;} -.media-heading{margin:0 0 5px;} -.media .pull-left{margin-right:10px;} -.media .pull-right{margin-left:10px;} -.media-list{margin-left:0;list-style:none;} -.label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -.label:empty,.badge:empty{display:none;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -.btn .label,.btn .badge{position:relative;top:-1px;} -.btn-mini .label,.btn-mini .badge{top:0;} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} -.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);} -.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} -.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} -.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} -.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} -.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} -.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} -.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.accordion{margin-bottom:20px;} -.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.accordion-heading{border-bottom:0;} -.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} -.accordion-toggle{cursor:pointer;} -.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} -.carousel{position:relative;margin-bottom:20px;line-height:1;} -.carousel-inner{overflow:hidden;width:100%;position:relative;} -.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} -.carousel-inner>.item>img{display:block;line-height:1;} -.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;} -.carousel-inner>.active{left:0;} -.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;} -.carousel-inner>.next{left:100%;} -.carousel-inner>.prev{left:-100%;} -.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;} -.carousel-inner>.active.left{left:-100%;} -.carousel-inner>.active.right{left:100%;} -.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} -.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} -.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} -.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} -.carousel-caption h4{margin:0 0 5px;} -.carousel-caption p{margin-bottom:0;} -.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} -.hero-unit li{line-height:30px;} -.pull-right{float:right;} -.pull-left{float:left;} -.hide{display:none;} -.show{display:block;} -.invisible{visibility:hidden;} -.affix{position:fixed;} -.corner-all{border-radius:4px;} -.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;} -.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;} -.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;} -.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;} -.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;} -.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;} -.box-flex1,.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;} -.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;} -.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;} -.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;} -.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;} -.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;} -.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;} -.corner-all{border-radius:4px;} -body{background-color:#ffffff;} -body.notebook_app{overflow:hidden;} -blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777;} -span#save_widget{padding:5px;margin:0px 0px 0px 300px;display:inline-block;} -span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;} -.ui-menubar-item .ui-button .ui-button-text{padding:0.4em 1.0em;font-size:100%;} -.ui-menu{-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;} -.ui-menu .ui-menu-item a{border:1px solid transparent;padding:2px 1.6em;} -.ui-menu .ui-menu-item a.ui-state-focus{margin:0;} -.ui-menu hr{margin:0.3em 0;} -#menubar_container{position:relative;} -#notification_area{position:absolute;right:0px;top:0px;height:25px;padding:3px 0px;padding-right:3px;z-index:10;} -.notification_widget{float:right;right:0px;top:1px;height:25px;padding:3px 6px;z-index:10;} -.toolbar{padding:3px 15px;border-bottom:1px #ababab solid;}.toolbar button{margin-top:2px;margin-bottom:2px;} -.toolbar select,.toolbar label{height:19px;vertical-align:middle;margin-right:2px;margin-bottom:0;display:inline;font-size:92%;margin-left:0.3em;margin-right:0.3em;padding:0px;} -.toolbar select{width:auto;} -#ipython-main-app{width:100%;position:relative;font-size:110%;} -span#quick_help_area{position:static;padding:5px 0px;margin:0px 0px 0px 0px;} -.help_string{float:right;width:170px;padding:0px 5px;text-align:left;font-size:85%;} -.help_string_label{float:right;font-size:85%;} -div#notebook_panel{margin:0px 0px 0px 0px;padding:0px;} -div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:5px 5px 15px 5px;margin:0px;} -div#pager_splitter{height:8px;} -#pager_container{position:relative;} -div#pager{padding:15px;overflow:auto;display:none;} -div.ui-widget-content{border:1px solid #ababab;outline:none;} -.cell{border:1px solid transparent;}.cell.selected{border-radius:4px;border:thin #ababab solid;} -div.cell{width:100%;padding:5px 5px 5px 0px;margin:2px 0px 2px 0px;outline:none;} -div.prompt{width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231;} -div.input{page-break-inside:avoid;} -div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;} -div.input_area>div.highlight>pre{margin: 0px;background-color:#f7f7f7;border: 0px;-webkit-box-shadow: 0px 0px 0px;padding: 0px;} -.input_area{padding: 0.4em;} -div.input_prompt{color:navy;border-top:1px solid transparent;} -div.output_wrapper{margin-top:5px;margin-left:5px;width:100%;position:relative;} -div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);} -div.output_collapsed{margin-right:5px;} -div.out_prompt_overlay{height:100%;padding:0px;position:absolute;border-radius:4px;} -div.out_prompt_overlay:hover{box-shadow:inset 0 0 1px #000;background:rgba(240, 240, 240, 0.5);} -div.output_prompt{color:darkred;margin:0 5px 0 -5px;} -div.output_area{padding:0px;page-break-inside:avoid;} -div.output_area pre{font-family:monospace;margin:.2em;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:inherit} -div.output_subarea{padding:0.44em 0.4em 0.4em 1px;} -div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231;} -div.output_stream{padding-top:0.0em;padding-bottom:0.0em;} -div.output_stderr{background:#fdd;margin-right:.6em;} -div.output_stderr pre{padding-right:0em;} -div.output_area pre {-webkit-box-shadow: 0px 0px 0px} -div.output_latex{text-align:left;} -div.text_cell{padding:5px 5px 5px 5px;} -div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;} -div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;} -.CodeMirror{line-height:1.231;} -.CodeMirror-scroll{height:auto;overflow-y:hidden;overflow-x:auto;} -.ansiblack{color:#000000;} -.ansired{color:darkred;} -.ansigreen{color:darkgreen;} -.ansiyellow{color:brown;} -.ansiblue{color:darkblue;} -.ansipurple{color:darkviolet;} -.ansicyan{color:steelblue;} -.ansigrey{color:grey;} -.ansibold{font-weight:bold;} -.completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;} -.completions select{background:white;outline:none;border:none;padding:0px;margin:0px;overflow:auto;font-family:monospace;} -option.context{background-color:#DEF7FF;} -option.introspection{background-color:#EBF4EB;} -.completions p b{font-weight:bold;} -.completions p{background:#DDF;border-bottom:black solid 1px;padding:1px;font-family:monospace;} -pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:0.4em;padding-left:2em;} -p.dialog{padding:0.2em;} -.shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace;} -pre,code,kbd,samp{white-space:pre-wrap;} -#fonttest{font-family:monospace;} -.js-error{color:darkred;} -a{text-decoration:underline;} -p{margin-bottom:0;} -@media print{body{overflow:visible !important;} div#notebook{overflow:visible !important;} .ui-widget-content{border:0px;} #save_widget{margin:0px !important;} #header,#pager,#pager_splitter,#menubar,#toolbar{display:none !important;} .cell{border:none !important;} .toolbar{display:none;}}.rendered_html{color:black;}.rendered_html em{font-style:italic;} -.rendered_html strong{font-weight:bold;} -.rendered_html u{text-decoration:underline;} -.rendered_html :link{text-decoration:underline;} -.rendered_html :visited{text-decoration:underline;} -.rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;} -.rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;} -.rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;} -.rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;} -.rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;} -.rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;} -.rendered_html ul{list-style:disc;margin:1em 2em;} -.rendered_html ul ul{list-style:square;margin:0em 2em;} -.rendered_html ul ul ul{list-style:circle;margin:0em 2em;} -.rendered_html ol{list-style:decimal;margin:1em 2em;} -.rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;} -.rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;} -.rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;} -.rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;} -.rendered_html hr{color:black;background-color:black;} -.rendered_html pre{margin:1em 2em;} -.rendered_html blockquote{margin:1em 2em;} -.rendered_html table,.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;} -.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;} -.rendered_html th{font-weight:bold;} -.rendered_html p{text-align:justify;} -.rendered_html p+p{margin-top:1em;} -.corner-all{border-radius:4px;} -@-moz-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-webkit-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-moz-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}@-webkit-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;} -.smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px;} -.tooltipbuttons{position:absolute;padding-right:15px;top:0px;right:0px;} -.tooltiptext{padding-right:30px;} -.ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;border-radius:4px;position:absolute;}.ipython_tooltip a{float:right;} -.pretooltiparrow{left:0px;margin:0px;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute;} -.pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);} diff --git a/docs/source/about.rst b/docs/source/about.rst new file mode 100644 index 00000000000..2ba79f54149 --- /dev/null +++ b/docs/source/about.rst @@ -0,0 +1,57 @@ +.. currentmodule:: statsmodels + +***************** +About Statsmodels +***************** + +Background +---------- + +The ``models`` module of ``scipy.stats`` was originally written by Jonathan +Taylor. For some time it was part of scipy but was later removed. During +the Google Summer of Code 2009, ``statsmodels`` was corrected, tested, +improved and released as a new package. Since then, the statsmodels +development team has continued to add new models, plotting tools, and statistical methods. + +Testing +------- + +Most results have been verified with at least one other statistical package: +R, Stata or SAS. The guiding principal for the initial rewrite and for +continued development is that all numbers have to be verified. Some +statistical methods are tested with Monte Carlo studies. While we strive to +follow this test driven approach, there is no guarantee that the code is +bug-free and always works. Some auxiliary function are still insufficiently +tested, some edge cases might not be correctly taken into account, and the +possibility of numerical problems is inherent to many of the statistical +models. We especially appreciate any help and reports for these kind of +problems so we can keep improving the existing models. + +Code Stability +~~~~~~~~~~~~~~ + +The existing models are mostly settled in their user interface and we do not +expect many large changes going forward. For the existing code, although +there is no guarantee yet on API stability, we have long deprecation periods +in all but very special cases, and we try to keep changes that require +adjustments by existing users to a minimal level. For newer models we might +adjust the user interface as we gain more experience and obtain feedback. +These changes will always be noted in our release notes available in the +documentation. + +Financial Support +----------------- + +We are grateful for the financial support that we obtained for the +development of statsmodels: + + Google `www.google.com `_ : Google Summer of Code + (GSOC) 2009-2013. + + AQR `www.aqr.com `_ : financial sponsor for the work on + Vector Autoregressive Models (VAR) by Wes McKinney + +We would also like to thank our hosting providers, `github +`_ for the public code repository, `sourceforge +`_ for hosting our documentation and `python.org +`_ for making our downloads available on PyPi. diff --git a/docs/source/anova.rst b/docs/source/anova.rst index d6172470ed1..27f591332a3 100644 --- a/docs/source/anova.rst +++ b/docs/source/anova.rst @@ -31,7 +31,7 @@ A more detailed example can be found here: .. toctree:: :maxdepth: 1 - examples/generated/example_interactions + examples/notebooks/generated/interactions_anova Module Reference ---------------- diff --git a/docs/source/conf.py b/docs/source/conf.py index 1ce077d3dec..c40a065e7e9 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -32,8 +32,8 @@ 'sphinx.ext.inheritance_diagram', 'matplotlib.sphinxext.plot_directive', 'matplotlib.sphinxext.only_directives', - 'ipython_console_highlighting', - 'ipython_directive', + 'IPython.sphinxext.ipython_console_highlighting', + 'IPython.sphinxext.ipython_directive', 'numpy_ext.numpydoc', 'github' # for GitHub links ] @@ -75,8 +75,8 @@ # |version| and |release|, also used in various other places throughout the # built documents. # -from statsmodels.version import version, full_version -release = version +from statsmodels.version import short_version, full_version +release = short_version # The full version, including dev tag. version = full_version @@ -311,7 +311,7 @@ intersphinx_mapping = { 'numpy' : ('http://docs.scipy.org/doc/numpy/', None), 'python' : ('http://docs.python.org/3.2', None), - 'pydagogue' : ('http://matthew-brett.github.com/pydagogue/', None), + 'pydagogue' : ('http://matthew-brett.github.io/pydagogue/', None), 'patsy' : ('http://patsy.readthedocs.org/en/latest/', None), 'pandas' : ('http://pandas.pydata.org/pandas-docs/dev/', None), } @@ -321,3 +321,8 @@ # ghissue config github_project_url = "https://github.com/statsmodels/statsmodels" + +# for the examples landing page +import json +example_context = json.load(open('examples/landing.json')) +html_context = {'examples': example_context } diff --git a/docs/source/contrasts.rst b/docs/source/contrasts.rst index 801afc88db6..5f5777c9fed 100644 --- a/docs/source/contrasts.rst +++ b/docs/source/contrasts.rst @@ -28,12 +28,10 @@ To have a look at the contrast matrices in Patsy, we will use data from UCLA ATS contr = -1./nlevels * np.ones((nlevels, nlevels-1)) contr[1:][np.diag_indices(nlevels-1)] = (nlevels-1.)/nlevels return contr - def code_with_intercept(self, levels): contrast = np.column_stack((np.ones(len(levels)), self._simple_contrast(levels))) return ContrastMatrix(contrast, _name_levels("Simp.", levels)) - def code_without_intercept(self, levels): contrast = self._simple_contrast(levels) return ContrastMatrix(contrast, _name_levels("Simp.", levels[:-1])) diff --git a/docs/source/datasets/dataset_proposal.rst b/docs/source/datasets/dataset_proposal.rst index d2a6044149e..00a7920d4f4 100644 --- a/docs/source/datasets/dataset_proposal.rst +++ b/docs/source/datasets/dataset_proposal.rst @@ -151,4 +151,4 @@ Although the datasets package emerged from the learn package, we try to keep it independant from everything else, that is once we agree on the remaining problems and where the package should go, it can easily be put elsewhere without too much trouble. If there is interest in re-using the datasets package, -please contact the developers on the `mailing list `_. +please contact the developers on the `mailing list `_. diff --git a/docs/source/datasets/generated/anes96.rst b/docs/source/datasets/generated/anes96.rst deleted file mode 100644 index 074047d9a4b..00000000000 --- a/docs/source/datasets/generated/anes96.rst +++ /dev/null @@ -1,92 +0,0 @@ -American National Election Survey 1996 -====================================== - -Description ------------ - -This data is a subset of the American National Election Studies of 1996. - -Notes ------ - -Number of observations - 944 -Numner of variables - 10 - -Variables name definitions:: - - popul - Census place population in 1000s - TVnews - Number of times per week that respondent watches TV news. - PID - Party identification of respondent. - 0 - Strong Democrat - 1 - Weak Democrat - 2 - Independent-Democrat - 3 - Independent-Indpendent - 4 - Independent-Republican - 5 - Weak Republican - 6 - Strong Republican - age : Age of respondent. - educ - Education level of respondent - 1 - 1-8 grades - 2 - Some high school - 3 - High school graduate - 4 - Some college - 5 - College degree - 6 - Master's degree - 7 - PhD - income - Income of household - 1 - None or less than $2,999 - 2 - $3,000-$4,999 - 3 - $5,000-$6,999 - 4 - $7,000-$8,999 - 5 - $9,000-$9,999 - 6 - $10,000-$10,999 - 7 - $11,000-$11,999 - 8 - $12,000-$12,999 - 9 - $13,000-$13,999 - 10 - $14,000-$14.999 - 11 - $15,000-$16,999 - 12 - $17,000-$19,999 - 13 - $20,000-$21,999 - 14 - $22,000-$24,999 - 15 - $25,000-$29,999 - 16 - $30,000-$34,999 - 17 - $35,000-$39,999 - 18 - $40,000-$44,999 - 19 - $45,000-$49,999 - 20 - $50,000-$59,999 - 21 - $60,000-$74,999 - 22 - $75,000-89,999 - 23 - $90,000-$104,999 - 24 - $105,000 and over - vote - Expected vote - 0 - Clinton - 1 - Dole - The following 3 variables all take the values: - 1 - Extremely liberal - 2 - Liberal - 3 - Slightly liberal - 4 - Moderate - 5 - Slightly conservative - 6 - Conservative - 7 - Extremely Conservative - selfLR - Respondent's self-reported political leanings from "Left" - to "Right". - ClinLR - Respondents impression of Bill Clinton's political - leanings from "Left" to "Right". - DoleLR - Respondents impression of Bob Dole's political leanings - from "Left" to "Right". - logpopul - log(popul + .1) - - -Source ------- - -http://www.electionstudies.org/ - -The American National Election Studies. - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/cancer.rst b/docs/source/datasets/generated/cancer.rst deleted file mode 100644 index 40e1b2deb5e..00000000000 --- a/docs/source/datasets/generated/cancer.rst +++ /dev/null @@ -1,32 +0,0 @@ -Breast Cancer Data -================== - -Description ------------ - -The number of breast cancer observances in various counties - -Notes ------ - -Number of observations: 301 -Number of variables: 2 -Variable name definitions: - - cancer - The number of breast cancer observances - population - The population of the county - - - -Source ------- - -This is the breast cancer data used in Owen's empirical likelihood. It is taken from -Rice, J.A. Mathematical Statistics and Data Analysis. -http://www.thomsonedu.com/statistics/discipline_content/dataLibrary.html - - -Copyright ---------- - -??? diff --git a/docs/source/datasets/generated/ccard.rst b/docs/source/datasets/generated/ccard.rst deleted file mode 100644 index 4b13fd6de1f..00000000000 --- a/docs/source/datasets/generated/ccard.rst +++ /dev/null @@ -1,32 +0,0 @@ -Bill Greene's credit scoring data. -================================== - -Description ------------ - -More information on this data can be found on the -homepage for Greene's `Econometric Analysis`. See source. - - -Notes ------ - -Number of observations - 72 -Number of variables - 5 -Variable name definitions - See Source for more information on the variables. - - -Source ------- - -William Greene's `Econometric Analysis` - -More information can be found at the web site of the text: -http://pages.stern.nyu.edu/~wgreene/Text/econometricanalysis.htm - - -Copyright ---------- - -Used with express permission of the original author, who -retains all rights. diff --git a/docs/source/datasets/generated/committee.rst b/docs/source/datasets/generated/committee.rst deleted file mode 100644 index 6cb4719e31f..00000000000 --- a/docs/source/datasets/generated/committee.rst +++ /dev/null @@ -1,53 +0,0 @@ -First 100 days of the US House of Representatives 1995 -====================================================== - -Description ------------ - -The example in Gill, seeks to explain the number of bill -assignments in the first 100 days of the US' 104th House of Representatives. -The response variable is the number of bill assignments in the first 100 days -over 20 Committees. The explanatory variables in the example are the number of -assignments in the first 100 days of the 103rd House, the number of members on -the committee, the number of subcommittees, the log of the number of staff -assigned to the committee, a dummy variable indicating whether -the committee is a high prestige committee, and an interaction term between -the number of subcommittees and the log of the staff size. - -The data returned by load are not cleaned to represent the above example. - - -Notes ------ -Number of Observations - 20 - -Number of Variables - 6 - -Variable name definitions:: - - BILLS104 - Number of bill assignments in the first 100 days of the 104th - House of Representatives. - SIZE - Number of members on the committee. - SUBS - Number of subcommittees. - STAFF - Number of staff members assigned to the committee. - PRESTIGE - PRESTIGE == 1 is a high prestige committee. - BILLS103 - Number of bill assignments in the first 100 days of the 103rd - House of Representatives. - -Committee names are included as a variable in the data file though not -returned by load. - - -Source ------- - -Jeff Gill's `Generalized Linear Models: A Unifited Approach` - -http://jgill.wustl.edu/research/books.html - - -Copyright ---------- - -Used with express permission from the original author, -who retains all rights. diff --git a/docs/source/datasets/generated/copper.rst b/docs/source/datasets/generated/copper.rst deleted file mode 100644 index d37f6bcdba2..00000000000 --- a/docs/source/datasets/generated/copper.rst +++ /dev/null @@ -1,47 +0,0 @@ -World Copper Market 1951-1975 Dataset -===================================== - -Description ------------ - -This data describes the world copper market from 1951 through 1975. In an -example, in Gill, the outcome variable (of a 2 stage estimation) is the world -consumption of copper for the 25 years. The explanatory variables are the -world consumption of copper in 1000 metric tons, the constant dollar adjusted -price of copper, the price of a substitute, aluminum, an index of real per -capita income base 1970, an annual measure of manufacturer inventory change, -and a time trend. - - -Notes ------ - -Number of Observations - 25 - -Number of Variables - 6 - -Variable name definitions:: - - WORLDCONSUMPTION - World consumption of copper (in 1000 metric tons) - COPPERPRICE - Constant dollar adjusted price of copper - INCOMEINDEX - An index of real per capita income (base 1970) - ALUMPRICE - The price of aluminum - INVENTORYINDEX - A measure of annual manufacturer inventory trend - TIME - A time trend - -Years are included in the data file though not returned by load. - - -Source ------- - -Jeff Gill's `Generalized Linear Models: A Unified Approach` - -http://jgill.wustl.edu/research/books.html - - -Copyright ---------- - -Used with express permission from the original author, -who retains all rights. diff --git a/docs/source/datasets/generated/cpunish.rst b/docs/source/datasets/generated/cpunish.rst deleted file mode 100644 index f2df2ef5b92..00000000000 --- a/docs/source/datasets/generated/cpunish.rst +++ /dev/null @@ -1,51 +0,0 @@ -US Capital Punishment dataset. -============================== - -Description ------------ - -This data describes the number of times capital punishment is implemented -at the state level for the year 1997. The outcome variable is the number of -executions. There were executions in 17 states. -Included in the data are explanatory variables for median per capita income -in dollars, the percent of the population classified as living in poverty, -the percent of Black citizens in the population, the rate of violent -crimes per 100,000 residents for 1996, a dummy variable indicating -whether the state is in the South, and (an estimate of) the proportion -of the population with a college degree of some kind. - - -Notes ------ - -Number of Observations - 17 - -Number of Variables - 7 - -Variable name definitions:: - - EXECUTIONS - Executions in 1996 - INCOME - Median per capita income in 1996 dollars - PERPOVERTY - Percent of the population classified as living in poverty - PERBLACK - Percent of black citizens in the population - VC100k96 - Rate of violent crimes per 100,00 residents for 1996 - SOUTH - SOUTH == 1 indicates a state in the South - DEGREE - An esimate of the proportion of the state population with a - college degree of some kind - -State names are included in the data file, though not returned by load. - - -Source ------- - -Jeff Gill's `Generalized Linear Models: A Unified Approach` - -http://jgill.wustl.edu/research/books.html - - -Copyright ---------- - -Used with express permission from the original author, -who retains all rights. diff --git a/docs/source/datasets/generated/elnino.rst b/docs/source/datasets/generated/elnino.rst deleted file mode 100644 index 974044583c1..00000000000 --- a/docs/source/datasets/generated/elnino.rst +++ /dev/null @@ -1,39 +0,0 @@ -El Nino - Sea Surface Temperatures -================================== - -Description ------------ - -This data contains the averaged monthly sea surface -temperature in degrees Celcius of the Pacific Ocean, between 0-10 degrees South -and 90-80 degrees West, from 1950 to 2010. This dataset was obtained from -NOAA. - - -Notes ------ - -Number of Observations - 61 x 12 - -Number of Variables - 1 - -Variable name definitions:: - - TEMPERATURE - average sea surface temperature in degrees Celcius - (12 columns, one per month). - - - -Source ------- - -National Oceanic and Atmospheric Administration's National Weather Service - -ERSST.V3B dataset, Nino 1+2 -http://www.cpc.ncep.noaa.gov/data/indices/ - - -Copyright ---------- - -This data is in the public domain. diff --git a/docs/source/datasets/generated/fair.rst b/docs/source/datasets/generated/fair.rst deleted file mode 100644 index f29ebba3fcd..00000000000 --- a/docs/source/datasets/generated/fair.rst +++ /dev/null @@ -1,54 +0,0 @@ -Affairs dataset -=============== - -Description ------------ - -Extramarital affair data used to explain the allocation -of an individual's time among work, time spent with a spouse, and time -spent with a paramour. The data is used as an example of regression -with censored data. - -Notes ------ - -Number of observations: 6366 -Number of variables: 9 -Variable name definitions:: - - rate_marriage : How rate marriage, 1 = very poor, 2 = poor, 3 = fair, - 4 = good, 5 = very good - age : Age - yrs_married : No. years married. Interval approximations. See - original paper for detailed explanation. - children : No. children - religious : How relgious, 1 = not, 2 = mildly, 3 = fairly, - 4 = strongly - educ : Level of education, 9 = grade school, 12 = high school, - 14 = some college, 16 = college graduate, 17 = some - graduate school, 20 = advanced degree - occupation : 1 = student, 2 = farming, agriculture; semi-skilled, - or unskilled worker; 3 = white-colloar; 4 = teacher - counselor social worker, nurse; artist, writers; - technician, skilled worker, 5 = managerial, - administrative, business, 6 = professional with - advanced degree - occupation_husb : Husband's occupation. Same as occupation. - affairs : measure of time spent in extramarital affairs - -See the original paper for more details. - - -Source ------- - -Fair, Ray. 1978. "A Theory of Extramarital Affairs," `Journal of Political - Economy`, February, 45-61. - -The data is available at http://fairmodel.econ.yale.edu/rayfair/pdf/2011b.htm - - -Copyright ---------- - -Included with permission of the author. diff --git a/docs/source/datasets/generated/grunfeld.rst b/docs/source/datasets/generated/grunfeld.rst deleted file mode 100644 index a5607a8a733..00000000000 --- a/docs/source/datasets/generated/grunfeld.rst +++ /dev/null @@ -1,45 +0,0 @@ -Grunfeld (1950) Investment Data -=============================== - -Description ------------ - -Grunfeld (1950) Investment Data for 11 U.S. Firms. - -Notes ------ -Number of observations - 220 (20 years for 11 firms) - -Number of variables - 5 - -Variables name definitions:: - - invest - Gross investment in 1947 dollars - value - Market value as of Dec. 31 in 1947 dollars - capital - Stock of plant and equipment in 1947 dollars - firm - General Motors, US Steel, General Electric, Chrysler, - Atlantic Refining, IBM, Union Oil, Westinghouse, Goodyear, - Diamond Match, American Steel - year - 1935 - 1954 - -Note that raw_data has firm expanded to dummy variables, since it is a -string categorical variable. - - -Source ------- -This is the Grunfeld (1950) Investment Data. - -The source for the data was the original 11-firm data set from Grunfeld's Ph.D. -thesis recreated by Kleiber and Zeileis (2008) "The Grunfeld Data at 50". -The data can be found here. -http://statmath.wu-wien.ac.at/~zeileis/grunfeld/ - -For a note on the many versions of the Grunfeld data circulating see: -http://www.stanford.edu/~clint/bench/grunfeld.htm - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/heart.rst b/docs/source/datasets/generated/heart.rst deleted file mode 100644 index a0d5170ca87..00000000000 --- a/docs/source/datasets/generated/heart.rst +++ /dev/null @@ -1,34 +0,0 @@ -Transplant Survival Data -======================== - -Description ------------ - -This data contains the survival time after receiving a heart transplant, the age of the patient and whether or not the survival time was censored. - - -Notes ------ - -Number of Observations - 69 - -Number of Variables - 3 - -Variable name definitions:: - death - Days after surgery until death - age - age at the time of surgery - censored - indicates if an observation is censored. 1 is uncensored - - - - -Source ------- - Miller, R. (1976). Least squares regression with censored dara. Biometrica, 63 (3). 449-464. - - - -Copyright ---------- - -??? diff --git a/docs/source/datasets/generated/longley.rst b/docs/source/datasets/generated/longley.rst deleted file mode 100644 index 5475fd2ac21..00000000000 --- a/docs/source/datasets/generated/longley.rst +++ /dev/null @@ -1,46 +0,0 @@ -Longley dataset -=============== - -Description ------------ - -The Longley dataset contains various US macroeconomic -variables that are known to be highly collinear. It has been used to appraise -the accuracy of least squares routines. - -Notes ------ - -Number of Observations - 16 - -Number of Variables - 6 - -Variable name definitions:: - - TOTEMP - Total Employment - GNPDEFL - GNP deflator - GNP - GNP - UNEMP - Number of unemployed - ARMED - Size of armed forces - POP - Population - YEAR - Year (1947 - 1962) - - -Source ------- - -The classic 1967 Longley Data - -http://www.itl.nist.gov/div898/strd/lls/data/Longley.shtml - -:: - - Longley, J.W. (1967) "An Appraisal of Least Squares Programs for the - Electronic Comptuer from the Point of View of the User." Journal of - the American Statistical Association. 62.319, 819-41. - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/macrodata.rst b/docs/source/datasets/generated/macrodata.rst deleted file mode 100644 index eb629a28e9d..00000000000 --- a/docs/source/datasets/generated/macrodata.rst +++ /dev/null @@ -1,61 +0,0 @@ -United States Macroeconomic data -================================ - -Description ------------ - -US Macroeconomic Data for 1959Q1 - 2009Q3 - -Notes ------ - -Number of Observations - 203 - -Number of Variables - 14 - -Variable name definitions:: - - year - 1959q1 - 2009q3 - quarter - 1-4 - realgdp - Real gross domestic product (Bil. of chained 2005 US$, - seasonally adjusted annual rate) - realcons - Real personal consumption expenditures (Bil. of chained 2005 - US$, - seasonally adjusted annual rate) - realinv - Real gross private domestic investment (Bil. of chained 2005 - US$, seasonally adjusted annual rate) - realgovt - Real federal consumption expenditures & gross investment - (Bil. of chained 2005 US$, seasonally adjusted annual rate) - realdpi - Real private disposable income (Bil. of chained 2005 - US$, seasonally adjusted annual rate) - cpi - End of the quarter consumer price index for all urban - consumers: all items (1982-84 = 100, seasonally adjusted). - m1 - End of the quarter M1 nominal money stock (Seasonally adjusted) - tbilrate - Quarterly monthly average of the monthly 3-month treasury bill: - secondary market rate - unemp - Seasonally adjusted unemployment rate (%) - pop - End of the quarter total population: all ages incl. armed - forces over seas - infl - Inflation rate (ln(cpi_{t}/cpi_{t-1}) * 400) - realint - Real interest rate (tbilrate - infl) - - -Source ------- - -Compiled by Skipper Seabold. All data are from the Federal Reserve Bank of St. -Louis [1] except the unemployment rate which was taken from the National -Bureau of Labor Statistics [2]. :: - - [1] Data Source: FRED, Federal Reserve Economic Data, Federal Reserve Bank of - St. Louis; http://research.stlouisfed.org/fred2/; accessed December 15, - 2009. - - [2] Data Source: Bureau of Labor Statistics, U.S. Department of Labor; - http://www.bls.gov/data/; accessed December 15, 2009. - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/randhie.rst b/docs/source/datasets/generated/randhie.rst deleted file mode 100644 index 1f5d43fab1c..00000000000 --- a/docs/source/datasets/generated/randhie.rst +++ /dev/null @@ -1,52 +0,0 @@ -RAND Health Insurance Experiment Data -===================================== - -Description ------------ - - - -Notes ------ - -Number of observations - 20,190 -Number of variables - 10 -Variable name definitions:: - - mdvis - Number of outpatient visits to an MD - lncoins - ln(coinsurance + 1), 0 <= coninsurance <= 100 - idp - 1 if individual deductible plan, 0 otherwise - lpi - ln(max(1, annual participation incentive payment)) - fmde - 0 if idp = 1; ln(max(1, MDE/(0.01 coinsurance))) otherwise - physlm - 1 if the person has a physical limitation - disea - number of chronic diseases - hlthg - 1 if self-rated health is good - hlthf - 1 if self-rated health is fair - hlthp - 1 if self-rated health is poor - (Omitted category is excellent self-rated health) - - -Source ------- - -The data was collected by the RAND corporation as part of the Health -Insurance Experiment (HIE). - -http://www.rand.org/health/projects/hie/ - -This data was used in:: - - Cameron, A.C. amd Trivedi, P.K. 2005. `Microeconometrics: Methods - and Applications,` Cambridge: New York. - -And was obtained from: - -See randhie/src for the original data and description. The data included -here contains only a subset of the original data. The data varies slightly -compared to that reported in Cameron and Trivedi. - - -Copyright ---------- - -This is in the public domain. diff --git a/docs/source/datasets/generated/scotland.rst b/docs/source/datasets/generated/scotland.rst deleted file mode 100644 index ff718c37235..00000000000 --- a/docs/source/datasets/generated/scotland.rst +++ /dev/null @@ -1,58 +0,0 @@ -Taxation Powers Vote for the Scottish Parliamant 1997 -===================================================== - -Description ------------ - - -This data is based on the example in Gill and describes the proportion of -voters who voted Yes to grant the Scottish Parliament taxation powers. -The data are divided into 32 council districts. This example's explanatory -variables include the amount of council tax collected in pounds sterling as -of April 1997 per two adults before adjustments, the female percentage of -total claims for unemployment benefits as of January, 1998, the standardized -mortality rate (UK is 100), the percentage of labor force participation, -regional GDP, the percentage of children aged 5 to 15, and an interaction term -between female unemployment and the council tax. - -The original source files and variable information are included in -/scotland/src/ - - -Notes ------ - -Number of Observations - 32 (1 for each Scottish district) - -Number of Variables - 8 - -Variable name definitions:: - - YES - Proportion voting yes to granting taxation powers to the Scottish - parliament. - COUTAX - Amount of council tax collected in pounds steling as of April '97 - UNEMPF - Female percentage of total unemployment benefits claims as of - January 1998 - MOR - The standardized mortality rate (UK is 100) - ACT - Labor force participation (Short for active) - GDP - GDP per county - AGE - Percentage of children aged 5 to 15 in the county - COUTAX_FEMALEUNEMP - Interaction between COUTAX and UNEMPF - -Council district names are included in the data file, though are not returned -by load. - - -Source ------- - -Jeff Gill's `Generalized Linear Models: A Unified Approach` - -http://jgill.wustl.edu/research/books.html - - -Copyright ---------- - -Used with express permission from the original author, -who retains all rights. diff --git a/docs/source/datasets/generated/spector.rst b/docs/source/datasets/generated/spector.rst deleted file mode 100644 index ab14bd92fbe..00000000000 --- a/docs/source/datasets/generated/spector.rst +++ /dev/null @@ -1,39 +0,0 @@ -Spector and Mazzeo (1980) - Program Effectiveness Data -====================================================== - -Description ------------ - -Experimental data on the effectiveness of the personalized -system of instruction (PSI) program - -Notes ------ - -Number of Observations - 32 - -Number of Variables - 4 - -Variable name definitions:: - - Grade - binary variable indicating whether or not a student's grade - improved. 1 indicates an improvement. - TUCE - Test score on economics test - PSI - participation in program - GPA - Student's grade point average - - -Source ------- - -http://pages.stern.nyu.edu/~wgreene/Text/econometricanalysis.htm - -The raw data was downloaded from Bill Greene's Econometric Analysis web site, -though permission was obtained from the original researcher, Dr. Lee Spector, -Professor of Economics, Ball State University. - -Copyright ---------- - -Used with express permission of the original author, who -retains all rights. diff --git a/docs/source/datasets/generated/stackloss.rst b/docs/source/datasets/generated/stackloss.rst deleted file mode 100644 index 2d3e5ec60f8..00000000000 --- a/docs/source/datasets/generated/stackloss.rst +++ /dev/null @@ -1,37 +0,0 @@ -Stack loss data -=============== - -Description ------------ - -The stack loss plant data of Brownlee (1965) contains -21 days of measurements from a plant's oxidation of ammonia to nitric acid. -The nitric oxide pollutants are captured in an absorption tower. - -Notes ------ - -Number of Observations - 21 - -Number of Variables - 4 - -Variable name definitions:: - - STACKLOSS - 10 times the percentage of ammonia going into the plant that - escapes from the absoroption column - AIRFLOW - Rate of operation of the plant - WATERTEMP - Cooling water temperature in the absorption tower - ACIDCONC - Acid concentration of circulating acid minus 50 times 10. - - -Source ------- - -Brownlee, K. A. (1965), "Statistical Theory and Methodology in -Science and Engineering", 2nd edition, New York:Wiley. - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/star98.rst b/docs/source/datasets/generated/star98.rst deleted file mode 100644 index 133e05f1e4c..00000000000 --- a/docs/source/datasets/generated/star98.rst +++ /dev/null @@ -1,71 +0,0 @@ -Star98 Educational Dataset -========================== - -Description ------------ - - -This data is on the California education policy and outcomes (STAR program -results for 1998. The data measured standardized testing by the California -Department of Education that required evaluation of 2nd - 11th grade students -by the the Stanford 9 test on a variety of subjects. This dataset is at -the level of the unified school district and consists of 303 cases. The -binary response variable represents the number of 9th graders scoring -over the national median value on the mathematics exam. - -The data used in this example is only a subset of the original source. - - -Notes ------ - -Number of Observations - 303 (counties in California). - -Number of Variables - 13 and 8 interaction terms. - -Definition of variables names:: - - NABOVE - Total number of students above the national median for the math - section. - NBELOW - Total number of students below the national median for the math - section. - LOWINC - Percentage of low income students - PERASIAN - Percentage of Asian student - PERBLACK - Percentage of black students - PERHISP - Percentage of Hispanic students - PERMINTE - Percentage of minority teachers - AVYRSEXP - Sum of teachers' years in educational service divided by the - number of teachers. - AVSALK - Total salary budget including benefits divided by the number of - full-time teachers (in thousands) - PERSPENK - Per-pupil spending (in thousands) - PTRATIO - Pupil-teacher ratio. - PCTAF - Percentage of students taking UC/CSU prep courses - PCTCHRT - Percentage of charter schools - PCTYRRND - Percentage of year-round schools - - The below variables are interaction terms of the variables defined above. - - PERMINTE_AVYRSEXP - PEMINTE_AVSAL - AVYRSEXP_AVSAL - PERSPEN_PTRATIO - PERSPEN_PCTAF - PTRATIO_PCTAF - PERMINTE_AVTRSEXP_AVSAL - PERSPEN_PTRATIO_PCTAF - - -Source ------- - -Jeff Gill's `Generalized Linear Models: A Unified Approach` - -http://jgill.wustl.edu/research/books.html - - -Copyright ---------- - -Used with express permission from the original author, -who retains all rights. diff --git a/docs/source/datasets/generated/statecrime.rst b/docs/source/datasets/generated/statecrime.rst deleted file mode 100644 index 2dec0356ab5..00000000000 --- a/docs/source/datasets/generated/statecrime.rst +++ /dev/null @@ -1,56 +0,0 @@ -Statewide Crime Data 2009 -========================= - -Description ------------ - -State crime data 2009 - -Notes ------ - -Number of observations: 51 -Number of variables: 8 -Variable name definitions: - -state - All 50 states plus DC. -violent - Rate of violent crimes / 100,000 population. Includes murder, forcible - rape, robbery, and aggravated assault. Numbers for Illinois and Minnesota - do not include forcible rapes. Footnote included with the American - Statistical Abstract table reads: - "The data collection methodology for the offense of forcible - rape used by the Illinois and the Minnesota state Uniform Crime Reporting - (UCR) Programs (with the exception of Rockford, Illinois, and Minneapolis - and St. Paul, Minnesota) does not comply with national UCR guidelines. - Consequently, their state figures for forcible rape and violent crime (of - which forcible rape is a part) are not published in this table." -murder - Rate of murders / 100,000 population. -hs_grad - Precent of population having graduated from high school or higher. -poverty - % of individuals below the poverty line -white - Percent of population that is one race - white only. From 2009 American - Community Survey -single - Calculated from 2009 1-year American Community Survey obtained obtained - from Census. Variable is Male householder, no wife present, family - household combined with Female household, no husband prsent, family - household, divided by the total number of Family households. -urban - % of population in Urbanized Areas as of 2010 Census. Urbanized Areas are - area of 50,000 or more people. - -Source ------- - -All data is for 2009 and was obtained from the American Statistical Abstracts except as indicated below. - - -Copyright ---------- - -Public domain. diff --git a/docs/source/datasets/generated/strikes.rst b/docs/source/datasets/generated/strikes.rst deleted file mode 100644 index 765f1df15d6..00000000000 --- a/docs/source/datasets/generated/strikes.rst +++ /dev/null @@ -1,40 +0,0 @@ -U.S. Strike Duration Data -========================= - -Description ------------ - -Contains data on the length of strikes in US manufacturing and -unanticipated industrial production. The data is a subset of the data originally -used by Kennan. The data here is data for the months of June only to avoid -seasonal issues. - -Notes ------ - -Number of observations - 62 - -Number of variables - 2 - -Variable name definitions:: - - duration - duration of the strike in days - iprod - unanticipated industrial production - - -Source ------- - -This is a subset of the data used in Kennan (1985). It was originally -published by the Bureau of Labor Statistics. - -:: - - Kennan, J. 1985. "The duration of contract strikes in US manufacturing. - `Journal of Econometrics` 28.1, 5-28. - - -Copyright ---------- - -This is public domain. diff --git a/docs/source/datasets/generated/sunspots.rst b/docs/source/datasets/generated/sunspots.rst deleted file mode 100644 index 101b72e76ed..00000000000 --- a/docs/source/datasets/generated/sunspots.rst +++ /dev/null @@ -1,34 +0,0 @@ -Yearly sunspots data 1700-2008 -============================== - -Description ------------ - -Yearly (1700-2008) data on sunspots from the National -Geophysical Data Center. - -Notes ------ - -Number of Observations - 309 (Annual 1700 - 2008) -Number of Variables - 1 -Variable name definitions:: - - SUNACTIVITY - Number of sunspots for each year - -The data file contains a 'YEAR' variable that is not returned by load. - - -Source ------- - -http://www.ngdc.noaa.gov/stp/SOLAR/ftpsunspotnumber.html - -The original dataset contains monthly data on sunspot activity in the file -./src/sunspots_yearly.dat. There is also sunspots_monthly.dat. - - -Copyright ---------- - -This data is public domain. diff --git a/docs/source/datasets/index.rst b/docs/source/datasets/index.rst index 4fb2229d798..9d056c493b4 100644 --- a/docs/source/datasets/index.rst +++ b/docs/source/datasets/index.rst @@ -17,7 +17,7 @@ examples, tutorials, model testing, etc. Using Datasets from R --------------------- -The `Rdatasets project `__ gives access to the datasets available in R's core datasets package and many other common R packages. All of these datasets are available to statsmodels by using the :func:`get_rdataset` function. For example: +The `Rdatasets project `__ gives access to the datasets available in R's core datasets package and many other common R packages. All of these datasets are available to statsmodels by using the :func:`get_rdataset` function. The actual data is accessible by the ``data`` attribute. For example: .. ipython:: python @@ -58,7 +58,11 @@ Load a dataset: import statsmodels.api as sm data = sm.datasets.longley.load() -The `Dataset` object follows the bunch pattern explained in :ref:`proposal `. +The `Dataset` object follows the bunch pattern explained in :ref:`proposal `. The full dataset is available in the ``data`` attribute. + +.. ipython:: python + + data.data Most datasets hold convenient representations of the data in the attributes `endog` and `exog`: @@ -95,7 +99,7 @@ Loading data as pandas objects For many users it may be preferable to get the datasets as a pandas DataFrame or Series object. Each of the dataset modules is equipped with a ``load_pandas`` -method which returns a ``Dataset`` instance with the data as pandas objects: +method which returns a ``Dataset`` instance with the data readily available as pandas objects: .. ipython:: python @@ -103,10 +107,17 @@ method which returns a ``Dataset`` instance with the data as pandas objects: data.exog data.endog +The full DataFrame is available in the ``data`` attribute of the Dataset object + +.. ipython:: python + + data.data + + With pandas integration in the estimation classes, the metadata will be attached to model results: -.. ipython:: python +.. ipython:: python,okwarning y, x = data.endog, data.exog res = sm.OLS(y, x).fit() diff --git a/docs/source/dev/examples.rst b/docs/source/dev/examples.rst index 8a8fdeecf71..54a922dda21 100644 --- a/docs/source/dev/examples.rst +++ b/docs/source/dev/examples.rst @@ -6,50 +6,35 @@ Examples Examples are invaluable for new users who hope to get up and running quickly with `statsmodels`, and they are extremely useful to those who wish to explore new features of `statsmodels`. We hope to provide documentation and tutorials -for as many models and use-cases as possible! +for as many models and use-cases as possible! Please consider submitting an example with any PR that introduces new functionality. -Most user-contributed examples/tutorials/recipes should be placed on the -`statsmodels examples wiki page -`_ +User-contributed examples/tutorials/recipes can be placed on the +`statsmodels examples wiki page `_ That wiki page is freely editable. Please post your cool tricks, -examples, and recipes on there! +examples, and recipes on there! If you would rather have your example file officially accepted to the `statsmodels` distribution and posted on this website, you will need to go -through the normal `patch submission process `_. +through the normal `patch submission process `_ and follow the instructions that follow. File Format ~~~~~~~~~~~ -Examples are simple runnable python scripts that go in the top-level examples -directory. We use the `ipython_directive for Sphinx -`_ to -convert them automatically to `reStructuredText -`_ and html at build time. +Examples are best contributed as IPython notebooks. Save your notebook with all output cells cleared in ``examples/notebooks``. From the notebook save the pure Python output to ``examples/python``. The first line of the Notebook *must* be a header cell that contains a title for the notebook, if you want the notebook to be included in the documentation. -Each line of the script is executed; both the python code and the printed -results are shown in the output file. Lines that are commented out using the -hash symbol ``#`` are rendered as reST markup. -**Comments**: "True" comments that should not appear in the output file should be written on lines that start with ``#..``. +The Example Gallery +~~~~~~~~~~~~~~~~~~~ -**Error handling**: Syntax errors in pure Python will raise an error during the build process. If you need to show a SyntaxError, an alternative would be to provide a verbatim copy of an IPython session encased in a ReST code block instead of pure Python code. +We have a gallery of example notebooks available `here `_. If you would like your example to show up in this gallery, add a link to the notebook in ``docs/source/examples/landing.json``. For the thumbnail, take a screenshot of what you think is the best "hook" for the notebook. The image will be displayed at 360 x 225 (W x H). It's best to save the image as a PNG with a resolution that is some multiple of 360 x 225 (720 x 450 is preferred). -**Suppressing lines**: To suppress a line in the built documentation, follow it with a semicolon. -**Figures**: To save a figure, prepend the line directly before the plotting command with ``#@savefig file_name.png width=4in``, for example. You do not need to call show or close. - -**IPython magics**: You can use IPython magics by writing a line like this: ``#%timeit X = np.empty((1000,1000))``. - - -Make Life Easier -~~~~~~~~~~~~~~~~ +Before submitting a PR +~~~~~~~~~~~~~~~~~~~~~~ To save you some time and to make the new examples nicely fit into the existing ones consider the following points. **Look at examples source code** to get a feel for how statsmodels examples should look like. -**PEP8 syntax checker** install a [PEP8] http://pypi.python.org/pypi/pep8 syntax checker for you editor. It will not only make your code look nicer but also serves as `pre-debugger`. Note that some of doc directives explained above imply pep8 violations. Also, for the sake of readability it's a local convention not to add white spaces around power operators, e.g. `x * 2 + y**2 + z`. - -**build docs** run `make html` from the docs directory to see how your example looks in the fully rendered html pages. +**Build the docs** by running `make html` from the docs directory to see how your example looks in the fully rendered html pages. diff --git a/docs/source/dev/git_notes.rst b/docs/source/dev/git_notes.rst index e0075fcdb1a..ebe141e6b27 100644 --- a/docs/source/dev/git_notes.rst +++ b/docs/source/dev/git_notes.rst @@ -4,8 +4,8 @@ Working with the Statsmodels Code Github ------ -The `statsmodels` code base is hosted on `Github `_. To -contribute you will need to `sign up for a free Github account `_. +The `statsmodels` code base is hosted on `Github `_. To +contribute you will need to `sign up for a free Github account `_. Version Control and Git ----------------------- @@ -17,18 +17,14 @@ working on the code and allows you to easily contribute your changes to the codebase. It also keeps a complete history of all changes to the code, so you can easily undo changes or see when a change was made, by whom, and why. -To install and configure Git, and to setup SSH keys, see: - -+ `Linux users `_ -+ `Windows users `_ -+ `Mac users `_ +To install and configure Git, and to setup SSH keys, see `this page `_. To learn more about Git, you may want to visit: + `Git documentation (book and videos) `_ -+ `Github help pages `_ ++ `Github help pages `_ + `NumPy documentation `_ -+ `Matthew Brett's Pydagogue `_ ++ `Matthew Brett's Pydagogue `_ Below, we describe the bare minimum git commands you need to contribute to `statsmodels`. @@ -166,7 +162,7 @@ this by using `compare view `shiny-new-feature`, respectively. #. From here you will see a nice overview of your changes. If anything is amiss, you can fix it. -If everything looks good you are read to make a `pull request `__. +If everything looks good you are read to make a `pull request `__. #. Navigate to your repository on github. #. Click on the `Pull Request` button. @@ -206,7 +202,7 @@ could introduce bugs. However, if you have only a few commits, this might not be such a concern. One great place to start learning about rebase is :ref:`rebasing without tears `. In particular, `heed the warnings -`__. +`__. Namely, **always make a new branch before doing a rebase**. This is good general advice for working with git. I would also add **never use rebase on work that has already been published**. If another developer is using your @@ -231,7 +227,7 @@ git will know that it can safely delete your branch:: Then you can just do:: - git -d shiny-new-feature + git branch -d shiny-new-feature Make sure you use a lower-case -d. That way, git will complain if your feature branch has not actually been merged. The branch will still exist on github diff --git a/docs/source/dev/index.rst b/docs/source/dev/index.rst index 80956d88677..e234aefda3d 100644 --- a/docs/source/dev/index.rst +++ b/docs/source/dev/index.rst @@ -8,28 +8,51 @@ by submitting patches, statistical tests, new models, or examples. `_ using the `Git `_ version control system. -License -~~~~~~~ +Submitting a Bug Report +~~~~~~~~~~~~~~~~~~~~~~~ -Statsmodels is released under -the `Modified (3-clause) BSD license `_. +- Include a short, self-contained code snippet that reproduces the problem +- Specify the statsmodels version used. You can do this with ``sm.version.full_version`` +- If the issue looks to involve other dependencies, also include the output of ``sm.show_versions()`` + +Making Changes to the Code +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For a pull request to be accepted, you must meet the below requirements. This greatly helps the job of maintaining and releasing the software a shared effort. + +- **One branch. One feature.** Branches are cheap and github makes it easy to merge and delete branches with a few clicks. Avoid the temptation to lump in a bunch of unrelated changes when working on a feature, if possible. This helps us keep track of what has changed when preparing a release. +- Commit messages should be clear and concise. This means a subject line of less than 80 characters, and, if necessary, a blank line followed by a commit message body. We have an `informal commit format standard `_ that we try to adhere to. You can see what this looks like in practice by ``git log --oneline -n 10``. If your commit references or closes a specific issue, you can close it by mentioning it in the `commit message `_. (*For maintainers*: These suggestions go for Merge commit comments too. These are partially the record for release notes.) +- Code submissions must always include tests. See our notes on :ref:`testing`. +- Each function, class, method, and attribute needs to be documented using docstrings. We conform to the `numpy docstring standard `_. +- If you are adding new functionality, you need to add it to the documentation by editing (or creating) the appropriate file in ``docs/source``. +- Make sure your documentation changes parse correctly. Change into the top-level ``docs/`` directory and type:: + + make clean + make html -Submitting a Patch -~~~~~~~~~~~~~~~~~~~ + Check that the build output does not have *any* warnings due to your changes. +- Finally, please add your changes to the release notes. Open the ``docs/source/release/versionX.X.rst`` file that has the version number of the next release and add your changes to the appropriate section. -So you want to submit a patch to `statsmodels`?. Great news! Here are the -steps you need to take. +How to Submit a Pull Request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +So you want to submit a patch to `statsmodels` but aren't too familiar with github? Here are the steps you need to take. 1. `Fork `_ the `statsmodels repository `_ on Github. -2. `Create a new feature branch `_ - + Each branch must be self-contained, with a single new feature or bugfix. - + Patches must always include tests. See our `notes on testing `_. -3. `Submit a pull request `_ +2. `Create a new feature branch `_. Each branch must be self-contained, with a single new feature or bugfix. +3. Make sure the test suite passes. This includes testing on Python 3. The easiest way to do this is to either enable `Travis-CI `_ on your fork, or to make a pull request and check there. +4. `Submit a pull request `_ Mailing List ~~~~~~~~~~~~ -Conversations about development take place on the `statsmodels mailing list `__. +Conversations about development take place on the `statsmodels mailing list `__. + +License +~~~~~~~ + +Statsmodels is released under +the `Modified (3-clause) BSD license `_. Contents ~~~~~~~~ @@ -45,3 +68,4 @@ Contents examples roadmap_todo internal + testing diff --git a/docs/source/dev/internal.rst b/docs/source/dev/internal.rst index 5d0ba0c177b..c2f22f7f71c 100644 --- a/docs/source/dev/internal.rst +++ b/docs/source/dev/internal.rst @@ -33,6 +33,13 @@ define some common methods. ResultMixin GenericLikelihoodModelResults +.. currentmodule:: statsmodels.stats.contrast + +.. autosummary:: + :toctree: generated/ + + ContrastResults + .. inheritance-diagram:: statsmodels.base.model statsmodels.discrete.discrete_model statsmodels.regression.linear_model statsmodels.miscmodels.count :parts: 3 diff --git a/docs/source/dev/maintainer_notes.rst b/docs/source/dev/maintainer_notes.rst index f9a7b147362..a24098e5533 100644 --- a/docs/source/dev/maintainer_notes.rst +++ b/docs/source/dev/maintainer_notes.rst @@ -114,7 +114,7 @@ use:: Handling Pull Requests ~~~~~~~~~~~~~~~~~~~~~~ -You can apply a pull request through `fetch `__ and `merge `__. In your local +You can apply a pull request through `fetch `__ and `merge `__. In your local copy of the main repo:: git checkout master @@ -157,7 +157,7 @@ Releasing git checkout -b maintenance/0.3.x - Any bug fixes and maintenance commits for this minor release go into this branch and are merged back into master. If we have another micro release, then we make the tag and do this release in this branch and then merge the changes back into master so the tag is reachable. Check that the version number is still ok after the merge, fixing any conflicts here. + Any bug fixes and maintenance commits intended for the next micro release should be made against master as usual, but tagged with the milestone for the micro release it is intended for. Then merge into master as usual. When ready to do the backports, use the file ``tools/backport_pr.py`` to identify which PRs need to be backported and to apply them to the maintenance branch. The tag for the release should be made in the maintenance branch. #. Upload the source distribution to PyPI:: @@ -184,3 +184,9 @@ Prefix commit messages in the master branch of the main shared repository with t REL: Release related commit TST: Change to a test, adding a test. Only used if not directly related to a bug. REF: Refactoring changes + + +vbench +------ + +See :ref:`vbenchdoc` notes for working with the `statsmodels vbench suite `_. The github repository is available `here `_. diff --git a/docs/source/dev/roadmap_todo.rst b/docs/source/dev/roadmap_todo.rst index 8e1af9d8a2b..008b9ffd7f8 100644 --- a/docs/source/dev/roadmap_todo.rst +++ b/docs/source/dev/roadmap_todo.rst @@ -4,7 +4,7 @@ Get Involved Where to Start? --------------- -Use grep or download a tool like `grin `__ to search the code for TODO notes:: +Use grep or download a tool like `grin `__ to search the code for TODO notes:: grin -i -I "*.py*" todo @@ -23,12 +23,7 @@ We currently have a large amount code in the :ref:`sandbox`. The medium term goa Contribute an Example --------------------- -Link to examples documentation. Examples and technical documentation. - -Contribute to the Gallery -------------------------- - -Link to the Gallery. +Contribute an :ref:`example `, add some technical documentation, or contribute a statistics tutorial. Roadmap to 0.6 ============== diff --git a/docs/source/dev/test_notes.rst b/docs/source/dev/test_notes.rst index 6aba64339c7..a8ea396a61c 100644 --- a/docs/source/dev/test_notes.rst +++ b/docs/source/dev/test_notes.rst @@ -11,7 +11,7 @@ tests versus an existing statistical package, if possible. Introduction to Nose ~~~~~~~~~~~~~~~~~~~~ -Like many packages, statsmodels uses the `Nose testing system `__ and the convenient extensions in `numpy.testing `__. Nose itself is an extension of :mod:`Python's unittest `. Nose will find any file, directory, function, or class name that matches the regular expression ``(?:^|[b_./-])[Tt]est``. This is mainly functions that begin with test* and classes that begin with Test*. +Like many packages, statsmodels uses the `Nose testing system `__ and the convenient extensions in `numpy.testing `__. Nose itself is an extension of :mod:`Python's unittest `. Nose will find any file, directory, function, or class name that matches the regular expression ``(?:^|[b_./-])[Tt]est``. This is mainly functions that begin with test* and classes that begin with Test*. .. _run-tests: diff --git a/docs/source/dev/testing.rst b/docs/source/dev/testing.rst new file mode 100644 index 00000000000..d5c9632b6b0 --- /dev/null +++ b/docs/source/dev/testing.rst @@ -0,0 +1,12 @@ +Testing on Build Machines +------------------------- + +There are currently several places that statsmodels is automatically built and tested against different dependency and Python versions and architectures. Check these logs periodically, make sure everything looks okay, and fix any failures.: + +* `Travis CI `_ +* `Daily testing on Ubuntu via Python(x,y) `_ +* `NiPy testing on SPARC Boxes `_ + +The test coverage pages are here. + +* `Coveralls `_ diff --git a/docs/source/dev/vbench.rst b/docs/source/dev/vbench.rst new file mode 100644 index 00000000000..72b24f6b194 --- /dev/null +++ b/docs/source/dev/vbench.rst @@ -0,0 +1,145 @@ +:orphan: + +.. _vbenchdoc: + +vbench +====== + +`vbench`_ is a tool for benchmarking your code through time, for showing performance improvement or regressions. + +WARNING: ``vbench`` is not yet compatible with python3. + +New Dependencies +~~~~~~~~~~~~~~~~ + +* `vbench`_ (from github only) +* `sqlalchemy`_ +* `gitpython`_ +* `psutil`_ +* `affinity`_ (As a fallback to psutil) + +.. _vbench: https://github.com/pydata/vbench +.. _sqlalchemy: https://pypi.python.org/pypi/SQLAlchemy +.. _gitpython: https://pypi.python.org/pypi/GitPython/ +.. _psutil: https://pypi.python.org/pypi/psutil +.. _affinity: https://pypi.python.org/pypi/affinity + +Also note that you need to have sqlite3 working with python. + +Writing a good vbench +~~~~~~~~~~~~~~~~~~~~~ + +A set of related benchmarks go together in a module (a ``.py`` file). +See ``vb_suite/discrete.py`` for an example. + +There's typically some boilerplate common to all the tests, which can +be placed in a string ``common_setup``. + +Now we can write our specific benchmark. + +There are up to three items in a single benchmark: + +* setup specific to that benchmark (typically a string concatenated to ``common_setup``) +* a statement to be executed, which is the first argument to the ``vbench.BenchmarkRunner`` class +* instantiation the ``vbench.Benchmark`` class + +It's important to separate the setup from the statement we're interested in profiling. +The statement ought to be concise and should profile only one thing. +If you mix setup in with the statement to be profiled, then changes affecting the performance of the setup (which might even take place outside your library) will pollute the test. + +Each module must be listed in the ``suite.py`` file in the modules list. + +Not all tests can be run against the entire history of the project. +For newer features, each ``Benchmark`` object takes an optional ``start_date`` parameter. +For example: + +.. code-block:: python + + start_date=datetime(2012, 1, 1) + +If a ``start_date`` is not applied for a specific benchmark, the global setting from ``vb_suite.py`` is used. + +Another reason that a benchmark can't be run against the entire project's history is that API's sometimes have to change in ways that are not backwards compatible. +For these cases, the easiest way to compare performance pre- to post-API change is probably the try-except idiom: + +.. code-block:: python + + try: + rng = date_range('1/1/2000', periods=N, freq='min') + except NameError: + rng = DateRange('1/1/2000', periods=N, offset=datetools.Minute()) + date_range = DateRange + +Pre-PR +~~~~~~ + +Most contributors don't need to worry about writing a vbench or running the full suite against the project's entire history. +Use ``test_perf.py`` to see how the performance of your PR compares against a known-to-be-good benchmark. + + +Implementation +============== + +There are two main uses for ``vbench.`` +The first is most useful for someone submitting a pull request that might affect the performance of the library. +In this case, the submitter should run ``python vb_suite/test_perf.py -b base_commit -H``, where ``base_commit`` is the baseline commit hash you want to compare to. +The ``-H`` argument says to compare the HEAD of your branch against the baseline commit. + +The second use-case is for measuring the long-term performance of the project. +For this case the file of interest is ``run_suite.py``. +Using the parameters specified in that file, the suite of benchmarks is run against the history of the project. +The results are stored in a sqlite database. + +suite.py +~~~~~~~~ + +This is the main configuration file. +It pulls in the benchmarks from the various modules in ``vb_suite``, reads in the user configuration, and handles the setup and tear-down of the performance tests. + +run_suite.py +~~~~~~~~~~~~ + +Useful for the maintainers of the project to track performance over time. +Runs with no arguments from the command line. +Persists the results in a database so that the the full suite needn't be rerun each time. + +User config file +~~~~~~~~~~~~~~~~ + +Only necessary if you're running ``run_suite.py``. +Should look something like: + +repo_path: /Home/Envs/statsmodels/lib/python2.7/site~packages/statsmodels/ +repo_url: https://github.com/statsmodels/statsmodels.git +db_path: /Homevbench/statsmodels/vb_suite/benchmarks.db +tmp_dir: /Home/tmp + + +test_perf.py +~~~~~~~~~~~~ + +Use before commit to check for performance regressions. +CLT, use ``python test_perf.py -h`` for help. + +Most of the time you'll be giving it one or two arguments: + +* ``-b BASE_COMMIT``: the commit you're comparing your commit against +* ``-t TARGET_COMMIT``: or use -H to set the target to the ``HEAD`` of your branch. + + +generate_rst_files.py +~~~~~~~~~~~~~~~~~~~~~ + +Once you've run `run_suite.py` and generated a benchmark database, you can use ``generate_rst_files.py`` to graph performance over time. + + +References: +~~~~~~~~~~~ + +`http://wesmckinney.com/blog/?p=373 `_ + +`https://github.com/pydata/vbench `_ + +`https://github.com/pydata/pandas/tree/master/vb_suite `_ + +`https://github.com/yarikoptic/numpy-vbench `_ diff --git a/docs/source/diagnostic.rst b/docs/source/diagnostic.rst index fddd89096a7..69363b2e10a 100644 --- a/docs/source/diagnostic.rst +++ b/docs/source/diagnostic.rst @@ -185,7 +185,7 @@ individual outliers and might not be able to identify groups of outliers. ### Example for using Huber's T norm with the default ### median absolute deviation scaling - data = sm.datasets.stackloss.Load() + data = sm.datasets.stackloss.load() data.exog = sm.add_constant(data.exog) huber_t = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT()) hub_results = huber_t.fit() diff --git a/docs/source/discretemod.rst b/docs/source/discretemod.rst index 0b4764c38f3..9a4135f173c 100644 --- a/docs/source/discretemod.rst +++ b/docs/source/discretemod.rst @@ -31,7 +31,8 @@ Detailed examples can be found here: .. toctree:: :maxdepth: 2 - examples/generated/example_discrete + examples/notebooks/generated/discrete_choice_overview + examples/notebooks/generated/discrete_choice_example Technical Documentation ----------------------- diff --git a/docs/source/duration.rst b/docs/source/duration.rst new file mode 100644 index 00000000000..6b580686efa --- /dev/null +++ b/docs/source/duration.rst @@ -0,0 +1,81 @@ +.. currentmodule:: statsmodels.duration.hazard_regression + + +.. _duration: + +Models for Survival and Duration Analysis +========================================= + +currently contains Cox's Proportional Hazard Model. + + +Examples +-------- + +:: + + url = "http://vincentarelbundock.github.io/Rdatasets/csv/survival/flchain.csv" + data = pd.read_csv(url) + del data["chapter"] + data = data.dropna() + data["lam"] = data["lambda"] + data["female"] = 1*(data["sex"] == "F") + data["year"] = data["sample.yr"] - min(data["sample.yr"]) + + status = np.asarray(data["death"]) + mod = PHreg.from_formula("futime ~ 0 + age + female + creatinine + " + + "np.sqrt(kappa) + np.sqrt(lam) + year + mgus", + data, status=status, ties="efron") + rslt = mod.fit() + print(rslt.summary()) + +Detailed examples can be found here: + +.. toctree:: + :maxdepth: 2 + + examples/notebooks/generated/ not yet + +There some notebook examples on the Wiki: +`Wiki notebooks for PHReg and Survival Analysis `_ + + + +Technical Documentation +----------------------- + +TODO + + +References +^^^^^^^^^^ + +References for Cox proportional hazards regression model:: + +T Therneau (1996). Extending the Cox model. Technical report. +http://www.mayo.edu/research/documents/biostat-58pdf/DOC-10027288 + +G Rodriguez (2005). Non-parametric estimation in survival models. +http://data.princeton.edu/pop509/NonParametricSurvival.pdf + +B Gillespie (2006). Checking the assumptions in the Cox proportional +hazards model. +http://www.mwsug.org/proceedings/2006/stats/MWSUG-2006-SD08.pdf + + +Module Reference +---------------- + +The model class is: + +.. autosummary:: + :toctree: generated/ + + PHReg + +The result classe is: + +.. autosummary:: + :toctree: generated/ + + PHRegResults diff --git a/docs/source/example_formulas.rst b/docs/source/example_formulas.rst index 99434f7abe2..050a1f57ccd 100644 --- a/docs/source/example_formulas.rst +++ b/docs/source/example_formulas.rst @@ -18,7 +18,7 @@ Loading modules and functions .. code:: python - import statsmodels.formula.api as sm + import statsmodels.formula.api as smf import numpy as np import pandas @@ -31,7 +31,7 @@ accept ``formula`` and ``df`` arguments, whereas upper case ones take which describes the model in terms of a ``patsy`` formula. ``df`` takes a `pandas `_ data frame. -``dir(sm)`` will print a list of available models. +``dir(smf)`` will print a list of available models. Formula-compatible models have the following generic call signature: ``(formula, data, subset=None, *args, **kwargs)`` @@ -63,7 +63,7 @@ Fit the model: .. code:: python - mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df) + mod = smf.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df) res = mod.fit() print res.summary() @@ -111,7 +111,7 @@ operator: .. code:: python - res = sm.ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit() + res = smf.ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit() print res.params .. parsed-literal:: @@ -144,7 +144,7 @@ can remove the intercept from a model by: .. code:: python - res = sm.ols(formula='Lottery ~ Literacy + Wealth + C(Region) -1 ', data=df).fit() + res = smf.ols(formula='Lottery ~ Literacy + Wealth + C(Region) -1 ', data=df).fit() print res.params .. parsed-literal:: @@ -167,8 +167,8 @@ multiplied together: .. code:: python - res1 = sm.ols(formula='Lottery ~ Literacy : Wealth - 1', data=df).fit() - res2 = sm.ols(formula='Lottery ~ Literacy * Wealth - 1', data=df).fit() + res1 = smf.ols(formula='Lottery ~ Literacy : Wealth - 1', data=df).fit() + res2 = smf.ols(formula='Lottery ~ Literacy * Wealth - 1', data=df).fit() print res1.params, '\n' print res2.params @@ -192,7 +192,7 @@ You can apply vectorized functions to the variables in your model: .. code:: python - res = sm.ols(formula='Lottery ~ np.log(Literacy)', data=df).fit() + res = smf.ols(formula='Lottery ~ np.log(Literacy)', data=df).fit() print res.params .. parsed-literal:: @@ -207,7 +207,7 @@ Define a custom function: def log_plus_1(x): return np.log(x) + 1. - res = sm.ols(formula='Lottery ~ log_plus_1(Literacy)', data=df).fit() + res = smf.ols(formula='Lottery ~ log_plus_1(Literacy)', data=df).fit() print res.params .. parsed-literal:: @@ -277,7 +277,7 @@ To generate pandas data frames: .. code:: python - print sm.OLS(y, X).fit().summary() + print smf.OLS(y, X).fit().summary() .. parsed-literal:: diff --git a/docs/source/examples/README b/docs/source/examples/README new file mode 100644 index 00000000000..7e9162c47b2 --- /dev/null +++ b/docs/source/examples/README @@ -0,0 +1 @@ +The format for landing.json should be self-explanatory. The images should be placed in docs/source/_static/images/. They will be displayed at 360 x 225 (W x H). It's best to save them as a png with a resolution of a multiple of at least 720 x 450. If you want, you can use png crush to make the images smaller. diff --git a/docs/source/examples/index.rst b/docs/source/examples/index.rst index 7f039b3b60e..f340df6bfce 100644 --- a/docs/source/examples/index.rst +++ b/docs/source/examples/index.rst @@ -4,32 +4,17 @@ Statsmodels Examples ==================== This page provides a series of examples, tutorials and recipes to help you get -started with ``statsmodels``. +started with ``statsmodels``. Each of the examples shown here is made available +as an IPython Notebook and as a plain python script on the `statsmodels github +repository `_. -Each of these examples is also made available in -IPython Notebook format on the `examples wiki page -`_. -Of course, you can edit the examples wiki page freely; please add any example, -tutorial or cool `statsmodels` trick you feel is worth sharing. Thanks for -helping us make this resource more useful! - -The script files for these examples and the notebooks are available in the -top level examples folder in the source distribution. - -`Examples wiki page `_ +We also encourage users to submit their own examples, tutorials or cool +`statsmodels` trick to the `Examples wiki page +`_ The Examples ------------ -.. toctree:: - :maxdepth: 3 - :glob: - - generated/* - -Notebook Examples ------------------ - .. toctree:: :maxdepth: 3 :glob: diff --git a/docs/source/examples/landing.json b/docs/source/examples/landing.json new file mode 100644 index 00000000000..27c0a23ccab --- /dev/null +++ b/docs/source/examples/landing.json @@ -0,0 +1,173 @@ +[ + { + "header":"Linear Regression Models", + "id":"regression", + "links":[ + { + "text": "Ordinary Least Squares", + "target": "notebooks/generated/ols.html", + "img": "../_static/images/ols.png" + }, + { + "text": "Generalized Least Squares", + "target": "notebooks/generated/gls.html", + "img": "../_static/images/gls.png" + }, + { + "text": "Quantile Regression", + "target": "notebooks/generated/quantile_regression.html", + "img": "../_static/images/quantile_regression.png" + }, + { + "text": "Regression Diagnostics", + "target": "notebooks/generated/regression_diagnostics.html", + "img": "../_static/images/regression_diagnostics.png" + }, + { + "text": "Weighted Least Squares", + "target": "notebooks/generated/wls.html", + "img": "../_static/images/wls.png" + } + ] + }, + { + "header":"Plotting", + "id":"plotting", + "links":[ + { + "text": "Regression Plots", + "target": "notebooks/generated/regression_plots.html", + "img": "../_static/images/regression_plots.png" + }, + { + "text": "Categorical Interactions", + "target": "notebooks/generated/categorical_interaction_plot.html", + "img": "../_static/images/categorical_interaction_plot.png" + } + ] + + }, + { + "header": "Discrete Choice Models", + "id":"discrete", + "links":[ + { + "text": "Getting Started", + "target": "notebooks/generated/discrete_choice_overview.html", + "img": "../_static/images/discrete_overview.png" + }, + { + "text": "Fair's Affairs Data", + "target": "notebooks/generated/discrete_choice_example.html", + "img": "../_static/images/fairs_data.png" + } + ] + }, + { + "header": "Nonparametric Statistics", + "id":"nonparametric", + "links":[ + { + "text": "Univariate Kernel Density Estimator", + "target": "notebooks/generated/kernel_density.html", + "img": "../_static/images/kde_overview.png" + } + ] + }, + { + "header":"Generalized Linear Models", + "id":"glm", + "links":[ + { + "text": "Generalized Linear Models Overview", + "target": "notebooks/generated/glm.html", + "img": "../_static/images/glm_overview.png" + }, + { + "text": "Using Formulas with GLMs", + "target": "notebooks/generated/glm_formula.html", + "img": "../_static/images/glm_formulas.png" + + } + ] + }, + { + "header":"Robust Regression", + "id":"robust", + "links":[ + { + "text": "M-estimators for Robust Regression", + "target": "notebooks/generated/robust_models_1.html", + "img": "../_static/images/rlm_overview.png" + }, + { + "text": "Comparing OLS and RLM", + "target": "notebooks/generated/robust_models_0.html", + "img": "../_static/images/rlm.png" + } + ] + }, + { + "header":"Statistics", + "id":"stats", + "links":[ + { + "text": "ANOVA", + "target": "notebooks/generated/interactions_anova.html", + "img": "../_static/images/anova.png" + } + ] + }, + { + "header":"Time Series Analysis", + "id":"stats", + "links":[ + { + "text": "ARMA: Sunspots Data", + "target": "notebooks/generated/tsa_arma_0.html", + "img": "../_static/images/tsa_arma0.png" + }, + { + "text": "ARMA: Artificial Data", + "target": "notebooks/generated/tsa_arma_1.html", + "img": "../_static/images/tsa_arma1.png" + }, + { + "text": "Time Series Filters", + "target": "notebooks/generated/tsa_filters.html", + "img": "../_static/images/tsa_filters.png" + } + ] + }, + { + "header":"User Notes", + "id":"user", + "links":[ + { + "text": "Contrasts", + "target": "notebooks/generated/contrasts.html", + "img": "../_static/images/contrasts.png" + }, + { + "text": "Formulas", + "target": "notebooks/generated/formulas.html", + "img": "../_static/images/formulas_intro.png" + }, + { + "text": "Prediction", + "target": "notebooks/generated/predict.html", + "img": "../_static/images/prediction.png" + }, + { + "text": "Generic Maximum Likelihood", + "target": "notebooks/generated/generic_mle.html", + "img": "../_static/images/generic_mle.png" + }, + { + "text": "Dates in Time-Series Models", + "target": "notebooks/generated/tsa_dates.html", + "img": "../_static/images/tsa_dates.png" + } + ] + } +] diff --git a/docs/source/faq.rst b/docs/source/faq.rst new file mode 100644 index 00000000000..7a8e6b38876 --- /dev/null +++ b/docs/source/faq.rst @@ -0,0 +1,41 @@ +:orphan: + +.. currentmodule:: statsmodels + +.. _faq: + +Frequently Asked Question +------------------------- + +.. _endog-exog-faq: + +What do endog and exog mean? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These are shorthand for endogenous and exogenous variables. You might be more comfortable with the common ``y`` and ``X`` notation in linear models. Sometimes the endogenous variable ``y`` is called a dependent variable. Likewise, sometimes the exogenous variables ``X`` are called the independent variables. You can read about this in greater detail at :ref:`endog_exog` + + +.. _missing-faq: + +How does statsmodels handle missing data? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Missing data can be handled via the ``missing`` keyword argument. Every model takes this keyword. You can find more information in the docstring of :class:`statsmodels.base.Model `. + +.. `Model class `_. + +.. _build-faq: + +Why won't statsmodels build? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you're on Python 3.4, you *must* use Cython 0.20.1. If you're still having problems, try running + +.. code-block:: bash + + python setup.py clean + +What if my question isn't answered here? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You may find answers for questions that have not yet been added here on GitHub under the `FAQ issues tag `_. If not, please ask your question on stackoverflow using the `statsmodels tag `_ or on the `mailing list `_. diff --git a/docs/source/gettingstarted.rst b/docs/source/gettingstarted.rst index 7ad33042986..f81cdd01f0e 100644 --- a/docs/source/gettingstarted.rst +++ b/docs/source/gettingstarted.rst @@ -176,9 +176,9 @@ plot of partial regression for a set of regressors by: .. ipython:: python - from statsmodels.graphics.regressionplots import plot_partregress @savefig gettingstarted_0.png - plot_partregress(res) + sm.graphics.plot_partregress('Lottery', 'Wealth', ['Region', 'Literacy'], + data=df, obs_labels=False) More ---- diff --git a/docs/source/glm.rst b/docs/source/glm.rst index 3a7ad1c2606..ff5e25f23e2 100644 --- a/docs/source/glm.rst +++ b/docs/source/glm.rst @@ -29,7 +29,8 @@ Detailed examples can be found here: .. toctree:: :maxdepth: 1 - examples/generated/example_glm + examples/notebooks/generated/glm + examples/notebooks/generated/glm_formula Technical Documentation ----------------------- @@ -64,6 +65,8 @@ Results Class GLMResults +.. _families: + Families ^^^^^^^^ @@ -84,6 +87,8 @@ The distribution families currently implemented are Poisson +.. _links: + Link Functions ^^^^^^^^^^^^^^ diff --git a/docs/source/gmm.rst b/docs/source/gmm.rst index 1033e90c120..cfb2d872a88 100644 --- a/docs/source/gmm.rst +++ b/docs/source/gmm.rst @@ -33,12 +33,8 @@ Module Reference GMM GMMResults IV2SLS - -not sure what the status is on the following - -.. autosummary:: - :toctree: generated/ - IVGMM + IVGMMResults + IVRegressionResults + LinearIVGMM NonlinearIVGMM - DistQuantilesGMM diff --git a/docs/source/graphics.rst b/docs/source/graphics.rst index 775984634ce..a5a937c16e1 100644 --- a/docs/source/graphics.rst +++ b/docs/source/graphics.rst @@ -69,6 +69,8 @@ Time Series Plots tsaplots.plot_acf tsaplots.plot_pacf + tsaplots.month_plot + tsaplots.quarter_plot Other Plots ----------- diff --git a/docs/source/index.rst b/docs/source/index.rst index c9f45687944..b861b6b9a42 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -64,12 +64,12 @@ Basic Documentation .. toctree:: :maxdepth: 3 - introduction release/index gettingstarted example_formulas install related + about Information about the structure and development of statsmodels: @@ -91,10 +91,13 @@ Table of Contents regression glm + gee rlm + mixed_linear discretemod anova tsa + duration stats nonparametric gmm diff --git a/docs/source/install.rst b/docs/source/install.rst index 4c38f9a9a66..87cdff06977 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -8,18 +8,18 @@ Installation Using setuptools ~~~~~~~~~~~~~~~~ -To obtain the latest released version of statsmodels using `setuptools `__:: +To obtain the latest released version of statsmodels using `setuptools `__:: easy_install -U statsmodels -Or follow `this link to our PyPI page `__. +Or follow `this link to our PyPI page `__. Obtaining the Source ~~~~~~~~~~~~~~~~~~~~ We do not release very often but the master branch of our source code is usually fine for everyday use. You can get the latest source from our -`github repository `__. Or if you have git installed:: +`github repository `__. Or if you have git installed:: git clone git://github.com/statsmodels/statsmodels.git @@ -107,15 +107,16 @@ Replace `/x64` with `/x86` and `v7.0` with `v7.1` as needed. Dependencies ~~~~~~~~~~~~ -* `Python `__ >= 2.6, including Python 3.x +* `Python `__ >= 2.6, including Python 3.x * `NumPy `__ >= 1.5.0 * `SciPy `__ >= 0.7 * `Pandas `__ >= 0.7.1 -* `Patsy `__ >= 0.1.0 -* `Cython `__ >= 15.1, Needed if you want to build the code from github and not a source distribution. +* `Patsy `__ >= 0.1.0 +* `Cython `__ >= 20.1, Needed if you want to build the code from github and not a source distribution. You must use Cython >= 0.20.1 if you're on Python 3.4. Earlier versions may work for Python < 3.4. Optional Dependencies ~~~~~~~~~~~~~~~~~~~~~ -* `Matplotlib `__ is needed for plotting functions and running many of the examples. -* `Nose `__ is required to run the test suite. +* `Matplotlib `__ is needed for plotting functions and running many of the examples. +* `Nose `__ is required to run the test suite. +* `IPython `__ is required to build the docs locally. diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst deleted file mode 100644 index 124392bb6a5..00000000000 --- a/docs/source/introduction.rst +++ /dev/null @@ -1,193 +0,0 @@ -.. currentmodule:: statsmodels - -************ -Introduction -************ - -Background ----------- - -Scipy.stats.models was originally written by Jonathan Taylor. -For some time it was part of scipy but then removed from it. During -the Google Summer of Code 2009, stats.models was corrected, tested and -enhanced and released as a new package. Since then we have continued to -improve the existing models and added new statistical methods. - - -Main Features and Current Status --------------------------------- - -statsmodels 0.4 is a pure python package, with one optional cython based -extension that provides a considerable speed improvement for ARIMA estimation. -Future releases will depend on cython generated extensions. - -statsmodels includes: - -* regression: Generalized least squares (including weighted least squares and - least squares with autoregressive errors), ordinary least squares. -* glm: Generalized linear models with support for all of the one-parameter - exponential family distributions. -* discrete: regression with discrete dependent variables, including Logit, Probit, - MNLogit, Poisson, based on maximum likelihood estimators -* rlm: Robust linear models with support for several M-estimators. -* tsa: models for time series analysis - - - univariate time series analysis: AR, ARIMA - - vector autoregressive models, VAR and structural VAR - - descriptive statistics and process models for time series analysis - -* nonparametric : (Univariate) kernel density estimators -* datasets: Datasets to be distributed and used for examples and in testing. -* stats: a wide range of statistical tests - - - diagnostics and specification tests - - goodness-of-fit and normality tests - - functions for multiple testing - - various additional statistical tests - -* iolib: Tools for reading Stata .dta files into numpy arrays. (not yet ported to Python 3) -* iolob: printing table output to ascii, latex, and html - -* miscellaneous models - -statsmodels contains a sandbox folder, which includes some of the original -stats.models code that has not yet been rewritten and tested. The sandbox also -contains models and functions that we are currently developing. This code is -in various stages of development from early stages to almost finished, but -not sufficiently tested or with an API that is still in flux. Some of the code -in the advanced state covers among others Mixed (repeated measures) Models, -GARCH models, general method of moments (GMM) estimators, kernel regression and -kernel density estimation, and various extensions to scipy.stats.distributions. - -The code is written for plain NumPy arrays so that statsmodels can be used -as a library for any kind of data structure users might have. However, in -order to make the data handling easier, some time series specific models -rely on pandas, and we have plans to integrate pandas in future releases of -statsmodels. - -We have also included several datasets from the public domain and by -permission for tests and examples. The datasets are set up so that it is -easy to add more datasets. - -Python 3 --------- - -statsmodels has been ported and tested for Python 3.2. Python 3 -version of the code is automatically created during setup by running 2to3.py -over the statsmodels source (excluding examples). -The STATA file reader and writer in iolib.foreign has not been ported yet. -A recent development version of matplotlib for Python 3 runs without problems -with our examples and tests. -Running the test suite with Python 3.2 shows only one errors related to -unported STATA file reader. - -Testing -------- - -Most results have been verified with at least one other statistical package: R, -Stata or SAS. The guiding principal for the initial rewrite and for continued -development is that all numbers have to be verified. Some statistical -methods are tested with Monte Carlo studies. While we strife to follow this -test driven approach, there is no guarantee that the code is bug-free and -always works. Some auxiliary function are still insufficiently tested, some -edge cases might not be correctly taken into account, and the possibility of -numerical problems is inherent to many of the statistical models. We -especially appreciate any help and reports for these kind of problems so we -can keep improving the existing models. - - - - -Looking Forward ---------------- - -We would like to invite everyone to give statsmodels a test drive, use it, and -report comments, possibilities for improvement and bugs to the statsmodels -mailing list http://groups.google.com/group/pystatsmodels or file tickets on our -issue tracker at https://github.com/statsmodels/statsmodels/issues - -The source code is available from https://github.com/statsmodels/statsmodels. - -Our plans for the future include improving the coverage of statistical -models, methods and tests that any basic statistics package should provide. -But the main direction for the expansion of statsmodels depends on the -requirements and interests of the developers and contributers. - -The current maintainers are mostly interested in econometrics and time series -analysis, but we would like to invite any users or developers to contribute -their own extensions to existing models, or new models. To speed up -improvements that are waiting in the sandbox, any help with providing test -cases, reviewing or improving the code would be very appreciated. - -Planned Extensions -~~~~~~~~~~~~~~~~~~ - -Big changes that are planned for the next release will improve the -usability of statsmodels especially for interactive work. - -* Metainformation about data and models: Currently the models essentially - use no information about the design matrix and just treat it as numpy - array. Some information like variable names are included with the wrapper - for use with Pandas or other data structures. -* Formulas similar to R: This will provide a faster way to interactively - define models and contrast matrices, and will provide additional - information especially for categorical variables. (Nathaniel Smith) - -Various models that are work in progress where the time to inclusion in -statsmodels proper will depend on the available developer time and interests: - -Bayesian dynamic linear models (Wes) - -more Kalman filter based time series analysis (Skipper) - -New models (roughly in order of completeness): -general method of moments (GMM) estimators, kernel regression, -kernel density estimation, various extensions to scipy.stats.distributions, -GARCH models, copulas, system of equation models, panel data models, -more discrete choice models, mixed effects models, survival models. - -Resampling approaches like bootstrap and permutation for tests and estimator -statistics. - - -Code Stability -~~~~~~~~~~~~~~ - -The existing models are mostly settled in their user interface and we do not -expect many changes anymore. One area that will need adjustment is how -formulas and meta information are included. New models that have just been -included might require adjustments as we gain more experience and obtain -feedback by users. As we expand the range of models, we keep improving the -framework for different estimators and statistical tests, so further changes -will be necessary. - -In 0.3 we reorganized the internal location of the code and -import paths which will make future enhancements less interruptive. In 0.4 -most models obtained a wrapper that stores and returns additional information -from richer data structures like data structures in Pandas and structured -arrays. In 0.4 also prediction has been improved in many cases and made more -consistent across models. - -Although there is no guarantee yet on API stability, we try to keep changes -that require adjustments by existing users to a minimal level. - -Financial Support ------------------ - -We are grateful for the financial support that we obtained for the -developement of statsmodels: - - Google `www.google.com `_ : two Google Summer of Code, - GSOC 2009, GSOC 2010 and GSOC 2011 - - AQR `www.aqr.com `_ : financial sponsor for the work on - Vector Autoregressive Models (VAR) by Wes McKinney - -We would also like to thank our hosting providers, `github -`_ for the public code repository, `sourceforge -`_ for hosting our documentation and `python.org -`_ for making our downloads available on pypi. - - -Josef Perktold and Skipper Seabold -(maintainers) diff --git a/docs/source/iolib.rst b/docs/source/iolib.rst index 17a842f62bf..6d3581a6150 100644 --- a/docs/source/iolib.rst +++ b/docs/source/iolib.rst @@ -31,3 +31,14 @@ Module Reference table.csv2st smpickle.save_pickle smpickle.load_pickle + + +The following are classes and functions used to return the summary of +estimation results, and mostly intended for internal use. There are currently +two versions for creating summaries. + +.. autosummary:: + :toctree: generated/ + + summary.Summary + summary2.Summary diff --git a/docs/source/mixed_linear.rst b/docs/source/mixed_linear.rst new file mode 100644 index 00000000000..3c10275a53f --- /dev/null +++ b/docs/source/mixed_linear.rst @@ -0,0 +1,177 @@ +.. currentmodule:: statsmodels.regression.mixed_linear_model + + +.. _mixedlmmod: + +Linear Mixed Effects Models +=========================== + + +Linear Mixed Effects models are used for regression analyses involving +dependent data. Such data arise when working with longitudinal and +other study designs in which multiple observations are made on each +subject. Two specific mixed effects models are "random intercepts +models", where all responses in a single group are additively shifted +by a value that is specific to the group, and "random slopes models", +where the values follow a mean trajectory that is linear in observed +covariates, with both the slopes and intercept being specific to the +group. The Statsmodels MixedLM implementation allows arbitrary random +effects design matrices to be specified for the groups, so these and +other types of random effects models can all be fit. + +The Statsmodels LME framework currently supports post-estimation +inference via Wald tests and confidence intervals on the coefficients, +profile likelihood analysis, likelihood ratio testing, and AIC. Some +limitations of the current implementation are that it does not support +structure more complex on the residual errors (they are always +homoscedastic), and it does not support crossed random effects. We +hope to implement these features for the next release. + +Examples +-------- + +:: + + # Load the data from Spector and Mazzeo (1980) + spector_data = sm.datasets.spector.load() + spector_data.exog = sm.add_constant(spector_data.exog) + + data = pd.read_csv("http://vincentarelbundock.github.io/Rdatasets/csv/geepack/dietox.csv") + md = MixedLM.from_formula("Weight ~ Time", data, groups=data["Pig"]) + mdf = md.fit() + print(mdf.summary()) + +Detailed examples can be found here: + +.. toctree:: + :maxdepth: 2 + + examples/notebooks/generated/ not yet + +There some notebook examples on the Wiki: +`Wiki notebooks for MixedLM `_ + + + +Technical Documentation +----------------------- + +The data are partitioned into disjoint groups. The probability model +for group i is: + +Y = X*beta + Z*gamma + epsilon + +where + +* n_i is the number of observations in group i +* Y is a n_i dimensional response vector +* X is a n_i x k_fe dimensional matrix of fixed effects + coefficients +* beta is a k_fe-dimensional vector of fixed effects slopes +* Z is a n_i x k_re dimensional matrix of random effects + coefficients +* gamma is a k_re-dimensional random vector with mean 0 + and covariance matrix Psi; note that each group + gets its own independent realization of gamma. +* epsilon is a n_i dimensional vector of iid normal + errors with mean 0 and variance sigma^2; the epsilon + values are independent both within and between groups + +Y, X and Z must be entirely observed. beta, Psi, and sigma^2 are +estimated using ML or REML estimation, and gamma and epsilon are +random so define the probability model. + +The mean structure is E[Y|X,Z] = X*beta. If only the mean structure +is of interest, GEE is a good alternative to mixed models. + +The primary reference for the implementation details is: + +MJ Lindstrom, DM Bates (1988). "Newton Raphson and EM algorithms for +linear mixed effects models for repeated measures data". Journal of +the American Statistical Association. Volume 83, Issue 404, pages +1014-1022. + +See also this more recent document: + +http://econ.ucsb.edu/~doug/245a/Papers/Mixed%20Effects%20Implement.pdf + +All the likelihood, gradient, and Hessian calculations closely follow +Lindstrom and Bates. + +The following two documents are written more from the perspective of +users: + +http://lme4.r-forge.r-project.org/lMMwR/lrgprt.pdf + +http://lme4.r-forge.r-project.org/slides/2009-07-07-Rennes/3Longitudinal-4.pdf + +Notation: + +* `cov_re` is the random effects covariance matrix (referred to above + as Psi) and `scale` is the (scalar) error variance. For a single + group, the marginal covariance matrix of endog given exog is scale*I + + Z * cov_re * Z', where Z is the design matrix for the random + effects in one group. + +Notes: + +1. Three different parameterizations are used here in different +places. The regression slopes (usually called `fe_params`) are +identical in all three parameterizations, but the variance parameters +differ. The parameterizations are: + +* The "natural parameterization" in which cov(endog) = scale*I + Z * + cov_re * Z', as described above. This is the main parameterization + visible to the user. + +* The "profile parameterization" in which cov(endog) = I + + Z * cov_re1 * Z'. This is the parameterization of the profile + likelihood that is maximized to produce parameter estimates. + (see Lindstrom and Bates for details). The "natural" cov_re is + equal to the "profile" cov_re1 times scale. + +* The "square root parameterization" in which we work with the + Cholesky factor of cov_re1 instead of cov_re1 directly. + +All three parameterizations can be "packed" by concatenating fe_params +together with the lower triangle of the dependence structure. Note +that when unpacking, it is important to either square or reflect the +dependence structure depending on which parameterization is being +used. + +2. The situation where the random effects covariance matrix is +singular is numerically challenging. Small changes in the covariance +parameters may lead to large changes in the likelihood and +derivatives. + +3. The optimization strategy is to optionally perform a few EM steps, +followed by optionally performing a few steepest descent steps, +followed by conjugate gradient descent using one of the scipy gradient +optimizers. The EM and steepest descent steps are used to get +adequate starting values for the conjugate gradient optimization, +which is much faster. + + +References +^^^^^^^^^^ + +General references for this class of models are:: + +TODO + +Module Reference +---------------- + +The model class is: + +.. autosummary:: + :toctree: generated/ + + MixedLM + +The result classe are: + +.. autosummary:: + :toctree: generated/ + + MixedLMResults diff --git a/docs/source/plots/bkf_plot.py b/docs/source/plots/bkf_plot.py new file mode 100644 index 00000000000..944afda2a00 --- /dev/null +++ b/docs/source/plots/bkf_plot.py @@ -0,0 +1,9 @@ +import statsmodels.api as sm + +from load_macrodata import dta + +cycles = sm.tsa.filters.bkfilter(dta[['realinv']], 6, 24, 12) + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +cycles.plot(ax=ax, style=['r--', 'b-']) diff --git a/docs/source/plots/cff_plot.py b/docs/source/plots/cff_plot.py new file mode 100644 index 00000000000..313b7e1fc0a --- /dev/null +++ b/docs/source/plots/cff_plot.py @@ -0,0 +1,9 @@ +import statsmodels.api as sm + +from load_macrodata import dta + +cf_cycles, cf_trend = sm.tsa.filters.cffilter(dta[["infl", "unemp"]]) + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +cf_cycles.plot(ax=ax, style=['r--', 'b-']) diff --git a/docs/source/plots/graphics_month_plot.py b/docs/source/plots/graphics_month_plot.py new file mode 100644 index 00000000000..f947ae7059a --- /dev/null +++ b/docs/source/plots/graphics_month_plot.py @@ -0,0 +1,12 @@ +import statsmodels.api as sm +import pandas as pd + +dta = sm.datasets.elnino.load_pandas().data +dta['YEAR'] = dta.YEAR.astype(int).astype(str) +dta = dta.set_index('YEAR').T.unstack() +dates = map(lambda x : pd.datetools.parse('1 '+' '.join(x)), + dta.index.values) + +dta.index = pd.DatetimeIndex(dates, freq='M') +dta.name = 'temp' +fig = sm.graphics.tsa.month_plot(dta) diff --git a/docs/source/plots/hpf_plot.py b/docs/source/plots/hpf_plot.py new file mode 100644 index 00000000000..3a819be01cd --- /dev/null +++ b/docs/source/plots/hpf_plot.py @@ -0,0 +1,13 @@ +import statsmodels.api as sm +import pandas as pd +from load_macrodata import dta + +cycle, trend = sm.tsa.filters.hpfilter(dta.realgdp, 1600) +gdp_decomp = dta[['realgdp']] +gdp_decomp["cycle"] = cycle +gdp_decomp["trend"] = trend + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +gdp_decomp[["realgdp", "trend"]]["2000-03-31":].plot(ax=ax, + fontsize=16) diff --git a/docs/source/plots/load_macrodata.py b/docs/source/plots/load_macrodata.py new file mode 100644 index 00000000000..624509ff42e --- /dev/null +++ b/docs/source/plots/load_macrodata.py @@ -0,0 +1,6 @@ +import statsmodels.api as sm +import pandas as pd +dta = sm.datasets.macrodata.load_pandas().data +dates = sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3') +index = pd.DatetimeIndex(dates) +dta.set_index(index, inplace=True) diff --git a/docs/source/plots/var_plots.py b/docs/source/plots/var_plots.py index 55d783b5072..db77a6b42ef 100644 --- a/docs/source/plots/var_plots.py +++ b/docs/source/plots/var_plots.py @@ -9,7 +9,7 @@ mdata = ds.macrodata.load_pandas().data # prepare the dates index -dates = mdata[['year', 'quarter']].astype(int).astype(str) +dates = mdata[['year', 'quarter']].astype(int).astype('S4') quarterly = dates["year"] + "Q" + dates["quarter"] quarterly = dates_from_str(quarterly) diff --git a/docs/source/regression.rst b/docs/source/regression.rst index d31fc3e99d7..77a2648556d 100644 --- a/docs/source/regression.rst +++ b/docs/source/regression.rst @@ -35,9 +35,9 @@ Detailed examples can be found here: .. toctree:: :maxdepth: 1 - examples/generated/example_ols - examples/generated/example_wls - examples/generated/example_gls + examples/notebooks/generated/ols + examples/notebooks/generated/wls + examples/notebooks/generated/gls Technical Documentation ----------------------- diff --git a/docs/source/related.rst b/docs/source/related.rst index c02acbcd09a..1234cc2db22 100644 --- a/docs/source/related.rst +++ b/docs/source/related.rst @@ -22,7 +22,7 @@ Data Handling Pandas ^^^^^^ -http://pypi.python.org/pypi/pandas +https://pypi.python.org/pypi/pandas "This project aims to provide the following * A set of fast NumPy-based data structures optimized for panel, time series, @@ -51,7 +51,7 @@ class. Tabular ^^^^^^^ -http://pypi.python.org/pypi/tabular +https://pypi.python.org/pypi/tabular "Tabular data container and associated convenience routines in Python @@ -78,7 +78,7 @@ arrays. La ^^ -http://pypi.python.org/pypi/la +https://pypi.python.org/pypi/la "Label the rows, columns, any dimension, of your NumPy arrays. @@ -106,7 +106,7 @@ Data Analysis Pymc ^^^^ -http://pypi.python.org/pypi/pymc +https://pypi.python.org/pypi/pymc "Bayesian estimation, particularly using Markov chain Monte Carlo (MCMC), is an increasingly relevant approach to statistical estimation. @@ -126,7 +126,7 @@ far the most mature project in this group including statsmodels. Scikits.talkbox ^^^^^^^^^^^^^^^ -http://pypi.python.org/pypi/scikits.talkbox +https://pypi.python.org/pypi/scikits.talkbox Talkbox is set of python modules for speech/signal processing. The goal of this toolbox is to be a sandbox for features which may end up in scipy at some @@ -146,7 +146,7 @@ AR coefficients. Nitime ^^^^^^ -http://github.com/fperez/nitime +https://github.com/fperez/nitime "Nitime is a library for time-series analysis of data from neuroscience experiments. @@ -169,7 +169,7 @@ time series. KF - Kalman Filter ^^^^^^^^^^^^^^^^^^ -http://pypi.python.org/pypi/KF +https://pypi.python.org/pypi/KF "This project was started to test different avaiable tools to track mutual funds and hedge fund using Capital Asset Pricing Model (CAPM thereafter) @@ -188,6 +188,13 @@ and allows for equality and inequality constraints in the estimation. Includes its own time series class, and the estimation seems (?) to depend on it. +scikit-learn +^^^^^^^^^^^^ +Simple and efficient tools for data mining and data analysis. Accessible to +everybody, and reusable in various contexts. Built on NumPy, SciPy, and +matplotlib +http://scikit-learn.org/stable/ +License: BSD Domain-specific Data Analysis @@ -202,7 +209,7 @@ Pymvpa PyMVPA is a Python module intended to ease pattern classification analyses of large datasets -http://pymvpa.org/ +http://www.pymvpa.org/ License: MIT Nipy @@ -242,13 +249,8 @@ Other packages There exists a large number of machine learning packages in python, many of them with a well established code base. Unfortunately, none of the packages with a wider coverage of algorithms has a scipy compatible license. -A listing can be found at http://mloss.org/software/language/python/ -scikits.learn includes several machine learning algorithms and is currently -undergoing a cleanup and enhancement http://pypi.python.org/pypi/scikits.learn/0.1 . - -Other packages are available that provide additional functionality, -especially openopt which offers additional optimization routines compared to -the ones in scipy. - - +A listing can be found at http://mloss.org/software/language/python/. Other +packages are available that provide additional functionality, especially +openopt which offers additional optimization routines compared to the ones +in scipy. diff --git a/docs/source/release/version0.5.rst b/docs/source/release/version0.5.rst index c4831ebe5b5..45bc33cdf40 100644 --- a/docs/source/release/version0.5.rst +++ b/docs/source/release/version0.5.rst @@ -14,7 +14,7 @@ The following major new features appear in this version. Support for Model Formulas via Patsy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Statsmodels now supports fitting models with a formula. This functionality is provided by `patsy `_. Patsy is now a dependency for statsmodels. Models can be individually imported from the ``statsmodels.formula.api`` namespace or you can import them all as:: +Statsmodels now supports fitting models with a formula. This functionality is provided by `patsy `_. Patsy is now a dependency for statsmodels. Models can be individually imported from the ``statsmodels.formula.api`` namespace or you can import them all as:: import statsmodels.formula.api as smf diff --git a/docs/source/release/version0.6.rst b/docs/source/release/version0.6.rst new file mode 100644 index 00000000000..2e3d3fa095a --- /dev/null +++ b/docs/source/release/version0.6.rst @@ -0,0 +1,192 @@ +:orphan: + +=========== +0.6 Release +=========== + +Release 0.6.0 +============= + +Release summary. + +Major changes: + +Addition of Generalized Estimating Equations GEE + +Generalized Estimating Equations +-------------------------------- + +Generalized Estimating Equations (GEE) provide an approach to handling +dependent data in a regression analysis. Dependent data arise +commonly in practice, such as in a longitudinal study where repeated +observations are collected on subjects. GEE can be viewed as an +extension of the generalized linear modeling (GLM) framework to the +dependent data setting. The familiar GLM families such as the +Gaussian, Poisson, and logistic families can be used to accommodate +dependent variables with various distributions. + +Here is an example of GEE Poisson regression in a data set with four +count-type repeated measures per subject, and three explanatory +covariates. + +.. code-block:: python + + import numpy as np + import pandas as pd + from statsmodels.genmod.generalized_estimating_equations import GEE + from statsmodels.genmod.dependence_structures import Independence + from statsmodels.genmod.families import Poisson + + data_url = "http://vincentarelbundock.github.io/Rdatasets/csv/MASS/epil.csv" + data = pd.read_csv(data_url) + + fam = Poisson() + ind = Independence() + md = GEE.from_formula("y ~ age + trt + base", "subject", data, + covstruct=ind, family=fam) + mdf = md.fit() + print mdf.summary() + + +The dependence structure in a GEE is treated as a nuisance parameter +and is modeled in terms of a "working dependence structure". The +statsmodels GEE implementation currently includes five working +dependence structures (independent, exchangeable, autoregressive, +nested, and a global odds ratio for working with categorical data). +Since the GEE estimates are not maximum likelihood estimates, +alternative approaches to some common inference procedures have been +developed. The statsmodels GEE implementation currently provides +standard errors, Wald tests, score tests for arbitrary parameter +contrasts, and estimates and tests for marginal effects. Several +forms of standard errors are provided, including robust standard +errors that are approximately correct even if the working dependence +structure is misspecified. + + +Seasonality Plots +----------------- + +Adding functionality to look at seasonality in plots. Two new functions are :func:`sm.graphics.tsa.month_plot` and :func:`sm.graphics.tsa.quarter_plot`. Another function :func:`sm.graphics.tsa.seasonal_plot` is available for power users. + +.. code-block:: python + + import statsmodels.api as sm + import pandas as pd + + dta = sm.datasets.elnino.load_pandas().data + dta['YEAR'] = dta.YEAR.astype(int).astype(str) + dta = dta.set_index('YEAR').T.unstack() + dates = map(lambda x : pd.datetools.parse('1 '+' '.join(x)), + dta.index.values) + + dta.index = pd.DatetimeIndex(dates, freq='M') + fig = sm.tsa.graphics.month_plot(dta) + +.. currentmodule:: statsmodels.tsa + +Seasonal Decomposition +---------------------- + +We added a naive seasonal decomposition tool in the same vein as R's ``decompose``. This function can be found as :func:`sm.tsa.seasonal_decompose `. + + +.. code-block:: python + + import statsmodels.api as sm + + dta = sm.datasets.co2.load_pandas().data + # deal with missing values. see issue + dta.co2.interpolate(inplace=True) + + res = sm.tsa.seasonal_decompose(dta.co2) + res.plot() + + +Addition of Linear Mixed Effects Models (MixedLM) + +Linear Mixed Effects Models +--------------------------- + +Linear Mixed Effects models are used for regression analyses involving +dependent data. Such data arise when working with longitudinal and +other study designs in which multiple observations are made on each +subject. Two specific mixed effects models are "random intercepts +models", where all responses in a single group are additively shifted +by a value that is specific to the group, and "random slopes models", +where the values follow a mean trajectory that is linear in observed +covariates, with both the slopes and intercept being specific to the +group. The Statsmodels MixedLM implementation allows arbitrary random +effects design matrices to be specified for the groups, so these and +other types of random effects models can all be fit. + +Here is an example of fitting a random intercepts model to data from a +longitudinal study: + +data = pd.read_csv("http://vincentarelbundock.github.io/Rdatasets/csv/geepack/dietox.csv") +md = MixedLM.from_formula("Weight ~ Time", data, groups=data["Pig"]) +mdf = md.fit() +print mdf.summary() + +To extend this to a random slopes model, we would add the statement +`md.set_random("Time", data)` before calling the `fit` method. + +The Statsmodels LME framework currently supports post-estimation +inference via Wald tests and confidence intervals on the coefficients, +profile likelihood analysis, likelihood ratio testing, and AIC. Some +limitations of the current implementation are that it does not support +structure more complex on the residual errors (they are always +homoscedastic), and it does not support crossed random effects. We +hope to implement these features for the next release. + + +Other important new features +---------------------------- + +* The Kalman filter Cython code underlying AR(I)MA estimation has been substantially optimized. You can expect speed-ups of one to two orders of magnitude. + +* Added :func:`sm.tsa.arma_order_select_ic`. A convenience function to quickly get the information criteria for use in tentative order selection of ARMA processes. + +* Plotting functions for timeseries is now imported under the ``sm.tsa.graphics`` namespace in addition to ``sm.graphics.tsa``. + +* **New datasets**: Added new :ref:`datasets ` for examples. ``sm.datasets.co2`` is a univariate time-series dataset of weekly co2 readings. It exhibits a trend and seasonality and has missing values. + +* Added robust skewness and kurtosis estimators in :func:`sm.stats.stattools.robust_skewness` and :func:`sm.stats.stattools.robust_kurtosis`, respectively. An alternative robust measure of skewness has been added in :func:`sm.stats.stattools.medcouple`. + +* New functions added to correlation tools: `corr_nearest_factor` + finds the closest factor-structured correlation matrix to a given + square matrix in the Frobenius norm; `corr_thresholded` efficiently + constructs a hard-thresholded correlation matrix using sparse matrix + operations. + +* New `dot_plot` in graphics: A dotplot is a way to visualize a small dataset + in a way that immediately conveys the identity of every point in the plot. + Dotplots are commonly seen in meta-analyses, where they are known + as "forest plots", but can be used in many other settings as well. + Most tables that appear in research papers can be represented + graphically as a dotplot. + + +Major Bugs fixed +---------------- + +* Bullet list of major bugs +* With a link to its github issue. +* Use the syntax ``:ghissue:`###```. + +.. currentmodule:: statsmodels.tsa + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* RegressionResults.norm_resid is now a readonly property, rather than a function. +* The function ``statsmodels.tsa.filters.arfilter`` has been removed. This did not compute a recursive AR filter but was instead a convolution filter. Two new functions have been added with clearer names :func:`sm.tsa.filters.recursive_filter ` and :func:`sm.tsa.filters.convolution_filter `. + +Development summary and credits +------------------------------- + +A blurb about the number of changes and the contributors list. + +.. note:: + + Obtained by running ``git log v0.5.0..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``. + diff --git a/docs/source/rlm.rst b/docs/source/rlm.rst index 401c5d0540c..f72d110f9a4 100644 --- a/docs/source/rlm.rst +++ b/docs/source/rlm.rst @@ -30,7 +30,8 @@ Detailed examples can be found here: .. toctree:: :maxdepth: 1 - examples/generated/example_rlm + examples/notebooks/generated/robust_models_0 + examples/notebooks/generated/robust_models_1 Technical Documentation ----------------------- diff --git a/docs/source/tsa.rst b/docs/source/tsa.rst index fc44740ea78..be9153f57f1 100644 --- a/docs/source/tsa.rst +++ b/docs/source/tsa.rst @@ -74,6 +74,7 @@ Descriptive Statistics and Tests stattools.q_stat stattools.grangercausalitytests stattools.levinson_durbin + stattools.arma_order_select_ic Estimation """""""""" @@ -117,7 +118,7 @@ Vector Autogressive Processes (VAR) vector_ar.var_model.VARResults vector_ar.dynamic.DynamicVAR -.. seealso:: :ref:`VAR documentation ` +.. seealso:: tutorial :ref:`VAR documentation ` .. currentmodule:: statsmodels.tsa @@ -137,7 +138,7 @@ estimation are available for vector autoregressive processes. vector_ar.var_model.FEVD vector_ar.dynamic.DynamicVAR -.. seealso:: :ref:`VAR documentation ` +.. seealso:: tutorial :ref:`VAR documentation ` ARMA Process """""""""""" @@ -174,17 +175,18 @@ process for given lag-polynomials. .. currentmodule:: statsmodels.tsa -Other Time Series Filters -""""""""""""""""""""""""" +Time Series Filters +""""""""""""""""""" .. autosummary:: :toctree: generated/ - filters.bkfilter - filters.hpfilter - filters.arfilter - filters.cffilter - filters.miso_lfilter + filters.bk_filter.bkfilter + filters.hp_filter.hpfilter + filters.cf_filter.cffilter + filters.filtertools.convolution_filter + filters.filtertools.recursive_filter + filters.filtertools.miso_lfilter filters.filtertools.fftconvolve3 filters.filtertools.fftconvolveinv diff --git a/docs/source/vector_ar.rst b/docs/source/vector_ar.rst index de7b1be6a51..65dc1d25805 100644 --- a/docs/source/vector_ar.rst +++ b/docs/source/vector_ar.rst @@ -24,7 +24,7 @@ and their lagged values is the *vector autoregression process*: where :math:`A_i` is a :math:`K \times K` coefficient matrix. We follow in large part the methods and notation of `Lutkepohl (2005) -`__, +`__, which we will not develop here. Model fitting @@ -211,7 +211,7 @@ to specify the "initial value" for the forecast: :: >>> lag_order = results.k_ar - >>> results.forecast(data.values[-lagorder:], 5) + >>> results.forecast(data.values[-lag_order:], 5) array([[ 0.00616044, 0.00500006, 0.00916198], [ 0.00427559, 0.00344836, -0.00238478], [ 0.00416634, 0.0070728 , -0.01193629], @@ -375,7 +375,7 @@ Dynamic Vector Autoregressions .. note:: - To use this functionality, `pandas `__ + To use this functionality, `pandas `__ must be installed. See the `pandas documentation `__ for more information on the below data structures. diff --git a/docs/themes/statsmodels/indexsidebar.html b/docs/themes/statsmodels/indexsidebar.html index 2d03f5bf63a..fd2ed37424b 100644 --- a/docs/themes/statsmodels/indexsidebar.html +++ b/docs/themes/statsmodels/indexsidebar.html @@ -21,7 +21,7 @@

Participate

- Grab the souce from Github. + Grab the source from Github. Report bugs to the Issue Tracker. Have a look at our Developer and Get Involved Pages.

diff --git a/docs/themes/statsmodels/layout.html b/docs/themes/statsmodels/layout.html index a53eb03a0cb..90069d37903 100644 --- a/docs/themes/statsmodels/layout.html +++ b/docs/themes/statsmodels/layout.html @@ -7,6 +7,7 @@ {% extends "basic/layout.html" %} {% block extrahead %} + """) diff --git a/tools/update_web.py b/tools/update_web.py index 48275eb3d50..c52c2436b9f 100755 --- a/tools/update_web.py +++ b/tools/update_web.py @@ -9,30 +9,61 @@ Depends ------- virtualenv + +Notes +----- +If you set it up as an anacron job, you should do it as a user, so that it +has access to your ssh keys. """ +import traceback import base64 import subprocess import os -import shutil import re +import shutil import smtplib import sys +from urllib2 import urlopen from email.MIMEText import MIMEText +import logging +logging.basicConfig(filename='/home/skipper/statsmodels/statsmodels/tools/' + 'docs_build_config.log', level=logging.DEBUG, + format="%(asctime)s %(message)s") +sys.stdout = open('/home/skipper/statsmodels/statsmodels/tools/crontab.out', + 'w') +sys.stderr = open('/home/skipper/statsmodels/statsmodels/tools/crontab.err', + 'w') + +# Environment for subprocess calls. Needed for cron execution +env = {'MATPLOTLIBRC' : ('/home/skipper/statsmodels/statsmodels/tools/'), + 'HOME' : '/home/skipper', + 'PATH' : ':'.join((os.getenv('PATH', ''), '/home/skipper/.local/bin')), + # Need this for my openblas setup on my laptop + # maybe no longer necessary with newer numpy + 'LD_LIBRARY_PATH' : os.getenv('LD_LIBRARY_PATH', '')} + ######### INITIAL SETUP ########## #hard-coded "current working directory" ie., you will need file permissions #for this folder -script = os.path.abspath(sys.argv[0]) +# follow symbolic links +script = os.path.realpath(sys.argv[0]) dname = os.path.abspath(os.path.dirname(script)) gname = 'statsmodels' gitdname = os.path.join(dname, gname) os.chdir(dname) +logging.debug('script: {}'.format(script)) +logging.debug('dname: {}'.format(dname)) + +# sourceforge account for rsync +sf_account = 'jseabold,statsmodels@web.sourceforge.net' + # hard-coded git branch names repo = 'git://github.com/statsmodels/statsmodels.git' stable_trunk = 'master' -last_release = 'v0.4.3' +last_release = 'v0.5.0' branches = [stable_trunk] # change last_release above and uncomment the below to update for a release #branches = [stable_trunk, last_release] @@ -41,8 +72,7 @@ virtual_dir = 'BUILDENV' virtual_dir = os.path.join(dname, virtual_dir) # this points to the newly installed python in the virtualenv -virtual_python = os.path.join(virtual_dir,'bin','python') - +virtual_python = os.path.join(virtual_dir, 'bin', 'python') # my security holes with open('/home/skipper/statsmodels/gmail.txt') as f: @@ -50,11 +80,11 @@ gmail_pwd = base64.b64decode(pwd) ########### EMAIL ############# -email_name ='statsmodels.dev' + 'AT' + 'gmail' +'.com' -email_name = email_name.replace('AT','@') -gmail_pwd= gmail_pwd -to_email = [email_name, ('josef.pktd' + 'AT' + 'gmail' + '.com').replace('AT', - '@')] +email_name = 'statsmodels.dev' + 'AT' + 'gmail' + '.com' +email_name = email_name.replace('AT', '@') +gmail_pwd = gmail_pwd +to_email = [email_name, + ('josef.pktd' + 'AT' + 'gmail' + '.com').replace('AT', '@')] #to_email = [email_name] @@ -64,8 +94,9 @@ def create_virtualenv(): # make a virtualenv for installation if it doesn't exist # and easy_install sphinx if not os.path.exists(virtual_dir): - retcode = subprocess.call(['/usr/local/bin/virtualenv', - "--system-site-packages", virtual_dir]) + retcode = subprocess.call(['/home/skipper/.local/bin/virtualenv', + "--system-site-packages", virtual_dir], + stderr=sys.stderr, stdout=sys.stdout) if retcode != 0: msg = """There was a problem creating the virtualenv""" raise Exception(msg) @@ -74,28 +105,64 @@ def create_virtualenv(): msg = """There was a problem installing sphinx""" raise Exception(msg) + def create_update_gitdir(): """ - Creates a directory for local repo if it doesn't exist, updates repo otherwise. + Creates a directory for local repo if it doesn't exist, + updates repo otherwise. """ if not os.path.exists(gitdname): - retcode = subprocess.call('git clone '+repo, shell=True) + retcode = subprocess.call('git clone '+repo, shell=True, + stdout=sys.stdout, stderr=sys.stderr) if retcode != 0: msg = """There was a problem cloning the repo""" raise Exception(msg) - else: # directory exists, can't pull if you're not on a branch - # just delete it and clone again. Lazy but clean solution. + else: # directory exists, can't pull if you're not on a branch + # just delete it and clone again. Lazy but clean solution. shutil.rmtree(gitdname) create_update_gitdir() + +def check_version(branch, latest_hash=None): + if branch == 'master': + remote_dir = 'devel' + regex = ("(?<=This documentation is for version \d{1}\.\d{1}\." + "\d{1}\.dev-)(\w{7})") + else: + remote_dir = 'stable' + regex = ("(?<=This documentation is for the )(\d{1}\.\d{1}\.\d{1})" + "(?= release.)") + base_url = 'http://statsmodels.sourceforge.net/{}' + page = urlopen(base_url.format(remote_dir)).read() + + try: + version = re.search(regex, page).group() + except AttributeError: + return True + + if remote_dir == 'stable': + if last_release[1:] == version: + return False + else: + return True + + # get the lastest hash + if latest_hash == version: + return False + else: + return True + + def getdirs(): """ Get current directories of cwd in order to restore to this """ - dirs = [i for i in os.listdir(dname) if not \ - os.path.isfile(os.path.join(dname, i))] + dirs = [i for i in os.listdir(dname)] + dirs = filter(lambda x : not os.path.isfile(os.path.join(dname, x)), + dirs) return dirs + def newdir(dirs): """ Returns difference in directories between dirs and current directories @@ -103,23 +170,24 @@ def newdir(dirs): If the difference is greater than one directory it raises an error. """ dirs = set(dirs) - newdirs = set([i for i in os.listdir(dname) if not \ - os.path.isfile(os.path.join(dname,i))]) + newdirs = set([i for i in os.listdir(dname) if not + os.path.isfile(os.path.join(dname, i))]) newdir = newdirs.difference(dirs) if len(newdir) != 1: - msg = """There was more than one directory created. Don't know what to delete.""" + msg = ("There was more than one directory created. Don't know what " + "to delete.") raise Exception(msg) newdir = newdir.pop() return newdir + def install_branch(branch): """ Installs the branch in a virtualenv. """ - # if it's already in the virtualenv, remove it - ver = '.'.join(map(str,(sys.version_info.major,sys.version_info.minor))) - sitepack = os.path.join(virtual_dir, 'lib','python'+ver, 'site-packages') + ver = '.'.join(map(str, (sys.version_info.major, sys.version_info.minor))) + sitepack = os.path.join(virtual_dir, 'lib', 'python'+ver, 'site-packages') if os.path.exists(sitepack): dir_list = os.listdir(sitepack) else: @@ -130,40 +198,57 @@ def install_branch(branch): # checkout the branch os.chdir(gitdname) - retcode = subprocess.call('git checkout ' + branch, shell=True) + retcode = subprocess.call('git checkout ' + branch, shell=True, + stdout=sys.stdout, stderr=sys.stderr) if retcode != 0: msg = """Could not checkout out branch %s""" % branch raise Exception(msg) + p = subprocess.Popen('git rev-parse HEAD ', shell=True, + stdout=subprocess.PIPE, stderr=sys.stderr) + version = p.communicate()[0][:7] + # build and install retcode = subprocess.call(" ".join([virtual_python, 'setup.py', 'build']), - shell=True) + shell=True, stdout=sys.stdout, stderr=sys.stderr) if retcode != 0: - msg = """ Could not build branch %s""" % branch + msg = """Could not build branch %s""" % branch raise Exception(msg) retcode = subprocess.call(" ".join([virtual_python, os.path.join(gitdname, - 'setup.py'), 'install']), shell=True) + 'setup.py'), 'install']), shell=True, + stdout=sys.stdout, stderr=sys.stderr) if retcode != 0: os.chdir(dname) msg = """Could not install branch %s""" % branch raise Exception(msg) os.chdir(dname) + return version + + +def print_info(): + subprocess.Popen([virtual_python, os.path.join(gitdname, + "statsmodels", + "tools", + "print_version.py" + )], + stdout=sys.stdout, stderr=sys.stderr) + def build_docs(branch): """ Changes into gitdname and builds the docs using BUILDENV virtualenv """ os.chdir(os.path.join(gitdname, 'docs')) - sphinx_dir = os.path.join(virtual_dir,'bin') - retcode = subprocess.call("make clean", shell=True) + retcode = subprocess.call("make clean", shell=True, + stdout=sys.stdout, stderr=sys.stderr) if retcode != 0: os.chdir(dname) msg = """Could not clean the html docs for branch %s""" % branch raise Exception(msg) #NOTE: The python call in the below makes sure that it uses the Python # that is referenced after entering the virtualenv - sphinx_call = " ".join(['make','html', - "SPHINXBUILD=' python /usr/local/bin/sphinx-build'"]) + sphinx_call = " ".join(['make', 'html', "SPHINXBUILD=' python " + "/usr/local/bin/sphinx-build'"]) activate = os.path.join(virtual_dir, "bin", "activate") activate_virtualenv = ". " + activate #NOTE: You have to enter virtualenv in the same call. As soon as the @@ -171,45 +256,49 @@ def build_docs(branch): # getting the correct env from bin/activate and passing to env is # annoying retcode = subprocess.call(" && ".join([activate_virtualenv, sphinx_call]), - shell=True, - env = {'MATPLOTLIBRC' : # put this in the environment to use local rc - '/home/skipper/statsmodels/statsmodels/tools/'}) + shell=True, env=env, stdout=sys.stdout, + stderr=sys.stderr) + if retcode != 0: os.chdir(dname) msg = """Could not build the html docs for branch %s""" % branch raise Exception(msg) os.chdir(dname) + def build_pdf(branch): """ Changes into new_branch_dir and builds the docs using sphinx in the BUILDENV virtualenv """ - os.chdir(os.path.join(gitdname,'statsmodels','docs')) - sphinx_dir = os.path.join(virtual_dir,'bin') - retcode = subprocess.call(" ".join(['make','latexpdf', - 'SPHINXBUILD='+sphinx_dir+'/sphinx-build']), shell=True) + os.chdir(os.path.join(gitdname, 'statsmodels', 'docs')) + sphinx_dir = os.path.join(virtual_dir, 'bin') + retcode = subprocess.call(" ".join(['make', 'latexpdf', + 'SPHINXBUILD='+sphinx_dir+'/sphinx-build']), + shell=True) if retcode != 0: - os.chdir(old_cwd) msg = """Could not build the pdf docs for branch %s""" % branch raise Exception(msg) os.chdir(dname) + def upload_docs(branch): if branch == 'master': remote_dir = 'devel' else: remote_dir = 'stable' - # old_cwd = os.getcwd() os.chdir(os.path.join(gitdname, 'docs')) - retcode = subprocess.call(['rsync', '-avPr' ,'-e ssh', 'build/html/', - 'jseabold,statsmodels@web.sourceforge.net:htdocs/'+remote_dir]) + retcode = subprocess.call(['rsync', '-avPrzh', '--inplace', '-e ssh', + 'build/html/', sf_account + ':htdocs/' + + remote_dir], + stderr=sys.stderr, stdout=sys.stdout) if retcode != 0: - os.chdir(old_cwd) - msg = """Could not upload html to %s for branch %s""" % (remote_dir, branch) + msg = """Could not upload html to %s for branch %s""" % (remote_dir, + branch) raise Exception(msg) os.chdir(dname) + #TODO: upload pdf is not tested def upload_pdf(branch): if branch == 'master': @@ -218,15 +307,15 @@ def upload_pdf(branch): remote_dir = 'stable' os.chdir(os.path.join(dname, new_branch_dir, 'statsmodels','docs')) retcode = subprocess.call(['rsync', '-avPr', '-e ssh', - 'build/latex/statsmodels.pdf', - 'jseabold,statsmodels@web.sourceforge.net:htdocs/'+remote_dir+'pdf/']) + 'build/latex/statsmodels.pdf', + sf_account + ':htdocs/' + remote_dir + 'pdf/']) if retcode != 0: - os.chdir(old_cwd) - msg = """Could not upload pdf to %s for branch %s""" % (remote_dir+'/pdf', - branch) + msg = ("Could not upload pdf to %s for branch %s" % + (remote_dir+'/pdf', branch)) raise Exception(msg) os.chdir(dname) + def email_me(status='ok'): if status == 'ok': message = """ @@ -242,7 +331,7 @@ def email_me(status='ok'): msg['From'] = email_name msg['To'] = email_name - server = smtplib.SMTP('smtp.gmail.com',587) + server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.ehlo() @@ -260,15 +349,20 @@ def main(): try: create_virtualenv() create_update_gitdir() - install_branch(branch) - build_docs(branch) - upload_docs(branch) + version = install_branch(branch) + if check_version(branch, version): + print_info() + build_docs(branch) + upload_docs(branch) + else: + msg += ('Latest version already available for branch ' + '{}.\n'.format(branch)) # build_pdf(new_branch_dir) # upload_pdf(branch, new_branch_dir) - except Exception as status: - msg += str(status) + '\n' + except: + msg += traceback.format_exc() - if msg == '': # if it doesn't something went wrong and was caught above + if msg == '': # if it doesn't something went wrong and was caught above email_me() else: email_me(msg)