diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f380cae --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +_site +.sass-cache +.jekyll-metadata +.ruby-version diff --git a/404.html b/404.html new file mode 100644 index 0000000..c472b4e --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..be260ef --- /dev/null +++ b/Gemfile @@ -0,0 +1,34 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 3.8.5" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +# Using remote theme instead +# gem "just-the-docs" +gem "rake" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" + gem "jekyll-remote-theme" + gem "jekyll-seo-tag" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0" if Gem.win_platform? + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..c79e6bd --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,78 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.6.0) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.1.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.11.1) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.8.6) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-feed (0.12.1) + jekyll (>= 3.7, < 5.0) + jekyll-remote-theme (0.4.0) + addressable (~> 2.0) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (1.17.0) + liquid (4.0.3) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (3.1.1) + rake (12.3.3) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (3.8.0) + ruby_dep (1.5.0) + rubyzip (1.2.3) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 3.8.5) + jekyll-feed (~> 0.6) + jekyll-remote-theme + jekyll-seo-tag + rake + tzinfo-data + +BUNDLED WITH + 2.0.2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..4f7c77c --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# scikit-hep.github.io + +GitHub pages for the website of the Scikit-HEP project. + +To contain: + +- General info on the project. +- Documentation about the scikit-hep Python software package. + +## Developer info + +To build locally, install rbenv. Then: + +```bash +rbenv local 2.6.3 +bundle install +bundle exec jekyll serve +``` diff --git a/README.rst b/README.rst deleted file mode 100644 index c359e78..0000000 --- a/README.rst +++ /dev/null @@ -1,10 +0,0 @@ -******************** -scikit-hep.github.io -******************** - -GitHub pages for the website of the Scikit-HEP project. - -To contain: - -* General info on the project. -* Documentation about the scikit-hep Python software package. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..7560c8a --- /dev/null +++ b/_config.yml @@ -0,0 +1,39 @@ +title: Scikit-HEP +email: scikit-hep-admins@googlegroups.com +description: >- + The Scikit-HEP project is a community-driven and community-oriented + project with the aim of providing Particle Physics at large with an + ecosystem for data analysis in Python. The project started in Autumn + 2016 and is under active development. +baseurl: "/" +url: "https://scikit-hep.org" +github_username: scikit-hep + +# Build settings +markdown: kramdown +# Local: theme: "just-the-docs" +remote_theme: "pmarsceill/just-the-docs" +plugins: + - jekyll-feed + +# Theme settings + +# Enable or disable the site search +search_enabled: false + +# Aux links for the upper right navigation +aux_links: + "Scikit-HEP on GitHub": + - "//github.com/scikit-hep" + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_data/categories.yml b/_data/categories.yml new file mode 100644 index 0000000..ecd9e2c --- /dev/null +++ b/_data/categories.yml @@ -0,0 +1,22 @@ +- name: manipulation + title: Interoperability and data manipulation +- name: interface + title: Interface to HEP libraries +- name: event + title: Event processing +- name: particle + title: Particles and decays +- name: histogramming + title: Histogramming +- name: fitting + title: Fitting +- name: simulation + title: Simulation +- name: ml + title: Machine Learning +- name: visualization + title: Visualization +- name: units + title: Units and constants +- name: misc + title: Miscellaneous diff --git a/_data/projects/event/awkward-array.yml b/_data/projects/event/awkward-array.yml new file mode 100644 index 0000000..cb2636a --- /dev/null +++ b/_data/projects/event/awkward-array.yml @@ -0,0 +1,7 @@ +name: awkward-array +description: Manipulate arrays of complex data structures as easily as Numpy. +url: https://github.com/scikit-hep/awkward-array +readme: https://github.com/scikit-hep/awkward-array/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/fitting/iminuit.yml b/_data/projects/fitting/iminuit.yml new file mode 100644 index 0000000..58c7b0a --- /dev/null +++ b/_data/projects/fitting/iminuit.yml @@ -0,0 +1,7 @@ +name: iminuit +description: MINUIT from Python - Fitting like a boss. +url: https://github.com/scikit-hep/iminuit +readme: https://github.com/scikit-hep/iminuit/blob/master/README.rst +docs: https://iminuit.readthedocs.io/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/fitting/probfit.yml b/_data/projects/fitting/probfit.yml new file mode 100644 index 0000000..4dd2bf3 --- /dev/null +++ b/_data/projects/fitting/probfit.yml @@ -0,0 +1,7 @@ +name: probfit +description: Cost function builder. For fitting distributions. +url: https://github.com/scikit-hep/probfit +readme: https://github.com/scikit-hep/probfit/blob/master/README.rst +docs: https://probfit.readthedocs.io/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/histogramming/boost-histogram.yml b/_data/projects/histogramming/boost-histogram.yml new file mode 100644 index 0000000..ec8ea53 --- /dev/null +++ b/_data/projects/histogramming/boost-histogram.yml @@ -0,0 +1,7 @@ +name: boost-histogram +description: Python bindings for the C++14 Boost::Histogram library. +url: https://github.com/scikit-hep/boost-histogram +readme: https://github.com/scikit-hep/boost-histogram/blob/develop/README.md +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/histogramming/histbook.yml b/_data/projects/histogramming/histbook.yml new file mode 100644 index 0000000..43efb62 --- /dev/null +++ b/_data/projects/histogramming/histbook.yml @@ -0,0 +1,7 @@ +name: histbook +description: Versatile, high-performance histogram toolkit for Numpy. +url: https://github.com/scikit-hep/histbook +readme: https://github.com/scikit-hep/histbook/blob/master/README.rst +docs: https://histbook.readthedocs.io/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/interface/numpythia.yml b/_data/projects/interface/numpythia.yml new file mode 100644 index 0000000..1053505 --- /dev/null +++ b/_data/projects/interface/numpythia.yml @@ -0,0 +1,7 @@ +name: numpythia +description: Interface between Pythia and NumPy. +url: https://github.com/scikit-hep/numpythia +readme: https://github.com/scikit-hep/numpythia/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/interface/pyjet.yml b/_data/projects/interface/pyjet.yml new file mode 100644 index 0000000..70dcff1 --- /dev/null +++ b/_data/projects/interface/pyjet.yml @@ -0,0 +1,7 @@ +name: pyjet +description: Interface between FastJet and NumPy. +url: https://github.com/scikit-hep/pyjet +readme: https://github.com/scikit-hep/pyjet/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/manipulation/formulate.yml b/_data/projects/manipulation/formulate.yml new file mode 100644 index 0000000..e92d39f --- /dev/null +++ b/_data/projects/manipulation/formulate.yml @@ -0,0 +1,7 @@ +name: formulate +description: Easy conversions between different styles of expressions. +url: https://github.com/scikit-hep/formulate +readme: https://github.com/scikit-hep/formulate/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/manipulation/root-numpy.yml b/_data/projects/manipulation/root-numpy.yml new file mode 100644 index 0000000..0123d4c --- /dev/null +++ b/_data/projects/manipulation/root-numpy.yml @@ -0,0 +1,7 @@ +name: root\_numpy +description: Interface between ROOT and NumPy. +url: https://github.com/scikit-hep/root_numpy +readme: https://github.com/scikit-hep/root_numpy/blob/master/README.rst +docs: http://scikit-hep.org/root_numpy/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/manipulation/root-pandas.yml b/_data/projects/manipulation/root-pandas.yml new file mode 100644 index 0000000..c9cab4e --- /dev/null +++ b/_data/projects/manipulation/root-pandas.yml @@ -0,0 +1,7 @@ +name: root\_pandas +description: Module for conveniently loading/saving ROOT files as pandas DataFrames. +url: https://github.com/scikit-hep/root_pandas +readme: https://github.com/scikit-hep/root_pandas/blob/master/README.md +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/manipulation/uproot-methods.yml b/_data/projects/manipulation/uproot-methods.yml new file mode 100644 index 0000000..8db6afb --- /dev/null +++ b/_data/projects/manipulation/uproot-methods.yml @@ -0,0 +1,7 @@ +name: uproot-methods +description: Pythonic behaviours for non-I/O related ROOT classes. +url: https://github.com/scikit-hep/uproot-methods +readme: https://github.com/scikit-hep/uproot-methods/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/manipulation/uproot.yml b/_data/projects/manipulation/uproot.yml new file mode 100644 index 0000000..29dacf2 --- /dev/null +++ b/_data/projects/manipulation/uproot.yml @@ -0,0 +1,7 @@ +name: uproot +description: Minimalist ROOT I/O in pure Python and Numpy. +url: https://github.com/scikit-hep/uproot +readme: https://github.com/scikit-hep/uproot/blob/master/README.rst +docs: https://uproot.readthedocs.io/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/misc/scikit-hep-testdata.yml b/_data/projects/misc/scikit-hep-testdata.yml new file mode 100644 index 0000000..287f75d --- /dev/null +++ b/_data/projects/misc/scikit-hep-testdata.yml @@ -0,0 +1,7 @@ +name: scikit-hep-testdata +description: Common package to provide example files (e.g., ROOT) for testing and developing packages against. +url: https://github.com/scikit-hep/scikit-hep-testdata +readme: https://github.com/scikit-hep/scikit-hep-testdata/blob/master/README.md +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/misc/scikit-hep.yml b/_data/projects/misc/scikit-hep.yml new file mode 100644 index 0000000..a869a75 --- /dev/null +++ b/_data/projects/misc/scikit-hep.yml @@ -0,0 +1,7 @@ +name: scikit-hep +description: Toolset of interfaces and tools for Particle Physics. To become a metapackage. +url: https://github.com/scikit-hep/scikit-hep +readme: https://github.com/scikit-hep/scikit-hep/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/ml/NNDrone.yml b/_data/projects/ml/NNDrone.yml new file mode 100644 index 0000000..514fc2e --- /dev/null +++ b/_data/projects/ml/NNDrone.yml @@ -0,0 +1,7 @@ +name: NNDrone +description: Collection of tools and algorithms to enable conversion of HEP ML to mass usage model. +url: https://github.com/scikit-hep/NNDrone +readme: https://github.com/scikit-hep/NNDrone/blob/master/README.md +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/particle/DecayLanguage.yml b/_data/projects/particle/DecayLanguage.yml new file mode 100644 index 0000000..e0c7160 --- /dev/null +++ b/_data/projects/particle/DecayLanguage.yml @@ -0,0 +1,7 @@ +name: DecayLanguage +description: Describe and convert particle decays between digital representations. +url: https://github.com/scikit-hep/decaylanguage +readme: https://github.com/scikit-hep/decaylanguage/blob/master/README.md +docs: https://decaylanguage.readthedocs.io/ +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/particle/particle.yml b/_data/projects/particle/particle.yml new file mode 100644 index 0000000..bfd8313 --- /dev/null +++ b/_data/projects/particle/particle.yml @@ -0,0 +1,7 @@ +name: Particle +description: PDG particle data and identification codes. +url: https://github.com/scikit-hep/particle +readme: https://github.com/scikit-hep/particle/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/simulation/pyhepmc.yml b/_data/projects/simulation/pyhepmc.yml new file mode 100644 index 0000000..4791ddb --- /dev/null +++ b/_data/projects/simulation/pyhepmc.yml @@ -0,0 +1,7 @@ +name: pyhepmc +description: Next generation Python bindings for HepMC3. +url: https://github.com/scikit-hep/pyhepmc +readme: https://github.com/scikit-hep/pyhepmc/blob/master/README.md +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/units/hepunits.yml b/_data/projects/units/hepunits.yml new file mode 100644 index 0000000..7a7560d --- /dev/null +++ b/_data/projects/units/hepunits.yml @@ -0,0 +1,7 @@ +name: hepunits +description: Units and constants in the HEP system of units. +url: https://github.com/scikit-hep/hepunits +readme: https://github.com/scikit-hep/hepunits/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_data/projects/visualization/vegascope.yml b/_data/projects/visualization/vegascope.yml new file mode 100644 index 0000000..ee84e2d --- /dev/null +++ b/_data/projects/visualization/vegascope.yml @@ -0,0 +1,7 @@ +name: vegascope +description: View Vega/Vega-Lite plots in your web browser from local or remote Python processes. +url: https://github.com/scikit-hep/vegascope +readme: https://github.com/scikit-hep/vegascope/blob/master/README.rst +# docs: +# affiliated: set to true for affiliated packages +# repo: only if different from url diff --git a/_includes/nav.html b/_includes/nav.html new file mode 100644 index 0000000..b81b2e7 --- /dev/null +++ b/_includes/nav.html @@ -0,0 +1,42 @@ +Site logo + + diff --git a/_posts/2019-08-14-welcome-to-jekyll.markdown b/_posts/2019-08-14-welcome-to-jekyll.markdown new file mode 100644 index 0000000..3759989 --- /dev/null +++ b/_posts/2019-08-14-welcome-to-jekyll.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: 2019-08-14 13:42:02 -0400 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss new file mode 100644 index 0000000..acf9f5b --- /dev/null +++ b/_sass/custom/custom.scss @@ -0,0 +1 @@ +$link-color: #7092be; diff --git a/assets/images/logo.pdf b/assets/images/logo.pdf new file mode 100644 index 0000000..4f05fef Binary files /dev/null and b/assets/images/logo.pdf differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..a0f29f1 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/logo.svg b/assets/images/logo.svg new file mode 100644 index 0000000..f28ccc9 --- /dev/null +++ b/assets/images/logo.svg @@ -0,0 +1,188 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/logo_128.png b/assets/images/logo_128.png new file mode 100644 index 0000000..43cebca Binary files /dev/null and b/assets/images/logo_128.png differ diff --git a/assets/images/logo_plain.svg b/assets/images/logo_plain.svg new file mode 100644 index 0000000..7b595fe --- /dev/null +++ b/assets/images/logo_plain.svg @@ -0,0 +1,140 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/logo_belle2.png b/assets/images/projusers/logo_belle2.png similarity index 100% rename from images/logo_belle2.png rename to assets/images/projusers/logo_belle2.png diff --git a/images/logo_cms.gif b/assets/images/projusers/logo_cms.gif similarity index 100% rename from images/logo_cms.gif rename to assets/images/projusers/logo_cms.gif diff --git a/images/logo_coffea.jpg b/assets/images/projusers/logo_coffea.jpg similarity index 100% rename from images/logo_coffea.jpg rename to assets/images/projusers/logo_coffea.jpg diff --git a/images/logo_flavio.png b/assets/images/projusers/logo_flavio.png similarity index 100% rename from images/logo_flavio.png rename to assets/images/projusers/logo_flavio.png diff --git a/assets/images/projusers/logo_flavio.svg b/assets/images/projusers/logo_flavio.svg new file mode 100644 index 0000000..abbcaca --- /dev/null +++ b/assets/images/projusers/logo_flavio.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/resources/dembinski-pygamma19-2019-03-21.pdf b/assets/resources/dembinski-pygamma19-2019-03-21.pdf new file mode 100644 index 0000000..0a98942 Binary files /dev/null and b/assets/resources/dembinski-pygamma19-2019-03-21.pdf differ diff --git a/assets/resources/rodrigues-lhcb-2017-04-06.pdf b/assets/resources/rodrigues-lhcb-2017-04-06.pdf new file mode 100644 index 0000000..e1e4520 Binary files /dev/null and b/assets/resources/rodrigues-lhcb-2017-04-06.pdf differ diff --git a/assets/resources/rodrigues-lhcb-2019-08-18.pdf b/assets/resources/rodrigues-lhcb-2019-08-18.pdf new file mode 100644 index 0000000..f87b436 Binary files /dev/null and b/assets/resources/rodrigues-lhcb-2019-08-18.pdf differ diff --git a/documentation.html b/documentation.html deleted file mode 100644 index 8a214cc..0000000 --- a/documentation.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - Documentation — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Documentation

-

Please refer to the documentation provided by the individual packages, -which are listed here. -The table below provides direct links … -Note that in some cases the README files are the actual documentation. -For certain packages where ReadTheDocs style of documentation is available, -the READMEs still contain handy “getting started” sections.

-
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PackageDocumentation
awkward-arrayREADME
boost-histogramREADME
DecayLanguageRead the Docs     README
formulateREADME
hepunitsREADME
histbookRead the Docs     README
iminuitRead the Docs     README
NNDroneREADME
numpythiaREADME
ParticleREADME
probfitRead the Docs     README
pyhepmcREADME
pyjetREADME
root_pandasREADME
root_numpyRead the Docs     README
scikit-hepRead the Docs style     README
scikit-hep-testdataREADME
uprootRead the Docs     README
uproot-methodsREADME
vegascopeREADME
-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/faq.html b/faq.html deleted file mode 100644 index 56e60d8..0000000 --- a/faq.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - FAQ — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

FAQ

-
-

What is the exact project name?

-

The project is called Scikit-HEP. Notice the upper-case “S” and “HEP”. -That is distinct from the package scikit-hep.

-
-
-

How to pronounce the project name?

-

Like “sy-kit happ”(y), forgetting about the “y” in “happy”. -Of course “sci” stands for science.

-
-
-

How to get started contributing?

-

You are most welcome and encouraged to get in touch via the resources -listed at Get in touch. -Please also refer to each package repository and browse through the -list of “issues” or files CONTRIBUTING for details on how to get involved.

-
-
-

Is there support for PyPy?

-

It’s a nice idea. Support for PyPy could be envisaged in the near future -but only once the scientific stack based on NumPy supports it. -This being said, certain package do support PyPy already.

-
-
-

Is there support for GPUs?

-

Support for GPU-oriented code is not foreseen as default but some of the packages -envisage it in the near- or medium-term future. -Please refer to the documentation of the various packages.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/genindex.html b/genindex.html deleted file mode 100644 index 1aa0761..0000000 --- a/genindex.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - Index — Scikit-HEP - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - -

Index

- -
- -
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/get-in-touch.html b/get-in-touch.html deleted file mode 100644 index 7734400..0000000 --- a/get-in-touch.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - Getting in touch — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Getting in touch

-
-

Mailing lists

-

Forum for general matters, announcements and discussions concerning the Scikit-HEP project : scikit-hep-forum@googlegroups.com. -Please go here to subscribe.

-

Mailing list to ping all admins at once: scikit-hep-admins@googlegroups.com. -Note that this list is private but anyone can send an email to it without sign-up.

-
-
-

Gitter

-

Gitter channel Scikit-HEP/community for informal exchanges.

-
-
-

On GitHub

-

You can also get in touch via the GitHub pages of the package of interest, e.g. asking a question.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 7cc2f50..0000000 --- a/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - Scikit-HEP project - welcome! — Scikit-HEP - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Scikit-HEP project - welcome!

-

The Scikit-HEP project is a community-driven and community-oriented project -with the aim of providing Particle Physics at large with an ecosystem for data analysis in Python. -The project started in Autumn 2016 and is under active development.

-

It is not just about providing core and common tools for the community. -It is also about improving the interoperability between HEP tools -and the scientific ecosystem in Python, -and about improving on discoverability of utility packages and projects.

-

For what concerns the project grand structure, it should be seen as a toolset rather than a toolkit. -The project defines a set of five pillars, which are seen to embrace -all major topics involved in a physicist’s work. These are:

-
-
    -
  • Datasets: data in various sources, such as ROOT, Numpy/Pandas, databases, wrapped in a common interface.
  • -
  • Aggregations: e.g. histograms that summarize or project a dataset.
  • -
  • Modeling: data models and fitting utilities.
  • -
  • Simulation: wrappers for Monte Carlo engines and other generators of simulated data.
  • -
  • Visualization: interface to graphics engines, from ROOT and Matplotlib to even beyond.
  • -
-
-
-

Toolset packages

-

To get started, have a look at our GitHub repository.

-

The list of presently available packages follows, together with a very short description of their goals:

-

Interoperability and data manipulation:

-
    -
  • uproot: minimalist ROOT I/O in pure Python and Numpy.
  • -
  • uproot-methods: Pythonic behaviours for non-I/O related ROOT classes.
  • -
  • root_numpy: interface between ROOT and NumPy.
  • -
  • root_pandas: module for conveniently loading/saving ROOT files as pandas DataFrames.
  • -
  • formulate: easy conversions between different styles of expressions.
  • -
-

Interface to HEP libraries:

-
    -
  • numpythia: interface between Pythia and NumPy.
  • -
  • pyjet: interface between FastJet and NumPy.
  • -
-

Event processing:

-
    -
  • awkward-array: manipulate arrays of complex data structures as easily as Numpy.
  • -
-

Particles and decays:

-
    -
  • Particle: PDG particle data and identification codes.
  • -
  • DecayLanguage: describe and convert particle decays between digital representations.
  • -
-

Histogramming:

-
    -
  • boost-histogram: Python bindings for the C++14 Boost::Histogram library.
  • -
  • aghast: aggregated, histogram-like statistics, sharable as Flatbuffers.
  • -
  • histbook: versatile, high-performance histogram toolkit for Numpy.
  • -
-

Fitting:

-
    -
  • iminuit: MINUIT from Python - Fitting like a boss.
  • -
  • probfit: Cost function builder. For fitting distributions.
  • -
-

Simulation:

-
    -
  • pyhepmc: next generation Python bindings for HepMC3.
  • -
-

Machine Learning:

-
    -
  • NNDrone: collection of tools and algorithms to enable conversion of HEP ML to mass usage model.
  • -
-

Visualization:

-
    -
  • vegascope: view Vega/Vega-Lite plots in your web browser from local or remote Python processes.
  • -
-

Units and constants:

-
    -
  • hepunits: units and constants in the HEP system of units.
  • -
-

Miscellaneous:

-
    -
  • scikit-hep: toolset of interfaces and tools for Particle Physics. To become a metapackage.
  • -
  • scikit-hep-testdata: common package to provide example files (e.g., ROOT) for testing and developing packages against.
  • -
-

In some cases, the packages have to do with bridging between different technologies and/or popular packages -from the Python scientific software stack.

-
-
-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/index.md b/index.md new file mode 100644 index 0000000..c0f7a4e --- /dev/null +++ b/index.md @@ -0,0 +1,59 @@ +--- +layout: home +title: Home +nav_order: 1 +--- + +Scikit-HEP project - welcome! +============================= + +The Scikit-HEP project is a community-driven and +community-oriented project with the aim of providing Particle Physics at +large with an ecosystem for data analysis in Python. The project started +in Autumn 2016 and is under active development. + +It is not just about providing core and common tools for the community. +It is also about improving the interoperability between HEP tools and +the scientific ecosystem in Python, and about improving on +discoverability of utility packages and projects. + +For what concerns the project grand structure, it should be seen as a +*toolset* rather than a *toolkit*. The project defines a set of five +*pillars*, which are seen to embrace all major topics involved in a +physicist\'s work. These are: + +- **Datasets**: data in various sources, such as ROOT, Numpy/Pandas, + databases, wrapped in a common interface. +- **Aggregations**: e.g. histograms that summarize or project a + dataset. +- **Modeling**: data models and fitting utilities. +- **Simulation**: wrappers for Monte Carlo engines and other + generators of simulated data. +- **Visualization**: interface to graphics engines, from ROOT and + Matplotlib to even beyond. + +Toolset packages {#index_toolset_packages} +---------------- + +To get started, have a look at our [GitHub repository][]. + + +The list of presently available packages follows, together with a very +short description of their goals: + +{% for cat in site.data.categories -%} +### {{cat.title}}: + +{% for item in site.data.projects[cat.name] -%} +{%- assign project = item[1] -%} +- [{{project.name}}]({{project.url}}): {{project.description}} +{% endfor %} + +{% endfor %} + +In some cases, the packages have to do with bridging between different +technologies and/or popular packages from the Python scientific software +stack. + +[GitHub repository]: https://github.com/scikit-hep/ + diff --git a/pages/documentation.md b/pages/documentation.md new file mode 100644 index 0000000..9149a8a --- /dev/null +++ b/pages/documentation.md @@ -0,0 +1,33 @@ +--- +layout: page +title: Documentation +permalink: /documentation +nav_order: 4 +--- + +Documentation +============= + +Please refer to the documentation provided by the individual packages. +The table below provides direct links \... Note that in +some cases the README files are the actual documentation. For certain +packages where ReadTheDocs style of documentation is available, the +READMEs still contain handy \"getting started\" sections. + + +| Package | README | Documentation | +|---------|--------|---------------| +{% for items in site.data.projects -%} +{% for item in items[1] %} +{%- assign project = item[1] -%} +{%- if project.docs -%} +{%- capture docs -%} [Read the Docs]({{project.docs}}) {%- endcapture -%} +{%- else -%} +{%- assign docs="" -%} +{%- endif -%} +| [{{project.name}}](project.url) | [README]({{project.readme}}) | {{docs}} | +{% endfor -%} +{%- endfor %} + + + diff --git a/pages/faq.md b/pages/faq.md new file mode 100644 index 0000000..fbe197b --- /dev/null +++ b/pages/faq.md @@ -0,0 +1,47 @@ +--- +layout: page +title: FAQ +permalink: /faq +nav_order: 2 +--- + + +FAQ +=== + +What is the exact project name? +------------------------------- + +The project is called Scikit-HEP. Notice the upper-case +\"S\" and \"HEP\". That is distinct from the package +scikit-hep. + +How to pronounce the project name? +---------------------------------- + +Like \"sy-kit happ\"(y), forgetting about the \"y\" in \"happy\". Of +course \"sci\" stands for science. + +How to get started contributing? +-------------------------------- + +You are most welcome and encouraged to get in touch via the resources +listed at [Getting in touch](getting-in-touch). +Please also refer to each package repository and browse through the list +of \"issues\" or files CONTRIBUTING for details on how to get involved. + +Is there support for PyPy? +-------------------------- + +It\'s a nice idea. Support for [PyPy](http://pypy.org/) could be +envisaged in the near future [but only once]{.title-ref} the scientific +stack based on [NumPy](http://www.numpy.org/) supports it. This being +said, certain package do support PyPy already. + +Is there support for GPUs? +-------------------------- + +Support for GPU-oriented code is not foreseen as default but some of the +packages envisage it in the near- or medium-term future. Please refer to +the documentation of the various packages. + diff --git a/pages/getting-in-touch.md b/pages/getting-in-touch.md new file mode 100644 index 0000000..da766b7 --- /dev/null +++ b/pages/getting-in-touch.md @@ -0,0 +1,38 @@ +--- +layout: page +title: Getting in touch +permalink: /getting-in-touch +nav_order: 3 +--- + +Getting in touch {#get_in_touch} +================ + +Mailing lists +------------- + +Forum for general matters, announcements and discussions concerning the +Scikit-HEP project : +[scikit-hep-forum@googlegroups.com](scikit-hep-forum@googlegroups.com). +Please go +[here](https://groups.google.com/forum/#!forum/scikit-hep-forum) to +subscribe. + +Mailing list to ping all admins at once: +[scikit-hep-admins@googlegroups.com](scikit-hep-admins@googlegroups.com). +Note that this list is private but anyone can send an email to it +without sign-up. + +Gitter +------ + +Gitter channel +[Scikit-HEP/community](https://gitter.im/Scikit-HEP/community) for +informal exchanges. + +On GitHub +--------- + +You can also get in touch via the GitHub pages of the package of +interest, e.g. asking a question. + diff --git a/pages/projusers.md b/pages/projusers.md new file mode 100644 index 0000000..d1df6c2 --- /dev/null +++ b/pages/projusers.md @@ -0,0 +1,66 @@ +--- +layout: page +title: Who uses Scikit-HEP? +permalink: /projusers +nav_order: 5 +--- + + +Who uses Scikit-HEP? {#project_users} +==================== + +This page tries to give an overview of who is using one or more packages +of the Scikit-HEP project. + +Experiment collaborations +------------------------- + +[![img-belle2]][BelleII] + +[BelleII](https://www.belle2.org/) - the Belle II experiment at KEK, +Japan. + +[BelleII]: https://www.belle2.org/ +[img-belle2]: {{ site.baseurl }}{% link /assets/images/projusers/logo_belle2.png %} +{: width="70px"} + +[![img-CMS]][CMS] + +[CMS](https://cms.cern/) - the Compact Muon Solenoid experiment at CERN, +Switzerland. + +[CMS]: https://cms.cern/ +[img-CMS]: {{ site.baseurl }}{% link /assets/images/projusers/logo_cms.gif %} +{: width="70px"} + +Phenomenology projects +---------------------- + +[![img-flavio]][flavio] + +[flavio](https://flav-io.github.io/) - flavour physics phenomenology in +the Standard Model and beyond. + +[flavio]: https://flav-io.github.io/ +[img-flavio]: {{ site.baseurl }}{% link /assets/images/projusers/logo_flavio.png %} +{: width="70px"} + +Software projects +----------------- + +[![img-coffea]][Coffea] + +[Coffea][] - a prototype [Analysis +System](http://iris-hep.org/as.html) incorporating Scikit-HEP packages +to provide a lightweight, scalable, portable, and user-friendly +interface for columnar analysis of HEP data. Some of the sub-packages of +Coffea may become Scikit-HEP packages as development continues. + +[Coffea]: https://github.com/CoffeaTeam +[img-coffea]: {{ site.baseurl }}{% link /assets/images/projusers/logo_coffea.jpg %} +{: width="70px"} + +The [zfit](https://zfit.github.io/zfit/) project - it provides a model +fitting library based on TensorFlow and optimised for simple and direct +manipulation of probability density functions. + diff --git a/pages/resources.md b/pages/resources.md new file mode 100644 index 0000000..5266d83 --- /dev/null +++ b/pages/resources.md @@ -0,0 +1,93 @@ +--- +layout: page +title: Miscellaneous resources +permalink: /resources +nav_order: 6 +--- + + + +Miscellaneous resources {#resources} +======================= + +A collection of presentations, videos and publications on, or related +to, the Scikit-HEP project. + +Proceedings and publications +---------------------------- + +- *The Scikit-HEP project*, Eduardo Rodrigues, proceedings of the + [CHEP 2018 Conference](http://chep2018.org/), Sofia, Bulgaria; + [arXiv:1905.00002 + \[physics.comp-ph\]](https://arxiv.org/abs/1905.00002) +- *Bayesian Block Histogramming for High Energy Physics*, Brian + Pollack, Saptaparna Bhattacharya, Michael Schmitt, [arXiv:1708.00810 + \[physics.data-an\]](https://arxiv.org/abs/1708.00810) + +Presentations +------------- + +- **18 June 2019:** [LHCb experiment](http://lhcb.cern.ch/) Week, + CERN: + - *Particles and decays in the Scikit-HEP project*, Eduardo + Rodrigues + \[[PDF]({{ site.baseurl }}{% link assets/resources/rodrigues-lhcb-2019-08-18.pdf %})\] +- **21 May 2019:** [Belle II](https://www.belle2.org/) experiment + [Analysis Software Developers\' + Meeting](https://indico.belle2.org/event/193/) + - *Particles and decays in the Scikit-HEP project*, Eduardo + Rodrigues, Henry Schreiner +- **13 May 2019:** [IRIS-HEP](https://iris-hep.org/) project [topical + meeting](https://indico.cern.ch/event/818864/): + - *Particles and decays in the Scikit-HEP project*, Eduardo + Rodrigues, Henry Schreiner +- **17 April 2019:** [IRIS-HEP](https://iris-hep.org/) project + [topical meeting](https://indico.cern.ch/event/808630/): + - *Awkward Array: Numba*, Jim Pivarski + - *Awkward Array: Pandas*, Michael Hedges +- **15 April 2019:** [IRIS-HEP](https://iris-hep.org/) project + [topical meeting](https://indico.cern.ch/event/803122/): + - *boost-histogram and hist*, Henry Schreiner + - *Aghast*, Jim Pivarski +- **21 March 2019:** [PyGamma19 + Workshop](https://indico.cern.ch/event/783425/), Heidelberg, + Germany: + - *Python in High-Energy Physics*, Hans Dembinski + \[[PDF]({{ site.baseurl }}{% link assets/resources/dembinski-pygamma19-2019-03-21.pdf %})\] +- **15 Oct. 2018:** [DIANA/HEP](http://www.diana-hep.org/) project + [topical meeting](https://indico.cern.ch/event/754335/): + - *I/O for uproot*, Pratyush Das +- **10 Sep. 2018:** [ROOT 2018 Users + Workshop](https://indico.cern.ch/event/697389/), Sarajevo , Bosnia + and Herzegovina: + - *Writing ROOT files with uproot*, Pratyush Das, Jim Pivarski +- **9 July 2018:** [CHEP 2018 Conference](http://chep2018.org/), + Sofia, Bulgaria: + - *The Scikit-HEP project*, Eduardo Rodrigues +- **7 July 2018:** [PyHEP 2018 + Workshop](https://indico.cern.ch/event/694818/), Sofia, Bulgaria: + - *The Scikit-HEP project*, Matthieu Marinangeli +- **28 Feb 2018:** [IML + Meeting](https://indico.cern.ch/event/686641/), CERN: + - *Uproot: rapidly moving data from ROOT to Numpy and Pandas*, Jim + Pivarski +- **23 Oct. 2017:** [DIANA/HEP](http://www.diana-hep.org/) project + [topical meeting](https://indico.cern.ch/event/664968/), CERN: + - *numpythia & pyjet - interfacing PYTHIA and FastJet with NumPy*, + Noel Dawe +- **11 Sep. 2017:** project status report, + [DIANA/HEP](http://www.diana-hep.org/) project [topical + meeting](https://indico.cern.ch/event/650630/), CERN: + - *Scikit-HEP project status*, Eduardo Rodrigues +- **6 April 2017:** presentation of the project to the LHCb + experiment, [LHCb experiment](http://lhcb.cern.ch/) Analysis & + Software Week, CERN: + - *The Scikit-HEP project*, Eduardo Rodrigues + \[[PDF]({{ site.baseurl }}{% link assets/resources/rodrigues-lhcb-2017-04-06.pdf %})\] +- **27 Feb. 2017:** first presentation of the project, + [DIANA/HEP](http://www.diana-hep.org/) project [topical + meeting](https://indico.cern.ch/event/596272/), CERN: + - *The Scikit-HEP project*, Eduardo Rodrigues + - *Ostap concepts in Scikit-HEP*, Vanya Belyaev + - *Rootpy and root\_numpy concepts in Scikit-HEP*, Noel Dawe + diff --git a/projusers.html b/projusers.html deleted file mode 100644 index 310f224..0000000 --- a/projusers.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - Who uses Scikit-HEP? — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Who uses Scikit-HEP?

-

This page tries to give an overview of who is using one or more packages -of the Scikit-HEP project.

-
-

Experiment collaborations

-images/logo_belle2.png -

BelleII - the Belle II experiment at KEK, Japan.

-images/logo_cms.gif -

CMS - the Compact Muon Solenoid experiment at CERN, Switzerland.

-
-
-

Phenomenology projects

-images/logo_flavio.png -

flavio - flavour physics phenomenology in the Standard Model and beyond.

-
-
-

Software projects

-images/logo_coffea.jpg -

Coffea - a prototype Analysis System -incorporating Scikit-HEP packages to provide a lightweight, scalable, portable, -and user-friendly interface for columnar analysis of HEP data. -Some of the sub-packages of Coffea may become Scikit-HEP packages as development continues.

-

The zfit project - it provides a model fitting library based on TensorFlow -and optimised for simple and direct manipulation of probability density functions.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/py-modindex.html b/py-modindex.html deleted file mode 100644 index b28b734..0000000 --- a/py-modindex.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - Python Module Index — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - -

Python Module Index

- -
- s -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
- s
- skhep -
    - skhep.dataset -
    - skhep.dataset.defs -
    - skhep.dataset.numpydataset -
    - skhep.dataset.rootdataset -
    - skhep.math -
    - skhep.math.geometry -
    - skhep.math.kinematics -
    - skhep.math.vectors -
    - skhep.modeling -
    - skhep.modeling.bayesian_blocks -
    - skhep.utils -
    - skhep.utils.decorators -
    - skhep.utils.dependencies -
    - skhep.utils.provenance -
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/resources.html b/resources.html deleted file mode 100644 index 0c3b2f2..0000000 --- a/resources.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - Miscellaneous resources — Scikit-HEP - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Miscellaneous resources

-

A collection of presentations, videos and publications -on, or related to, the Scikit-HEP project.

-
-

Proceedings

- -
-
-

Presentations

-
    -
  • 21 May 2019: Belle II experiment Analysis Software Developers’ Meeting
      -
    • Particles and decays in the Scikit-HEP project, Eduardo Rodrigues, Henry Schreiner
    • -
    -
  • -
  • 13 May 2019: IRIS-HEP project topical meeting:
      -
    • Particles and decays in the Scikit-HEP project, Eduardo Rodrigues, Henry Schreiner
    • -
    -
  • -
  • 17 April 2019: IRIS-HEP project topical meeting:
      -
    • Awkward Array: Numba, Jim Pivarski
    • -
    • Awkward Array: Pandas, Michael Hedges
    • -
    -
  • -
  • 15 April 2019: IRIS-HEP project topical meeting:
      -
    • boost-histogram and hist, Henry Schreiner
    • -
    • Aghast, Jim Pivarski
    • -
    -
  • -
  • 21 March 2019: PyGamma19 Workshop, Heidelberg, Germany:
      -
    • Python in High-Energy Physics, Hans Dembinski
    • -
    -
  • -
  • 15 Oct. 2018: DIANA/HEP project topical meeting:
      -
    • I/O for uproot, Pratyush Das
    • -
    -
  • -
  • 10 Sep. 2018: ROOT 2018 Users Workshop, Sarajevo , Bosnia and Herzegovina:
      -
    • Writing ROOT files with uproot, Pratyush Das, Jim Pivarski
    • -
    -
  • -
  • 9 July 2018: CHEP 2018 Conference, Sofia, Bulgaria:
      -
    • The Scikit-HEP project, Eduardo Rodrigues
    • -
    -
  • -
  • 7 July 2018: PyHEP 2018 Workshop, Sofia, Bulgaria:
      -
    • The Scikit-HEP project, Matthieu Marinangeli
    • -
    -
  • -
  • 28 Feb 2018: IML Meeting, CERN:
      -
    • Uproot: rapidly moving data from ROOT to Numpy and Pandas, Jim Pivarski
    • -
    -
  • -
  • 23 Oct. 2017: DIANA/HEP project topical meeting, CERN:
      -
    • numpythia & pyjet - interfacing PYTHIA and FastJet with NumPy, Noel Dawe
    • -
    -
  • -
  • 11 Sep. 2017: project status report, -DIANA/HEP project topical meeting, CERN:
      -
    • Scikit-HEP project status, Eduardo Rodrigues
    • -
    -
  • -
  • 6 April 2017: presentation of the project to the LHCb experiment, -LHCb experiment Analysis & Software Week, CERN:
      -
    • The Scikit-HEP project, Eduardo Rodrigues
    • -
    -
  • -
  • 27 Feb. 2017: first presentation of the project, -DIANA/HEP project topical meeting, CERN:
      -
    • The Scikit-HEP project, Eduardo Rodrigues
    • -
    • Ostap concepts in Scikit-HEP, Vanya Belyaev
    • -
    • Rootpy and root_numpy concepts in Scikit-HEP, Noel Dawe
    • -
    -
  • -
-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/api.html b/scikit-hep/api/api.html deleted file mode 100644 index 5391232..0000000 --- a/scikit-hep/api/api.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - API — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/dataset.html b/scikit-hep/api/dataset.html deleted file mode 100644 index 4cfcabb..0000000 --- a/scikit-hep/api/dataset.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - Description of datasets (skhep.dataset) — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Description of datasets (skhep.dataset)

-

Subpackage for the description of datasets.

- -
-

Module for NumpyDataset

-

The NumpyDataset class is the implementation of the Dataset abstract base class -for the [NumPy] package.

-

Note: usage of course requires that NumPy is installed.

-

References

- - - - - -
[NumPy]http://www.numpy.org/.
-
-
-class skhep.dataset.numpydataset.NumpyDataset(data, provenance=None, **options)
-
-
-copy()
-

Get a copy of the NumpyDataset.

-
- -
-
-datashape
-

Every dataset has a datashape, which describes its data types in a unified way.

-
- -
-
-dicttoarray()
-

Convert a dictionnary into a structured array. -If using Python3, byte keys are decoded into string.

-
- -
-
-static from_file(files, **options)
-

Load a dataset from a file or collection of files.

-

Recognizes zipped Numpy (.npz) format.

- --- - - - -
Parameters:
    -
  • files (a string file name (glob pattern), iterable of string file names, or an iterable of files open for reading (binary)) –
  • -
  • options – columns: a set of columns to select from the files.
  • -
-
-
- -
-
-immutable
-

If True, this dataset cannot be modified in place, only transformed.

-

Opposite of mutable.

-
- -
-
-keys()
-

Get the list of keys in the NumpyDataset (same as ‘variables’).

-
- -
-
-nentries
-

Get the number of entries in the NumpyDataset. Same as ‘nevents’

-
- -
-
-nevents
-

Get the number of events in the NumpyDataset.

-
- -
-
-persistent
-

If True, this dataset exists in a form that survives the Python session, such as a file or database.

-

If mutable, changes in this dataset are reflected in that persistent form.

-

Opposite of transient.

-
- -
-
-select(selection=None)
-

Apply a selection to the NumpyDataset.

- --- - - - - - - - -
Parameters:selection (Selection or str) –
Returns:
Return type:new NumpyDataset after selection
-
- -
-
-to_file(base, **options)
-

Save this dataset to a file or collection of files.

-
-
-
base: str or iterable of str
-
String file name or iterable of string file names.
-
-
-

options: none

-
- -
-
-to_tree(treename, **options)
-

Copy this dataset into a new ROOTDataset, without sharing any underlying data.

-
-
treename: str
-
Name of ROOT TTree to be created.
-
-

options: none

- --- - - - - - -
Returns:
Return type:ROOTDataset holding new ROOT TTree.
-
- -
-
-variables
-

Get the list of variables in the NumpyDataset, i.e. the content of ‘numpy.dtype.names’ -of the stored NumPy array.

-
- -
- -
-
-class skhep.dataset.numpydataset.SkhepNumpyArray
-
-
-copy()
-

Get a copy of the SkhepNumpyArray.

-
- -
-
-name
-

Return the name of the variable inside the SkhepNumpyArray.

-
- -
-
-provenance
-

Return the provenance of the SkhepNumpyArray.

-
- -
- -
-
-

Module for ROOTDataset

-

The ROOTDataset class is the implementation of the Dataset abstract base class -for the [ROOT] package.

-

Note: usage of course requires that ROOT is installed.

-

References

- - - - - -
[ROOT]https://root.cern.ch/.
-
-
-class skhep.dataset.rootdataset.ROOTDataset(data, provenance=None)
-
-
-datashape
-

Every dataset has a datashape, which describes its data types in a unified way.

-
- -
-
-static from_file(files, **options)
-

Load a dataset from a file or collection of files.

-

files: string file name, glob pattern or iterable of string file names. -options:

-
-
-
treename: str, name of the TTree object in the collection of files.
-
Optional only if all input files contain a single TTree, with the same name.
-
-
-
- -
-
-immutable
-

If True, this dataset cannot be modified in place, only transformed.

-

Opposite of mutable.

-
- -
-
-persistent
-

If True, this dataset exists in a form that survives the Python session, such as a file or database.

-

If mutable, changes in this dataset are reflected in that persistent form.

-

Opposite of transient.

-
- -
-
-to_array(**options)
-

Copy this dataset into a new NumpyDataset, without sharing any underlying data.

-
-
A change in the NumpyDataset leaves the original untouched.
-
-
Parameters
-

options: see options of root_numpy.tree2array.

-

NumpyDataset holding the new NumPy structured array.

-
-
-
- -
-
-to_file(base, **options)
-

Save this dataset to a file or collection of files.

-
-
-
base: str or iterable of str
-
String file name or iterable of string file names.
-
-
-
-
options:
-
mode: ROOT’s mode in which the TFile is to be opened. Default=’update’.
-
-
- -
- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/math.html b/scikit-hep/api/math.html deleted file mode 100644 index 798cdde..0000000 --- a/scikit-hep/api/math.html +++ /dev/null @@ -1,1567 +0,0 @@ - - - - - - - - - Mathematical utilities (skhep.math) — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Mathematical utilities (skhep.math)

-

Module for mathematical functions and utilities.

-

This module contains in particular:

-
-
    -
  • Vector classes.
  • -
  • Geometry classes.
  • -
-
-
-

Mathematical functions relevant to kinematics

-
-
-skhep.math.kinematics.Armenteros_Podolanski_variables(pplus_3Dvec, pminus_3Dvec)
-

Calculate the Armenteros Podolanski [APPaper] variables \((\alpha,q_T)\) for a 2-body decay.

-
-\[ \begin{align}\begin{aligned}\alpha = \frac{p_L^+ - p_L^-}{p_L^+ + p_L^-}\\q_T = \frac{| p^- \times p^{\mathrm mother}|}{|p^{\mathrm mother}|}\end{aligned}\end{align} \]
-

where the longitudinal momentum along the direction of flight of the mother particle is

-
-\[p_L^\pm = \frac{p^\pm \cdot p^{\mathrm mother}}{|p^{\mathrm mother}|}\]
-

and \(q_T\) is the transverse momentum of the daughter particles with respect -to the direction of flight of the mother particle.

-

These expressions can be simplified to

-
-\[ \begin{align}\begin{aligned}\alpha = \frac{|p^+|^2 - |p^-|^2}{|p^+ + p^-|^2}\\q_T = \frac{| p^+ \times p^- |}{|p^+ + p^-|}\end{aligned}\end{align} \]
- --- - - - - - - - -
Parameters:
    -
  • pplus_3Dvec (Vector3D) – 3D-momentum vector of the positively-charged daughter particle.
  • -
  • pminus_3Dvec (Vector3D) – 3D-momentum vector of the negatively-charged daughter particle.
  • -
-
Returns:

-
Return type:

Tuple \((\alpha,q_T)\).

-
-

References

- - - - - -
[APPaper]
    -
  1. Podolanski and R. Armenteros, III. Analysis of V-events, The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science 45 (1954) 13, http://dx.doi.org/10.1080/14786440108520416
  2. -
-
-
- -
-
-skhep.math.kinematics.Kallen_function(x, y, z)
-

The Kallen function, aka triangle or lambda function, -named after physicist Anders Olof Gunnar Kallen [Kallen]:

-
-\[\begin{split}\begin{eqnarray} -\lambda(x,y,z) &=& x^2 + y^2 + z^2 - 2 x y - 2 y z - 2 z x \\ - &=& (x-y-z)^2 - 4 y z \\ - &=& [ x - (\sqrt{y}+\sqrt{z})^2 ] [ x - (\sqrt{y}-\sqrt{z})^2 ] \,\,\,\mathrm{if} \,\,\,y, z > 0 -\end{eqnarray}\end{split}\]
-

Example

-

Calculate in the rest frame of a particle of mass M decaying to 2 particles labeled 1 and 2, -\(P (M) \to p1 (m1) + p2 (m2)\), the momenta of 1 and 2 given by \(p = |\mathbf{p1}| = |\mathbf{p2}|\):

-
>>> from skhep.math  import Kallen_function
->>> from hepunits.units import MeV, GeV
->>> from math import sqrt
->>> M = 5.279 * GeV; m1 = 493.7 * MeV; m2 = 139.6 * MeV
->>> p = sqrt( Kallen_function( M**2, m1**2, m2**2 ) ) / (2*M)
->>> print p / GeV   # print the CMS momentum in GeV
-2.61453580221
-
-
-

References

- - - - - -
[Kallen]https://en.wikipedia.org/wiki/K%C3%A4ll%C3%A9n_function
-
- -
-
-skhep.math.kinematics.lifetime_to_width(tau)
-

Convert from a particle lifetime to a decay width.

- --- - - - - - - - -
Parameters:tau (float > 0) – Particle lifetime, typically in picoseconds (any HEP time unit is OK).
Returns:
Return type:Particle decay width, in the HEP standard energy unit MeV.
-
- -
-
-skhep.math.kinematics.width_to_lifetime(Gamma)
-

Convert from a particle decay width to a lifetime.

- --- - - - - - - - -
Parameters:Gamma (float > 0) – Particle decay width, typically in MeV (any HEP energy unit is OK).
Returns:
Return type:Particle lifetime, in the HEP standard time unit ns.
-
- -
-
-

Vector classes

-

Two vector classes are available:

-
    -
  • Vector3D : a 3-dimensional vector.
  • -
  • -
    LorentzVector: a Lorentz vector, i.e. a 4-dimensional Minkowski space-time vector
    -
    or a 4-momentum vector. -The metric is (-1,-1,-1,+1).
    -
    -
  • -
-
-
-class skhep.math.vectors.LorentzVector(x=0.0, y=0.0, z=0.0, t=0.0)
-

Class representing a Lorentz vector, -either a 4-dimensional Minkowski space-time vector or a 4-momentum vector. -The 4-vector components can be seen as (x,y,z,t) or (px,py,pz,E).

-
-
Constructors:
-
__init__(x=0., y=0., z=0., t=0.) -from4vector(avector) -from3vector(vector3d, t)
-
-
-
-beta
-

Return \(\beta = v/c\).

-
- -
-
-boost(*args)
-

Apply a Lorentz boost on the Lorentz vector.

-
- -
-
-boostvector
-

Return the spatial component divided by the time component.

-
- -
-
-copy()
-

Get a copy of the LorentzVector.

-

Example

-
>>> v = ...
->>> v1 = v.copy()
-
-
-
- -
-
-costheta()
-

Return the cosinus of the spherical coordinate theta.

-
- -
-
-deltaeta(other)
-

Return the pseudorapidity difference, \(\Delta \eta\), with another Lorentz vector.

-
- -
-
-deltaphi(other)
-

Return the phi angle difference, \(\Delta \phi\), with another Lorentz vector.

-
- -
-
-deltar(other)
-

Return \(\Delta R\) the distance in (eta,phi) space with another Lorentz vector, defined as: -\(\Delta R = \sqrt{(\Delta \eta)^2 + (\Delta \phi)^2}\)

-
- -
-
-dot(other)
-

Dot product with another Lorentz vector.

-
- -
-
-e
-

Return the energy/time component, aka momentum coordinate at position 3.

-
- -
-
-et
-

Return the transverse energy.

-
- -
-
-eta
-

Return the pseudorapidity.

-
- -
-
-classmethod from3vector(vector3d, t)
-

Constructor from a Vector3D and the time/energy component.

-
- -
-
-classmethod from4vector(other)
-

Copy constructor.

-
- -
-
-classmethod fromiterable(values)
-

Constructor from a suitable iterable object. -Suitable means here that all entries are numbers -and the length equals 4.

-
- -
-
-gamma
-

Return \(\gamma = 1/\sqrt{1-\beta^2}\).

-
- -
-
-islightlike()
-

Check if Lorentz Vector is light-like.

-
- -
-
-isspacelike()
-

Check if Lorentz Vector is space-like.

-
- -
-
-istimelike()
-

Check if Lorentz Vector is time-like.

-
- -
-
-m
-

Return the invariant mass.

-
- -
-
-m2
-

Return the square of the invariant mass.

-
- -
-
-mag
-

Magnitude, a.k.a. norm, of the Lorentz vector.

-
- -
-
-mag2
-

Square of the magnitude, a.k.a. norm, of the Lorentz vector.

-
- -
-
-mass
-

Return the invariant mass.

-
- -
-
-mass2
-

Return the square of the invariant mass.

-
- -
-
-mt
-

Return the transverse mass.

-
- -
-
-mt2
-

Return the square of the transverse mass.

-
- -
-
-p
-

Return the momentum, aka norm of the momentum vector.

-
- -
-
-perp
-

Transverse component of the spatial components.

-
- -
-
-perp2
-

Square of the transverse component, in the (x,y) plane, of the spatial components.

-
- -
-
-phi(deg=False)
-

Return the spherical or cylindrical coordinate phi.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-pseudorapidity
-

“Return the pseudorapidity. Alternative to eta() method.

-
- -
-
-pt
-

Return the transverse momentum, aka transverse component of the momentum vector.

-
- -
-
-px
-

Return the Vector3D coordinate px, aka first momentum coordinate at position 0.

-
- -
-
-py
-

Return the Vector3D coordinate px, aka second momentum coordinate at position 1.

-
- -
-
-pz
-

Return the Vector3D coordinate pz, aka third momentum coordinate at position 2.

-
- -
-
-rapidity
-

Return the rapidity.

-
- -
-
-rotate(angle, *args)
-

Rotate vector by a given angle (in radians) around a given axis.

-
- -
-
-rotatex(angle)
-

Rotate vector by a given angle (in radians) around the x axis.

-
- -
-
-rotatey(angle)
-

Rotate vector by a given angle (in radians) around the y axis.

-
- -
-
-rotatez(angle)
-

Rotate vector by a given angle (in radians) around the z axis.

-
- -
-
-set(x, y, z, t)
-

Update/set all components at once.

-
- -
-
-setptetaphie(pt, eta, phi, e)
-

Set the transverse momentum, the pseudorapidity, the angle phi and the energy.

-
- -
-
-setptetaphim(pt, eta, phi, m)
-

Set the transverse momentum, the pseudorapidity, the angle phi and the mass.

-
- -
-
-setpxpypze(px, py, pz, e)
-

Set the px,py,pz components and the energy.

-
- -
-
-setpxpypzm(px, py, pz, m)
-

Set the px,py,pz components and the mass.

-
- -
-
-t
-

Return the time/energy component, aka coordinate at position 3.

-
- -
-
-theta(deg=False)
-

Return the spherical coordinate theta.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-tolist()
-

Return the LorentzVector as a list.

-
- -
-
-transversemass
-

Return the transverse mass.

-
- -
-
-transversemass2
-

Return the square of the transverse mass.

-
- -
-
-vector
-

Return a copy of the vector of spatial components.

-
- -
-
-x
-

Return the coordinate x, aka first coordinate at position 0.

-
- -
-
-y
-

Return the coordinate x, aka second coordinate at position 1.

-
- -
-
-z
-

Return the coordinate z, aka third coordinate at position 2.

-
- -
- -
-
-class skhep.math.vectors.Vector3D(x=0.0, y=0.0, z=0.0)
-

Vector class in 3 dimensions.

-
-
Constructors:
-
__init__(x=0., y=0., z=0.) -origin() -frompoint(x, y, z) -fromvector(avector) -fromsphericalcoords(r, theta, phi) -fromcylindricalcoords(rho, phi, z) -fromiterable(values)
-
-
-
-angle(other, deg=False)
-

Angle with respect to another vector.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-copy()
-

Get a copy of the vector.

-

Example

-
>>> v = ...
->>> v1 = v.copy()
-
-
-
- -
-
-cosdelta(other)
-

Get cos(angle) with respect to another vector

-
- -
-
-costheta()
-

Return the cosine of the spherical coordinate theta.

-
- -
-
-cross(other)
-

Cross product with another vector.

-
- -
-
-dot(other)
-

Dot product with another vector.

-
- -
-
-classmethod fromcylindricalcoords(rho, phi, z)
-

Constructor from a space point specified in cylindrical coordinates.

- --- - - - -
Parameters:
    -
  • rho (radial distance from the z-axis (rho > 0)) –
  • -
  • phi (azimuthal angle in radians (phi in [-pi, pi) rad)) –
  • -
  • z (height) –
  • -
-
-
- -
-
-classmethod fromiterable(values)
-

Constructor from a suitable iterable object. -Suitable means here that all entries are numbers -and the length equals 3.

-
- -
-
-classmethod frompoint(x, y, z)
-

Constructor from an explicit space point.

-
- -
-
-classmethod fromsphericalcoords(r, theta, phi)
-

Constructor from a space point specified in spherical coordinates.

- --- - - - -
Parameters:
    -
  • r (radius, the radial distance from the origin (r > 0)) –
  • -
  • theta (inclination in radians (theta in [0, pi] rad)) –
  • -
  • phi (azimuthal angle in radians (phi in [0, 2pi) rad)) –
  • -
-
-
- -
-
-classmethod fromvector(other)
-

Copy constructor.

-
- -
-
-isantiparallel(other)
-

Check if another vector is antiparallel. -Two vectors are antiparallel if they have opposite direction but not necessarily the same magnitude.

-
- -
-
-iscollinear(other)
-

Check if another vector is collinear -Two vectors are collinear if they have parallel or antiparallel

-
- -
-
-isopposite(other)
-

Two vectors are opposite if they have the same magnitude but opposite direction.

-
- -
-
-isparallel(other)
-

Check if another vector is parallel. -Two vectors are parallel if they have the same direction but not necessarily the same magnitude.

-
- -
-
-isperpendicular(other)
-

Check if another vector is perpendicular.

-
- -
-
-mag
-

Magnitude, a.k.a. norm, of the vector.

-
- -
-
-mag2
-

Square of the magnitude, a.k.a. norm, of the vector.

-
- -
-
-classmethod origin()
-

Shortcut constuctor for the origin (x=0.,y=0.,z=0.). -Equivalent to the default constructor Vector3D().

-
- -
-
-phi(deg=False)
-

Return the spherical or cylindrical coordinate phi.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-r
-

Return the spherical coordinate r.

-
- -
-
-rho
-

Return the cylindrical coordinate rho.

-
- -
-
-rotate(angle, *args)
-

Rotate vector by a given angle (in radians) around a given axis.

-
- -
-
-rotatex(angle)
-

Rotate vector by a given angle (in radians) around the x axis.

-
- -
-
-rotatey(angle)
-

Rotate vector by a given angle (in radians) around the y axis.

-
- -
-
-rotatez(angle)
-

Rotate vector by a given angle (in radians) around the z axis.

-
- -
-
-set(x, y, z)
-

Update the vector components all at once.

-
- -
-
-theta(deg=False)
-

Return the spherical coordinate theta.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-tolist()
-

Return the vector as a list.

-
- -
-
-unit()
-

Return the normalized vector, i.e. the unit vector along the direction of itself.

-
- -
-
-x
-

Return the x, aka first coordinate at position 0.

-
- -
-
-y
-

Return the y, aka second coordinate at position 1.

-
- -
-
-z
-

Return the z, aka third coordinate at position 2.

-
- -
- -
-
-

Geometry classes

-

Three geometry classes are available: -* Point3D : a point in 3-dimensional space -* Line3D : a line in 3-dimensional space -* Plane3D : a plane in 3-dimensional space

-
-
-class skhep.math.geometry.Vector3D(x=0.0, y=0.0, z=0.0)
-

Vector class in 3 dimensions.

-
-
Constructors:
-
__init__(x=0., y=0., z=0.) -origin() -frompoint(x, y, z) -fromvector(avector) -fromsphericalcoords(r, theta, phi) -fromcylindricalcoords(rho, phi, z) -fromiterable(values)
-
-
-
-angle(other, deg=False)
-

Angle with respect to another vector.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-copy()
-

Get a copy of the vector.

-

Example

-
>>> v = ...
->>> v1 = v.copy()
-
-
-
- -
-
-cosdelta(other)
-

Get cos(angle) with respect to another vector

-
- -
-
-costheta()
-

Return the cosine of the spherical coordinate theta.

-
- -
-
-cross(other)
-

Cross product with another vector.

-
- -
-
-dot(other)
-

Dot product with another vector.

-
- -
-
-classmethod fromcylindricalcoords(rho, phi, z)
-

Constructor from a space point specified in cylindrical coordinates.

- --- - - - -
Parameters:
    -
  • rho (radial distance from the z-axis (rho > 0)) –
  • -
  • phi (azimuthal angle in radians (phi in [-pi, pi) rad)) –
  • -
  • z (height) –
  • -
-
-
- -
-
-classmethod fromiterable(values)
-

Constructor from a suitable iterable object. -Suitable means here that all entries are numbers -and the length equals 3.

-
- -
-
-classmethod frompoint(x, y, z)
-

Constructor from an explicit space point.

-
- -
-
-classmethod fromsphericalcoords(r, theta, phi)
-

Constructor from a space point specified in spherical coordinates.

- --- - - - -
Parameters:
    -
  • r (radius, the radial distance from the origin (r > 0)) –
  • -
  • theta (inclination in radians (theta in [0, pi] rad)) –
  • -
  • phi (azimuthal angle in radians (phi in [0, 2pi) rad)) –
  • -
-
-
- -
-
-classmethod fromvector(other)
-

Copy constructor.

-
- -
-
-isantiparallel(other)
-

Check if another vector is antiparallel. -Two vectors are antiparallel if they have opposite direction but not necessarily the same magnitude.

-
- -
-
-iscollinear(other)
-

Check if another vector is collinear -Two vectors are collinear if they have parallel or antiparallel

-
- -
-
-isopposite(other)
-

Two vectors are opposite if they have the same magnitude but opposite direction.

-
- -
-
-isparallel(other)
-

Check if another vector is parallel. -Two vectors are parallel if they have the same direction but not necessarily the same magnitude.

-
- -
-
-isperpendicular(other)
-

Check if another vector is perpendicular.

-
- -
-
-mag
-

Magnitude, a.k.a. norm, of the vector.

-
- -
-
-mag2
-

Square of the magnitude, a.k.a. norm, of the vector.

-
- -
-
-classmethod origin()
-

Shortcut constuctor for the origin (x=0.,y=0.,z=0.). -Equivalent to the default constructor Vector3D().

-
- -
-
-phi(deg=False)
-

Return the spherical or cylindrical coordinate phi.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-r
-

Return the spherical coordinate r.

-
- -
-
-rho
-

Return the cylindrical coordinate rho.

-
- -
-
-rotate(angle, *args)
-

Rotate vector by a given angle (in radians) around a given axis.

-
- -
-
-rotatex(angle)
-

Rotate vector by a given angle (in radians) around the x axis.

-
- -
-
-rotatey(angle)
-

Rotate vector by a given angle (in radians) around the y axis.

-
- -
-
-rotatez(angle)
-

Rotate vector by a given angle (in radians) around the z axis.

-
- -
-
-set(x, y, z)
-

Update the vector components all at once.

-
- -
-
-theta(deg=False)
-

Return the spherical coordinate theta.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-tolist()
-

Return the vector as a list.

-
- -
-
-unit()
-

Return the normalized vector, i.e. the unit vector along the direction of itself.

-
- -
-
-x
-

Return the x, aka first coordinate at position 0.

-
- -
-
-y
-

Return the y, aka second coordinate at position 1.

-
- -
-
-z
-

Return the z, aka third coordinate at position 2.

-
- -
- -
-
-class skhep.math.geometry.Point3D(*args, **kwargs)
-

Point in 3D space.

-
-
-copy()
-

Make a copy of this point.

-
- -
-
-distance(other)
-

Get ‘distance’ between point and other object.

-
- -
-
-classmethod fromcylindricalcoords(rho, phi, z)
-

Constructor from a space point specified in cylindrical coordinates.

- --- - - - -
Parameters:
    -
  • rho (radial distance from the z-axis (rho > 0)) –
  • -
  • phi (azimuthal angle in radians (phi in [-pi, pi) rad)) –
  • -
  • z (height) –
  • -
-
-
- -
-
-classmethod fromiterable(values)
-

Constructor from a suitable iterable object. -Suitable means here that all entries are numbers -and the length equals 3.

-
- -
-
-classmethod frompoint(x, y, z)
-

Constructor from an explicit space point.

-
- -
-
-classmethod fromsphericalcoords(r, theta, phi)
-

Constructor from a space point specified in spherical coordinates.

- --- - - - -
Parameters:
    -
  • r (radius, the radial distance from the origin (r > 0)) –
  • -
  • theta (inclination in radians (theta in [0, pi] rad)) –
  • -
  • phi (azimuthal angle in radians (phi in [0, 2pi) rad)) –
  • -
-
-
- -
-
-classmethod fromvector(other)
-

Copy constructor.

-
- -
-
-mag
-

Magnitude, a.k.a. norm, of the point.

-
- -
-
-mag2
-

Square of the magnitude, a.k.a. norm, of the point.

-
- -
-
-on_line(line)
-

In the point on the line?

-
- -
-
-on_plane(plane)
-

Is the point on the plane?

-
- -
-
-classmethod origin()
-

Shortcut constuctor for the origin (x=0.,y=0.,z=0.). -Equivalent to the default constructor Point3D().

-
- -
-
-phi
-

Return the spherical or cylindrical coordinate phi.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-rho
-

Return the cylindrical coordinate rho.

-
- -
-
-theta
-

Return the spherical coordinate theta.

- --- - - - -
Parameters:deg (float, optional) – Return the angle in degrees (default is radians).
-
- -
-
-tolist()
-

Return the vector as a list.

-
- -
-
-x
-

Return the x, aka first coordinate at position 0.

-
- -
-
-y
-

Return the y, aka second coordinate at position 1.

-
- -
-
-z
-

Return the z, aka third coordinate at position 2.

-
- -
- -
-
-class skhep.math.geometry.Line3D(point=<Point3D(x=0, y=0, z=0)>, vector=<Vector3D (x=0, y=0, z=1)>)
-

Line in 3D space. -Line is defined by a point on line and by the direction.

-
-
-angle(other)
-

Get the ‘angle’ between a line and other object.

-
- -
-
-closest_point(point)
-

Get the point on line that is closest to the given point in space.

-

Example

-
>>> line  = ...
->>> point = ...
->>> closest  = line.closest_point ( point )
-
-
-
- -
-
-closest_point_param(point)
-

Get the ‘mu’ parameter of the point on line that is closest to the given point in space.

-

Example

-
>>> line  = ...
->>> point = ...
->>> mu    = line.closest_point_param ( point )
-
-
-
- -
-
-closest_points(line)
-

Get two points on lines that is closest to each other.

-

Example

-
>>> line1 = ...
->>> line2 = ...
->>> p1 , p2  = line1.closest_points ( line2 )
-
-
-
- -
-
-closest_points_params(line)
-

Get the ‘mu’ parameters of two points on lines that is closest to each other.

-

Example

-
>>> line1 = ...
->>> line2 = ...
->>> mu1 , mu2  = line1.closest_points_param ( line2 )
-
-
-
- -
-
-copy()
-

Make a copy of this line.

-
- -
-
-distance(other)
-

Get ‘distance’ between line and other object.

-

Examples

-
>>> line  = ...
->>> point = ...
->>> line2 = ...
->>> plane = ...
->>> print line.distance ( line2 )
->>> print line.distance ( point )
->>> print line.distance ( plane )
-
-
-
- -
-
-classmethod from_line(line)
-

Create the line from anoother line.

-
- -
-
-classmethod from_points(point1, point2)
-

Create the line from two points.

- --- - - - -
Parameters:
    -
  • point1 (the first point on the line) –
  • -
  • point2 (the second point on the line) –
  • -
-
-
- -
-
-intersect(other)
-

Get the ‘intersection’ between a line and other object.

-
- -
-
-iscollinear(other)
-

Is the line collinear to another line or vector?

-
- -
-
-on_plane(plane)
-

Is the line on the plane?

-
- -
-
-point_on_line(mu)
-

Get the point on line, that corresponds to parameter ‘mu’.

-

Example

-
>>> line = ...
->>> p0 = line.point_on_line ( 0 ) ## should be equal to line.point
->>> p1 = line.point_on_line ( 1 ) ## shodul be equal to line.point+line.vector
-
-
-
- -
- -
-
-class skhep.math.geometry.Plane3D(point=<Point3D(x=0, y=0, z=0)>, normal=<Vector3D (x=0, y=0, z=1)>)
-

Plane in 3D space, defined by a point on plane and by the normal vector.

-
-
-angle(other)
-

Get the ‘angle’ between a plane and other object.

-
- -
-
-copy()
-

Make a copy of this plane.

-
- -
-
-distance(other)
-

Get ‘distance’ between plane and other object.

-

Examples

-
>>> line  = ...
->>> point = ...
->>> line2 = ...
->>> plane = ...
->>> print line.distance ( line2 )
->>> print line.distance ( point )
->>> print line.distance ( plane )
-
-
-
- -
-
-classmethod from_line_and_point(line, point)
-

Create the plane from the line and point.

- --- - - - -
Parameters:
    -
  • line (the line in plane) –
  • -
  • point (the point in plane) –
  • -
-
-
- -
-
-classmethod from_points(point1, point2, point3)
-

Create the plane from three points.

- --- - - - -
Parameters:
    -
  • point1 (the first point on the plane) –
  • -
  • point2 (the second point on the plane) –
  • -
  • point3 (the third point on the plane) –
  • -
-
-
- -
-
-intersect(other)
-

Get the ‘intersection’ between a line and other object

-
- -
-
-isparallel(other)
-

Is the plane collinear to another line, vector or plane?

-
- -
- -
-
-skhep.math.geometry.distance(obj1, obj2)
-

Calculate 3D-distance between two geometry objects (points, lines, planes).

-

Examples

-
>>> line1  = ...
->>> line2  = ...
->>> point1 = ...
->>> point2 = ...
->>> plane1 = ...
->>> plane2 = ...
->>> for o1 in ( line1, line2 , point1 , point2 , plane1 , plane2 ) :
-...    for o2 in ( line1, line2 , point1 , point2 , plane1 , plane2 ) :
-...        print distance ( o1 , o2 )
-
-
-
- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/modeling.html b/scikit-hep/api/modeling.html deleted file mode 100644 index 559594e..0000000 --- a/scikit-hep/api/modeling.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - Data Modeling (skhep.modeling) — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Data Modeling (skhep.modeling)

-

Module for algorithms and methods used to model distributions.

-

This module contains in particular:

-
-
    -
  • Bayesian Blocks binning algorithm.
  • -
-
-
-

Bayesian Block implementation

-

Dynamic programming algorithm for finding the optimal adaptive-width histogram.

-
    -
  • Based on Scargle et al 2012 [1]
  • -
  • Initial Python Implementation [2]
  • -
  • AstroML Implementation [3]
  • -
  • Initial Examination in HEP context [4]
  • -
-

References

- - - - - -
[1](1, 2) http://adsabs.harvard.edu/abs/2012arXiv1207.5578S
- - - - - -
[2]http://jakevdp.github.com/blog/2012/09/12/dynamic-programming-in-python/
- - - - - -
[3]https://github.com/astroML/astroML/blob/master/astroML/density_estimation/bayesian_blocks.py
- - - - - -
[4]https://arxiv.org/abs/1708.00810
-
-
-class skhep.modeling.bayesian_blocks.Prior(p0=0.05, gamma=None)
-

Helper class for calculating the prior on the fitness function.

-
- -
-
-skhep.modeling.bayesian_blocks.bayesian_blocks(data, weights=None, p0=0.05, gamma=None)
-

Bayesian Blocks Implementation.

-

This is a flexible implementation of the Bayesian Blocks algorithm described in Scargle 2012 -[1]. It has been modified to natively accept weighted events, for ease of use in HEP -applications.

- --- - - - - - - - -
Parameters:
    -
  • data (array) – Input data values (one dimensional, length N). Repeat values are allowed.
  • -
  • weights (array_like, optional) –

    Weights for data (otherwise assume all data points have a weight of 1). Must be same -length as data.

    -

    Defaults to None.

    -
  • -
  • p0 (float, optional) –

    False-positive rate, between 0 and 1. A lower number places a stricter penalty against -creating more bin edges, thus reducing the potential for false-positive bin edges. In -general, the larger the number of bins, the small the p0 should be to prevent the -creation of spurious, jagged bins.

    -

    Defaults to 0.05.

    -
  • -
  • gamma (float, optional) –

    If specified, then use this gamma to compute the general prior form, p ~ gamma^N. If -gamma is specified, p0 is ignored.

    -

    Defaults to None.

    -
  • -
-
Returns:

Array containing the (N+1) bin edges

-
Return type:

edges (ndarray)

-
-

Examples

-

Unweighted data:

-
>>> d = np.random.normal(size=100)
->>> bins = bayesian_blocks(d, p0=0.01)
-
-
-

Unweighted data with repeats:

-
>>> d = np.random.normal(size=100)
->>> d[80:] = d[:20]
->>> bins = bayesian_blocks(d, p0=0.01)
-
-
-

Weighted data:

-
>>> d = np.random.normal(size=100)
->>> w = np.random.uniform(1,2, size=100)
->>> bins = bayesian_blocks(d, w, p0=0.01)
-
-
-
-

See also

-
-
skhep.visual.MplPlotter.hist:
-
Histogram plotting function which can natively make use of bayesian blocks.
-
-
-
- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/utils.html b/scikit-hep/api/utils.html deleted file mode 100644 index 670a6e5..0000000 --- a/scikit-hep/api/utils.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - Utilities (skhep.utils) — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Utilities (skhep.utils)

-

Module for miscellaneous and general utilities.

-
-

Submodule for decorators

-
-

Note

-

not meant for user code in general, though possible.

-
-
-
-skhep.utils.decorators.inheritdoc(cls, gap='\n')
-

Decorator to automatize the inheritance of documentation from a class method.

-

Example

-
>>> from skhep.utils.decorators import inheritdoc
->>> class ADerivedClass(ABaseClass):                 # doctest: +SKIP
-...    @inheritdoc(ABaseClass)                       # doctest: +SKIP
-...    def amethod(self): pass                       # doctest: +SKIP
-
-
-
- -
-
-

Submodule for helpers to deal with dependencies

-
-
-skhep.utils.dependencies.softimport(modulename, lazy=True)
-

The function that one calls to import a module softly.

-
- -
-
-

Submodule for helpers to the Dataset-like classes

-

User-facing classes that structure the provenance information, i.e. the history of operations performed on the dataset.

-

Available classes:

-
    -
  • Provenance (abstract base class).
  • -
  • Origin (abstract base class).
  • -
  • ObjectOrigin.
  • -
  • FileOrigin.
  • -
  • Transformation.
  • -
  • Formatting.
  • -
-
-
-class skhep.utils.provenance.FileOrigin(files)
-

Declares that the dataset came from a file or a set of files.

- --- - - - -
Parameters:files (str or iterable of str or file objects) – File name(s) or object(s).
-

Examples

-
>>> from skhep.utils import FileOrigin
->>> prov = FileOrigin(['file1.root', 'file2.root','file3.root'])
->>> prov
-<FileOrigin (3 files)>
-
-
-
-
-detail
-

String providing detailed information about the origin, transformation, or formatting.

-
- -
- -
-
-class skhep.utils.provenance.Formatting(format, *args)
-

Declares that the dataset was reformatted, keeping its semantic meaning, but changed in representation.

-
-
-detail
-

String providing detailed information about the origin, transformation, or formatting.

-
- -
- -
-
-class skhep.utils.provenance.MultiProvenance(*args)
-

Class for collecting history of provenances.

-
- -
-
-class skhep.utils.provenance.ObjectOrigin(detail)
-

Declares that the dataset came from some Python object. -Its history prior to that is unknown.

- --- - - - -
Parameters:detail (str) – String providing detailed information about the object origin.
-

Examples

-
>>> from skhep.utils import ObjectOrigin
->>> from array import array
->>> data = array('i',[1,2,3])
->>> provenance1 = ObjectOrigin(repr(data))
->>> provenance1
-<ObjectOrigin>
->>> provenance1.detail
-"array('i', [1, 2, 3])"
-
-
-
>>> provenance2 = ObjectOrigin('array_of_ints')
->>> provenance2.detail
-'array_of_ints'
-
-
-
-
-detail
-

String providing detailed information about the origin, transformation, or formatting.

-
- -
- -
-
-class skhep.utils.provenance.Origin
-

Abstract base class for all classes describing the first object in a provenance list.

-

Trying to instantiate it raises an exception. Instantiate one of its subclasses instead.

-
- -
-
-class skhep.utils.provenance.Provenance
-

Abstract base class for all classes containing provenance information.

-

Trying to instantiate it raises an exception. Instantiate one of its subclasses instead.

-
-
-detail
-

String providing detailed information about the origin, transformation, or formatting.

-
- -
- -
-
-class skhep.utils.provenance.Transformation(name, *args)
-

Declares that the dataset was transformed by some mathematical operation.

- --- - - - -
Parameters:
    -
  • name (str) – String detailing how the dataset got transformed.
  • -
  • args (iterable, optional) – Optional set of arguments given extra detail on the transformation.
  • -
-
-

Examples

-
>>> from skhep.utils import Transformation
->>> transf = Transformation('all elms * 2')
->>> transf
-<Transformation(all elms * 2)>
-
-
-
-
-detail
-

String providing detailed information about the origin, transformation, or formatting.

-
- -
- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/api/visual.html b/scikit-hep/api/visual.html deleted file mode 100644 index 84e9892..0000000 --- a/scikit-hep/api/visual.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - Data Visualization (skhep.visual) — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Data Visualization (skhep.visual)

-
-
-class skhep.visual.MplPlotter(show_backend=False)
-
-
-static hist(x, bins='auto', range=None, weights=None, errorbars=False, normed=False, scale=None, stacked=False, histtype='stepfilled', **kwargs)
-

Enhanced histogram, based on hist function from matplotlib and astroML. -The main additional features are the ability to use data-driven binning algorithms, the -addition of errorbars, scaling options (like dividing all bin values by their widths), and -marker-style draw options. hist function wraps HistContainer class, which does the -majority of work.

- --- - - - - - -
Parameters:
    -
  • x (array, or list of array) – Array of data to be histogrammed.
  • -
  • bins (int or List or str, optional) –

    If int, bins number of equal-width bins are -generated. The width is determined by either equal divison of the given range, or -equal division between the first and last data point if no range is specified.

    -

    If List, bin edges are taken directly from List (can be unequal width).

    -

    If str, then it must be one of:

    -
    'blocks' : use bayesian blocks for dynamic bin widths.
    -
    -'auto' : use 'auto' feature from numpy.histogram.
    -
    -'fd', 'doane', 'scott', 'rice', 'sturges', 'sqrt' : see numpy.histogram for
    -    details.
    -    (https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html)
    -
    -
    -

    Defaults to ‘auto’.

    -
  • -
  • range (tuple or None, optional) –

    If specificed, data will only be considered and shown -for the range given. Otherwise, range will be between the highest and lowest -datapoint.

    -

    Defaults to None.

    -
  • -
  • weights (array or None, optional) –

    Weights associated with each data point. If -specified, bin content will be equal to the sum of all relevant weights.

    -

    Defaults to None.

    -
  • -
  • errorbars (boolean or array, optional) –

    If True, errorbars will be calculated and -displayed based on the err_* arguments. The errorbars will be appropriately -modified if scale and/or normed is True. If an array is specificed, those values -will be used (and will not be modifed by any other methods).

    -

    Defaults to False.

    -
  • -
  • normed (boolean, optional) –

    If True, histogram will be normalized such that the integral -over all bins with be equal to 1. In general, this will NOT mean that the sum of -all bin contents will be 1, unless all bin widths are equal to 1. If used with -scale option, normalization happens before scale.

    -

    Defaults to False

    -
  • -
  • scale (Number or 'binwidth', optional) –

    If Number, all bin contents are multiplied by -the given value. If ‘binwidth’, every bin content is divided by the bin width. If -used with normed option, scaling occurs after normalization (‘binwidth’ will be -ignored in this case, because it is handled automatically when normalizing).

    -

    Defaults to None

    -
  • -
  • stacked (boolean, optional) –

    If True, multiple input data sets will be layered on top of -each other, such that the height of each bin is the sum of all the relevant dataset -contributions. If used with errorbars, the bars will be associated with the bin -totals, not the individual components.

    -

    Defaults to False.

    -
  • -
  • histtype (stepfilled', 'step', 'bar', or 'marker') –

    Draw options for histograms. -‘stepfilled’, ‘step’, and ‘bar’ inherit from matplotlib. ‘marker’ places a single -point at the center of each bin (best used with error bars). ‘marker’ will throw an -exception if used with ‘stacked’ option.

    -

    Defaults to ‘stepfilled’.

    -
  • -
  • **kwargs
      -
    • -
      ax (matplotlib axes instance):
      -
      Specify the Axes on which to draw the histogram. If not specified, then the -current active axes will be used, or a new axes instance will be generated.

      Defaults to current axis.

      -
      -
      -
    • -
    • -
      err_style (‘band’ or ‘line’):
      -
      Draw style for errorbars.

      Defaults depend on histtype, -where histtype=’stepfilled’ corresponds to ‘band’, and all others correspond to -‘line’.

      -
      -
      -
    • -
    • -
      err_color (‘auto’ or valid matplotlib colors):
      -
      Color for error bars. If ‘auto’ is -chosen and stacked is False, The color will be a slightly darker version of -the associated histogram color. If stacked is True, color will be the next in -the current color cycle.

      Defaults to ‘auto’.

      -
      -
      -
    • -
    • -
      err_type (‘sumW2’ or ‘gaussian’):
      -
      Method of calculating error bars, if no error is given. The ‘gaussian’ method -displays the error of each bin as the square root of the bin content. The -‘sumW2’ method displays the error as the square of the sum of the squares of the -weights.

      Defaults to ‘gaussian’ if no weights are given, else ‘sumW2’.

      -
      -
      -
    • -
    • -
      err_return (bool):
      -
      Return additional objects corresponding to the values of the error associated -with each bin, and the patches used to display the error bars.

      Defaults to ‘False’

      -
      -
      -
    • -
    -
  • -
  • Note – Other keyword arguments are described in pylab.hist().
  • -
-
Returns:

(bin_content, bin_edges, bin_errors (optional), patches)

-
-
bin_content (array or list of array):
-

The values of the histogram bins. See normed or -density and weights for a description of the possible semantics. If input x is an -array, then this is an array of length nbins. If input is a sequence arrays [data1, -data2,..], then this is a list of arrays with the values of the histograms for each -of the arrays in the same order.

-
-
bin_edges (array):
-

The edges of the bins. Length nbins + 1 (nbins left edges and right edge of last -bin). Always a single array even when multiple data sets are passed in.

-
-
bin_errors (array or list of arrays, optional):
-

The values of the error bars associated with each bin. It is only returned if -errorbars is True and err_return is True.

-
-
bin_patches (list or list of lists):
-

Silent list of individual patches used to create the histogram or list of such list -if multiple input datasets.

-
-
-

-
-

Brian Pollack, 2017

-
- -
-
-static ratio_plot(hist_dict1, hist_dict2, bins=None, range=None, ratio_range=None, err_style='band', err_color='dimgray', ratio_mode='default', grid=False, unity_line='red', logx=False)
-

Function for creating ratio plots (comparing two histograms by dividing their bin content). -The call structure is very similar to producing two individual histograms, with additional -arguments specifying the nature of the ratio plot. The number of bins and ranges for both -histograms must be equal.

-
-

Note

-

Addition documentation soon.

-
-
- -
- -
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/examples/examples.html b/scikit-hep/examples/examples.html deleted file mode 100644 index 4da75d2..0000000 --- a/scikit-hep/examples/examples.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - Examples — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/scikit-hep/examples/modeling/bayesian_blocks.html b/scikit-hep/examples/modeling/bayesian_blocks.html deleted file mode 100644 index 2f564c6..0000000 --- a/scikit-hep/examples/modeling/bayesian_blocks.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - - - - Histogramming With Bayesian Blocks — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - - -
-

Histogramming With Bayesian Blocks

-

The Bayesian Block algorithm, originally developed for applications in astronomy, can be used to improve the binning of histograms in high energy physics (HEP). The visual improvement can be dramatic, and more importantly, this algorithm produces histograms that accurately represent the underlying distribution while being robust to statistical fluctuations. The key concept behind Bayesian Blocks is that variable-width bins are determined for a given distribution, such that the data within each -bin is consistent with a uniform distribution across the range of that bin. This reduces the appearance of statistical fluctuations while still capturing the form of the underlying distribution.

-

For more information on the algorithm and implementation, see:

-
    -
  1. Bayesian Blocks Algorithm, Scargle et al.
  2. -
  3. Bayesian Blocks in HEP, Pollack et al.
  4. -
-

For code documentation, see: http://scikit-hep.org/api/modeling.html

-
-

Using Bayesian Blocks Binning

-

Bayesian Blocks binning options are available as part of Scikit-HEP’s histogramming packages. Below is a simple example:

-
-
[1]:
-
-
-
-import numpy as np
-from skhep.visual import MplPlotter as skh_plt
-%matplotlib inline
-plt.rcParams['figure.figsize'] = (8,6)
-
-np.random.seed(1001)
-data = np.random.laplace(size=10000)
-
-
-
-
-
[2]:
-
-
-
-_ = skh_plt.hist(data, bins=1000, scale='binwidth', label='Fine Binning')
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', label='Bayesian Blocks', histtype='step')
-plt.legend(loc=2)
-plt.show()
-
-
-
-
-
-
-
-../../images/examples_modeling_bayesian_blocks_5_0.png -
-
-

To call Bayesian Blocks within the MplPlotter.hist plotting function, simply set bins='blocks'. For appropriate visualization, one should typically also use scale='binwidth'. This divides each bin by its width, which is important for capturing the overall shape of the underlying distribution. Without using this argument, the histogram will look jagged (a consequnce of using variable-width binning).

-
-
[3]:
-
-
-
-fig, axes = plt.subplots(ncols=2, figsize=(12,5))
-_ = skh_plt.hist(data, bins='blocks', label='Bayesian Blocks', histtype='step', ax=axes[0])
-axes[0].set_title('Unscaled')
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', label='Bayesian Blocks', histtype='step', ax=axes[1])
-axes[1].set_title('Scaled by bin width')
-plt.show()
-
-
-
-
-
-
-
-../../images/examples_modeling_bayesian_blocks_7_0.png -
-
-

The user has control over an additional parameter to determine how many bins are generated by the Bayesian Blocks algorithm. The p0 parameter (valid between 0 and 1) determines how strictly the algorithm determines bin edges. A small p0 will be more robust to statistical fluctuations in the data, but could be overly coarse. Conversely, a large p0 will result in a finer binning, but could isolate spurious fluctuations in the data.

-
-
[4]:
-
-
-
-fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12,12))
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', histtype='step', ax=axes[0][0], p0=1e-50)
-axes[0][0].set_title('p0=1e-50')
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', histtype='step', ax=axes[0][1], p0=1e-5)
-axes[0][1].set_title('p0=1e-5')
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', histtype='step', ax=axes[1][0], p0=1e-3)
-axes[1][0].set_title('p0=1e-3')
-_ = skh_plt.hist(data, bins='blocks', scale='binwidth', histtype='step', ax=axes[1][1], p0=0.5)
-axes[1][1].set_title('p0=0.5')
-fig.suptitle('Varying the p0 parameter')
-plt.show()
-
-
-
-
-
-
-
-../../images/examples_modeling_bayesian_blocks_9_0.png -
-
-

The optimal value of p0 differs, depending on the number of data points and the nature of the underlying distribution. It typically must be determined empirically, but in general the value of p0 should be inversely proportional the size of the input dataset.

-
-
-

Comparison with Other Binning Methods

-

Because Bayesian Blocks determines variable-width binning, the algorithm can provide a more optimal set of bins for a given distribution, especially if that distribution varies greatly in density. Below are some examples of Bayesian Blocks and other popular binning methods.

-

A rapidly falling distribution: Jet Pt Spectrum

-

An asymmetric, peaked distribution: Muon Pt Spectrum

-

Two peaks of different widths: Double Laplacians

-

Brian Pollack, 2018

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/examples/modeling/ex_bb.html b/scikit-hep/examples/modeling/ex_bb.html deleted file mode 100644 index 2f9fc3c..0000000 --- a/scikit-hep/examples/modeling/ex_bb.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - Bayesian Blocks Examples — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/examples/visual/errorbars.html b/scikit-hep/examples/visual/errorbars.html deleted file mode 100644 index 47bcd02..0000000 --- a/scikit-hep/examples/visual/errorbars.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - - - Error Bars — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - - -
-

Error Bars

-

It is common practice in High Energy Physics (and other fields) to display error bars for each histogram bin, corresponding to either the associated statistical or systematic errors. While the interpretation and meaning of the aforementioned error bars is a point of constant contention (Those Deceiving Error Bars), the entries in a histogram bin are typically seen as drawn from a Poisson distribution, and -thus the standard deviation for a bin with \(N\) entries is \(\sqrt{N}\).

-
-

Error Bar Calculation

-

Let us produce a simple histogram with error bars.

-
-
[1]:
-
-
-
-import numpy as np
-from skhep.visual import MplPlotter as skh_plt
-%matplotlib inline
-plt.rcParams['figure.figsize'] = (8,6)
-
-np.random.seed(1001)
-data = np.random.normal(size=1000)
-
-
-
-
-
[2]:
-
-
-
-_ = skh_plt.hist(data, bins=20, errorbars=True)
-plt.title('Simple Error Bar Example')
-
-
-
-
-
[2]:
-
-
-
-<matplotlib.text.Text at 0x10f085d68>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_3_1.png -
-
-

By default, when no weights are given, the error bars are calculated as \(\pm\sqrt{N}\) above and below the bin height. This is equivalent to using the argument err_type='gaussian' when calling the hist function. If weights are included with the input data, then the default error bars are calculated as the root of the sum the square of the weights. This is equivalent to declaring `err_type=‘sumW2’.

-
-
[3]:
-
-
-
-w = np.random.uniform(0.1, 0.2, size=1000)
-_ = skh_plt.hist(data, bins=20, weights=w, errorbars=True)
-plt.title('Error Bars for Weighted Histogram, SumW2')
-plt.figure()
-_ = skh_plt.hist(data, bins=20, weights=w, errorbars=True, err_type='gaussian')
-plt.title('Error Bars for Weighted Histogram, sqrt(N)')
-
-
-
-
-
-
[3]:
-
-
-
-<matplotlib.text.Text at 0x10f24af98>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_5_1.png -
-
-
-
-
-
-../../images/examples_visual_errorbars_5_2.png -
-
-
-
-

Error Bar Display

-

There are currently two styles for displaying error bars, err_style='band' and err_style='line'. By default, the band style is used for filled histograms, while the line style is used for step and marker histograms.

-
-
[4]:
-
-
-
-data2 = np.random.normal(1,1, size=1000)
-data3 = np.random.normal(-1,1, size=1000)
-
-_ = skh_plt.hist(data, bins=20, errorbars=True)
-_ = skh_plt.hist(data2, bins=20, errorbars=True, histtype='step')
-_ = skh_plt.hist(data3, bins=20, errorbars=True, histtype='marker')
-plt.title('Various Histogram and Error Bar Draw Styles')
-
-
-
-
-
[4]:
-
-
-
-<matplotlib.text.Text at 0x10f43fe10>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_8_1.png -
-
-

Error bar color is handled automatically by default (err_color='auto'). For a non-stacked histogram, the error bar color is selected to be a slightly darker version of the main histogram color.

-
-
[5]:
-
-
-
-_ = skh_plt.hist(data3, bins=20, errorbars=True, color='C6', label='auto color')
-_ = skh_plt.hist(data2, bins=20, errorbars=True, color='C8', err_color='C9', label='specified color')
-plt.xlim(-4,8)
-plt.title('Color Options')
-plt.legend()
-
-
-
-
-
[5]:
-
-
-
-<matplotlib.legend.Legend at 0x10f314d68>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_10_1.png -
-
-
-
-

Stacked Histograms

-

For stacked histograms, the error bars are determined by the sum of all contributions for an individual bin, and placed around the total bin height. If the color mode is automatic, the error bar color is chosen to be the next in the current color cycle, instead of being a modified version of the currently displayed colors.

-
-
[6]:
-
-
-
-_ = skh_plt.hist([data3, data2], bins=20, errorbars=True)
-plt.title('Unstacked')
-plt.figure()
-_ = skh_plt.hist([data3, data2], bins=20, errorbars=True, stacked = True)
-plt.title('Stacked')
-
-
-
-
-
[6]:
-
-
-
-<matplotlib.text.Text at 0x10f7424e0>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_13_1.png -
-
-
-
-
-
-../../images/examples_visual_errorbars_13_2.png -
-
-
-
-

Scale and Normalization

-

If scale and/or normalization is applied to the histogram, the error bars are scaled appropriately as well.

-
-
[7]:
-
-
-
-_ = skh_plt.hist(data2, bins=20, errorbars=True, histtype='step', scale=0.5)
-_ = skh_plt.hist(data2, bins=20, errorbars=True, histtype='step')
-
-plt.title('Histogram and scaled histogram')
-
-
-
-
-
[7]:
-
-
-
-<matplotlib.text.Text at 0x10fa57748>
-
-
-
-
-
-
-
-../../images/examples_visual_errorbars_16_1.png -
-
-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/examples/visual/ex_visual.html b/scikit-hep/examples/visual/ex_visual.html deleted file mode 100644 index e0687cd..0000000 --- a/scikit-hep/examples/visual/ex_visual.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - Data Visualization Examples — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - - - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/scikit-hep/images/examples_modeling_bayesian_blocks_5_0.png b/scikit-hep/images/examples_modeling_bayesian_blocks_5_0.png deleted file mode 100644 index b1610c5..0000000 Binary files a/scikit-hep/images/examples_modeling_bayesian_blocks_5_0.png and /dev/null differ diff --git a/scikit-hep/images/examples_modeling_bayesian_blocks_7_0.png b/scikit-hep/images/examples_modeling_bayesian_blocks_7_0.png deleted file mode 100644 index a135827..0000000 Binary files a/scikit-hep/images/examples_modeling_bayesian_blocks_7_0.png and /dev/null differ diff --git a/scikit-hep/images/examples_modeling_bayesian_blocks_9_0.png b/scikit-hep/images/examples_modeling_bayesian_blocks_9_0.png deleted file mode 100644 index 9c31bb3..0000000 Binary files a/scikit-hep/images/examples_modeling_bayesian_blocks_9_0.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_10_1.png b/scikit-hep/images/examples_visual_errorbars_10_1.png deleted file mode 100644 index bbc5296..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_10_1.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_13_1.png b/scikit-hep/images/examples_visual_errorbars_13_1.png deleted file mode 100644 index a830544..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_13_1.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_13_2.png b/scikit-hep/images/examples_visual_errorbars_13_2.png deleted file mode 100644 index ddf6ee7..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_13_2.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_16_1.png b/scikit-hep/images/examples_visual_errorbars_16_1.png deleted file mode 100644 index 471a99e..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_16_1.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_3_1.png b/scikit-hep/images/examples_visual_errorbars_3_1.png deleted file mode 100644 index aa7ec68..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_3_1.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_5_1.png b/scikit-hep/images/examples_visual_errorbars_5_1.png deleted file mode 100644 index 4cc7f77..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_5_1.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_5_2.png b/scikit-hep/images/examples_visual_errorbars_5_2.png deleted file mode 100644 index e7105c8..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_5_2.png and /dev/null differ diff --git a/scikit-hep/images/examples_visual_errorbars_8_1.png b/scikit-hep/images/examples_visual_errorbars_8_1.png deleted file mode 100644 index 960019f..0000000 Binary files a/scikit-hep/images/examples_visual_errorbars_8_1.png and /dev/null differ diff --git a/scikit-hep/images/hists_2LP.png b/scikit-hep/images/hists_2LP.png deleted file mode 100644 index 3160306..0000000 Binary files a/scikit-hep/images/hists_2LP.png and /dev/null differ diff --git a/scikit-hep/images/hists_MuPT.png b/scikit-hep/images/hists_MuPT.png deleted file mode 100644 index ea22d21..0000000 Binary files a/scikit-hep/images/hists_MuPT.png and /dev/null differ diff --git a/scikit-hep/images/hists_jPT.png b/scikit-hep/images/hists_jPT.png deleted file mode 100644 index d7af59d..0000000 Binary files a/scikit-hep/images/hists_jPT.png and /dev/null differ diff --git a/scikit-hep/index.html b/scikit-hep/index.html deleted file mode 100644 index 3d70751..0000000 --- a/scikit-hep/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - Documentation — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Documentation

-

This is the main page documenting the scikit-hep package, example usage, and the user API.

- -
-

Indices and tables

-

You can also search through the list of modules or the full index:

- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/search.html b/search.html deleted file mode 100644 index 9f0ed12..0000000 --- a/search.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - Search — Scikit-HEP - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -

Search

-
- -

- Please activate JavaScript to enable the search - functionality. -

-
-

- From here you can search these documents. Enter your search - words into the box below and click "search". Note that the search - function will automatically search for all of the words. Pages - containing fewer words won't appear in the result list. -

-
- - - -
- -
- -
- -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/searchindex.js b/searchindex.js deleted file mode 100644 index be98307..0000000 --- a/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["documentation","faq","get-in-touch","index","projusers","resources"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,nbsphinx:1,sphinx:55},filenames:["documentation.rst","faq.rst","get-in-touch.rst","index.rst","projusers.rst","resources.rst"],objects:{},objnames:{},objtypes:{},terms:{"case":[0,1,3],"class":3,"default":1,"function":[3,4],"public":5,"short":3,CMS:4,Das:5,For:[0,3],That:1,The:[0,1,3,4,5],These:3,about:[1,3],activ:3,actual:0,admin:2,against:3,aggreg:3,aghast:[3,5],aim:3,algorithm:3,all:[2,3],alreadi:1,also:[1,2,3],analysi:[3,4,5],announc:2,anyon:2,april:5,arrai:[0,3,5],arxiv:5,ask:2,autumn:3,avail:[0,3],awkward:[0,3,5],base:[1,4],becom:[3,4],behaviour:3,being:1,bell:[4,5],belleii:4,below:0,belyaev:5,between:3,beyond:[3,4],bind:3,boost:[0,3,5],bosnia:5,boss:3,bridg:3,brows:1,browser:3,builder:3,bulgaria:5,call:1,can:2,carlo:3,cern:[4,5],certain:[0,1],channel:2,chep:5,code:[1,3],coffea:4,collect:[3,5],columnar:4,com:2,common:3,commun:[2,3],comp:5,compact:4,complex:3,concept:5,concern:[2,3],confer:5,constant:3,contain:0,continu:4,conveni:3,convers:3,convert:3,core:3,cost:3,could:1,cours:1,data:[3,4,5],databas:3,datafram:3,dataset:3,daw:5,decai:[3,5],decaylanguag:[0,3],defin:3,dembinski:5,densiti:4,describ:3,descript:3,detail:1,develop:[3,4,5],diana:5,differ:3,digit:3,direct:[0,4],discover:3,discuss:2,distinct:1,distribut:3,doc:0,document:1,driven:3,each:1,easi:3,easili:3,ecosystem:3,eduardo:5,email:2,embrac:3,enabl:3,encourag:1,energi:5,engin:3,envisag:1,even:3,event:3,exampl:3,exchang:2,experi:5,express:3,fastjet:[3,5],feb:5,file:[0,1,3,5],first:5,fit:[3,4],five:3,flatbuff:3,flavio:4,flavour:4,follow:3,foreseen:1,forget:1,formul:[0,3],forum:2,friendli:4,from:[1,3,5],futur:1,gener:[2,3],germani:5,get:[0,3],github:3,give:4,goal:3,googlegroup:2,grand:3,graphic:3,han:5,handi:0,happ:1,happi:1,have:3,hedg:5,heidelberg:5,henri:5,hep:[0,1,2,5],hepmc3:3,hepunit:[0,3],here:[0,2],herzegovina:5,high:[3,5],hist:5,histbook:[0,3],histogram:[0,3,5],idea:1,identif:3,iminuit:[0,3],iml:5,improv:3,incorpor:4,individu:0,inform:2,interest:2,interfac:[3,4,5],interoper:3,involv:[1,3],iri:5,issu:1,japan:4,jim:5,juli:5,just:3,kek:4,kit:1,larg:3,learn:3,lhcb:5,librari:[3,4],lightweight:4,like:[1,3],link:0,list:[0,1,3],lite:3,load:3,local:3,look:3,machin:3,mai:[4,5],major:3,manipul:[3,4],march:5,marinang:5,mass:3,matplotlib:3,matter:2,matthieu:5,medium:1,meet:5,metapackag:3,method:[0,3],michael:5,minimalist:3,minuit:3,miscellan:3,model:[3,4],modul:3,mont:3,more:4,most:1,move:5,muon:4,next:3,nice:1,nndrone:[0,3],noel:5,non:3,note:[0,2],notic:1,numba:5,numpi:[1,3,5],numpythia:[0,3,5],oct:5,onc:[1,2],one:4,onli:1,optimis:4,orient:[1,3],ostap:5,other:3,our:3,overview:4,packag:[0,1,2,4],page:[2,4],panda:[3,5],particl:[0,3,5],pdg:3,perform:3,physic:[3,4,5],physicist:3,pillar:3,ping:2,pivarski:5,pleas:[0,1,2],plot:3,popular:3,portabl:4,pratyush:5,present:3,privat:2,probabl:4,probfit:[0,3],process:3,project:[2,5],prototyp:4,provid:[0,3,4],pure:3,pygamma19:5,pyhep:5,pyhepmc:[0,3],pyjet:[0,3,5],pythia:[3,5],python:[3,5],question:2,rapidli:5,rather:3,read:0,readm:0,readthedoc:0,refer:[0,1],relat:[3,5],remot:3,report:5,repositori:[1,3],represent:3,resourc:1,rodrigu:5,root:[3,5],root_numpi:[0,3,5],root_panda:[0,3],rootpi:5,said:1,sarajevo:5,save:3,scalabl:4,schreiner:5,sci:1,scienc:1,scientif:[1,3],scikit:[0,1,2,5],section:0,seen:3,send:2,sep:5,set:3,sharabl:3,should:3,sign:2,simpl:4,simul:3,sofia:5,softwar:[3,5],solenoid:4,some:[0,1,3,4],sourc:3,stack:[1,3],stand:1,standard:4,start:[0,3],statist:3,statu:5,still:0,structur:3,style:[0,3],sub:4,subscrib:2,summar:3,switzerland:4,system:[3,4],tabl:0,technolog:3,tensorflow:4,term:1,test:3,testdata:[0,3],than:3,thi:[1,2,4],through:1,togeth:3,tool:3,toolkit:3,topic:[3,5],touch:1,tri:4,under:3,unit:3,upper:1,uproot:[0,3,5],usag:3,user:[4,5],using:4,util:3,vanya:5,variou:[1,3],vega:3,vegascop:[0,3],veri:3,versatil:3,via:[1,2],video:5,view:3,visual:3,visualis:[],web:3,week:5,welcom:1,what:3,where:0,which:[0,3],without:2,work:3,workshop:5,wrap:3,wrapper:3,write:5,you:[1,2],your:3,zfit:4},titles:["Documentation","FAQ","Getting in touch","Scikit-HEP project - welcome!","Who uses Scikit-HEP?","Miscellaneous resources"],titleterms:{collabor:4,contribut:1,document:0,exact:1,experi:4,faq:1,get:[1,2],github:2,gitter:2,gpu:1,hep:[3,4],how:1,list:2,mail:2,miscellan:5,name:1,packag:3,phenomenolog:4,present:5,proceed:5,project:[1,3,4],pronounc:1,pypi:1,resourc:5,scikit:[3,4],softwar:4,start:1,support:1,toolset:3,touch:2,uses:4,welcom:3,what:1,who:4}}) \ No newline at end of file diff --git a/sources/documentation.rst.txt b/sources/documentation.rst.txt deleted file mode 100644 index 6b19ccb..0000000 --- a/sources/documentation.rst.txt +++ /dev/null @@ -1,51 +0,0 @@ -.. _documentation: - -Documentation -============= - -Please refer to the documentation provided by the individual packages, -which are listed :ref:`here `. -The table below provides direct links ... -Note that in some cases the README files are the actual documentation. -For certain packages where ReadTheDocs style of documentation is available, -the READMEs still contain handy "getting started" sections. - - - ===================== ========================= - Package Documentation - ===================== ========================= - awkward-array `README `__ - boost-histogram `README `__ - DecayLanguage `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - formulate `README `__ - hepunits `README `__ - histbook `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - iminuit `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - NNDrone `README `__ - numpythia `README `__ - Particle `README `__ - probfit `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - pyhepmc `README `__ - pyjet `README `__ - root_pandas `README `__ - root_numpy `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - scikit-hep |scikit_hep_RtD_style| |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - scikit-hep-testdata `README `__ - uproot `Read the Docs `__ |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| - `README `__ - uproot-methods `README `__ - vegascope `README `__ - ===================== ========================= - -.. |nbsp| unicode:: 0xA0 - :trim: - -.. |scikit_hep_RtD_style| raw:: html - - Read the Docs style diff --git a/sources/faq.rst.txt b/sources/faq.rst.txt deleted file mode 100644 index 7cf9c18..0000000 --- a/sources/faq.rst.txt +++ /dev/null @@ -1,33 +0,0 @@ -.. _faq: - -FAQ -=== - -What is the exact project name? -------------------------------- -The project is called `Scikit-HEP`. Notice the upper-case "S" and "HEP". -That is distinct from the package `scikit-hep`. - -How to pronounce the project name? ----------------------------------- -Like "sy-kit happ"(y), forgetting about the "y" in "happy". -Of course "sci" stands for science. - -How to get started contributing? --------------------------------- -You are most welcome and encouraged to get in touch via the resources -listed at :ref:`Get in touch `. -Please also refer to each package repository and browse through the -list of "issues" or files CONTRIBUTING for details on how to get involved. - -Is there support for PyPy? --------------------------- -It's a nice idea. Support for `PyPy `_ could be envisaged in the near future -`but only once` the scientific stack based on `NumPy `_ supports it. -This being said, certain package do support PyPy already. - -Is there support for GPUs? --------------------------- -Support for GPU-oriented code is not foreseen as default but some of the packages -envisage it in the near- or medium-term future. -Please refer to the documentation of the various packages. diff --git a/sources/get-in-touch.rst.txt b/sources/get-in-touch.rst.txt deleted file mode 100644 index 5d85e61..0000000 --- a/sources/get-in-touch.rst.txt +++ /dev/null @@ -1,29 +0,0 @@ -.. _get_in_touch: - -Getting in touch -================ - - -Mailing lists -------------- - -Forum for general matters, announcements and discussions concerning the Scikit-HEP project : `scikit-hep-forum@googlegroups.com`_. -Please go `here `_ to subscribe. - -Mailing list to ping all admins at once: `scikit-hep-admins@googlegroups.com`_. -Note that this list is private but anyone can send an email to it without sign-up. - -.. _scikit-hep-admins@googlegroups.com: scikit-hep-admins@googlegroups.com -.. _scikit-hep-forum@googlegroups.com: scikit-hep-forum@googlegroups.com - - -Gitter ------- - -Gitter channel `Scikit-HEP/community `_ for informal exchanges. - - -On GitHub ----------- - -You can also get in touch via the GitHub pages of the package of interest, e.g. asking a question. diff --git a/sources/index.rst.txt b/sources/index.rst.txt deleted file mode 100644 index 9032b36..0000000 --- a/sources/index.rst.txt +++ /dev/null @@ -1,99 +0,0 @@ -Scikit-HEP project - welcome! -============================= - -The `Scikit-HEP project` is a community-driven and community-oriented project -with the aim of providing Particle Physics at large with an ecosystem for data analysis in Python. -The project started in Autumn 2016 and is under active development. - -It is not just about providing core and common tools for the community. -It is also about improving the interoperability between HEP tools -and the scientific ecosystem in Python, -and about improving on discoverability of utility packages and projects. - -For what concerns the project grand structure, it should be seen as a *toolset* rather than a *toolkit*. -The project defines a set of five *pillars*, which are seen to embrace -all major topics involved in a physicist's work. These are: - - * **Datasets**: data in various sources, such as ROOT, Numpy/Pandas, databases, wrapped in a common interface. - * **Aggregations**: e.g. histograms that summarize or project a dataset. - * **Modeling**: data models and fitting utilities. - * **Simulation**: wrappers for Monte Carlo engines and other generators of simulated data. - * **Visualization**: interface to graphics engines, from ROOT and Matplotlib to even beyond. - -.. _index_toolset_packages: - -Toolset packages ----------------- - -To get started, have a look at our `GitHub repository`_. - -The list of presently available packages follows, together with a very short description of their goals: - -**Interoperability and data manipulation:** - -* `uproot `_: minimalist ROOT I/O in pure Python and Numpy. -* `uproot-methods `_: Pythonic behaviours for non-I/O related ROOT classes. -* `root_numpy `_: interface between ROOT and NumPy. -* `root_pandas `_: module for conveniently loading/saving ROOT files as pandas DataFrames. -* `formulate `_: easy conversions between different styles of expressions. - -**Interface to HEP libraries:** - -* `numpythia `_: interface between Pythia and NumPy. -* `pyjet `_: interface between FastJet and NumPy. - -**Event processing:** - -* `awkward-array `_: manipulate arrays of complex data structures as easily as Numpy. - -**Particles and decays:** - -* `Particle `_: PDG particle data and identification codes. -* `DecayLanguage `_: describe and convert particle decays between digital representations. - -**Histogramming:** - -* `boost-histogram `_: Python bindings for the C++14 Boost::Histogram library. -* `aghast `_: aggregated, histogram-like statistics, sharable as Flatbuffers. -* `histbook `_: versatile, high-performance histogram toolkit for Numpy. - -**Fitting:** - -* `iminuit `_: MINUIT from Python - Fitting like a boss. -* `probfit `_: Cost function builder. For fitting distributions. - -**Simulation:** - -* `pyhepmc `_: next generation Python bindings for HepMC3. - -**Machine Learning:** - -* `NNDrone `_: collection of tools and algorithms to enable conversion of HEP ML to mass usage model. - -**Visualization:** - -* `vegascope `_: view Vega/Vega-Lite plots in your web browser from local or remote Python processes. - -**Units and constants:** - -* `hepunits `_: units and constants in the HEP system of units. - -**Miscellaneous:** - -* `scikit-hep `_: toolset of interfaces and tools for Particle Physics. To become a metapackage. -* `scikit-hep-testdata `_: common package to provide example files (e.g., ROOT) for testing and developing packages against. - -In some cases, the packages have to do with bridging between different technologies and/or popular packages -from the Python scientific software stack. - -.. toctree:: - :hidden: - :maxdepth: 1 - - get-in-touch.rst - faq.rst - documentation.rst - projusers.rst - resources.rst - -.. _GitHub repository : https://github.com/scikit-hep/ diff --git a/sources/projusers.rst.txt b/sources/projusers.rst.txt deleted file mode 100644 index 2cc78b7..0000000 --- a/sources/projusers.rst.txt +++ /dev/null @@ -1,57 +0,0 @@ - -.. _project_users: - -Who uses Scikit-HEP? -==================== - -This page tries to give an overview of who is using one or more packages -of the Scikit-HEP project. - - -Experiment collaborations -------------------------- - -.. image:: images/projusers/logo_belle2.png - :scale: 35 - :target: `BelleII`_ - -`BelleII`_ - the Belle II experiment at KEK, Japan. - -.. image:: images/projusers/logo_cms.gif - :scale: 50 - :target: `CMS`_ - -`CMS`_ - the Compact Muon Solenoid experiment at CERN, Switzerland. - - -Phenomenology projects ----------------------- - -.. image:: images/projusers/logo_flavio.png - :scale: 60 - :target: `flavio`_ - -`flavio`_ - flavour physics phenomenology in the Standard Model and beyond. - - -Software projects ------------------ - -.. image:: images/projusers/logo_coffea.jpg - :scale: 45 - :target: `Coffea`_ - -`Coffea`_ - a prototype `Analysis System `_ -incorporating Scikit-HEP packages to provide a lightweight, scalable, portable, -and user-friendly interface for columnar analysis of HEP data. -Some of the sub-packages of Coffea may become Scikit-HEP packages as development continues. - -The `zfit`_ project - it provides a model fitting library based on TensorFlow -and optimised for simple and direct manipulation of probability density functions. - - -.. _BelleII : https://www.belle2.org/ -.. _CMS : https://cms.cern/ -.. _Coffea : https://github.com/CoffeaTeam -.. _flavio : https://flav-io.github.io/ -.. _zfit : https://zfit.github.io/zfit/ diff --git a/sources/resources.rst.txt b/sources/resources.rst.txt deleted file mode 100644 index 0f6bcd4..0000000 --- a/sources/resources.rst.txt +++ /dev/null @@ -1,89 +0,0 @@ -.. _resources: - -Miscellaneous resources -======================= - -A collection of presentations, videos and publications -on, or related to, the Scikit-HEP project. - -Proceedings ------------ - -* *The Scikit-HEP project*, Eduardo Rodrigues, - proceedings of the `CHEP 2018 Conference `_, Sofia, Bulgaria; - `arXiv:1905.00002 [physics.comp-ph] `_ - - -Presentations -------------- - -* **21 May 2019:** `Belle II`_ experiment `Analysis Software Developers' Meeting `_ - - * *Particles and decays in the Scikit-HEP project*, Eduardo Rodrigues, Henry Schreiner - -* **13 May 2019:** `IRIS-HEP`_ project `topical meeting `__: - - * *Particles and decays in the Scikit-HEP project*, Eduardo Rodrigues, Henry Schreiner - -* **17 April 2019:** `IRIS-HEP`_ project `topical meeting `__: - - * *Awkward Array: Numba*, Jim Pivarski - - * *Awkward Array: Pandas*, Michael Hedges - -* **15 April 2019:** `IRIS-HEP`_ project `topical meeting `__: - - * *boost-histogram and hist*, Henry Schreiner - - * *Aghast*, Jim Pivarski - -* **21 March 2019:** `PyGamma19 Workshop `_, Heidelberg, Germany: - - * *Python in High-Energy Physics*, Hans Dembinski - -* **15 Oct. 2018:** `DIANA/HEP`_ project `topical meeting `__: - - * *I/O for uproot*, Pratyush Das - -* **10 Sep. 2018:** `ROOT 2018 Users Workshop `_, Sarajevo , Bosnia and Herzegovina: - - * *Writing ROOT files with uproot*, Pratyush Das, Jim Pivarski - -* **9 July 2018:** `CHEP 2018 Conference `_, Sofia, Bulgaria: - - * *The Scikit-HEP project*, Eduardo Rodrigues - -* **7 July 2018:** `PyHEP 2018 Workshop `_, Sofia, Bulgaria: - - * *The Scikit-HEP project*, Matthieu Marinangeli - -* **28 Feb 2018:** `IML Meeting `_, CERN: - - * *Uproot: rapidly moving data from ROOT to Numpy and Pandas*, Jim Pivarski - -* **23 Oct. 2017:** `DIANA/HEP`_ project `topical meeting `__, CERN: - - * *numpythia & pyjet - interfacing PYTHIA and FastJet with NumPy*, Noel Dawe - -* **11 Sep. 2017:** project status report, - `DIANA/HEP`_ project `topical meeting `__, CERN: - - * *Scikit-HEP project status*, Eduardo Rodrigues - -* **6 April 2017:** presentation of the project to the LHCb experiment, - `LHCb experiment`_ Analysis & Software Week, CERN: - - * *The Scikit-HEP project*, Eduardo Rodrigues - -* **27 Feb. 2017:** first presentation of the project, - `DIANA/HEP`_ project `topical meeting `__, CERN: - - * *The Scikit-HEP project*, Eduardo Rodrigues - * *Ostap concepts in Scikit-HEP*, Vanya Belyaev - * *Rootpy and root_numpy concepts in Scikit-HEP*, Noel Dawe - - -.. _Belle II : https://www.belle2.org/ -.. _DIANA/HEP : http://www.diana-hep.org/ -.. _IRIS-HEP : https://iris-hep.org/ -.. _LHCb experiment : http://lhcb.cern.ch/ diff --git a/static/ajax-loader.gif b/static/ajax-loader.gif deleted file mode 100644 index 61faf8c..0000000 Binary files a/static/ajax-loader.gif and /dev/null differ diff --git a/static/alabaster.css b/static/alabaster.css deleted file mode 100644 index 8e198b0..0000000 --- a/static/alabaster.css +++ /dev/null @@ -1,701 +0,0 @@ -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: Source Sans Pro; - font-size: 17px; - background-color: #fff; - color: #000; - margin: 0; - padding: 0; -} - - -div.document { - width: 940px; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 220px; -} - -div.sphinxsidebar { - width: 220px; - font-size: 14px; - line-height: 1.5; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #fff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -div.body > .section { - text-align: left; -} - -div.footer { - width: 940px; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -p.caption { - font-family: inherit; - font-size: inherit; -} - - -div.relations { - display: none; -} - - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 18px 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 0px; - text-align: center; -} - -div.sphinxsidebarwrapper h1.logo { - margin-top: -10px; - text-align: center; - margin-bottom: 5px; - text-align: left; -} - -div.sphinxsidebarwrapper h1.logo-name { - margin-top: 0px; -} - -div.sphinxsidebarwrapper p.blurb { - margin-top: 0; - font-style: normal; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: Source Serif Pro; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar ul li.toctree-l1 > a { - font-size: 120%; -} - -div.sphinxsidebar ul li.toctree-l2 > a { - font-size: 110%; -} - -div.sphinxsidebar input { - border: 1px solid #CCC; - font-family: Source Sans Pro; - font-size: 1em; -} - -div.sphinxsidebar hr { - border: none; - height: 1px; - color: #AAA; - background: #AAA; - - text-align: left; - margin-left: 0; - width: 50%; -} - -div.sphinxsidebar .badge { - border-bottom: none; -} - -div.sphinxsidebar .badge:hover { - border-bottom: none; -} - -/* To address an issue with donation coming after search */ -div.sphinxsidebar h3.donation { - margin-top: 10px; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #7092C0; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: Source Serif Pro; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #DDD; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #EAEAEA; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - margin: 20px 0px; - padding: 10px 30px; - background-color: #EEE; - border: 1px solid #CCC; -} - -div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fafafa; -} - -div.admonition p.admonition-title { - font-family: Source Serif Pro; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -div.highlight { - background-color: #fff; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.warning { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.danger { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.error { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.caution { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.attention { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.important { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.note { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.tip { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.hint { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.seealso { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.topic { - background-color: #EEE; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt, code { - font-family: Consolas; - font-size: 0.8em; -} - -.hll { - background-color: #FFC; - margin: 0 -12px; - padding: 0 12px; - display: block; -} - -img.screenshot { -} - -tt.descname, tt.descclassname, code.descname, code.descclassname { - font-size: 0.95em; -} - -tt.descname, code.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #EEE; - background: #FDFDFD; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.field-list p { - margin-bottom: 0.8em; -} - -/* Cloned from - * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 - */ -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -table.footnote td.label { - width: .1px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - /* Matches the 30px from the narrow-screen "li > ul" selector below */ - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: #EEE; - padding: 7px 30px; - margin: 15px 0px; - line-height: 1.3em; -} - -div.viewcode-block:target { - background: #ffd; -} - -dl pre, blockquote pre, li pre { - margin-left: 0; - padding-left: 30px; -} - -tt, code { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, code.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fff; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #7092C0; -} - -/* Don't put an underline on images */ -a.image-reference, a.image-reference:hover { - border-bottom: none; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #7092C0; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt, a:hover code { - background: #EEE; -} - - -@media screen and (max-width: 870px) { - - div.sphinxsidebar { - display: none; - } - - div.document { - width: 100%; - - } - - div.documentwrapper { - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.bodywrapper { - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - margin-left: 0; - } - - ul { - margin-left: 0; - } - - li > ul { - /* Matches the 30px from the "ul, ol" selector above */ - margin-left: 30px; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .bodywrapper { - margin: 0; - } - - .footer { - width: auto; - } - - .github { - display: none; - } - - - -} - - - -@media screen and (max-width: 875px) { - - body { - margin: 0; - padding: 20px 30px; - } - - div.documentwrapper { - float: none; - background: #fff; - } - - div.sphinxsidebar { - display: block; - float: none; - width: 102.5%; - margin: 50px -30px -20px -30px; - padding: 10px 20px; - background: #333; - color: #FFF; - } - - div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, - div.sphinxsidebar h3 a { - color: #fff; - } - - div.sphinxsidebar a { - color: #AAA; - } - - div.sphinxsidebar p.logo { - display: none; - } - - div.document { - width: 100%; - margin: 0; - } - - div.footer { - display: none; - } - - div.bodywrapper { - margin: 0; - } - - div.body { - min-height: 0; - padding: 0; - } - - .rtd_doc_footer { - display: none; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .footer { - width: auto; - } - - .github { - display: none; - } -} - - -/* misc. */ - -.revsys-inline { - display: none!important; -} - -/* Make nested-list/multi-paragraph items look better in Releases changelog - * pages. Without this, docutils' magical list fuckery causes inconsistent - * formatting between different release sub-lists. - */ -div#changelog > div.section > ul > li > p:only-child { - margin-bottom: 0; -} - -/* Hide fugly table cell borders in ..bibliography:: directive output */ -table.docutils.citation, table.docutils.citation td, table.docutils.citation th { - border: none; - /* Below needed in some edge cases; if not applied, bottom shadows appear */ - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - - -/* relbar */ - -.related { - line-height: 30px; - width: 100%; - font-size: 0.9rem; -} - -.related.top { - border-bottom: 1px solid #EEE; - margin-bottom: 20px; -} - -.related.bottom { - border-top: 1px solid #EEE; -} - -.related ul { - padding: 0; - margin: 0; - list-style: none; -} - -.related li { - display: inline; -} - -nav#rellinks { - float: right; -} - -nav#rellinks li+li:before { - content: "|"; -} - -nav#breadcrumbs li+li:before { - content: "\00BB"; -} - -/* Hide certain items when printing */ -@media print { - div.related { - display: none; - } -} \ No newline at end of file diff --git a/static/basic.css b/static/basic.css deleted file mode 100644 index 0807176..0000000 --- a/static/basic.css +++ /dev/null @@ -1,676 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/static/comment-bright.png b/static/comment-bright.png deleted file mode 100644 index 15e27ed..0000000 Binary files a/static/comment-bright.png and /dev/null differ diff --git a/static/comment-close.png b/static/comment-close.png deleted file mode 100644 index 4d91bcf..0000000 Binary files a/static/comment-close.png and /dev/null differ diff --git a/static/comment.png b/static/comment.png deleted file mode 100644 index dfbc0cb..0000000 Binary files a/static/comment.png and /dev/null differ diff --git a/static/custom.css b/static/custom.css deleted file mode 100644 index 2a924f1..0000000 --- a/static/custom.css +++ /dev/null @@ -1 +0,0 @@ -/* This file intentionally left blank. */ diff --git a/static/doctools.js b/static/doctools.js deleted file mode 100644 index 344db17..0000000 --- a/static/doctools.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/static/documentation_options.js b/static/documentation_options.js deleted file mode 100644 index b8db01c..0000000 --- a/static/documentation_options.js +++ /dev/null @@ -1,10 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.5.1', - LANGUAGE: 'None', - COLLAPSE_INDEX: false, - FILE_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, -}; \ No newline at end of file diff --git a/static/down-pressed.png b/static/down-pressed.png deleted file mode 100644 index 5756c8c..0000000 Binary files a/static/down-pressed.png and /dev/null differ diff --git a/static/down.png b/static/down.png deleted file mode 100644 index 1b3bdad..0000000 Binary files a/static/down.png and /dev/null differ diff --git a/static/file.png b/static/file.png deleted file mode 100644 index a858a41..0000000 Binary files a/static/file.png and /dev/null differ diff --git a/static/jquery.js b/static/jquery.js deleted file mode 100644 index 644d35e..0000000 --- a/static/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("