From dec425f5f63a23ae8b79a21a64ee2809c53a554c Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 21:31:32 +1200 Subject: [PATCH 01/39] initializing v0.2.0 --- splitpy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/splitpy/__init__.py b/splitpy/__init__.py index cd02b2a..23f6293 100644 --- a/splitpy/__init__.py +++ b/splitpy/__init__.py @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -__version__ = '0.1.0' +__version__ = '0.2.0' __author__ = 'Pascal Audet & Andrew Schaeffer' From fd3a3103ad816ff0cb4aa0e20ff2534494bd9edb Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 21:31:59 +1200 Subject: [PATCH 02/39] switching from setup to pyproject and meson --- meson.build | 24 ++++++++++++++++++++++++ pyproject.toml | 37 +++++++++++++++++++++++++++++++++++++ setup.py | 3 ++- 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 meson.build create mode 100644 pyproject.toml diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..11a2879 --- /dev/null +++ b/meson.build @@ -0,0 +1,24 @@ +project('splitpy', 'c', + version : '0.2.0', + license: 'MIT', + meson_version: '>=0.64.0', +) + +py_mod = import('python') +py = py_mod.find_installation() +py_dep = py.dependency() + +py.install_sources( + 'splitpy/classes.py', + 'splitpy/calc.py', + 'splitpy/utils.py', + 'splitpy/gui.py', + 'splitpy/__init__.py', + 'splitpy/scripts/split_calc_auto.py', + 'splitpy/scripts/split_calc_manual.py', + 'splitpy/scripts/split_average.py', + 'splitpy/scripts/__init__.py', + pure: false, + preserve_path: true, + ) + \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..4accbbf --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,37 @@ +[build-system] +build-backend = "mesonpy" +requires = ["meson-python>0.15.0", "numpy >= 1.25.0"] + + +[project] +name = "splitpy" +version = "0.2.0" +description = "Software for teleseismic shear-wave splitting analysis" +authors = [ + { name = "Pascal Audet", email = "pascal.audet@uottawa.ca" }, + { name = "Andrew Schaeffer", email = "andrew.schaeffer@NRCan-RNCan.gc.ca"} +] +maintainers = [ + { name = "Pascal Audet", email = "pascal.audet@uottawa.ca" }, + { name = "Andrew Schaeffer", email = "andrew.schaeffer@NRCan-RNCan.gc.ca"} +] +requires-python = ">=3.9" +readme = "README.md" +dependencies = ["numpy>=1.25", "obspy"] +classifiers = [ + "Development Status :: 5 - Stable", + "Environment :: Console", + "Intended Audience :: Science/Research", + "Programming Language :: Python :: 3 :: Only", + "Topic :: Scientific/Engineering :: Physics", +] + +[project.urls] +Homepage = "https://github.com/paudetseis/SplitPy" +Documentation = "https://paudetseis.github.io/SplitPy" +"Bug Tracker" = "https://github.com/paudetseis/SplitPy/issues" + +[project.scripts] +split_calc_auto = "scplitpy.scripts.split_calc_auto:main" +split_calc_manual = "scplitpy.scripts.split_calc_manual:main" +split_average = "scplitpy.scripts.split_average:main" diff --git a/setup.py b/setup.py index 49c1811..a8e7af8 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,8 @@ import os.path from os import listdir import re -from numpy.distutils.core import setup +from setuptools import setup +# from numpy.distutils.core import setup from pathlib import Path From 50261f79be05bfa55101999c25e8ce5283feec96 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 21:34:29 +1200 Subject: [PATCH 03/39] moving scripts inside package --- splitpy/scripts/__init__.py | 0 {Scripts => splitpy/scripts}/split_average.py | 0 {Scripts => splitpy/scripts}/split_calc_auto.py | 0 {Scripts => splitpy/scripts}/split_calc_manual.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 splitpy/scripts/__init__.py rename {Scripts => splitpy/scripts}/split_average.py (100%) rename {Scripts => splitpy/scripts}/split_calc_auto.py (100%) rename {Scripts => splitpy/scripts}/split_calc_manual.py (100%) diff --git a/splitpy/scripts/__init__.py b/splitpy/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Scripts/split_average.py b/splitpy/scripts/split_average.py similarity index 100% rename from Scripts/split_average.py rename to splitpy/scripts/split_average.py diff --git a/Scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py similarity index 100% rename from Scripts/split_calc_auto.py rename to splitpy/scripts/split_calc_auto.py diff --git a/Scripts/split_calc_manual.py b/splitpy/scripts/split_calc_manual.py similarity index 100% rename from Scripts/split_calc_manual.py rename to splitpy/scripts/split_calc_manual.py From cede0648830f2dd1ebc778629322ed4e26398775 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 21:49:32 +1200 Subject: [PATCH 04/39] moved argument parser inside scripts --- splitpy/scripts/split_average.py | 186 ++++++++++- splitpy/scripts/split_calc_auto.py | 463 +++++++++++++++++++++++++-- splitpy/scripts/split_calc_manual.py | 168 +++++++++- 3 files changed, 780 insertions(+), 37 deletions(-) diff --git a/splitpy/scripts/split_average.py b/splitpy/scripts/split_average.py index 61b7137..4b5690a 100755 --- a/splitpy/scripts/split_average.py +++ b/splitpy/scripts/split_average.py @@ -30,7 +30,11 @@ import matplotlib.pyplot as plt import matplotlib.gridspec as gspec from math import ceil + from splitpy import arguments, Split + +from argparse import ArgumentParser +from os.path import exists as exist from pathlib import Path @@ -47,10 +51,184 @@ def angle_mean(dt, phi, ddt, dphi): return phase, dphase, radius, dradius - -def main(): - - args = arguments.get_arguments_average() +def get_arguments_average(argv=None): + + parser = ArgumentParser( + usage="%(prog)s [arguments] ", + description="Script to plot the average splitting results for a " + + "given station. Loads the available .pkl files in the specified " + + "Station Directory.") + + # General Settings + parser.add_argument( + "indb", + help="Station Database to process from.", + type=str) + parser.add_argument( + "--keys", + action="store", + type=str, + dest="stkeys", + default="", + help="Specify a comma separated list of station keys " + + "for which to perform analysis. These must be " + + "contained within the station database. Partial keys " + + "will be used to match against those in the " + + "dictionary. For instance, providing IU will match " + + "with all stations in the IU network [Default " + + "processes all stations in the database]") + parser.add_argument( + "-v", "-V", "--verbose", + action="store_true", + dest="verb", + default=False, + help="Specify to increase verbosity.") + parser.add_argument( + "--show-fig", + action="store_true", + dest="showfig", + default=False, + help="Specify show plots during processing - " + + "they are still saved to disk. [Default only saves]") + parser.add_argument( + "-A", "--auto", + action="store_true", + dest="auto", + default=False, + help="Specify to use automatically processed split results. "+ + "[Default uses refined ('manual') split results]") + + # Null Settings + NullGroup = parser.add_argument_group( + title="Null Selection Settings", + description="Settings " + "associated with selecting which Null or Non-Null data is included") + NullGroup.add_argument( + "--nulls", "--Nulls", + action="store_true", + dest="nulls", + default=False, + help="Specify this flag to include Null Values in the average. " + + "[Default Non-Nulls only]") + NullGroup.add_argument( + "--no-nons", "--No-Nons", + action="store_false", + dest="nons", + default=True, + help="Specify this flag to exclude Non-Nulls from the average " + + "[Default False]") + + # Quality Settings + QualGroup = parser.add_argument_group( + title="Quality Selection Settings", + description="Settings associated with selecting the qualities " + + "to include in the selection.") + QualGroup.add_argument( + "--No-Good", "--no-good", + action="store_false", + dest="goods", + default=True, + help="Specify to exclude 'Good' measurements from the average. " + + "[Default Good + Fair]") + QualGroup.add_argument( + "--No-Fair", "--no-fair", + action="store_false", + dest="fairs", + default=True, + help="Specify to exclude 'Fair' measurements from the average " + + "[Default Good + Fair]") + QualGroup.add_argument( + "--Poor", "--poor", + action="store_true", + dest="poors", + default=False, + help="Specify to include 'Poor' measurements in the average " + + "[Default No Poors]") + + # Split Type Settings + SpTypGroup = parser.add_argument_group( + title="Split Type Settings", + description="Settings to Select " + "which Split types are included in the selection.") + SpTypGroup.add_argument( + "--RC-Only", "--rc-only", "--RC-only", + action="store_false", + dest="SCinc", + default=True, + help="Specify to only include RC splits in the average. " + + "[Default RC + SC]") + SpTypGroup.add_argument( + "--SC-Only", "--sc-only", "--SC-only", + action="store_false", + dest="RCinc", + default=True, + help="Specify to only include SC splits in the average. " + + "[Default RC + SC]") + + args = parser.parse_args(argv) + + # Check inputs + if not exist(args.indb): + parser.error("Input file " + args.indb + " does not exist") + + # Check Nulls + if not args.nons and not args.nulls: + parser.error("One of Non-Nulls or Nulls must be included.") + + # Check Quality + if not args.goods and not args.fairs and not args.poors: + parser.error("At least one Quality must be included.") + + # Check Types + if not args.RCinc and not args.SCinc: + parser.error("At leat one Splitting Tyhpe must be included.") + + # Construct Null FileName Components + NullName = "" + if args.nons: + NullName = "_Nons" + if args.nulls: + NullName = NullName + "-Nulls" + else: + if args.nulls: + NullName = "_Nulls" + args.NullName = NullName + + # Construct Quality FileName Components + QualName = "" + if args.goods: + QualName = "_G" + if args.fairs: + QualName = QualName + "-F" + if args.poors: + QualName = QualName + "-P" + else: + if args.fairs: + QualName = "_F" + if args.poors: + QualName = QualName + "-P" + else: + if args.poors: + QualName = "_P" + args.QualName = QualName + + # Construct Type FileName Components + TypeName = "" + if args.RCinc and args.SCinc: + TypeName = "_RC-SC" + elif args.RCinc and not args.SCinc: + TypeName = "_RC" + elif not args.RCinc and args.SCinc: + TypeName = "_SC" + args.TypeName = TypeName + + return args + +def main(args=None): + + if args is None: + # Run Input Parser + args = get_arguments_average() print("---------------------------") print("Selection Criteria ") diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 665a226..aaf6f0c 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -23,23 +23,419 @@ # SOFTWARE. # -*- coding: utf-8 -*- -from pathlib import Path -from splitpy import arguments, utils -from splitpy import Split, DiagPlot import matplotlib.pyplot as plt +import matplotlib import numpy as np import pickle import stdb + from obspy.clients.fdsn import Client from obspy import UTCDateTime -import matplotlib -matplotlib.use('Qt5Agg') +from splitpy import utils +from splitpy import Split, DiagPlot + +from argparse import ArgumentParser +from os.path import exists as exist +from pathlib import Path + +matplotlib.use('Qt5Agg') -def main(): - # Run Input Parser - args = arguments.get_arguments_calc_auto() +def get_arguments_calc_auto(argv=None): + + parser = ArgumentParser( + usage="%(prog)s [arguments] ", + description="Script wrapping " + "together the python-based implementation of SplitLab by " + + "Wustefeld and others. This version " + + "requests data on the fly for a given date range. Data is " + + "requested from the internet using " + + "the client services framework or from data provided on a " + + "local disk. The stations are processed " + + "one by one with the SKS Splitting parameters measured " + + "individually using both the " + + "Rotation-Correlation (RC) and Silver & Chan (SC) methods.") + parser.add_argument( + "indb", + help="Station Database to process from.", + type=str) + parser.add_argument( + "--keys", + action="store", + type=str, + dest="stkeys", + default="", + help="Specify a comma separated list of station keys for " + + "which to perform the analysis. These must be " + + "contained within the station database. Partial keys " + + "will be used to match against those in the " + + "dictionary. For instance, providing IU will match with " + + "all stations in the IU network [Default processes " + + "all stations in the database]") + parser.add_argument( + "-V", "--verbose", + action="store_true", + dest="verb", + default=False, + help="Specify to increase verbosity.") + parser.add_argument( + "-O", "--overwrite", + action="store_true", + dest="ovr", + default=False, + help="Force the overwriting of pre-existing Split results. " + + "Default behaviour prompts for those that " + + "already exist. Selecting overwrite and skip (ie, both flags) " + + "negate each other, and both are set to " + + "false (every repeat is prompted). [Default False]") + parser.add_argument( + "-K", "--skip-existing", + action="store_true", + dest="skip", + default=False, + help="Skip any event for which existing splitting results are " + + "saved to disk. Default behaviour prompts for " + + "each event. Selecting skip and overwrite (ie, both flags) " + + "negate each other, and both are set to " + + "False (every repeat is prompted). [Default False]") + parser.add_argument( + "-C", "--calc", + action="store_true", + dest="calc", + default=False, + help="Analyze data for shear-wave splitting. [Default saves data "+ + "to folders for subsequent analysis]") + parser.add_argument( + "-P", "--plot-diagnostic", + action="store_true", + dest="diagplot", + default=False, + help="Plot diagnostic window at end of process. [Default False]") + parser.add_argument( + "-R", "--recalc", + action="store_true", + dest="recalc", + default=False, + help="Re-calculate estimates and overwrite existing splitting "+ + "results without re-downloading data. [Default False]") + + # Server Settings + ServerGroup = parser.add_argument_group( + title="Server Settings", + description="Settings associated with which " + + "datacenter to log into.") + ServerGroup.add_argument( + "-S", "--server", + action="store", + type=str, + dest="Server", + default="IRIS", + help="Specify the server to connect to. Options include: " + + "BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, NCEDC, " + + "NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, USP. [Default IRIS]") + ServerGroup.add_argument( + "-U", "--user-auth", + action="store", + type=str, + dest="UserAuth", + default="", + help="Enter your IRIS Authentification Username and Password " + + "(--User-Auth='username:authpassword') to access and download " + + "restricted data. [Default no user and password]") + + # Database Settings + DataGroup = parser.add_argument_group( + title="Local Data Settings", + description="Settings associated with defining and using a " + + "local data base of pre-downloaded day-long SAC files.") + DataGroup.add_argument( + "--local-data", + action="store", + type=str, + dest="localdata", + default=None, + help="Specify a comma separated list of paths containing " + + "day-long sac files of data already downloaded. " + + "If data exists for a seismogram is already present on " + + "disk, it is selected preferentially over downloading " + + "the data using the Client interface") + DataGroup.add_argument( + "--dtype", + action="store", + type=str, + dest="dtype", + default='SAC', + help="Specify the data archive file type, either SAC " + + " or MSEED. Note the default behaviour is to search for " + + "SAC files. Local archive files must have extensions of '.SAC' "+ + " or '.MSEED. These are case dependent, so specify the correct case"+ + "here.") + DataGroup.add_argument( + "--no-data-zero", + action="store_true", + dest="ndval", + default=False, + help="Specify to force missing data to be set as zero, rather " + + "than default behaviour which sets to nan.") + DataGroup.add_argument( + "--no-local-net", + action="store_false", + dest="useNet", + default=True, + help="Specify to prevent using the Network code in the " + + "search for local data (sometimes for CN stations " + + "the dictionary name for a station may disagree with that " + + "in the filename. [Default Network used]") + + # Constants Settings + ConstGroup = parser.add_argument_group( + title='Parameter Settings', + description="Miscellaneous default values and settings") + ConstGroup.add_argument( + "--sampling-rate", + action="store", + type=float, + dest="new_sampling_rate", + default=10., + help="Specify new sampling rate in Hz. [Default 10.]") + ConstGroup.add_argument( + "--min-snr", + action="store", + type=float, + dest="msnr", + default=5., + help="Minimum SNR value calculated on the radial (Q) component "+ + "to proceed with analysis (dB). [Default 5.]") + ConstGroup.add_argument( + "--window", + action="store", + type=float, + dest="dts", + default=120., + help="Specify time window length before and after the SKS " + "arrival. The total window length is 2*dst (sec). [Default 120]") + ConstGroup.add_argument( + "--max-delay", + action="store", + type=float, + dest="maxdt", + default=4., + help="Specify the maximum delay time in search (sec). "+ + "[Default 4]") + ConstGroup.add_argument( + "--dt-delay", + action="store", + type=float, + dest="ddt", + default=0.1, + help="Specify the time delay increment in search (sec). "+ + "[Default 0.1]") + ConstGroup.add_argument( + "--dphi", + action="store", + type=float, + dest="dphi", + default=1., + help="Specify the fast angle increment in search (degree). "+ + "[Default 1.]") + ConstGroup.add_argument( + "--snrT", + action="store", + type=float, + dest="snrTlim", + default=1., + help="Specify the minimum SNR Threshold for the Transverse " + + "component to be considered Non-Null. [Default 1.]") + ConstGroup.add_argument( + "--fmin", + action="store", + type=float, + dest="fmin", + default=0.02, + help="Specify the minimum frequency corner for bandpass " + + "filter (Hz). [Default 0.02]") + ConstGroup.add_argument( + "--fmax", + action="store", + type=float, + dest="fmax", + default=0.5, + help="Specify the maximum frequency corner for bandpass " + + "filter (Hz). [Default 0.5]") + + # Event Selection Criteria + EventGroup = parser.add_argument_group( + title="Event Settings", + description="Settings associated with refining " + "the events to include in matching station pairs") + EventGroup.add_argument( + "--start", + action="store", + type=str, + dest="startT", + default="", + help="Specify a UTCDateTime compatible string representing " + + "the start time for the event search. This will override any " + + "station start times. [Default start date of each station]") + EventGroup.add_argument( + "--end", + action="store", + type=str, + dest="endT", + default="", + help="Specify a UTCDateTime compatible string representing " + + "the end time for the event search. This will override any " + + "station end times [Default end date of each station]") + EventGroup.add_argument( + "--reverse", + action="store_true", + dest="reverse", + default=False, + help="Reverse order of events. Default behaviour starts at " + + "oldest event and works towards most recent. " + + "Specify reverse order and instead the program will start " + + "with the most recent events and work towards older") + EventGroup.add_argument( + "--min-mag", + action="store", + type=float, + dest="minmag", + default=6.0, + help="Specify the minimum magnitude of event for which to " + + "search. [Default 6.0]") + EventGroup.add_argument( + "--max-mag", + action="store", + type=float, + dest="maxmag", + default=None, + help="Specify the maximum magnitude of event for which to " + + "search. [Default None, i.e. no limit]") + + # Geometry Settings + GeomGroup = parser.add_argument_group( + title="Geometry Settings", + description="Settings associatd with the " + "event-station geometries") + GeomGroup.add_argument( + "--min-dist", + action="store", + type=float, + dest="mindist", + default=85., + help="Specify the minimum great circle distance (degrees) " + + "between the station and event. [Default 85]") + GeomGroup.add_argument( + "--max-dist", + action="store", + type=float, + dest="maxdist", + default=120., + help="Specify the maximum great circle distance (degrees) " + + "between the station and event. [Default 120]") + GeomGroup.add_argument( + "--phase", + action="store", + type=str, + dest="phase", + default='SKS', + help="Specify the phase name to use. Be careful with the distance. " + + "setting. Options are 'SKS' or 'SKKS'. [Default 'SKS']") + + args = parser.parse_args(argv) + + # Check inputs + if not exist(args.indb): + parser.error("Input file " + args.indb + " does not exist") + + # create station key list + if len(args.stkeys) > 0: + args.stkeys = args.stkeys.split(',') + + # construct start time + if len(args.startT) > 0: + try: + args.startT = UTCDateTime(args.startT) + except: + parser.error( + "Cannot construct UTCDateTime from start time: " + + args.startT) + else: + args.startT = None + + # construct end time + if len(args.endT) > 0: + try: + args.endT = UTCDateTime(args.endT) + except: + parser.error( + "Cannot construct UTCDateTime from end time: " + + args.endT) + else: + args.endT = None + + # Parse User Authentification + if not len(args.UserAuth) == 0: + tt = args.UserAuth.split(':') + if not len(tt) == 2: + parser.error( + "Error: Incorrect Username and Password Strings for " + + "User Authentification") + else: + args.UserAuth = tt + else: + args.UserAuth = [] + + # Check existing file behaviour + if args.skip and args.ovr: + args.skip = False + args.ovr = False + + # Parse Local Data directories + if args.localdata is not None: + args.localdata = args.localdata.split(',') + else: + args.localdata = [] + + # Check NoData Value + if args.ndval: + args.ndval = 0.0 + else: + args.ndval = nan + + # Check selected phase + if args.phase not in ['SKS', 'SKKS', 'PKS']: + parser.error( + "Error: choose between 'SKS', 'SKKS and 'PKS'.") + + # Check distances for all phases + if not args.mindist: + if args.phase == 'SKS': + args.mindist = 85. + elif args.phase == 'SKKS': + args.mindist = 90. + elif args.phase == 'PKS': + args.mindist = 130. + if not args.maxdist: + if args.phase == 'SKS': + args.maxdist = 120. + elif args.phase == 'SKKS': + args.maxdist = 130. + elif args.phase == 'PKS': + args.maxdist = 150. + if args.mindist < 85. or args.maxdist > 180.: + parser.error( + "Distances should be between 85 and 180 deg. for " + + "teleseismic 'SKS', 'SKKS' and 'PKS' waves.") + + return args + +def main(args=None): + + if args is None: + # Run Input Parser + args = get_arguments_calc_auto() # Load Database # stdb=0.1.4 @@ -79,7 +475,9 @@ def main(): data_client = Client(args.Server) else: data_client = Client( - args.Server, user=args.UserAuth[0], password=args.UserAuth[1]) + args.Server, + user=args.UserAuth[0], + password=args.UserAuth[1]) # Establish client for events event_client = Client() @@ -143,8 +541,10 @@ def main(): # Get catalogue using deployment start and end cat = event_client.get_events( - starttime=tstart, endtime=tend, - minmagnitude=args.minmag, maxmagnitude=args.maxmag) + starttime=tstart, + endtime=tend, + minmagnitude=args.minmag, + maxmagnitude=args.maxmag) # Total number of events in Catalogue nevK = 0 @@ -160,13 +560,18 @@ def main(): print("| Cataloging Local Data... |") if args.useNet: stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, sta=sta.station, - net=sta.network, dtype=args.dtype, altnet=sta.altnet) + lcldrs=args.localdata, + sta=sta.station, + net=sta.network, + dtype=args.dtype, + altnet=sta.altnet) print("| {0:>2s}.{1:5s}: {2:6d} files ".format( sta.network, sta.station, len(stalcllist))) else: stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, dtype=args.dtype, sta=sta.station) + lcldrs=args.localdata, + dtype=args.dtype, + sta=sta.station) print("| {0:5s}: {1:6d} files ".format( sta.station, len(stalcllist))) else: @@ -190,8 +595,11 @@ def main(): # Add event to split object accept = split.add_event( - ev, gacmin=args.mindist, gacmax=args.maxdist, - phase=args.phase, returned=True) + ev, + gacmin=args.mindist, + gacmax=args.maxdist, + phase=args.phase, + returned=True) # Define time stamp yr = str(split.meta.time.year).zfill(4) @@ -257,8 +665,10 @@ def main(): split.rotate(align='LQT') # Filter rotated traces - split.dataLQT.filter('bandpass', freqmin=args.fmin, - freqmax=args.fmax) + split.dataLQT.filter( + 'bandpass', + freqmin=args.fmin, + freqmax=args.fmax) # Calculate snr over dt_snr seconds split.calc_snr() @@ -270,9 +680,14 @@ def main(): # Get data has_data = split.download_data( - client=data_client, dts=args.dts, stdata=stalcllist, - dtype=args.dtype, ndval=args.ndval, new_sr=args.new_sampling_rate, - returned=True, verbose=args.verb) + client=data_client, + dts=args.dts, + stdata=stalcllist, + dtype=args.dtype, + ndval=args.ndval, + new_sr=args.new_sampling_rate, + returned=True, + verbose=args.verb) if not has_data: continue @@ -281,8 +696,10 @@ def main(): split.rotate(align='LQT') # Filter rotated traces - split.dataLQT.filter('bandpass', freqmin=args.fmin, - freqmax=args.fmax) + split.dataLQT.filter( + 'bandpass', + freqmin=args.fmin, + freqmax=args.fmax) # Calculate snr over dt_snr seconds split.calc_snr() diff --git a/splitpy/scripts/split_calc_manual.py b/splitpy/scripts/split_calc_manual.py index 1ee4bb7..ece05e6 100755 --- a/splitpy/scripts/split_calc_manual.py +++ b/splitpy/scripts/split_calc_manual.py @@ -23,28 +23,176 @@ # SOFTWARE. # -*- coding: utf-8 -*- -from pathlib import Path -from splitpy import Pick, Keep, Save, Repeat -from splitpy import PickPlot, DiagPlot -from splitpy import arguments, utils -from splitpy import Split import matplotlib.pyplot as plt +import matplotlib import numpy as np import pickle import stdb + from obspy.clients.fdsn import Client from obspy import UTCDateTime + +from splitpy import Pick, Keep, Save, Repeat +from splitpy import PickPlot, DiagPlot +from splitpy import arguments, utils +from splitpy import Split + from PyQt5.QtCore import pyqtSlot from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication -import matplotlib -matplotlib.use('Qt5Agg') +from argparse import ArgumentParser +from os.path import exists as exist +from pathlib import Path + +matplotlib.use('Qt5Agg') -def main(): - # Run Input Parser - args = arguments.get_arguments_calc_manual() +def get_arguments_calc_manual(argv=None): + + parser = ArgumentParser( + usage="%(prog)s [arguments] ", + description="Script to process " + "and calculate the spliting parameters for a dataset " + + "that has already been downloaded by split_calc_auto. ") + + # General Settings + parser.add_argument( + "indb", + help="Station Database to process from.", + type=str) + parser.add_argument( + "--keys", + action="store", + type=str, + dest="stkeys", + default="", + help="Specify a comma separated list of station keys " + + "for which to perform analysis. These must be " + + "contained within the station database. Partial keys " + + "will be used to match against those in the " + + "dictionary. For instance, providing IU will match " + + "with all stations in the IU network [Default " + + "processes all stations in the database]") + parser.add_argument( + "-v", "-V", "--verbose", + action="store_true", + dest="verb", + default=False, + help="Specify to increase verbosity.") + + # Constants Settings + ConstGroup = parser.add_argument_group( + title='Parameter Settings', + description="Miscellaneous default values and settings") + ConstGroup.add_argument( + "--window", + action="store", + type=float, + dest="dts", + default=120., + help="Specify time window length before and after the SKS " + "arrival. The total window length is 2*dst (sec). [Default 120]") + ConstGroup.add_argument( + "--max-delay", + action="store", + type=float, + dest="maxdt", + default=4., + help="Specify the maximum delay time. [Default 4 s]") + ConstGroup.add_argument( + "--time-increment", + action="store", + type=float, + dest="ddt", + default=0.1, + help="Specify the time increment. [Default 0.1 s]") + ConstGroup.add_argument( + "--angle-increment", + action="store", + type=float, + dest="dphi", + default=1., + help="Specify the angle increment. [Default 1 d]") + ConstGroup.add_argument( + "--transverse-SNR", + action="store", + type=float, + dest="snrTlim", + default=1., + help="Specify the minimum SNR Threshold for the Transverse " + + "component to be considered Non-Null. [Default 1.]") + + # Event Selection Criteria + EventGroup = parser.add_argument_group( + title="Event Settings", + description="Settings associated with " + + "refining the events to include in matching station pairs") + EventGroup.add_argument( + "--start", + action="store", + type=str, + dest="startT", + default="", + help="Specify a UTCDateTime compatible string representing the " + + "start time for the event search. This will override any station " + + "start times. [Default more recent start date for each station pair]") + EventGroup.add_argument( + "--end", + action="store", + type=str, + dest="endT", + default="", + help="Specify a UTCDateTime compatible string representing the " + + "end time for the event search. This will override any station " + + "end times [Default older end date for each the pair of stations]") + EventGroup.add_argument( + "--reverse-order", "-R", + action="store_true", + dest="reverse", + default=False, + help="Reverse order of events. Default behaviour starts at oldest " + + "event and works towards most recent. Specify reverse order and " + + "instead the program will start with the most recent events and " + + "work towards older") + + args = parser.parse_args(argv) + + # Check inputs + if not exist(args.indb): + parser.error("Input file " + args.indb + " does not exist") + + # create station key list + if len(args.stkeys) > 0: + args.stkeys = args.stkeys.split(',') + + # construct start time + if len(args.startT) > 0: + try: + args.startT = UTCDateTime(args.startT) + except: + parser.error( + "Cannot construct UTCDateTime from start time: " + args.startT) + else: + args.startT = None + + # construct end time + if len(args.endT) > 0: + try: + args.endT = UTCDateTime(args.endT) + except: + parser.error( + "Cannot construct UTCDateTime from end time: " + args.endT) + else: + args.endT = None + + return args + +def main(args=None): + + if args is None: + # Run Input Parser + args = get_arguments_calc_manual() # Load Database # stdb=0.1.4 From 0df545ae9254e50661b05b08a9a4cf71665ade65 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 21:57:18 +1200 Subject: [PATCH 05/39] package cleanup --- setup.py => setup.py.bak | 0 splitpy/arguments.py | 751 --------------------------------------- 2 files changed, 751 deletions(-) rename setup.py => setup.py.bak (100%) delete mode 100644 splitpy/arguments.py diff --git a/setup.py b/setup.py.bak similarity index 100% rename from setup.py rename to setup.py.bak diff --git a/splitpy/arguments.py b/splitpy/arguments.py deleted file mode 100644 index 99c7af6..0000000 --- a/splitpy/arguments.py +++ /dev/null @@ -1,751 +0,0 @@ -# Copyright 2019 Pascal Audet & Andrew Schaeffer -# -# This file is part of SplitPy. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -""" - -Module containing the main utility functions used in the `SplitPy` scripts -that accompany this package. - -""" - -# -*- coding: utf-8 -*- -from argparse import ArgumentParser -from os.path import exists as exist -from obspy import UTCDateTime -from numpy import nan - - -def get_arguments_calc_auto(argv=None): - """ - Get Options from :class:`~optparse.OptionParser` objects. - - This function is used for data processing on-the-fly (requires web connection) - - """ - - parser = ArgumentParser( - usage="%(prog)s [arguments] ", - description="Script wrapping " - "together the python-based implementation of SplitLab by " + - "Wustefeld and others. This version " + - "requests data on the fly for a given date range. Data is " + - "requested from the internet using " + - "the client services framework or from data provided on a " + - "local disk. The stations are processed " + - "one by one with the SKS Splitting parameters measured " + - "individually using both the " + - "Rotation-Correlation (RC) and Silver & Chan (SC) methods.") - parser.add_argument( - "indb", - help="Station Database to process from.", - type=str) - parser.add_argument( - "--keys", - action="store", - type=str, - dest="stkeys", - default="", - help="Specify a comma separated list of station keys for " + - "which to perform the analysis. These must be " + - "contained within the station database. Partial keys " + - "will be used to match against those in the " + - "dictionary. For instance, providing IU will match with " + - "all stations in the IU network [Default processes " + - "all stations in the database]") - parser.add_argument( - "-v", "-V", "--verbose", - action="store_true", - dest="verb", - default=False, - help="Specify to increase verbosity.") - parser.add_argument( - "-O", "--overwrite", - action="store_true", - dest="ovr", - default=False, - help="Force the overwriting of pre-existing Split results. " + - "Default behaviour prompts for those that " + - "already exist. Selecting overwrite and skip (ie, both flags) " + - "negate each other, and both are set to " + - "false (every repeat is prompted). [Default False]") - parser.add_argument( - "-K", "--skip-existing", - action="store_true", - dest="skip", - default=False, - help="Skip any event for which existing splitting results are " + - "saved to disk. Default behaviour prompts for " + - "each event. Selecting skip and overwrite (ie, both flags) " + - "negate each other, and both are set to " + - "False (every repeat is prompted). [Default False]") - parser.add_argument( - "-C", "--calc", - action="store_true", - dest="calc", - default=False, - help="Analyze data for shear-wave splitting. [Default saves data "+ - "to folders for subsequent analysis]") - parser.add_argument( - "-P", "--plot-diagnostic", - action="store_true", - dest="diagplot", - default=False, - help="Plot diagnostic window at end of process. [Default False]") - parser.add_argument( - "-R", "--recalc", - action="store_true", - dest="recalc", - default=False, - help="Re-calculate estimates and overwrite existing splitting "+ - "results without re-downloading data. [Default False]") - - # Server Settings - ServerGroup = parser.add_argument_group( - title="Server Settings", - description="Settings associated with which " + - "datacenter to log into.") - ServerGroup.add_argument( - "-S", "--Server", - action="store", - type=str, - dest="Server", - default="IRIS", - help="Specify the server to connect to. Options include: " + - "BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, NCEDC, " + - "NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, USP. [Default IRIS]") - ServerGroup.add_argument( - "-U", "--User-Auth", - action="store", - type=str, - dest="UserAuth", - default="", - help="Enter your IRIS Authentification Username and Password " + - "(--User-Auth='username:authpassword') to access and download " + - "restricted data. [Default no user and password]") - - # Database Settings - DataGroup = parser.add_argument_group( - title="Local Data Settings", - description="Settings associated with defining and using a " + - "local data base of pre-downloaded day-long SAC files.") - DataGroup.add_argument( - "--local-data", - action="store", - type=str, - dest="localdata", - default=None, - help="Specify a comma separated list of paths containing " + - "day-long sac files of data already downloaded. " + - "If data exists for a seismogram is already present on " + - "disk, it is selected preferentially over downloading " + - "the data using the Client interface") - DataGroup.add_argument( - "--dtype", - action="store", - type=str, - dest="dtype", - default='SAC', - help="Specify the data archive file type, either SAC " + - " or MSEED. Note the default behaviour is to search for " + - "SAC files. Local archive files must have extensions of '.SAC' "+ - " or '.MSEED. These are case dependent, so specify the correct case"+ - "here.") - DataGroup.add_argument( - "--no-data-zero", - action="store_true", - dest="ndval", - default=False, - help="Specify to force missing data to be set as zero, rather " + - "than default behaviour which sets to nan.") - DataGroup.add_argument( - "--no-local-net", - action="store_false", - dest="useNet", - default=True, - help="Specify to prevent using the Network code in the " + - "search for local data (sometimes for CN stations " + - "the dictionary name for a station may disagree with that " + - "in the filename. [Default Network used]") - - # Constants Settings - ConstGroup = parser.add_argument_group( - title='Parameter Settings', - description="Miscellaneous default values and settings") - ConstGroup.add_argument( - "--sampling-rate", - action="store", - type=float, - dest="new_sampling_rate", - default=10., - help="Specify new sampling rate in Hz. [Default 10.]") - ConstGroup.add_argument( - "--min-snr", - action="store", - type=float, - dest="msnr", - default=5., - help="Minimum SNR value calculated on the radial (Q) component "+ - "to proceed with analysis (dB). [Default 5.]") - ConstGroup.add_argument( - "--window", - action="store", - type=float, - dest="dts", - default=120., - help="Specify time window length before and after the SKS " - "arrival. The total window length is 2*dst (sec). [Default 120]") - ConstGroup.add_argument( - "--max-delay", - action="store", - type=float, - dest="maxdt", - default=4., - help="Specify the maximum delay time in search (sec). "+ - "[Default 4]") - ConstGroup.add_argument( - "--dt-delay", - action="store", - type=float, - dest="ddt", - default=0.1, - help="Specify the time delay increment in search (sec). "+ - "[Default 0.1]") - ConstGroup.add_argument( - "--dphi", - action="store", - type=float, - dest="dphi", - default=1., - help="Specify the fast angle increment in search (degree). "+ - "[Default 1.]") - ConstGroup.add_argument( - "--snrT", - action="store", - type=float, - dest="snrTlim", - default=1., - help="Specify the minimum SNR Threshold for the Transverse " + - "component to be considered Non-Null. [Default 1.]") - ConstGroup.add_argument( - "--fmin", - action="store", - type=float, - dest="fmin", - default=0.02, - help="Specify the minimum frequency corner for bandpass " + - "filter (Hz). [Default 0.02]") - ConstGroup.add_argument( - "--fmax", - action="store", - type=float, - dest="fmax", - default=0.5, - help="Specify the maximum frequency corner for bandpass " + - "filter (Hz). [Default 0.5]") - - # Event Selection Criteria - EventGroup = parser.add_argument_group( - title="Event Settings", - description="Settings associated with refining " - "the events to include in matching station pairs") - EventGroup.add_argument( - "--start", - action="store", - type=str, - dest="startT", - default="", - help="Specify a UTCDateTime compatible string representing " + - "the start time for the event search. This will override any " + - "station start times. [Default start date of each station]") - EventGroup.add_argument( - "--end", - action="store", - type=str, - dest="endT", - default="", - help="Specify a UTCDateTime compatible string representing " + - "the end time for the event search. This will override any " + - "station end times [Default end date of each station]") - EventGroup.add_argument( - "--reverse", - action="store_true", - dest="reverse", - default=False, - help="Reverse order of events. Default behaviour starts at " + - "oldest event and works towards most recent. " + - "Specify reverse order and instead the program will start " + - "with the most recent events and work towards older") - EventGroup.add_argument( - "--min-mag", - action="store", - type=float, - dest="minmag", - default=6.0, - help="Specify the minimum magnitude of event for which to " + - "search. [Default 6.0]") - EventGroup.add_argument( - "--max-mag", - action="store", - type=float, - dest="maxmag", - default=None, - help="Specify the maximum magnitude of event for which to " + - "search. [Default None, i.e. no limit]") - - # Geometry Settings - GeomGroup = parser.add_argument_group( - title="Geometry Settings", - description="Settings associatd with the " - "event-station geometries") - GeomGroup.add_argument( - "--min-dist", - action="store", - type=float, - dest="mindist", - default=85., - help="Specify the minimum great circle distance (degrees) " + - "between the station and event. [Default 85]") - GeomGroup.add_argument( - "--max-dist", - action="store", - type=float, - dest="maxdist", - default=120., - help="Specify the maximum great circle distance (degrees) " + - "between the station and event. [Default 120]") - GeomGroup.add_argument( - "--phase", - action="store", - type=str, - dest="phase", - default='SKS', - help="Specify the phase name to use. Be careful with the distance. " + - "setting. Options are 'SKS' or 'SKKS'. [Default 'SKS']") - - args = parser.parse_args(argv) - - # Check inputs - if not exist(args.indb): - parser.error("Input file " + args.indb + " does not exist") - - # create station key list - if len(args.stkeys) > 0: - args.stkeys = args.stkeys.split(',') - - # construct start time - if len(args.startT) > 0: - try: - args.startT = UTCDateTime(args.startT) - except: - parser.error( - "Cannot construct UTCDateTime from start time: " + - args.startT) - else: - args.startT = None - - # construct end time - if len(args.endT) > 0: - try: - args.endT = UTCDateTime(args.endT) - except: - parser.error( - "Cannot construct UTCDateTime from end time: " + - args.endT) - else: - args.endT = None - - # Parse User Authentification - if not len(args.UserAuth) == 0: - tt = args.UserAuth.split(':') - if not len(tt) == 2: - parser.error( - "Error: Incorrect Username and Password Strings for " + - "User Authentification") - else: - args.UserAuth = tt - else: - args.UserAuth = [] - - # Check existing file behaviour - if args.skip and args.ovr: - args.skip = False - args.ovr = False - - # Parse Local Data directories - if args.localdata is not None: - args.localdata = args.localdata.split(',') - else: - args.localdata = [] - - # Check NoData Value - if args.ndval: - args.ndval = 0.0 - else: - args.ndval = nan - - # Check selected phase - if args.phase not in ['SKS', 'SKKS', 'PKS']: - parser.error( - "Error: choose between 'SKS', 'SKKS and 'PKS'.") - - # Check distances for all phases - if not args.mindist: - if args.phase == 'SKS': - args.mindist = 85. - elif args.phase == 'SKKS': - args.mindist = 90. - elif args.phase == 'PKS': - args.mindist = 130. - if not args.maxdist: - if args.phase == 'SKS': - args.maxdist = 120. - elif args.phase == 'SKKS': - args.maxdist = 130. - elif args.phase == 'PKS': - args.maxdist = 150. - if args.mindist < 85. or args.maxdist > 180.: - parser.error( - "Distances should be between 85 and 180 deg. for " + - "teleseismic 'SKS', 'SKKS' and 'PKS' waves.") - - return args - - -def get_arguments_calc_manual(argv=None): - """ - Get Options from :class:`~optparse.OptionParser` objects. - - This function is used for processing SKS data offline - - """ - - parser = ArgumentParser( - usage="%(prog)s [arguments] ", - description="Script to process " - "and calculate the spliting parameters for a dataset " + - "that has already been downloaded by split_calc_auto.py. ") - - # General Settings - parser.add_argument( - "indb", - help="Station Database to process from.", - type=str) - parser.add_argument( - "--keys", - action="store", - type=str, - dest="stkeys", - default="", - help="Specify a comma separated list of station keys " + - "for which to perform analysis. These must be " + - "contained within the station database. Partial keys " + - "will be used to match against those in the " + - "dictionary. For instance, providing IU will match " + - "with all stations in the IU network [Default " + - "processes all stations in the database]") - parser.add_argument( - "-v", "-V", "--verbose", - action="store_true", - dest="verb", - default=False, - help="Specify to increase verbosity.") - - # Constants Settings - ConstGroup = parser.add_argument_group( - title='Parameter Settings', - description="Miscellaneous default values and settings") - ConstGroup.add_argument( - "--window", - action="store", - type=float, - dest="dts", - default=120., - help="Specify time window length before and after the SKS " - "arrival. The total window length is 2*dst (sec). [Default 120]") - ConstGroup.add_argument( - "--max-delay", - action="store", - type=float, - dest="maxdt", - default=4., - help="Specify the maximum delay time. [Default 4 s]") - ConstGroup.add_argument( - "--time-increment", - action="store", - type=float, - dest="ddt", - default=0.1, - help="Specify the time increment. [Default 0.1 s]") - ConstGroup.add_argument( - "--angle-increment", - action="store", - type=float, - dest="dphi", - default=1., - help="Specify the angle increment. [Default 1 d]") - ConstGroup.add_argument( - "--transverse-SNR", - action="store", - type=float, - dest="snrTlim", - default=1., - help="Specify the minimum SNR Threshold for the Transverse " + - "component to be considered Non-Null. [Default 1.]") - - # Event Selection Criteria - EventGroup = parser.add_argument_group( - title="Event Settings", - description="Settings associated with " + - "refining the events to include in matching station pairs") - EventGroup.add_argument( - "--start", - action="store", - type=str, - dest="startT", - default="", - help="Specify a UTCDateTime compatible string representing the " + - "start time for the event search. This will override any station " + - "start times. [Default more recent start date for each station pair]") - EventGroup.add_argument( - "--end", - action="store", - type=str, - dest="endT", - default="", - help="Specify a UTCDateTime compatible string representing the " + - "end time for the event search. This will override any station " + - "end times [Default older end date for each the pair of stations]") - EventGroup.add_argument( - "--reverse-order", "-R", - action="store_true", - dest="reverse", - default=False, - help="Reverse order of events. Default behaviour starts at oldest " + - "event and works towards most recent. Specify reverse order and " + - "instead the program will start with the most recent events and " + - "work towards older") - - args = parser.parse_args(argv) - - # Check inputs - if not exist(args.indb): - parser.error("Input file " + args.indb + " does not exist") - - # create station key list - if len(args.stkeys) > 0: - args.stkeys = args.stkeys.split(',') - - # construct start time - if len(args.startT) > 0: - try: - args.startT = UTCDateTime(args.startT) - except: - parser.error( - "Cannot construct UTCDateTime from start time: " + args.startT) - else: - args.startT = None - - # construct end time - if len(args.endT) > 0: - try: - args.endT = UTCDateTime(args.endT) - except: - parser.error( - "Cannot construct UTCDateTime from end time: " + args.endT) - else: - args.endT = None - - return args - - -def get_arguments_average(argv=None): - - parser = ArgumentParser( - usage="%(prog)s [arguments] ", - description="Script to plot the average splitting results for a " + - "given station. Loads the available .pkl files in the specified " + - "Station Directory.") - - # General Settings - parser.add_argument( - "indb", - help="Station Database to process from.", - type=str) - parser.add_argument( - "--keys", - action="store", - type=str, - dest="stkeys", - default="", - help="Specify a comma separated list of station keys " + - "for which to perform analysis. These must be " + - "contained within the station database. Partial keys " + - "will be used to match against those in the " + - "dictionary. For instance, providing IU will match " + - "with all stations in the IU network [Default " + - "processes all stations in the database]") - parser.add_argument( - "-v", "-V", "--verbose", - action="store_true", - dest="verb", - default=False, - help="Specify to increase verbosity.") - parser.add_argument( - "--show-fig", - action="store_true", - dest="showfig", - default=False, - help="Specify show plots during processing - " + - "they are still saved to disk. [Default only saves]") - parser.add_argument( - "-A", "--auto", - action="store_true", - dest="auto", - default=False, - help="Specify to use automatically processed split results. "+ - "[Default uses refined ('manual') split results]") - - # Null Settings - NullGroup = parser.add_argument_group( - title="Null Selection Settings", - description="Settings " - "associated with selecting which Null or Non-Null data is included") - NullGroup.add_argument( - "--nulls", "--Nulls", - action="store_true", - dest="nulls", - default=False, - help="Specify this flag to include Null Values in the average. " + - "[Default Non-Nulls only]") - NullGroup.add_argument( - "--no-nons", "--No-Nons", - action="store_false", - dest="nons", - default=True, - help="Specify this flag to exclude Non-Nulls from the average " + - "[Default False]") - - # Quality Settings - QualGroup = parser.add_argument_group( - title="Quality Selection Settings", - description="Settings associated with selecting the qualities " + - "to include in the selection.") - QualGroup.add_argument( - "--No-Good", "--no-good", - action="store_false", - dest="goods", - default=True, - help="Specify to exclude 'Good' measurements from the average. " + - "[Default Good + Fair]") - QualGroup.add_argument( - "--No-Fair", "--no-fair", - action="store_false", - dest="fairs", - default=True, - help="Specify to exclude 'Fair' measurements from the average " + - "[Default Good + Fair]") - QualGroup.add_argument( - "--Poor", "--poor", - action="store_true", - dest="poors", - default=False, - help="Specify to include 'Poor' measurements in the average " + - "[Default No Poors]") - - # Split Type Settings - SpTypGroup = parser.add_argument_group( - title="Split Type Settings", - description="Settings to Select " - "which Split types are included in the selection.") - SpTypGroup.add_argument( - "--RC-Only", "--rc-only", "--RC-only", - action="store_false", - dest="SCinc", - default=True, - help="Specify to only include RC splits in the average. " + - "[Default RC + SC]") - SpTypGroup.add_argument( - "--SC-Only", "--sc-only", "--SC-only", - action="store_false", - dest="RCinc", - default=True, - help="Specify to only include SC splits in the average. " + - "[Default RC + SC]") - - args = parser.parse_args(argv) - - # Check inputs - if not exist(args.indb): - parser.error("Input file " + args.indb + " does not exist") - - # Check Nulls - if not args.nons and not args.nulls: - parser.error("One of Non-Nulls or Nulls must be included.") - - # Check Quality - if not args.goods and not args.fairs and not args.poors: - parser.error("At least one Quality must be included.") - - # Check Types - if not args.RCinc and not args.SCinc: - parser.error("At leat one Splitting Tyhpe must be included.") - - # Construct Null FileName Components - NullName = "" - if args.nons: - NullName = "_Nons" - if args.nulls: - NullName = NullName + "-Nulls" - else: - if args.nulls: - NullName = "_Nulls" - args.NullName = NullName - - # Construct Quality FileName Components - QualName = "" - if args.goods: - QualName = "_G" - if args.fairs: - QualName = QualName + "-F" - if args.poors: - QualName = QualName + "-P" - else: - if args.fairs: - QualName = "_F" - if args.poors: - QualName = QualName + "-P" - else: - if args.poors: - QualName = "_P" - args.QualName = QualName - - # Construct Type FileName Components - TypeName = "" - if args.RCinc and args.SCinc: - TypeName = "_RC-SC" - elif args.RCinc and not args.SCinc: - TypeName = "_RC" - elif not args.RCinc and args.SCinc: - TypeName = "_SC" - args.TypeName = TypeName - - return args - From 79171845019d175895fa76192efbbdc106d20ef5 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Thu, 15 May 2025 22:09:47 +1200 Subject: [PATCH 06/39] fixed script installation --- pyproject.toml | 6 +++--- splitpy/__init__.py | 2 +- splitpy/scripts/split_average.py | 20 ++++++++++---------- splitpy/scripts/split_calc_manual.py | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4accbbf..6210fcf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,6 @@ Documentation = "https://paudetseis.github.io/SplitPy" "Bug Tracker" = "https://github.com/paudetseis/SplitPy/issues" [project.scripts] -split_calc_auto = "scplitpy.scripts.split_calc_auto:main" -split_calc_manual = "scplitpy.scripts.split_calc_manual:main" -split_average = "scplitpy.scripts.split_average:main" +split_calc_auto = "splitpy.scripts.split_calc_auto:main" +split_calc_manual = "splitpy.scripts.split_calc_manual:main" +split_average = "splitpy.scripts.split_average:main" diff --git a/splitpy/__init__.py b/splitpy/__init__.py index 23f6293..352eb39 100644 --- a/splitpy/__init__.py +++ b/splitpy/__init__.py @@ -25,6 +25,6 @@ __author__ = 'Pascal Audet & Andrew Schaeffer' # -*- coding: utf-8 -*- -from . import utils, calc, arguments +from . import utils, calc from .classes import Split, PickPlot, DiagPlot from .gui import Pick, Keep, Save, Repeat diff --git a/splitpy/scripts/split_average.py b/splitpy/scripts/split_average.py index 4b5690a..63c615c 100755 --- a/splitpy/scripts/split_average.py +++ b/splitpy/scripts/split_average.py @@ -31,7 +31,7 @@ import matplotlib.gridspec as gspec from math import ceil -from splitpy import arguments, Split +from splitpy import Split from argparse import ArgumentParser from os.path import exists as exist @@ -78,7 +78,7 @@ def get_arguments_average(argv=None): "with all stations in the IU network [Default " + "processes all stations in the database]") parser.add_argument( - "-v", "-V", "--verbose", + "-V", "--verbose", action="store_true", dest="verb", default=False, @@ -91,7 +91,7 @@ def get_arguments_average(argv=None): help="Specify show plots during processing - " + "they are still saved to disk. [Default only saves]") parser.add_argument( - "-A", "--auto", + "--auto", action="store_true", dest="auto", default=False, @@ -104,14 +104,14 @@ def get_arguments_average(argv=None): description="Settings " "associated with selecting which Null or Non-Null data is included") NullGroup.add_argument( - "--nulls", "--Nulls", + "--nulls", action="store_true", dest="nulls", default=False, help="Specify this flag to include Null Values in the average. " + "[Default Non-Nulls only]") NullGroup.add_argument( - "--no-nons", "--No-Nons", + "--no-nons", action="store_false", dest="nons", default=True, @@ -124,21 +124,21 @@ def get_arguments_average(argv=None): description="Settings associated with selecting the qualities " + "to include in the selection.") QualGroup.add_argument( - "--No-Good", "--no-good", + "--no-good", action="store_false", dest="goods", default=True, help="Specify to exclude 'Good' measurements from the average. " + "[Default Good + Fair]") QualGroup.add_argument( - "--No-Fair", "--no-fair", + "--no-fair", action="store_false", dest="fairs", default=True, help="Specify to exclude 'Fair' measurements from the average " + "[Default Good + Fair]") QualGroup.add_argument( - "--Poor", "--poor", + "--poor", action="store_true", dest="poors", default=False, @@ -151,14 +151,14 @@ def get_arguments_average(argv=None): description="Settings to Select " "which Split types are included in the selection.") SpTypGroup.add_argument( - "--RC-Only", "--rc-only", "--RC-only", + "--RC-only", action="store_false", dest="SCinc", default=True, help="Specify to only include RC splits in the average. " + "[Default RC + SC]") SpTypGroup.add_argument( - "--SC-Only", "--sc-only", "--SC-only", + "--SC-only", action="store_false", dest="RCinc", default=True, diff --git a/splitpy/scripts/split_calc_manual.py b/splitpy/scripts/split_calc_manual.py index ece05e6..28cdf80 100755 --- a/splitpy/scripts/split_calc_manual.py +++ b/splitpy/scripts/split_calc_manual.py @@ -34,7 +34,7 @@ from splitpy import Pick, Keep, Save, Repeat from splitpy import PickPlot, DiagPlot -from splitpy import arguments, utils +from splitpy import utils from splitpy import Split from PyQt5.QtCore import pyqtSlot From 27365e4c09f67df5904b202ab8f1032dea384702 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:24:15 +1200 Subject: [PATCH 07/39] np.int to int --- splitpy/classes.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/splitpy/classes.py b/splitpy/classes.py index 73bed6f..9c2d577 100644 --- a/splitpy/classes.py +++ b/splitpy/classes.py @@ -1335,7 +1335,7 @@ def rot3D(inc, baz): 0.5, 0.9, 'Event: ' + self.split.meta.time.ctime() + ' ' + str(self.split.meta.lat) + 'N ' + str(self.split.meta.lon) + 'E ' + - str(np.int(self.split.meta.dep)) + 'km ' + 'Mw=' + + str(int(self.split.meta.dep)) + 'km ' + 'Mw=' + str(self.split.meta.mag), horizontalalignment='center') self.axes[2].text( 0.5, 0.7, 'Station: ' + self.split.sta.station + @@ -1345,7 +1345,7 @@ def rot3D(inc, baz): horizontalalignment='center') self.axes[2].text( 0.5, 0.5, r'Best fit RC values: $\phi$=' + - str(np.int(self.split.RC_res.phi)) + r'$\pm$' + + str(int(self.split.RC_res.phi)) + r'$\pm$' + str("{:.2f}").format(self.split.RC_res.ephi) + r' $\delta t$=' + str(self.split.RC_res.dtt) + r'$\pm$' + @@ -1353,7 +1353,7 @@ def rot3D(inc, baz): 's', horizontalalignment='center') self.axes[2].text( 0.5, 0.3, r'Best fit SC values: $\phi$=' + - str(np.int(self.split.SC_res.phi)) + r'$\pm$' + + str(int(self.split.SC_res.phi)) + r'$\pm$' + str("{:.2f}").format(self.split.SC_res.ephi) + r' $\delta t$=' + str(self.split.SC_res.dtt) + r'$\pm$' + @@ -1411,7 +1411,7 @@ def rot3D(inc, baz): extent = [phi.min(), phi.max(), dt.min(), dt.max()] X, Y = np.meshgrid(dt, phi) - E2 = np.roll(self.split.RC_res.Emat, np.int( + E2 = np.roll(self.split.RC_res.Emat, int( self.split.RC_res.phi - self.split.RC_res.phi_min), axis=0) Emin = self.split.RC_res.Emat.min() @@ -1470,7 +1470,7 @@ def rot3D(inc, baz): extent = [phi.min(), phi.max(), dt.min(), dt.max()] X, Y = np.meshgrid(dt, phi) - E2 = np.roll(self.split.SC_res.Emat, np.int( + E2 = np.roll(self.split.SC_res.Emat, int( self.split.SC_res.phi-self.split.SC_res.phi_min), axis=0) Emin = self.split.SC_res.Emat.min() From 694602af17a54871ee0c04a56edfcbad5eed0aa6 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:24:30 +1200 Subject: [PATCH 08/39] no nan in ndval --- splitpy/scripts/split_calc_auto.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index aaf6f0c..ac461ac 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -398,11 +398,11 @@ def get_arguments_calc_auto(argv=None): else: args.localdata = [] - # Check NoData Value - if args.ndval: - args.ndval = 0.0 - else: - args.ndval = nan + # # Check NoData Value + # if args.ndval: + # args.ndval = 0.0 + # else: + # args.ndval = nan # Check selected phase if args.phase not in ['SKS', 'SKKS', 'PKS']: From f14af071f8dc6ef6ab3edebcd75d607711c82e28 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:33:07 +1200 Subject: [PATCH 09/39] update tutorial docs --- docs/tutorials.rst | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/tutorials.rst b/docs/tutorials.rst index 5158de1..be084af 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -6,17 +6,17 @@ Creating the ``StDb`` Database All the scripts provided require a ``StDb`` database containing station information and metadata. Let's first create this database for station -LOBS3 and send the prompt to a logfile +TGTN and send the prompt to a logfile .. code-block:: - $ query_fdsn_stdb.py -N TA -C HH? -S TGTN TGTN > logfile + $ query_fdsn_stdb -N NY -C HH -S TGTN TGTN > logfile -To check the station info for TGTN, use the program ``ls_stdb.py``: +To check the station info for TGTN, use the program ``ls_stdb``: .. code-block:: - $ ls_stdb.py TGTN.pkl + $ ls_stdb TGTN.pkl Listing Station Pickle: TGTN.pkl NY.TGTN -------------------------------------------------------------------------- @@ -49,13 +49,11 @@ seismic data suitable for shear-wave splitting analysis. .. code-block:: - $ split_calc_auto.py --keys=NY.TGTN --local-data=/mnt/datadisk/DaySac/ --start=2020-01-01 --end=2020-05-20 TGTN.pkl + $ split_calc_auto --keys=NY.TGTN --local-data=/mnt/datadisk/DaySac/ --start=2020-01-01 --end=2020-05-20 TGTN.pkl This uses all default settings for window lengths, magnitude criteria, etc. -In this example, data will be used from IRIS as well as any local data -on disk (defined with the ``--local-data`` flag - this needs to be customized for -your own file structure). If no data exists on disk, then -the program will search on the specific data sever (through ``obspy`` clients). In this +In this example, the program will search on the specific data server +(through ``obspy`` clients) to download the waveforms. In this example, only events that occurred between January 1, 2020 and May 20, 2020 will be considered. Based on the criteria specified (see :ref:`splitauto`), seismograms will be downloaded where the minimum SNR threshold is exceeded. All data will be saved in separate @@ -65,10 +63,10 @@ Downloading and Processing -------------------------- You can run :ref:`splitauto` to automatically estimate the shear-wave splitting -parameters by specifying the argument ``-C`` or ``--calc``. Choosing ``-V`` +parameters by specifying the argument or ``--calc``. Choosing ``-V`` or ``--verbose`` will display the results to the terminal as the script proceeds. If you wish to visualize the results -for each event, you can further select ``-P`` or ``--plot-diagnostic``. This will pop a +for each event, you can further select ``--plot-diagnostic``. This will pop a summary Figure (i.e., ``Figure 1``) of the splitting results for this particular event. As an example of a Good, non-null estimate, type the following line in the terminal @@ -77,7 +75,7 @@ there is only one key in the database): .. code-block:: - $ split_calc_auto.py --start=2020-03-18 --end=2020-03-19 -V -C -P -O TGTN.pkl + $ split_calc_auto --start=2020-03-18 --end=2020-03-19 -V --calc --plot-diagnostic -O TGTN.pkl This will produce, in the terminal: @@ -187,7 +185,7 @@ change the frequency settings and re-calculate the previous example: .. code-block:: - $ split_calc_auto.py --start=2020-03-18 --end=2020-03-19 --fmin=0.05 --fmax=1. -V -R -P -O TGTN.pkl + $ split_calc_auto --start=2020-03-18 --end=2020-03-19 --fmin=0.05 --fmax=1. -V --recalc --plot-diagnostic -O TGTN.pkl This will produce, in the terminal: @@ -288,7 +286,7 @@ one day of data: .. code-block:: - $ split_calc_manual.py --start=2020-03-18 --end=2020-03-19 TGTN.pkl + $ split_calc_manual --start=2020-03-18 --end=2020-03-19 TGTN.pkl .. figure:: ../splitpy/examples/figures/Figure_2.png :align: center @@ -312,17 +310,17 @@ Plotting and subsequent processing of splitting results is carried out using :ref:`splitaverage`, where options are present to control selection of nulls and quality settings, as well as which methods are used. All available data are processed. By default, the script will search for the ``manual`` results. The user -can specify to use the ``auto`` results with the argument ``-A`` or ``--auto``. The final +can specify to use the ``auto`` results with the argument ``--auto``. The final average splits are then saved in a text file for future use. For example, after running the refined processing for 4 years of data for station -TGTN (i.e., typing ``split_calc_auto.py --start=2016-01-01 -V -C TGTN.pkl``, which will +TGTN (i.e., typing ``split_calc_auto --start=2016-01-01 -V --calc TGTN.pkl``, which will take a long time to run and process all the data), we can visualize the results by typing in a terminal: .. code-block:: - $ split_average.py --show-fig -V TGTN.pkl + $ split_average --show-fig -V TGTN.pkl --------------------------- Selection Criteria Null Value: From 3c49825ac1fbe7760dc614c225c2d754799b3b0c Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:33:37 +1200 Subject: [PATCH 10/39] update split_calc_auto args --- splitpy/scripts/split_calc_auto.py | 52 +++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index ac461ac..27d0f01 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -90,7 +90,7 @@ def get_arguments_calc_auto(argv=None): "negate each other, and both are set to " + "false (every repeat is prompted). [Default False]") parser.add_argument( - "-K", "--skip-existing", + "--skip-existing", action="store_true", dest="skip", default=False, @@ -100,20 +100,20 @@ def get_arguments_calc_auto(argv=None): "negate each other, and both are set to " + "False (every repeat is prompted). [Default False]") parser.add_argument( - "-C", "--calc", + "--calc", action="store_true", dest="calc", default=False, help="Analyze data for shear-wave splitting. [Default saves data "+ "to folders for subsequent analysis]") parser.add_argument( - "-P", "--plot-diagnostic", + "--plot-diagnostic", action="store_true", dest="diagplot", default=False, help="Plot diagnostic window at end of process. [Default False]") parser.add_argument( - "-R", "--recalc", + "--recalc", action="store_true", dest="recalc", default=False, @@ -126,22 +126,22 @@ def get_arguments_calc_auto(argv=None): description="Settings associated with which " + "datacenter to log into.") ServerGroup.add_argument( - "-S", "--server", + "--server", action="store", type=str, - dest="Server", + dest="server", default="IRIS", help="Specify the server to connect to. Options include: " + "BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, NCEDC, " + "NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, USP. [Default IRIS]") ServerGroup.add_argument( - "-U", "--user-auth", + "--user-auth", action="store", type=str, dest="UserAuth", default="", help="Enter your IRIS Authentification Username and Password " + - "(--User-Auth='username:authpassword') to access and download " + + "(--user-auth='username:authpassword') to access and download " + "restricted data. [Default no user and password]") # Database Settings @@ -171,22 +171,22 @@ def get_arguments_calc_auto(argv=None): "SAC files. Local archive files must have extensions of '.SAC' "+ " or '.MSEED. These are case dependent, so specify the correct case"+ "here.") - DataGroup.add_argument( - "--no-data-zero", - action="store_true", - dest="ndval", - default=False, - help="Specify to force missing data to be set as zero, rather " + - "than default behaviour which sets to nan.") - DataGroup.add_argument( - "--no-local-net", - action="store_false", - dest="useNet", - default=True, - help="Specify to prevent using the Network code in the " + - "search for local data (sometimes for CN stations " + - "the dictionary name for a station may disagree with that " + - "in the filename. [Default Network used]") + # DataGroup.add_argument( + # "--no-data-zero", + # action="store_true", + # dest="ndval", + # default=False, + # help="Specify to force missing data to be set as zero, rather " + + # "than default behaviour which sets to nan.") + # DataGroup.add_argument( + # "--no-local-net", + # action="store_false", + # dest="useNet", + # default=True, + # help="Specify to prevent using the Network code in the " + + # "search for local data (sometimes for CN stations " + + # "the dictionary name for a station may disagree with that " + + # "in the filename. [Default Network used]") # Constants Settings ConstGroup = parser.add_argument_group( @@ -472,10 +472,10 @@ def main(args=None): # Establish client if len(args.UserAuth) == 0: - data_client = Client(args.Server) + data_client = Client(args.server) else: data_client = Client( - args.Server, + args.server, user=args.UserAuth[0], password=args.UserAuth[1]) From 8354f90ff7389885b5a6e755b4f129b7f553e646 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:42:12 +1200 Subject: [PATCH 11/39] updated script docs --- docs/scripts.rst | 117 +++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 64 deletions(-) diff --git a/docs/scripts.rst b/docs/scripts.rst index 570e383..4742d39 100644 --- a/docs/scripts.rst +++ b/docs/scripts.rst @@ -13,8 +13,8 @@ a station database provided as a :class:`~stdb.StDb` dictionary. .. _splitauto: -``split_calc_auto.py`` -++++++++++++++++++++++ +``split_calc_auto`` ++++++++++++++++++++ Description ----------- @@ -31,8 +31,8 @@ Usage .. code-block:: - $ split_calc_auto.py -h - usage: split_calc_auto.py [arguments] + $ split_calc_auto -h + usage: split_calc_auto [arguments] Script wrapping together the python-based implementation of SplitLab by Wustefeld and others. This version requests data on the fly for a given date @@ -53,34 +53,34 @@ Usage instance, providing IU will match with all stations in the IU network [Default processes all stations in the database] - -v, -V, --verbose Specify to increase verbosity. + -V, --verbose Specify to increase verbosity. -O, --overwrite Force the overwriting of pre-existing Split results. Default behaviour prompts for those that already exist. Selecting overwrite and skip (ie, both flags) negate each other, and both are set to false (every repeat is prompted). [Default False] - -K, --skip-existing Skip any event for which existing splitting results + --skip-existing Skip any event for which existing splitting results are saved to disk. Default behaviour prompts for each event. Selecting skip and overwrite (ie, both flags) negate each other, and both are set to False (every repeat is prompted). [Default False] - -C, --calc Analyze data for shear-wave splitting. [Default saves + --calc Analyze data for shear-wave splitting. [Default saves data to folders for subsequent analysis] - -P, --plot-diagnostic + --plot-diagnostic Plot diagnostic window at end of process. [Default False] Server Settings: Settings associated with which datacenter to log into. - -S SERVER, --Server SERVER + --server SERVER Specify the server to connect to. Options include: BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, NCEDC, NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, USP. [Default IRIS] - -U USERAUTH, --User-Auth USERAUTH + --user-auth USERAUTH Enter your IRIS Authentification Username and Password - (--User-Auth='username:authpassword') to access and + (--user-auth='username:authpassword') to access and download restricted data. [Default no user and password] @@ -94,12 +94,10 @@ Usage exists for a seismogram is already present on disk, it is selected preferentially over downloading the data using the Client interface - --no-data-zero Specify to force missing data to be set as zero, - rather than default behaviour which sets to nan. - --no-local-net Specify to prevent using the Network code in the - search for local data (sometimes for CN stations the - dictionary name for a station may disagree with that - in the filename. [Default Network used] + --dtype DTYPE Specify the data archive file type, either SAC or MSEED. Note the + default behaviour is to search for SAC files. Local archive files + must have extensions of '.SAC' or '.MSEED. These are case dependent, + so specify the correct casehere. Parameter Settings: Miscellaneous default values and settings @@ -136,7 +134,7 @@ Usage the end time for the event search. This will override any station end times [Default end date of each station] - --reverse, -R Reverse order of events. Default behaviour starts at + --reverse Reverse order of events. Default behaviour starts at oldest event and works towards most recent. Specify reverse order and instead the program will start with the most recent events and work towards older @@ -158,8 +156,8 @@ Usage .. _splitmanual: -``split_calc_manual.py`` -++++++++++++++++++++++++ +``split_calc_manual`` ++++++++++++++++++++++ Description ----------- @@ -174,11 +172,11 @@ Usage .. code-block:: - $ split_calc_manual.py -h - usage: split_calc_manual.py [arguments] + $ split_calc_manual -h + usage: split_calc_manual [arguments] Script to process and calculate the spliting parameters for a dataset that has - already been downloaded by split_calc_auto.py. + already been downloaded by split_calc_auto. positional arguments: indb Station Database to process from. @@ -220,15 +218,15 @@ Usage the end time for the event search. This will override any station end times [Default older end date for each the pair of stations] - --reverse-order, -R Reverse order of events. Default behaviour starts at + --reverse-order Reverse order of events. Default behaviour starts at oldest event and works towards most recent. Specify reverse order and instead the program will start with the most recent events and work towards older .. _splitaverage: -``split_average.py`` -++++++++++++++++++++ +``split_average`` ++++++++++++++++++ Description ----------- @@ -244,55 +242,46 @@ Usage .. code-block:: - $ split_average.py -h - usage: split_average.py [arguments] + $ split_average -h + usage: split_average [arguments] - Script to plot the average splitting results for a given station. Loads the - available .pkl files in the specified Station Directory. + Script to plot the average splitting results for a given station. Loads the available .pkl + files in the specified Station Directory. positional arguments: - indb Station Database to process from. - - optional arguments: - -h, --help show this help message and exit - --keys STKEYS Specify a comma separated list of station keys for - which to perform analysis. These must be contained - within the station database. Partial keys will be used - to match against those in the dictionary. For - instance, providing IU will match with all stations in - the IU network [Default processes all stations in the - database] - -v, -V, --verbose Specify to increase verbosity. - --show-fig Specify show plots during processing - they are still - saved to disk. [Default only saves] - -A, --auto Specify to use automatically processed split results. - [Default uses refined ('manual') split results] + indb Station Database to process from. + + options: + -h, --help show this help message and exit + --keys STKEYS Specify a comma separated list of station keys for which to perform + analysis. These must be contained within the station database. Partial keys + will be used to match against those in the dictionary. For instance, + providing IU will match with all stations in the IU network [Default + processes all stations in the database] + -V, --verbose Specify to increase verbosity. + --show-fig Specify show plots during processing - they are still saved to disk. + [Default only saves] + --auto Specify to use automatically processed split results. [Default uses refined + ('manual') split results] Null Selection Settings: Settings associated with selecting which Null or Non-Null data is included - --nulls, --Nulls Specify this flag to include Null Values in the - average. [Default Non-Nulls only] - --no-nons, --No-Nons Specify this flag to exclude Non-Nulls from the - average [Default False] + --nulls Specify this flag to include Null Values in the average. [Default Non-Nulls + only] + --no-nons Specify this flag to exclude Non-Nulls from the average [Default False] Quality Selection Settings: - Settings associated with selecting the qualities to include in the - selection. + Settings associated with selecting the qualities to include in the selection. - --No-Good, --no-good Specify to exclude 'Good' measurements from the - average. [Default Good + Fair] - --No-Fair, --no-fair Specify to exclude 'Fair' measurements from the - average [Default Good + Fair] - --Poor, --poor Specify to include 'Poor' measurements in the average - [Default No Poors] + --no-good Specify to exclude 'Good' measurements from the average. [Default Good + + Fair] + --no-fair Specify to exclude 'Fair' measurements from the average [Default Good + + Fair] + --poor Specify to include 'Poor' measurements in the average [Default No Poors] Split Type Settings: Settings to Select which Split types are included in the selection. - --RC-Only, --rc-only, --RC-only - Specify to only include RC splits in the average. - [Default RC + SC] - --SC-Only, --sc-only, --SC-only - Specify to only include SC splits in the average. - [Default RC + SC] \ No newline at end of file + --RC-only Specify to only include RC splits in the average. [Default RC + SC] + --SC-only Specify to only include SC splits in the average. [Default RC + SC] \ No newline at end of file From e7f01c88064ec1092c124f7548416d4a6ff19b4e Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:42:37 +1200 Subject: [PATCH 12/39] update script args --- splitpy/scripts/split_calc_manual.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/splitpy/scripts/split_calc_manual.py b/splitpy/scripts/split_calc_manual.py index 28cdf80..64bcb84 100755 --- a/splitpy/scripts/split_calc_manual.py +++ b/splitpy/scripts/split_calc_manual.py @@ -75,7 +75,7 @@ def get_arguments_calc_manual(argv=None): "with all stations in the IU network [Default " + "processes all stations in the database]") parser.add_argument( - "-v", "-V", "--verbose", + "-V", "--verbose", action="store_true", dest="verb", default=False, @@ -147,7 +147,7 @@ def get_arguments_calc_manual(argv=None): "end time for the event search. This will override any station " + "end times [Default older end date for each the pair of stations]") EventGroup.add_argument( - "--reverse-order", "-R", + "--reverse-order", action="store_true", dest="reverse", default=False, From 619f1e05865c7ef5780025ccf2af9b948286f0ba Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:49:03 +1200 Subject: [PATCH 13/39] update install instructions in docs --- docs/splitpy.rst | 57 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/docs/splitpy.rst b/docs/splitpy.rst index 6028b45..87efb90 100644 --- a/docs/splitpy.rst +++ b/docs/splitpy.rst @@ -30,7 +30,7 @@ Installation Dependencies ------------ -The current version has been tested using **Python > 3.6** \ +The current version has been tested using **Python = 3.12** \ Also, the following package is required: - `stdb `_ @@ -46,7 +46,7 @@ where ``SplitPy`` can be installed along with some of its dependencies. .. sourcecode:: bash - conda create -n split python=3.7 obspy -c conda-forge + conda create -n split -c conda-forge python=3.12 obspy Activate the newly created environment: @@ -58,12 +58,14 @@ Install remaining dependencies using ``pip`` inside the ``split`` environment: .. sourcecode:: bash - pip install stdb + pip install git+https://github.com/schaefferaj/stdb -Installing from Pypi --------------------- +Installing from GitHub development branch +----------------------------------------- -*This option is not available at this time* +.. sourcecode:: bash + + pip install git+https://github.com/paudetseis/splitpy Installing from source ---------------------- @@ -86,11 +88,44 @@ Citing SplitPy If you use SplitPy in your work, please cite the Zenodo DOI: https://doi.org/10.5281/zenodo.3564780 -""" +Using local data +================ + +The main script packaged with ``RfPy`` uses FDSN web services through and ``ObsPy`` `Client` to load waveform data. For waveform data locally stored on your hard drive, the scripts can use a `Client` that reads a `SeisComP Data Structure `_ archive containing SAC or miniSEED waveform data. Check out the scripts ``rfpy_calc`` below and the argument ``--local-data`` and ``--dtype`` for more details. + +Station Metadata +---------------- + +If you have data stored locally on your drive, it is likely you also have a station `XML `_ file containing the metadata. The corresponding ObsPy documentation is `here `_. + +To convert the station `XML` file to an input that can be read by ``OrientPy``, you run the command ``gen_stdb station.xml`` (only available on StDb version 0.2.7), which will create the file ``station.pkl``. If you don't have a station `XML` file but you have a dataless SEED file, you can convert it first to `XML` using `this tools `_. + +Waveform Data +------------- + +The SDS folder containing the waveform data has the structure: + +.. code-block:: python + + archive + + year + + network code + + station code + + channel code + type + + one file per day and location, e.g. NET.STA.LOC.CHAN.TYPE.YEAR.DOY + + +For example: + +.. code-block:: python -.. automodule:: splitpy - :members: + SDS/ + 2020/ + NY/ + TGTN/ + HHZ.D/ + NY.TGTN..HHZ.D.2020.332 + ... -Basic Usage -=========== +Note, the filename does not include the extension (`.MSEED` or `.SAC`), and the characters `.D` (for type Data) that appear in both the channel code and the filename. Note also the two dots (`..`). If there is a location code, it should appear between those dots (e.g., for a location code `10`, the corresponding filename should be `NY.TGTN.10.HHZ.D.2020.332`). There is no location code for the NY.TGTN data, and this field is simply absent from the filenames. Finally, the day-of-year (DOY) field must be zero-padded to be exactly 3 characters. From efb2435a7ca9a60899c07e450b1adf5c16a9241e Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:51:12 +1200 Subject: [PATCH 14/39] update docs for documentation --- docs/index.rst | 6 ++---- docs/links.rst | 7 ++++++- docs/splitpy.rst | 5 ----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 3f92d89..16b26a1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -18,8 +18,8 @@ teleseismic shear-wave splitting analysis in two different modes: Once the splitting analysis has been done, the results can be aggregated to produce averaged splitting parameters and plotted (:ref:`splitaverage`). The tutorials below show an example using data -from `one station `_ of the -USArray Transportable Array network. +from `one station `_ of the +Yukon-Northwest Seismograph Network. .. note:: @@ -31,8 +31,6 @@ USArray Transportable Array network. :target: https://zenodo.org/badge/latestdoi/211722700 .. image:: https://travis-ci.org/paudetseis/SplitPy.svg?branch=master :target: https://travis-ci.org/paudetseis/ -.. image:: https://codecov.io/gh/paudetseis/SplitPy/branch/master/graph/badge.svg - :target: https://codecov.io/gh/paudetseis/SplitPy .. toctree:: :maxdepth: 1 diff --git a/docs/links.rst b/docs/links.rst index 375f72c..65c6768 100644 --- a/docs/links.rst +++ b/docs/links.rst @@ -15,4 +15,9 @@ References * Wustefeld, A., and Bokelmann, G. (2007). Null detection in shear-wave splitting measurements. Bulletin of the Seismological Society of America, 97, 1204-1211, https://doi.org/10.1785/0120060190 -* Wustefeld, A., Bokelmann, G., Zeroli, C., and Barruol, G. (2008). SplitLab: A shear-wave splitting environment in Matlab. Computers & Geoscience, 34, 515-528, https://doi.org/10.1016/j.cageo.2007.08.002 \ No newline at end of file +* Wustefeld, A., Bokelmann, G., Zeroli, C., and Barruol, G. (2008). SplitLab: A shear-wave splitting environment in Matlab. Computers & Geoscience, 34, 515-528, https://doi.org/10.1016/j.cageo.2007.08.002 + +Citing SplitPy +-------------- + +If you use SplitPy in your work, please cite the Zenodo DOI: https://doi.org/10.5281/zenodo.3564780 diff --git a/docs/splitpy.rst b/docs/splitpy.rst index 87efb90..54daae9 100644 --- a/docs/splitpy.rst +++ b/docs/splitpy.rst @@ -83,11 +83,6 @@ Installing from source pip install . -Citing SplitPy --------------- - -If you use SplitPy in your work, please cite the Zenodo DOI: https://doi.org/10.5281/zenodo.3564780 - Using local data ================ From 21c59f9863fd861e107d71cee397a7468ac193f5 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 07:55:35 +1200 Subject: [PATCH 15/39] update make docs config --- docs/Makefile | 4 ---- docs/conf.py | 32 ++++++++------------------------ 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 7de6ff9..d4bb2cb 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -12,10 +12,6 @@ BUILDDIR = _build help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -github: - @make html - @cp -a _build/html/. ../docs - .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new diff --git a/docs/conf.py b/docs/conf.py index d02a695..78e26d8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,9 +10,9 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) +import os +import sys +sys.path.insert(0, os.path.abspath('../')) # -- Project information ----------------------------------------------------- @@ -22,28 +22,28 @@ author = 'Pascal Audet & Andrew Schaeffer' # The full version, including alpha/beta/rc tags -release = '0.0.1' - +from splitpy import __version__ as release # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.githubpages'] +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon'] autodoc_member_order = 'bysource' html_logo = '../splitpy/examples/figures/SplitPy_logo.png' # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +# templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +# The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # -- Options for HTML output ------------------------------------------------- @@ -53,23 +53,7 @@ # html_theme = 'sphinx_rtd_theme' -# html_theme_options = { -# 'canonical_url': '', -# 'analytics_id': 'UA-XXXXXXX-1', # Provided by Google in your dashboard -# 'logo_only': False, -# 'display_version': True, -# 'prev_next_buttons_location': 'bottom', -# 'style_external_links': False, -# 'vcs_pageview_mode': '', -# 'style_nav_header_background': 'white', -# # Toc options -# 'collapse_navigation': True, -# 'sticky_navigation': True, -# 'navigation_depth': 4, -# 'includehidden': True, -# 'titles_only': False -# } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +# html_static_path = ['_static'] From d528b69fc1ca4f260b4d570a21a6f67d5b51e105 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 10:27:51 +1200 Subject: [PATCH 16/39] update base code --- splitpy/classes.py | 158 ++++++++--- splitpy/utils.py | 658 ++++++++------------------------------------- 2 files changed, 234 insertions(+), 582 deletions(-) diff --git a/splitpy/classes.py b/splitpy/classes.py index 9c2d577..1a476d8 100644 --- a/splitpy/classes.py +++ b/splitpy/classes.py @@ -78,10 +78,24 @@ class Meta(object): Back-azimuth - pointing to earthquake from station (degrees) az : float Azimuth - pointing to station from earthquake (degrees) + ttime : float + Predicted arrival time (sec) + ph : str + Phase name slow : float Horizontal slowness of phase inc : float Incidence angle of phase at surface + align : str + Alignment of coordinate system for rotation + ('ZRT', 'LQT', or 'PVH') + rotated : bool + Whether or not data have been rotated to ``align`` + coordinate system + zcomp : str + Vertical Component Identifier. Should be a single character. + This is different then 'Z' only for fully unknown component + orientation (i.e., components are 1, 2, 3) """ @@ -142,9 +156,9 @@ def __init__(self, sta, event, gacmin=85., gacmax=180., phase='SKS', self.phase = phase self.accept = True else: - self.ttime = None - self.slow = None - self.inc = None + self.ttime = np.nan + self.slow = np.nan + self.inc = np.nan self.phase = None self.accept = False @@ -294,7 +308,7 @@ def add_event(self, event, gacmin=85., gacmax=120., phase='SKS', def add_data(self, stream, returned=False, new_sr=5.): """ - Adds stream of raw data as object attribute + Adds stream as object attribute Parameters ---------- @@ -303,6 +317,11 @@ def add_data(self, stream, returned=False, new_sr=5.): returned : bool Whether or not to return the ``accept`` attribute + Attributes + ---------- + dataZNE : :class:`~obspy.core.Stream` + Stream container for NEZ seismograms + Returns ------- accept : bool @@ -311,7 +330,7 @@ def add_data(self, stream, returned=False, new_sr=5.): """ if not self.meta: - raise(Exception("No meta data available - aborting")) + raise Exception("No meta data available - aborting") if not self.meta.accept: return @@ -327,7 +346,7 @@ def add_data(self, stream, returned=False, new_sr=5.): # print(stream) if not isinstance(stream, Stream): - raise(Exception("Event has incorrect type")) + raise Exception("Event has incorrect type") try: self.dataZNE = stream @@ -337,19 +356,26 @@ def add_data(self, stream, returned=False, new_sr=5.): self.meta.accept = False # Filter Traces - self.dataZNE.filter('lowpass', freq=0.5*new_sr, - corners=2, zerophase=True) - self.dataZNE.resample(new_sr, no_filter=False) - - except: + if not stream[0].stats.sampling_rate == new_sr: + self.dataZNE.filter( + 'lowpass', + freq=0.5*new_sr, + corners=2, + zerophase=True) + self.dataZNE.resample( + new_sr, + no_filter=True) + + except Exception as e: print("Error: Not all channels are available") self.meta.accept = False if returned: return self.meta.accept - def download_data(self, client, stdata=[], dtype='SAC', ndval=np.nan, - new_sr=5., dts=120., returned=False, verbose=False): + def download_data(self, client, new_sr=5., dts=120., + returned=False, verbose=False, + remove_response=False): """ Downloads seismograms based on event origin time and P phase arrival and adds as object attribute. @@ -358,26 +384,35 @@ def download_data(self, client, stdata=[], dtype='SAC', ndval=np.nan, ---------- client : :class:`~obspy.client.fdsn.Client` Client object - ndval : float - Fill in value for missing data new_sr : float New sampling rate (Hz) dts : float Time duration (sec) - stdata : List - Station list + remove_response : bool + Remove instrument response from seismogram and resitute to true ground + velocity (m/s) using obspy.core.trace.Trace.remove_response() returned : bool Whether or not to return the ``accept`` attribute + verbose : bool + Output diagnostics to screen Returns ------- accept : bool Whether or not the object is accepted for further analysis + Attributes + ---------- + dataZNE : :class:`~obspy.core.Stream` + Stream containing ZNE :class:`~obspy.core.Trace` objects + dataZ12 : :class:`~obspy.core.Stream` + Stream containing Z12 :class:`~obspy.core.Trace` objects + (for un-oriented data) + """ if self.meta is None: - raise(Exception("Requires event data as attribute - aborting")) + raise Exception("Requires event data as attribute - aborting")) if not self.meta.accept: return @@ -394,14 +429,15 @@ def download_data(self, client, stdata=[], dtype='SAC', ndval=np.nan, # Download data err, stream = utils.download_data( client=client, sta=self.sta, start=tstart, end=tend, - stdata=stdata, dtype=dtype, ndval=ndval, new_sr=new_sr, - verbose=verbose) + new_sr=new_sr, verbose=verbose, remove_response=remove_response, + zcomp=self.zcomp) # Store as attributes with traces in dictionary try: trE = stream.select(component='E')[0] trN = stream.select(component='N')[0] trZ = stream.select(component='Z')[0] + self.dataZNE = Stream(traces=[trZ, trN, trE]) # Filter Traces and resample @@ -409,24 +445,32 @@ def download_data(self, client, stdata=[], dtype='SAC', ndval=np.nan, corners=2, zerophase=True) self.dataZNE.resample(new_sr, no_filter=False) - # If there is no ZNE, perhaps there is Z12? - except: + # If there is no ZNE, perhaps there is Z12 (or zcomp12)? + except Exception as e: try: tr1 = stream.select(component='1')[0] tr2 = stream.select(component='2')[0] - trZ = stream.select(component='Z')[0] - self.dataZ12 = Stream(traces=[trZ, tr1, tr2]) + trZ = stream.select(component=self.zcomp)[0] - # Rotate from Z12 to ZNE using StDb azcorr attribute - self.rotate(align='ZNE') + # Force channel name to 'Z' if zcomp is not 'Z'' + if not self.zcomp == 'Z': + trZ.stats.channel = trZ.stats.channel[:-1] + 'Z' + + self.dataZNE = Stream(traces=[trZ, tr1, tr2]) # Filter Traces and resample self.dataZNE.filter('lowpass', freq=0.5*new_sr, - corners=2, zerophase=True) - self.dataZNE.resample(new_sr, no_filter=False) + corners=2, zerophase=True) + self.dataZNE.resample(new_sr, no_filter=True) + + # Save Z12 components in case it's necessary for later + self.dataZ12 = self.dataZNE.copy() - except: + # Rotate from Z12 to ZNE using StDb azcorr attribute + self.rotate(align='ZNE') + + except Exception as e: self.meta.accept = False if returned: @@ -438,9 +482,9 @@ def rotate(self, align=None): east (E) and north (N) to longitudinal (L), radial (Q) and tangential (T) components of motion. Note that the method 'rotate' from ``obspy.core.stream.Stream`` - is used for the rotation ``'ZNE->ZRT'`` and ``'ZNE->LQT'``. - Rotation ``'ZNE->PVH'`` is implemented separately here - due to different conventions. + is used for the rotation ``'ZNE->LQT'``. + + Can also rotate Z12 to ZNE. Parameters ---------- @@ -448,30 +492,42 @@ def rotate(self, align=None): Alignment of coordinate system for rotation ('ZNE' or 'LQT') + Returns + ------- + rotated : bool + Whether or not the object has been rotated + """ if not self.meta.accept: return + if self.meta.rotated: + print("Data have been rotated already - continuing") + return + # Use default values from meta data if arguments are not specified if not align: align = self.meta.align if align == 'ZNE': - # Rotating from 1,2 to N,E is the negative of - # rotation from RT to NE, with - # baz corresponding to azim of component 1 - from obspy.signal.rotate import rotate_rt_ne + from obspy.signal.rotate import rotate2zne # Copy traces - trZ = self.dataZ12.select(component='Z')[0].copy() - trN = self.dataZ12.select(component='1')[0].copy() - trE = self.dataZ12.select(component='2')[0].copy() + trZ = self.dataZNE.select(component='Z')[0].copy() + trN = self.dataZNE.select(component='1')[0].copy() + trE = self.dataZNE.select(component='2')[0].copy() azim = self.sta.azcorr - N, E = rotate_rt_ne(trN.data, trE.data, azim) - trN.data = -1.*N - trE.data = -1.*E + + # Try with left handed system + Z, N, E = rotate2zne(trZ.data, 0., -90., trN.data, + azim, 0., trE.data, azim+90., 0.) + + # Z, N, E = rotate2zne(trZ.data, 0., -90., trN.data, + # azim, 0., trE.data, azim+90., 0.) + trN.data = N + trE.data = E # Update stats of streams trN.stats.channel = trN.stats.channel[:-1] + 'N' @@ -494,7 +550,7 @@ def rotate(self, align=None): else: raise(Exception("incorrect 'align' argument")) - def calc_snr(self, t1=None, dt=30.): + def calc_snr(self, t1=None, dt=30., fmin=0.02, fmax=0.5): """ Calculates signal-to-noise ratio on either Z, L or P component @@ -535,6 +591,16 @@ def calc_snr(self, t1=None, dt=30.): trSigT.detrend().taper(max_percentage=0.05) trNzeT.detrend().taper(max_percentage=0.05) + # Filter between 0.1 and 1.0 (dominant P wave frequencies) + trSigQ.filter('bandpass', freqmin=fmin, freqmax=fmax, + corners=2, zerophase=True) + trSigT.filter('bandpass', freqmin=fmin, freqmax=fmax, + corners=2, zerophase=True) + trNzeQ.filter('bandpass', freqmin=fmin, freqmax=fmax, + corners=2, zerophase=True) + trNzeT.filter('bandpass', freqmin=fmin, freqmax=fmax, + corners=2, zerophase=True) + # Trim around S-wave arrival trSigQ.trim(t1, t1 + dt) trNzeQ.trim(t1 - dt, t1) @@ -563,6 +629,8 @@ def analyze(self, t1=None, t2=None, verbose=False): Start time of picking window t2 : :class:`~obspy.core.utcdatetime.UTCDateTime` End time of picking window + verbose : bool + Output diagnostics to screen Attributes ---------- @@ -624,6 +692,8 @@ def is_null(self, snrTlim=3., verbose=False): Threshold for snr on T component ds : int Number of spaces to print out to screen (verbiage) + verbose : bool + Output diagnostics to screen Attributes ---------- @@ -677,6 +747,8 @@ def get_quality(self, verbose=False): ---------- ds : int Number of spaces to print out to screen (verbiage) + verbose : bool + Output diagnostics to screen Attributes ---------- diff --git a/splitpy/utils.py b/splitpy/utils.py index c66bd3c..e9be13e 100644 --- a/splitpy/utils.py +++ b/splitpy/utils.py @@ -2,6 +2,7 @@ from obspy import UTCDateTime from numpy import nan, isnan, abs import numpy as np +import copy from obspy.core import Stream, read @@ -37,414 +38,14 @@ def traceshift(trace, tt): return rtrace - -def list_local_data_stn(lcldrs=list, sta=None, net=None, dtype='SAC', altnet=[]): - """ - Function to take the list of local directories and recursively - find all data that matches the station name - - Parameters - ---------- - lcldrs : List - List of local directories - sta : Dict - Station metadata from :mod:`~StDb` - net : str - Network name - altnet : List - List of alternative networks - - Returns - ------- - fpathmatch : List - Sorted list of matched directories - - """ - from fnmatch import filter - from os import walk - from os.path import join - - - if sta is None: - return [] - else: - if net is None: - sstrings = ['*.{0:s}.*.{1:s}'.format(sta, dtype)] - else: - sstrings = ['*.{0:s}.{1:s}.*.{2:s}'.format(net, sta, dtype)] - if len(altnet) > 0: - for anet in altnet: - sstrings.append( - '*.{0:s}.{1:s}.*.{2:s}'.format(anet, sta, dtype)) - - fpathmatch = [] - # Loop over all local data directories - for lcldr in lcldrs: - # Recursiely walk through directory - for root, dirnames, filenames in walk(lcldr): - # Keep paths only for those matching the station - for sstring in sstrings: - for filename in filter(filenames, sstring): - fpathmatch.append(join(root, filename)) - - fpathmatch.sort() - - return fpathmatch - - -def parse_localdata_for_comp(comp='Z', stdata=[], dtype='SAC', sta=None, - start=UTCDateTime, end=UTCDateTime, ndval=nan): - """ - Function to determine the path to data for a given component and alternate network - - Parameters - ---------- - comp : str - Channel for seismogram (one letter only) - stdata : List - Station list - sta : Dict - Station metadata from :mod:`~StDb` data base - start : :class:`~obspy.core.utcdatetime.UTCDateTime` - Start time for request - end : :class:`~obspy.core.utcdatetime.UTCDateTime` - End time for request - ndval : float or nan - Default value for missing data - - Returns - ------- - err : bool - Boolean for error handling (`False` is associated with success) - st : :class:`~obspy.core.Stream` - Stream containing North, East and Vertical components of motion - +def download_data(client=None, sta=None, start=UTCDateTime(), + end=UTCDateTime(), new_sr=0., verbose=False, + remove_response=False, zcomp='Z'): """ - - from fnmatch import filter - - # Get start and end parameters - styr = start.strftime("%Y") - stjd = start.strftime("%j") - edyr = end.strftime("%Y") - edjd = end.strftime("%j") - - # Intialize to default positive error - erd = True - - print( - ("* {0:2s}{1:1s} - Checking Disk".format(sta.channel.upper(), - comp.upper()))) - - # Time Window Spans Single Day - if stjd == edjd: - # Format 1 - lclfiles = list(filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.{4:2s}{5:1s}.{6:s}'.format( - styr, stjd, sta.network.upper( - ), sta.station.upper(), sta.channel.upper()[0:2], - comp.upper(), dtype))) - # Format 2 - if len(lclfiles) == 0: - lclfiles = list(filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*{4:1s}.{5:s}'.format( - styr, stjd, sta.network.upper(), sta.station.upper(), - comp.upper(), dtype))) - - # Alternate Nets (for CN/PO issues) Format 1 - if len(lclfiles) == 0: - lclfiles = [] - for anet in sta.altnet: - lclfiles.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.' + - '{4:2s}{5:1s}.{6:s}'.format( - styr, stjd, anet.upper(), sta.station.upper(), - sta.channel.upper()[0:2], comp.upper(), dtype)))) - - # Alternate Nets (for CN/PO issues) Format 2 - if len(lclfiles) == 0: - # Check Alternate Networks - lclfiles = [] - for anet in sta.altnet: - lclfiles.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*' + - '{4:1s}.{5:s}'.format( - styr, stjd, sta.network.upper(), - sta.station.upper(), comp.upper(), dtype)))) - - # If still no Local files stop - if len(lclfiles) == 0: - print("* - Data Unavailable") - return erd, None - - # Process the local Files - for sacfile in lclfiles: - # Read File - st = read(sacfile) - # st = read(sacfile, format="SAC") - - if dtype.upper() == 'MSEED': - if len(st) > 1: - st.merge(method=1, interpolation_samples=- - 1, fill_value=-123456789) - - # Should only be one component, otherwise keep reading If more - # than 1 component, error - if len(st) != 1: - pass - - else: - # Check start/end times in range - if (st[0].stats.starttime <= start and - st[0].stats.endtime >= end): - st.trim(starttime=start, endtime=end) - - eddt = False - # Check for NoData and convert to NaN if a SAC file - if dtype.upper() == 'SAC': - stnd = st[0].stats.sac['user9'] - if (not stnd == 0.0) and (not stnd == -12345.0): - st[0].data[st[0].data == stnd] = ndval - eddt = True - - # Check for Nan in stream for SAC - if True in isnan(st[0].data): - print( - "* !!! Missing Data Present !!! " + - "Skipping (NaNs)") - # Check for ND Val in stream for MSEED - elif -123456789 in st[0].data: - print( - "* !!! Missing Data Present !!! " + - "Skipping (MSEED fill)") - else: - if eddt and (ndval == 0.0): - if any(st[0].data == 0.0): - print( - "* !!! Missing Data Present " + - "!!! (Set to Zero)") - - st[0].stats.update() - tloc = st[0].stats.location - if len(tloc) == 0: - tloc = "--" - - # Processed succesfully...Finish - print(("* {1:3s}.{2:2s} - From Disk".format( - st[0].stats.station, st[0].stats.channel.upper(), - tloc))) - return False, st - - # Time Window spans Multiple days - else: - # Day 1 Format 1 - lclfiles1 = list( - filter(stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.{4:2s}{5:1s}.{6:s}'.format( - styr, stjd, sta.network.upper(), sta.station.upper(), - sta.channel.upper()[0:2], comp.upper(), dtype))) - # Day 1 Format 2 - if len(lclfiles1) == 0: - lclfiles1 = list( - filter(stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*{4:1s}.{5:s}'.format( - styr, stjd, sta.network.upper(), - sta.station.upper(), comp.upper(), dtype))) - # Day 1 Alternate Nets (for CN/PO issues) Format 1 - if len(lclfiles1) == 0: - lclfiles1 = [] - for anet in sta.altnet: - lclfiles1.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.' + - '{4:2s}{5:1s}.{6:s}'.format( - styr, stjd, anet.upper(), sta.station.upper( - ), sta.channel.upper()[0:2], - comp.upper(), dtype)))) - # Day 1 Alternate Nets (for CN/PO issues) Format 2 - if len(lclfiles1) == 0: - lclfiles1 = [] - for anet in sta.altnet: - lclfiles1.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*{4:1s}.{5:s}'.format( - styr, stjd, anet.upper(), - sta.station.upper(), comp.upper(), dtype)))) - - # Day 2 Format 1 - lclfiles2 = list( - filter(stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.{4:2s}{5:1s}.{6:s}'.format( - edyr, edjd, sta.network.upper( - ), sta.station.upper(), sta.channel.upper()[0:2], - comp.upper(), dtype))) - # Day 2 Format 2 - if len(lclfiles2) == 0: - lclfiles2 = list( - filter(stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*' + - '{4:1s}.{5:s}'.format( - edyr, edjd, sta.network.upper(), - sta.station.upper(), - comp.upper(), dtype))) - # Day 2 Alternate Nets (for CN/PO issues) Format 1 - if len(lclfiles2) == 0: - lclfiles2 = [] - for anet in sta.altnet: - lclfiles2.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.' + - '{4:2s}{5:1s}.{6:s}'.format( - edyr, edjd, anet.upper(), sta.station.upper(), - sta.channel.upper()[0:2], comp.upper(), dtype)))) - # Day 2 Alternate Nets (for CN/PO issues) Format 2 - if len(lclfiles2) == 0: - lclfiles2 = [] - for anet in sta.altnet: - lclfiles2.extend( - list( - filter( - stdata, - '*/{0:4s}.{1:3s}.{2:s}.{3:s}.*.*{4:1s}.{5:s}'.format( - edyr, edjd, anet.upper(), sta.station.upper(), - comp.upper(), dtype)))) - - # If still no Local files stop - if len(lclfiles1) == 0 and len(lclfiles2) == 0: - print("* - Data Unavailable") - return erd, None - - # Now try to merge the two separate day files - if len(lclfiles1) > 0 and len(lclfiles2) > 0: - # Loop over first day file options - for sacf1 in lclfiles1: - st1 = read(sacf1) - if dtype.upper() == 'MSEED': - if len(st1) > 1: - st1.merge(method=1, interpolation_samples=- - 1, fill_value=-123456789) - - # Loop over second day file options - for sacf2 in lclfiles2: - st2 = read(sacf2) - if dtype.upper() == 'MSEED': - if len(st2) > 1: - st2.merge( - method=1, interpolation_samples=-1, fill_value=-123456789) - - # Check time overlap of the two files. - if st1[0].stats.endtime >= \ - st2[0].stats.starttime-st2[0].stats.delta: - # eddt1 = False - # eddt2 = False - # if dtype.upper() == 'SAC': - # # Check for NoData and convert to NaN - # st1nd = st1[0].stats.sac['user9'] - # st2nd = st2[0].stats.sac['user9'] - # if (not st1nd == 0.0) and (not st1nd == -12345.0): - # st1[0].data[st1[0].data == st1nd] = ndval - # eddt1 = True - # if (not st2nd == 0.0) and (not st2nd == -12345.0): - # st2[0].data[st2[0].data == st2nd] = ndval - # eddt2 = True - - st = st1 + st2 - # Need to work on this HERE (AJS OCT 2015). - # If Calibration factors are different, - # then the traces cannot be merged. - try: - st.merge(method=1, interpolation_samples=- - 1, fill_value=-123456789) - - # Should only be one component, otherwise keep - # reading If more than 1 component, error - if len(st) != 1: - print(st) - print("merge failed?") - - else: - if (st[0].stats.starttime <= start and - st[0].stats.endtime >= end): - st.trim(starttime=start, endtime=end) - - eddt = False - # Check for NoData and convert to NaN if a SAC file - if dtype.upper() == 'SAC': - stnd = st[0].stats.sac['user9'] - if (not stnd == 0.0) and (not stnd == -12345.0): - st[0].data[st[0].data == stnd] = ndval - eddt = True - - # Check for Nan in stream for SAC - if True in isnan(st[0].data): - print( - "* !!! Missing Data " + - "Present !!! Skipping (NaNs)") - # Check for ND Val in stream for MSEED - elif -123456789 in st[0].data: - print( - "* !!! Missing Data Present !!! " + - "Skipping (MSEED fill)") - else: - if (eddt1 or eddt2) and (ndval == 0.0): - if any(st[0].data == 0.0): - print( - "* !!! Missing " + - "Data Present !!! (Set " + - "to Zero)") - - st[0].stats.update() - tloc = st[0].stats.location - if len(tloc) == 0: - tloc = "--" - - # Processed succesfully...Finish - print(("* {1:3s}.{2:2s} - " + - "From Disk".format( - st[0].stats.station, - st[0].stats.channel.upper(), - tloc))) - return False, st - - except: - pass - else: - st2ot = st2[0].stats.endtime-st2[0].stats.delta - print("* - Merge Failed: No " + - "Overlap {0:s} - {1:s}".format( - st1[0].stats.endtime.strftime( - "%Y-%m-%d %H:%M:%S"), - st2ot.strftime("%Y-%m-%d %H:%M:%S"))) - - # If we got here, we did not get the data. - print("* - Data Unavailable") - return erd, None - - -def download_data(client=None, sta=None, start=UTCDateTime, end=UTCDateTime, - stdata=[], dtype='SAC', ndval=nan, new_sr=0., verbose=False): - """ - Function to build a stream object for a seismogram in a given time window either - by downloading data from the client object or alternatively first checking if the - given data is already available locally. - - Note - ---- - Currently only supports NEZ Components! + Function to build a stream object for a seismogram in a given time window + by getting data from a client object, either from a local SDS archive or + from an FDSN web-service. The function performs sanity checks for + the start times, sampling rates and window lengths. Parameters ---------- @@ -456,10 +57,17 @@ def download_data(client=None, sta=None, start=UTCDateTime, end=UTCDateTime, Start time for request end : :class:`~obspy.core.utcdatetime.UTCDateTime` End time for request - stdata : List - Station list - ndval : float or nan - Default value for missing data + new_sr : float + New sampling rate (Hz) + verbose : bool + Whether or not to print messages to screen during run-time + remove_response : bool + Remove instrument response from seismogram and resitute to true ground + velocity (m/s) using obspy.core.trace.Trace.remove_response() + zcomp: str + Vertical Component Identifier. Should be a single character. + This is different then 'Z' only for fully unknown component + orientation (i.e., components are 1, 2, 3) Returns ------- @@ -474,149 +82,121 @@ def download_data(client=None, sta=None, start=UTCDateTime, end=UTCDateTime, """ - from fnmatch import filter - from obspy import read, Stream - from os.path import dirname, join, exists - from numpy import any - from math import floor - - # Output - print(("* {0:s}.{1:2s} - ZNE:".format(sta.station, - sta.channel.upper()))) - - # Set Error Default to True - erd = True - - # Check if there is local data - if len(stdata) > 0: - # Only a single day: Search for local data - # Get Z localdata - errZ, stZ = parse_localdata_for_comp( - comp='Z', stdata=stdata, dtype=dtype, sta=sta, start=start, end=end, - ndval=ndval) - # Get N localdata - errN, stN = parse_localdata_for_comp( - comp='N', stdata=stdata, dtype=dtype, sta=sta, start=start, end=end, - ndval=ndval) - # Get E localdata - errE, stE = parse_localdata_for_comp( - comp='E', stdata=stdata, dtype=dtype, sta=sta, start=start, end=end, - ndval=ndval) - # Retreived Succesfully? - erd = errZ or errN or errE - if not erd: - # Combine Data - st = stZ + stN + stE - - # No local data? Request using client - if erd: - erd = False - - for loc in sta.location: - tloc = loc - # Construct location name - if len(tloc) == 0: - tloc = "--" - # Construct Channel List - channelsZNE = sta.channel.upper() + 'Z,' + sta.channel.upper() + \ - 'N,' + sta.channel.upper() + 'E' - print(("* {1:2s}[ZNE].{2:2s} - Checking Network".format( - sta.station, sta.channel.upper(), tloc))) - - # Get waveforms, with extra 1 second to avoid - # traces cropped too short - traces are trimmed later - try: - st = client.get_waveforms( - network=sta.network, - station=sta.station, location=loc, - channel=channelsZNE, starttime=start, - endtime=end+1., attach_response=False) - if len(st) == 3: - print("* - ZNE Data Downloaded") + # # Output + # print(("* {0:s}.{1:2s} - ZNE:".format(sta.station, + # sta.channel.upper()))) + for loc in sta.location: + + # Construct location name + if loc == "--": + tloc = "" + else: + tloc = copy.copy(loc) + + # Construct Channel List + cha = sta.channel.upper() + '?' + msg = "* {0:s}.{1:2s}?.{2:2s} - Checking Network".format( + sta.station, sta.channel.upper(), loc) + print(msg) + + # Get waveforms, with extra 1 second to avoid + # traces cropped too short - traces are trimmed later + try: + st = client.get_waveforms( + network=sta.network, + station=sta.station, + location=tloc, + channel=cha, + starttime=start, + endtime=end+1.) + except Exception as e: + if verbose: + print("* Met exception:") + print("* " + e.__repr__()) + st = None + else: + if len(st) == 3: # It's possible if len(st)==1 that data is Z12 - else: - # Construct Channel List - channelsZ12 = sta.channel.upper() + 'Z,' + \ - sta.channel.upper() + '1,' + \ - sta.channel.upper() + '2' - msg = "* {1:2s}[Z12].{2:2s} - Checking Network".format( - sta.station, sta.channel.upper(), tloc) - print(msg) - try: - st = client.get_waveforms( - network=sta.network, - station=sta.station, location=loc, - channel=channelsZ12, starttime=start, - endtime=end+1., attach_response=False) - if len(st) == 3: - print("* - Z12 Data Downloaded") - else: - st = None - except: - st = None - except: - st = None - - # Break if we successfully obtained 3 components in st - if not erd: - - break + print("* - Data Downloaded") + # break # Check the correct 3 components exist - if st is None: + if st is None or len(st) < 3: print("* Error retrieving waveforms") print("**************************************************") return True, None # Three components successfully retrieved - else: - - - - # Detrend and apply taper - st.detrend('linear').taper(max_percentage=0.05, max_length=5.) - - # Check start times - if not np.all([tr.stats.starttime == start for tr in st]): + if remove_response: + try: + st.remove_response() + if verbose: + print("*") + print("* Restituted stream to true ground velocity.") + print("*") + except Exception as e: + print("*") + print('* Cannot remove response, moving on.') + print("*") + + # Detrend and apply taper + st.detrend('demean').detrend('linear').taper( + max_percentage=0.05, max_length=5.) + + # Check start times + if not np.all([tr.stats.starttime == start for tr in st]): + if verbose: print("* Start times are not all close to true start: ") [print("* "+tr.stats.channel+" " + str(tr.stats.starttime)+" " + str(tr.stats.endtime)) for tr in st] print("* True start: "+str(start)) - print("* -> Shifting traces to true start") - delay = [tr.stats.starttime - start for tr in st] - st_shifted = Stream( - traces=[traceshift(tr, dt) for tr, dt in zip(st, delay)]) - st = st_shifted.copy() - - # Check sampling rate - sr = st[0].stats.sampling_rate - sr_round = float(floor_decimal(sr, 0)) - if not sr == sr_round: + print("* -> Shifting traces to true start") + delay = [tr.stats.starttime - start for tr in st] + st_shifted = Stream( + traces=[traceshift(tr, dt) for tr, dt in zip(st, delay)]) + st = st_shifted.copy() + + # Check sampling rate + sr = st[0].stats.sampling_rate + sr_round = float(floor_decimal(sr, 0)) + if not sr == sr_round: + if verbose: print("* Sampling rate is not an integer value: ", sr) print("* -> Resampling") - st.resample(sr_round, no_filter=False) + st.resample(sr_round, no_filter=False) + + # Try trimming + try: + st.trim(start, end) + except Exception as e: + print("* Unable to trim") + print("* -> Skipping") + print("**************************************************") - # Try trimming - try: - st.trim(start, end) - except: - print("* Unable to trim") - print("* -> Aborting") - print("**************************************************") - return True, None - - # Check final lengths - they should all be equal if start times - # and sampling rates are all equal and traces have been trimmed - if not np.allclose([tr.stats.npts for tr in st[1:]], st[0].stats.npts): - print("* Lengths are incompatible: ") - [print("* "+str(tr.stats.npts)) for tr in st] - print("* -> Aborting") - print("**************************************************") - - return True, None + return True, None - else: - print("* Waveforms Retrieved...") - return False, st + # Check final lengths - they should all be equal if start times + # and sampling rates are all equal and traces have been trimmed + if not np.allclose([tr.stats.npts for tr in st[1:]], st[0].stats.npts): + print("* Lengths are incompatible: ") + [print("* "+str(tr.stats.npts)) for tr in st] + print("* -> Skipping") + print("**************************************************") + + return True, None + + elif not np.allclose([st[0].stats.npts], int((end - start)*sr), + atol=1): + print("* Length is too short: ") + print("* "+str(st[0].stats.npts) + + " ~= "+str(int((end - start)*sr))) + print("* -> Skipping") + print("**************************************************") + + return True, None + + else: + print("* Waveforms Retrieved...") + return False, st From e4da491e65858c080af77c99917491110413df83 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 10:36:30 +1200 Subject: [PATCH 17/39] update docstring --- splitpy/calc.py | 24 ++++++++++++++++++++++++ splitpy/classes.py | 10 ++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/splitpy/calc.py b/splitpy/calc.py index 291cd57..fec55a6 100644 --- a/splitpy/calc.py +++ b/splitpy/calc.py @@ -43,6 +43,12 @@ def split_SilverChan(trQ, trT, baz, t1, t2, maxdt, ddt, dphi): Start time of picking window t2 : :class:`~obspy.core.utcdatetime.UTCDateTime` End time of picking window + maxdt : float + Maximum delay time considered in grid search (sec) + ddt : float + Delay time interval in grid search (sec) + dphi : float + Angular interval in grid search (deg) Returns ------- @@ -166,6 +172,12 @@ def split_RotCorr(trQ, trT, baz, t1, t2, maxdt, ddt, dphi): Start time of picking window t2 : :class:`~obspy.core.utcdatetime.UTCDateTime` End time of picking window + maxdt : float + Maximum delay time considered in grid search (sec) + ddt : float + Delay time interval in grid search (sec) + dphi : float + Angular interval in grid search (deg) Returns ------- @@ -391,6 +403,12 @@ def split_errorSC(tr, t1, t2, q, Emat, maxdt, ddt, dphi): Confidence level Emat : :class:`~numpy.ndarray` Energy minimization matrix + maxdt : float + Maximum delay time considered in grid search (sec) + ddt : float + Delay time interval in grid search (sec) + dphi : float + Angular interval in grid search (deg) Returns ------- @@ -461,6 +479,12 @@ def split_errorRC(tr, t1, t2, q, Emat, maxdt, ddt, dphi): Confidence level Emat : :class:`~numpy.ndarray` Energy minimization matrix + maxdt : float + Maximum delay time considered in grid search (sec) + ddt : float + Delay time interval in grid search (sec) + dphi : float + Angular interval in grid search (deg) Returns ------- diff --git a/splitpy/classes.py b/splitpy/classes.py index 1a476d8..e9dc2ec 100644 --- a/splitpy/classes.py +++ b/splitpy/classes.py @@ -86,6 +86,12 @@ class Meta(object): Horizontal slowness of phase inc : float Incidence angle of phase at surface + maxdt : float + Maximum delay time considered in grid search (sec) + ddt : float + Delay time interval in grid search (sec) + dphi : float + Angular interval in grid search (deg) align : str Alignment of coordinate system for rotation ('ZRT', 'LQT', or 'PVH') @@ -690,8 +696,6 @@ def is_null(self, snrTlim=3., verbose=False): ---------- snrTlim : float Threshold for snr on T component - ds : int - Number of spaces to print out to screen (verbiage) verbose : bool Output diagnostics to screen @@ -745,8 +749,6 @@ def get_quality(self, verbose=False): Parameters ---------- - ds : int - Number of spaces to print out to screen (verbiage) verbose : bool Output diagnostics to screen From 10c389e5137bf7a64c62b297de39787ee957e854 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:02:43 +1200 Subject: [PATCH 18/39] fixed tests --- docs/scripts.rst | 1 + meson.build | 11 ++++++- splitpy/tests/get_meta.py | 1 - splitpy/tests/test_args.py | 10 ++++--- splitpy/tests/test_imports.py | 2 +- splitpy/tests/test_scripts.py | 54 ++++++++++++++--------------------- 6 files changed, 39 insertions(+), 40 deletions(-) diff --git a/docs/scripts.rst b/docs/scripts.rst index 4742d39..f4f7272 100644 --- a/docs/scripts.rst +++ b/docs/scripts.rst @@ -59,6 +59,7 @@ Usage exist. Selecting overwrite and skip (ie, both flags) negate each other, and both are set to false (every repeat is prompted). [Default False] + --zcomp ZCOMP Specify the Vertical Component Channel Identifier. [Default Z]. --skip-existing Skip any event for which existing splitting results are saved to disk. Default behaviour prompts for each event. Selecting skip and overwrite (ie, both flags) diff --git a/meson.build b/meson.build index 11a2879..6f8d378 100644 --- a/meson.build +++ b/meson.build @@ -18,7 +18,16 @@ py.install_sources( 'splitpy/scripts/split_calc_manual.py', 'splitpy/scripts/split_average.py', 'splitpy/scripts/__init__.py', + 'splitpy/tests/get_meta.py', + 'splitpy/tests/test_args.py', + 'splitpy/tests/test_imports.py', + 'splitpy/tests/test_scripts.py', + 'splitpy/tests/__init__.py', pure: false, preserve_path: true, ) - \ No newline at end of file + + install_data( + 'splitpy/examples/data/MMPY.pkl', + install_dir: py.get_install_dir(pure: false) / 'splitpy/examples/data', +) diff --git a/splitpy/tests/get_meta.py b/splitpy/tests/get_meta.py index f694833..ba6bcd1 100644 --- a/splitpy/tests/get_meta.py +++ b/splitpy/tests/get_meta.py @@ -1,7 +1,6 @@ import stdb import numpy as np from pkg_resources import resource_filename -from obspy.clients.fdsn import Client def get_stdb(): diff --git a/splitpy/tests/test_args.py b/splitpy/tests/test_args.py index a2c23cd..0b3a990 100644 --- a/splitpy/tests/test_args.py +++ b/splitpy/tests/test_args.py @@ -1,6 +1,8 @@ import numpy as np -from splitpy import arguments from pkg_resources import resource_filename +from splitpy.scripts import split_calc_auto as sca +from splitpy.scripts import split_calc_manual as scm +from splitpy.scripts import split_average as sa from pathlib import Path from . import get_meta @@ -9,14 +11,14 @@ 'examples/data/MMPY.pkl') def test_get_args_calc_auto(): - args = arguments.get_arguments_calc_auto([dbfile]) + args = sca.get_arguments_calc_auto([dbfile]) return args def test_get_args_calc_manual(): - args = arguments.get_arguments_calc_manual([dbfile]) + args = scm.get_arguments_calc_manual([dbfile]) return args def test_get_args_average(): - args = arguments.get_arguments_average([dbfile]) + args = sa.get_arguments_average([dbfile]) return args diff --git a/splitpy/tests/test_imports.py b/splitpy/tests/test_imports.py index f0e269b..d33906f 100644 --- a/splitpy/tests/test_imports.py +++ b/splitpy/tests/test_imports.py @@ -6,7 +6,7 @@ def test_obspy_import(): def test_splitpy_modules(): import splitpy - from splitpy import utils, calc, classes, arguments, gui + from splitpy import utils, calc, classes, gui from splitpy.classes import Meta, Result, Split from splitpy import Pick, Keep, Save, Repeat from splitpy import PickPlot, DiagPlot diff --git a/splitpy/tests/test_scripts.py b/splitpy/tests/test_scripts.py index 0c826c1..5ab478f 100644 --- a/splitpy/tests/test_scripts.py +++ b/splitpy/tests/test_scripts.py @@ -2,6 +2,7 @@ import numpy as np import pickle import stdb +import copy from obspy.clients.fdsn import Client from splitpy import Split, utils from . import test_args, get_meta @@ -41,10 +42,12 @@ def test_split(tmp_path): # Establish client if len(args.UserAuth) == 0: - data_client = Client(args.Server) + data_client = Client(args.server) else: data_client = Client( - args.Server, user=args.UserAuth[0], password=args.UserAuth[1]) + args.Server, + user=args.UserAuth[0], + password=args.UserAuth[1]) # Establish client for events event_client = Client() @@ -64,13 +67,12 @@ def test_split(tmp_path): continue # Temporary print locations - tlocs = sta.location + tlocs = copy.copy(sta.location) if len(tlocs) == 0: tlocs = [''] for il in range(0, len(tlocs)): if len(tlocs[il]) == 0: - tlocs[il] = "--" - sta.location = tlocs + tlocs.append("--") # Update Display print(" ") @@ -110,8 +112,10 @@ def test_split(tmp_path): # Get catalogue using deployment start and end cat = event_client.get_events( - starttime=tstart, endtime=tend, - minmagnitude=args.minmag, maxmagnitude=args.maxmag) + starttime=tstart, + endtime=tend, + minmagnitude=args.minmag, + maxmagnitude=args.maxmag) # Total number of events in Catalogue nevK = 0 @@ -121,27 +125,6 @@ def test_split(tmp_path): " possible events |") ievs = range(0, nevtT) - # Get Local Data Availabilty - if len(args.localdata) > 0: - print("|-----------------------------------------------|") - print("| Cataloging Local Data... |") - if args.useNet: - stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, sta=sta.station, - net=sta.network, altnet=sta.altnet) - print("| {0:>2s}.{1:5s}: {2:6d} files " + - " |".format( - sta.network, sta.station, len(stalcllist))) - else: - stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, sta=sta.station) - print("| {0:5s}: {1:6d} files " + - " |".format( - sta.station, len(stalcllist))) - else: - stalcllist = [] - print("|===============================================|") - # Select order of processing if args.reverse: ievs = range(0, nevtT) @@ -159,8 +142,11 @@ def test_split(tmp_path): # Add event to split object accept = split.add_event( - ev, gacmin=args.mindist, gacmax=args.maxdist, - phase=args.phase, returned=True) + ev, + gacmin=args.mindist, + gacmax=args.maxdist, + phase=args.phase, + returned=True) # Define time stamp yr = str(split.meta.time.year).zfill(4) @@ -214,9 +200,11 @@ def test_split(tmp_path): # Get data has_data = split.download_data( - client=data_client, dts=args.dts, stdata=stalcllist, - ndval=args.ndval, new_sr=args.new_sampling_rate, - returned=True, verbose=args.verb) + client=data_client, + dts=args.dts, + new_sr=args.new_sampling_rate, + returned=True, + verbose=args.verb) if not has_data: continue From 3813fc8860ecff2bd08f5a152987745bc78b525a Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:03:12 +1200 Subject: [PATCH 19/39] added zcomp in args and ascii art --- splitpy/classes.py | 5 +++-- splitpy/scripts/split_calc_auto.py | 24 +++++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/splitpy/classes.py b/splitpy/classes.py index e9dc2ec..0200cef 100644 --- a/splitpy/classes.py +++ b/splitpy/classes.py @@ -252,7 +252,7 @@ class Split(object): """ - def __init__(self, sta): + def __init__(self, sta, zcomp='Z'): # # Load example data if initializing empty object # if sta == 'demo' or sta == 'Demo': @@ -271,6 +271,7 @@ def __init__(self, sta): self.meta = None self.dataZNE = None self.dataLQT = None + self.zcomp = zcomp def add_event(self, event, gacmin=85., gacmax=120., phase='SKS', returned=False): @@ -418,7 +419,7 @@ def download_data(self, client, new_sr=5., dts=120., """ if self.meta is None: - raise Exception("Requires event data as attribute - aborting")) + raise Exception("Requires event data as attribute - aborting") if not self.meta.accept: return diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 27d0f01..2cdc079 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -89,6 +89,13 @@ def get_arguments_calc_auto(argv=None): "already exist. Selecting overwrite and skip (ie, both flags) " + "negate each other, and both are set to " + "false (every repeat is prompted). [Default False]") + parser.add_argument( + "--zcomp", + dest="zcomp", + type=str, + default="Z", + help="Specify the Vertical Component Channel Identifier. "+ + "[Default Z].") parser.add_argument( "--skip-existing", action="store_true", @@ -433,6 +440,18 @@ def get_arguments_calc_auto(argv=None): def main(args=None): + print() + print("###################################################################") + print("# _ _ _ _ _ #") + print("# ___ _ __ | (_) |_ ___ __ _| | ___ __ _ _ _| |_ ___ #") + print("# / __| '_ \| | | __| / __/ _` | |/ __| / _` | | | | __/ _ \ #") + print("# \__ \ |_) | | | |_ | (_| (_| | | (__ | (_| | |_| | || (_) | #") + print("# |___/ .__/|_|_|\__|___\___\__,_|_|\___|___\__,_|\__,_|\__\___/ #") + print("# |_| |_____| |_____| #") + print("# #") + print("###################################################################") + print() + if args is None: # Run Input Parser args = get_arguments_calc_auto() @@ -497,13 +516,12 @@ def main(args=None): continue # Temporary print locations - tlocs = sta.location + tlocs = copy.copy(sta.location) if len(tlocs) == 0: tlocs = [''] for il in range(0, len(tlocs)): if len(tlocs[il]) == 0: - tlocs[il] = "--" - sta.location = tlocs + tlocs.append("--") # Update Display print(" ") From 0d8eeb1200968750196cb05c59798f8104a0f543 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:06:31 +1200 Subject: [PATCH 20/39] added ascii art --- splitpy/scripts/split_average.py | 12 ++++++++++++ splitpy/scripts/split_calc_manual.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/splitpy/scripts/split_average.py b/splitpy/scripts/split_average.py index 63c615c..bed10e5 100755 --- a/splitpy/scripts/split_average.py +++ b/splitpy/scripts/split_average.py @@ -226,6 +226,18 @@ def get_arguments_average(argv=None): def main(args=None): + print() + print("###############################################################") + print("# _ _ _ #") + print("# ___ _ __ | (_) |_ __ ___ _____ _ __ __ _ __ _ ___ #") + print("# / __| '_ \| | | __| / _` \ \ / / _ \ '__/ _` |/ _` |/ _ \ #") + print("# \__ \ |_) | | | |_ | (_| |\ V / __/ | | (_| | (_| | __/ #") + print("# |___/ .__/|_|_|\__|___\__,_| \_/ \___|_| \__,_|\__, |\___| #") + print("# |_| |_____| |___/ #") + print("# #") + print("###############################################################") + print() + if args is None: # Run Input Parser args = get_arguments_average() diff --git a/splitpy/scripts/split_calc_manual.py b/splitpy/scripts/split_calc_manual.py index 64bcb84..526c723 100755 --- a/splitpy/scripts/split_calc_manual.py +++ b/splitpy/scripts/split_calc_manual.py @@ -190,6 +190,18 @@ def get_arguments_calc_manual(argv=None): def main(args=None): + print() + print("###################################################################################") + print("# _ _ _ _ _ #") + print("# ___ _ __ | (_) |_ ___ __ _| | ___ _ __ ___ __ _ _ __ _ _ __ _| | #") + print("# / __| '_ \| | | __| / __/ _` | |/ __| | '_ ` _ \ / _` | '_ \| | | |/ _` | | #") + print("# \__ \ |_) | | | |_ | (_| (_| | | (__ | | | | | | (_| | | | | |_| | (_| | | #") + print("# |___/ .__/|_|_|\__|___\___\__,_|_|\___|___|_| |_| |_|\__,_|_| |_|\__,_|\__,_|_| #") + print("# |_| |_____| |_____| #") + print("# #") + print("###################################################################################") + print() + if args is None: # Run Input Parser args = get_arguments_calc_manual() From 65ef43e4f1a4afcbff7944eb7135322b879497d4 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:08:35 +1200 Subject: [PATCH 21/39] added ascii art to scripts docs --- docs/scripts.rst | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/scripts.rst b/docs/scripts.rst index f4f7272..b8b1b61 100644 --- a/docs/scripts.rst +++ b/docs/scripts.rst @@ -32,6 +32,17 @@ Usage .. code-block:: $ split_calc_auto -h + + ################################################################### + # _ _ _ _ _ # + # ___ _ __ | (_) |_ ___ __ _| | ___ __ _ _ _| |_ ___ # + # / __| '_ \| | | __| / __/ _` | |/ __| / _` | | | | __/ _ \ # + # \__ \ |_) | | | |_ | (_| (_| | | (__ | (_| | |_| | || (_) | # + # |___/ .__/|_|_|\__|___\___\__,_|_|\___|___\__,_|\__,_|\__\___/ # + # |_| |_____| |_____| # + # # + ################################################################### + usage: split_calc_auto [arguments] Script wrapping together the python-based implementation of SplitLab by @@ -174,6 +185,17 @@ Usage .. code-block:: $ split_calc_manual -h + + ################################################################################### + # _ _ _ _ _ # + # ___ _ __ | (_) |_ ___ __ _| | ___ _ __ ___ __ _ _ __ _ _ __ _| | # + # / __| '_ \| | | __| / __/ _` | |/ __| | '_ ` _ \ / _` | '_ \| | | |/ _` | | # + # \__ \ |_) | | | |_ | (_| (_| | | (__ | | | | | | (_| | | | | |_| | (_| | | # + # |___/ .__/|_|_|\__|___\___\__,_|_|\___|___|_| |_| |_|\__,_|_| |_|\__,_|\__,_|_| # + # |_| |_____| |_____| # + # # + ################################################################################### + usage: split_calc_manual [arguments] Script to process and calculate the spliting parameters for a dataset that has @@ -244,6 +266,17 @@ Usage .. code-block:: $ split_average -h + + ############################################################### + # _ _ _ # + # ___ _ __ | (_) |_ __ ___ _____ _ __ __ _ __ _ ___ # + # / __| '_ \| | | __| / _` \ \ / / _ \ '__/ _` |/ _` |/ _ \ # + # \__ \ |_) | | | |_ | (_| |\ V / __/ | | (_| | (_| | __/ # + # |___/ .__/|_|_|\__|___\__,_| \_/ \___|_| \__,_|\__, |\___| # + # |_| |_____| |___/ # + # # + ############################################################### + usage: split_average [arguments] Script to plot the average splitting results for a given station. Loads the available .pkl From 0802a89e097636b7a57d1071ead78fe390f4f044 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:11:34 +1200 Subject: [PATCH 22/39] added ascii art to tutorial docs --- docs/tutorials.rst | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/tutorials.rst b/docs/tutorials.rst index be084af..8e47666 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -81,6 +81,16 @@ This will produce, in the terminal: .. code-block:: + ################################################################### + # _ _ _ _ _ # + # ___ _ __ | (_) |_ ___ __ _| | ___ __ _ _ _| |_ ___ # + # / __| '_ \| | | __| / __/ _` | |/ __| / _` | | | | __/ _ \ # + # \__ \ |_) | | | |_ | (_| (_| | | (__ | (_| | |_| | || (_) | # + # |___/ .__/|_|_|\__|___\___\__,_|_|\___|___\__,_|\__,_|\__\___/ # + # |_| |_____| |_____| # + # # + ################################################################### + |==================================================| | TGTN | |==================================================| @@ -191,6 +201,16 @@ This will produce, in the terminal: .. code-block:: + ################################################################### + # _ _ _ _ _ # + # ___ _ __ | (_) |_ ___ __ _| | ___ __ _ _ _| |_ ___ # + # / __| '_ \| | | __| / __/ _` | |/ __| / _` | | | | __/ _ \ # + # \__ \ |_) | | | |_ | (_| (_| | | (__ | (_| | |_| | || (_) | # + # |___/ .__/|_|_|\__|___\___\__,_|_|\___|___\__,_|\__,_|\__\___/ # + # |_| |_____| |_____| # + # # + ################################################################### + |==================================================| | TGTN | |==================================================| @@ -321,6 +341,17 @@ by typing in a terminal: .. code-block:: $ split_average --show-fig -V TGTN.pkl + + ############################################################### + # _ _ _ # + # ___ _ __ | (_) |_ __ ___ _____ _ __ __ _ __ _ ___ # + # / __| '_ \| | | __| / _` \ \ / / _ \ '__/ _` |/ _` |/ _ \ # + # \__ \ |_) | | | |_ | (_| |\ V / __/ | | (_| | (_| | __/ # + # |___/ .__/|_|_|\__|___\__,_| \_/ \___|_| \__,_|\__, |\___| # + # |_| |_____| |___/ # + # # + ############################################################### + --------------------------- Selection Criteria Null Value: From 149139c95f8b0fba5221a199d40bcb1483ce5941 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:15:17 +1200 Subject: [PATCH 23/39] import copy --- splitpy/scripts/split_calc_auto.py | 1 + 1 file changed, 1 insertion(+) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 2cdc079..8c61371 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -28,6 +28,7 @@ import numpy as np import pickle import stdb +import copy from obspy.clients.fdsn import Client from obspy import UTCDateTime From 3b7cf9c700a877039bd95e18f161cb699c453bbd Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:18:56 +1200 Subject: [PATCH 24/39] removed legacy localdata args in download_data --- splitpy/scripts/split_calc_auto.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 8c61371..01b9053 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -700,11 +700,8 @@ def main(args=None): # Get data has_data = split.download_data( client=data_client, - dts=args.dts, - stdata=stalcllist, - dtype=args.dtype, - ndval=args.ndval, new_sr=args.new_sampling_rate, + dts=args.dts, returned=True, verbose=args.verb) From 064d9620a16bf729e18913269fd85a451af1c3b0 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:25:11 +1200 Subject: [PATCH 25/39] add SDS archive functionality --- splitpy/scripts/split_calc_auto.py | 118 +++++++++++++++++------------ 1 file changed, 69 insertions(+), 49 deletions(-) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 01b9053..88f0889 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -30,7 +30,8 @@ import stdb import copy -from obspy.clients.fdsn import Client +from obspy.clients.fdsn import Client as FDSN_Client +from obspy.clients.filesystem.sds import Client as SDS_Client from obspy import UTCDateTime from splitpy import utils @@ -131,7 +132,7 @@ def get_arguments_calc_auto(argv=None): # Server Settings ServerGroup = parser.add_argument_group( title="Server Settings", - description="Settings associated with which " + + description="Settings associated with which " "datacenter to log into.") ServerGroup.add_argument( "--server", @@ -139,46 +140,63 @@ def get_arguments_calc_auto(argv=None): type=str, dest="server", default="IRIS", - help="Specify the server to connect to. Options include: " + - "BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, NCEDC, " + - "NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, USP. [Default IRIS]") + help="Base URL of FDSN web service compatible " + "server (e.g. “http://service.iris.edu”) or key string for recognized " + "server (one of 'AUSPASS', 'BGR', 'EARTHSCOPE', 'EIDA', 'EMSC', 'ETH', " + "'GEOFON', 'GEONET', 'GFZ', 'ICGC', 'IESDMC', 'INGV', 'IPGP', 'IRIS', " + "'IRISPH5', 'ISC', 'KNMI', 'KOERI', 'LMU', 'NCEDC', 'NIEP', 'NOA', " + "'NRCAN', 'ODC', 'ORFEUS', 'RASPISHAKE', 'RESIF', 'RESIFPH5', 'SCEDC', " + "'TEXNET', 'UIB-NORSAR', 'USGS', 'USP'). [Default 'IRIS']") ServerGroup.add_argument( "--user-auth", action="store", type=str, - dest="UserAuth", - default="", - help="Enter your IRIS Authentification Username and Password " + - "(--user-auth='username:authpassword') to access and download " + - "restricted data. [Default no user and password]") + dest="userauth", + default=None, + help="Authentification Username and Password for the " + + "waveform server (--user-auth='username:authpassword') to access " + + "and download restricted data. [Default no user and password]") + ServerGroup.add_argument( + "--eida-token", + action="store", + type=str, + dest="tokenfile", + default=None, + help="Token for EIDA authentication mechanism, see " + + "http://geofon.gfz-potsdam.de/waveform/archive/auth/index.php. " + "If a token is provided, argument --user-auth will be ignored. " + "This mechanism is only available on select EIDA nodes. The token can " + "be provided in form of the PGP message as a string, or the filename of " + "a local file with the PGP message in it. [Default None]") # Database Settings DataGroup = parser.add_argument_group( title="Local Data Settings", - description="Settings associated with defining and using a " + - "local data base of pre-downloaded day-long SAC files.") + description="Settings associated with defining " + + "and using a local data base of pre-downloaded " + + "day-long SAC or MSEED files.") DataGroup.add_argument( "--local-data", action="store", type=str, dest="localdata", default=None, - help="Specify a comma separated list of paths containing " + - "day-long sac files of data already downloaded. " + - "If data exists for a seismogram is already present on " + - "disk, it is selected preferentially over downloading " + - "the data using the Client interface") + help="Specify path containing " + + "day-long sac or mseed files of data already downloaded. " + + "If data exists for a seismogram is already present on disk, " + + "it is selected preferentially over downloading " + + "the data using the FDSN Client interface") DataGroup.add_argument( "--dtype", action="store", type=str, dest="dtype", - default='SAC', + default='MSEED', help="Specify the data archive file type, either SAC " + " or MSEED. Note the default behaviour is to search for " + - "SAC files. Local archive files must have extensions of '.SAC' "+ - " or '.MSEED. These are case dependent, so specify the correct case"+ - "here.") + "SAC files. Local archive files must have extensions of " + + "'.SAC' or '.MSEED'. These are case dependent, so specify " + + "the correct case here.") # DataGroup.add_argument( # "--no-data-zero", # action="store_true", @@ -383,34 +401,33 @@ def get_arguments_calc_auto(argv=None): else: args.endT = None - # Parse User Authentification - if not len(args.UserAuth) == 0: - tt = args.UserAuth.split(':') - if not len(tt) == 2: - parser.error( - "Error: Incorrect Username and Password Strings for " + - "User Authentification") - else: - args.UserAuth = tt + # Parse restricted data settings + if args.tokenfile is not None: + args.userauth = [None, None] else: - args.UserAuth = [] + if args.userauth is not None: + tt = args.userauth.split(':') + if not len(tt) == 2: + msg = ( + "Error: Incorrect Username and Password Strings " + + "for User Authentification") + parser.error(msg) + else: + args.userauth = tt + else: + args.userauth = [None, None] # Check existing file behaviour if args.skip and args.ovr: args.skip = False args.ovr = False - # Parse Local Data directories - if args.localdata is not None: - args.localdata = args.localdata.split(',') - else: - args.localdata = [] - - # # Check NoData Value - # if args.ndval: - # args.ndval = 0.0 - # else: - # args.ndval = nan + # Check Datatype specification + if args.dtype.upper() not in ['MSEED', 'SAC']: + parser.error( + "Error: Local Data Archive must be of types 'SAC'" + + "or MSEED. These must match the file extensions for " + + " the archived data.") # Check selected phase if args.phase not in ['SKS', 'SKKS', 'PKS']: @@ -491,16 +508,19 @@ def main(args=None): datapath.mkdir(parents=True) # Establish client - if len(args.UserAuth) == 0: - data_client = Client(args.server) + if args.localdata is None: + data_client = FDSN_Client( + base_url=args.server, + user=args.userauth[0], + password=args.userauth[1], + eida_token=args.tokenfile) else: - data_client = Client( - args.server, - user=args.UserAuth[0], - password=args.UserAuth[1]) + data_client = SDS_Client( + args.localdata, + format=args.dtype) # Establish client for events - event_client = Client() + event_client = FDSN_Client() # Get catalogue search start time if args.startT is None: From b0dd7c8aed9c030f6f0e8571f6627b4fb311ca78 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:27:45 +1200 Subject: [PATCH 26/39] update scripts docs for local data --- docs/scripts.rst | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/docs/scripts.rst b/docs/scripts.rst index b8b1b61..365e9d8 100644 --- a/docs/scripts.rst +++ b/docs/scripts.rst @@ -85,31 +85,37 @@ Usage Server Settings: Settings associated with which datacenter to log into. - --server SERVER - Specify the server to connect to. Options include: - BGR, ETH, GEONET, GFZ, INGV, IPGP, IRIS, KOERI, LMU, - NCEDC, NEIP, NERIES, ODC, ORFEUS, RESIF, SCEDC, USGS, - USP. [Default IRIS] - --user-auth USERAUTH - Enter your IRIS Authentification Username and Password - (--user-auth='username:authpassword') to access and - download restricted data. [Default no user and - password] + --server SERVER Base URL of FDSN web service compatible server (e.g. + “http://service.iris.edu”) or key string for recognized server (one + of 'AUSPASS', 'BGR', 'EARTHSCOPE', 'EIDA', 'EMSC', 'ETH', 'GEOFON', + 'GEONET', 'GFZ', 'ICGC', 'IESDMC', 'INGV', 'IPGP', 'IRIS', 'IRISPH5', + 'ISC', 'KNMI', 'KOERI', 'LMU', 'NCEDC', 'NIEP', 'NOA', 'NRCAN', + 'ODC', 'ORFEUS', 'RASPISHAKE', 'RESIF', 'RESIFPH5', 'SCEDC', + 'TEXNET', 'UIB-NORSAR', 'USGS', 'USP'). [Default 'IRIS'] + --user-auth USERAUTH Authentification Username and Password for the waveform server + (--user-auth='username:authpassword') to access and download + restricted data. [Default no user and password] + --eida-token TOKENFILE + Token for EIDA authentication mechanism, see http://geofon.gfz- + potsdam.de/waveform/archive/auth/index.php. If a token is provided, + argument --user-auth will be ignored. This mechanism is only + available on select EIDA nodes. The token can be provided in form of + the PGP message as a string, or the filename of a local file with the + PGP message in it. [Default None] Local Data Settings: - Settings associated with defining and using a local data base of pre- - downloaded day-long SAC files. + Settings associated with defining and using a local data base of pre-downloaded day-long + SAC or MSEED files. --local-data LOCALDATA - Specify a comma separated list of paths containing - day-long sac files of data already downloaded. If data - exists for a seismogram is already present on disk, it - is selected preferentially over downloading the data - using the Client interface + Specify path containing day-long sac or mseed files of data already + downloaded. If data exists for a seismogram is already present on + disk, it is selected preferentially over downloading the data using + the FDSN Client interface --dtype DTYPE Specify the data archive file type, either SAC or MSEED. Note the default behaviour is to search for SAC files. Local archive files - must have extensions of '.SAC' or '.MSEED. These are case dependent, - so specify the correct casehere. + must have extensions of '.SAC' or '.MSEED'. These are case dependent, + so specify the correct case here. Parameter Settings: Miscellaneous default values and settings From 1707e1b3506ff46ce14bb6eac6069853d8626db0 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:30:51 +1200 Subject: [PATCH 27/39] cleaner verbosity --- docs/_build/doctrees/api.doctree | Bin 247961 -> 270765 bytes docs/_build/doctrees/environment.pickle | Bin 42135 -> 90572 bytes docs/_build/doctrees/index.doctree | Bin 11915 -> 10958 bytes docs/_build/html/.buildinfo | 4 +- docs/_build/html/_sources/index.rst.txt | 6 +- docs/_build/html/_static/basic.css | 330 ++++-- docs/_build/html/_static/css/badge_only.css | 2 +- docs/_build/html/_static/css/theme.css | 6 +- docs/_build/html/_static/doctools.js | 382 ++---- .../html/_static/documentation_options.js | 11 +- docs/_build/html/_static/jquery.js | 4 +- docs/_build/html/_static/js/theme.js | 4 +- docs/_build/html/_static/language_data.js | 111 +- docs/_build/html/_static/pygments.css | 74 +- docs/_build/html/_static/searchtools.js | 900 ++++++++------- docs/_build/html/api.html | 1020 +++++++++-------- docs/_build/html/genindex.html | 216 ++-- docs/_build/html/index.html | 231 ++-- docs/_build/html/objects.inv | Bin 860 -> 867 bytes docs/_build/html/py-modindex.html | 163 +-- docs/_build/html/search.html | 170 +-- docs/_build/html/searchindex.js | 2 +- splitpy/scripts/split_calc_auto.py | 2 +- 23 files changed, 1698 insertions(+), 1940 deletions(-) diff --git a/docs/_build/doctrees/api.doctree b/docs/_build/doctrees/api.doctree index f95f35a2cc4dfeecba47de2a1a0ff7b386ea0fc7..dbe17a771d6bffb1fc434b38c98abbd22c9204a7 100644 GIT binary patch literal 270765 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 literal 247961 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
b~5WhzA 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 diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 32b896dc2f6fdbbf9ec7730dcd5e782ea3c93741..dec34548ffcb4ef573bbac09d7c9152f265e84a5 100644 GIT binary patch literal 90572 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 diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 6a53fa0b217c450b05f53c758ebf78e3034caed4..f56db4345d27aca8ac3111753310282fffecc4ab 100644 GIT binary patch delta 3388 zcmb_fU2GiH74~?uUVCk?f3n`JgdiKeC(DkySlw?)1vI6U3n+@UCeR&k7_#Jgh5^erDNT_du{+=}nL$*=D=3(gfoq?A-J5i!0m`$dyPNv%- z1DUQL3R&3bddeHeJRW<_|5(Ts=Pg&9qur0je@c8y7TR?gd@n_lYA)lSyNs`PANF3u z5Lca@40OR*&yest=_hbbG?Bp*t{Y*juN~?cd~>F`n`pE|k}K zbVRz+Q1&DUfrIdJZ?MyE*}Sum@BJ#ue7*O`aC5spZqi2gcVIrSXW?gc5b~c|#@%+t zWl=T7k}K!yZfB7Mc_D>RqVN*__$^!sL~R*9t;yi;dyjQt39V>lQC2Ob3p)E!N4HoD zI?t@GPe11S@&C}rMVi-GLmzJcArCg>)`!p9`k?J7{Il=2p;vLn^_FA<7$Xbm{!iy~ zkEBm8oX(|>p3O(JVuTXO|A@J!sk1pvr(|6+Xk<~6jk30?ixm>dNpxM)*HX5^yoAod zUH#|Ani45U0ju1824<$xT(_0QFu3y*rxJH zu5x^fwW7Oa9wZ5yCs!K&we!fXMtQW-hl9a84!IO^>MFy!HC2ijRHU+|x@a%A(6(#f zH^Golg!hBP!*v*o6FJ=^AVXj%=Bus3p`qh>9bvc;A?v*7G?=n|x3ohy$*Hw3pc1?= zAQSoo`$8`CHxF(qjD^F&gmS4R9n|U~JQyB{Wtgwl+Fhx?&|=F|-_KLPCS}9eCEXb@ z4ataz5tm?y6Vc@foJHyT0+9rwnb>EF%3@d&j zjOi%Pa!Srw6RyACaC!8vq0aWUHiIV|s4b79-@nms65bg*jHiUF6~N;Y{jz1a|egylXci5xo0jp!zWw#&9atH4f$`{}}v6*v-tlWuR;NYe{hNpT0xi9kh<<_R8d>I~$1wT(h9sIYjOQuY{3tY-#fq9nU<;F!*he zd8tP6CXj7o{<;mn61JHToI2CPIy943OlsxGAt+Cc_3N5O5kM-+8x|AN7F4HB3|3jM zAr+`(ydjlNR5O#76~T8tzWu8<$Lm z2Kd!EUy{^SO7bPSEK}=C{nL<7>`usS=3{r-RlDYbk__<6HDfkkz@2fN#NyYc}9Qd6Pn`nQVL?gHG6_umt#*~xBM cEtK%H2NhYhmMrF9kqVmbypuT&ZZ4<(3po2fzyJUM delta 3495 zcmcInTWlLe6wSt7JGS$3-f^6ClQgNFfHy6rrHN!n1ucoeR3xFa5Vh-M<;FIAulQJ_4;OQMJ`#6v=@_$m?wsUHY|xU;t7O;acp;=^Ol z%)K+`oO|ca_=}1ACi&a#kK7)5ou}O887V8LHG_C`hpObVQ?j9N7bjFXtBM&(osyDL zZd%sFF=a-ZLsM1UF|QFNEnX{U6g8nK*@UdZ6Wkgu3bP(R9OqgqZGvW^5uFbZ|$ z)XS40(o44FhofwC)+5wx#<7hhQ#f4yJr{;YZF3xttx|>4k!2TXwWo1*$==z)>rFdz zswU6K$!S5>1Su&5HVh105;V}`IupfLcFBg`u!%o7L~^8uBy@Kc9gymjJZ(fcwstN? z!a5f+?lkT&7K{MlS!d;@57l=zj^vp{oH%8|MZZzl=6D?8{NT6nL$f8ffTJGs%P|Yr7jtVva0}39r{SJ9(BBG_p#&?Pt+$f@v2xu2<%hYrmY8;<8~CudaXq_YK3- zUKZDrv9OplXtqP|~I7t{ld-l88-!`MO3f4iDC~wiZ`1 zp^TRxP&iuG?JUf~$+{~S7m&PJ9LPs8|fl_^wYfd%?WMkPibfX^G-d|}-=#t!_B`I2mAU=N~HYhbU( zz5&Zm(I>1|2su?&1xYBGTgD2O@J;iuKdjrww98`_yL=yQ4zn=S*wa!St& za1Gtw3(*u2QxaajSuviKGDM6? z({UNveZJmvxx1IqFY2~jHeu-7{`<}$b${F-T?+;^)flm=F;r3`7n4W>yW^YiK5T(S zPc_qetBE4;Z&4KU*jmBipudxQ8$R}L#P`N`@Tb3zlOfoCpk*I!&Qjs}We|}bjQ9k6 z)V`^2j18^`GS+4~j-$m}4v#B_n(l%Nh5it(Os8;i(unF#v)X3njk^qq#?3*xgkKU( zU>hl?6mIKiT1;Z+9-1=SwAm_bx{PMb&MdaLyoz7+K5WiF+K)(YVZ$qALx(vWl!y;S z^y8;vl1W0(!lwBj==53X*rZItO63{0L5a%ZnwImS^4w}F>yZllUsQOL3QP)X+w!3Z z(8IVFeG418#NtW8cRnnRtY(2vW%|;8VF4F+ZuM@!oU^>mBRmXOx4VnaeiDEaojcpf z=BVz9%W1sM@o|qC=bDx@8L#0~#)yL2HQEs2^eR=J($cxqo||TrYzp7ghmLg#9Cr#% zbvM~2#pjqdd)KkO)m%(VXi2#M;2vmL7lNJZZteJt>Hje{L?g5G zZY;#~0BgQt%`y08UBhL}Buca;b9Tv`S;~qH*8IwvpWuqX zY3@%L3J&ANyb#=s{{!9#ZYsQ;t_7jbykhwgjM+8V6S!YtxUaV`_ of the -USArray Transportable Array network. +from `one station `_ of the +Yukon-Northwest Seismograph Network. .. note:: @@ -31,8 +31,6 @@ USArray Transportable Array network. :target: https://zenodo.org/badge/latestdoi/211722700 .. image:: https://travis-ci.org/paudetseis/SplitPy.svg?branch=master :target: https://travis-ci.org/paudetseis/ -.. image:: https://codecov.io/gh/paudetseis/SplitPy/branch/master/graph/badge.svg - :target: https://codecov.io/gh/paudetseis/SplitPy .. toctree:: :maxdepth: 1 diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css index 0119285..4738b2e 100644 --- a/docs/_build/html/_static/basic.css +++ b/docs/_build/html/_static/basic.css @@ -1,12 +1,5 @@ /* - * basic.css - * ~~~~~~~~~ - * * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ /* -- main layout ----------------------------------------------------------- */ @@ -15,6 +8,12 @@ div.clearer { clear: both; } +div.section::after { + display: block; + content: ''; + clear: left; +} + /* -- relbar ---------------------------------------------------------------- */ div.related { @@ -109,22 +108,18 @@ img { /* -- search page ----------------------------------------------------------- */ ul.search { - margin: 10px 0 0 20px; - padding: 0; + margin-top: 10px; } ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; + padding: 5px 0; } ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -216,7 +211,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -231,14 +226,8 @@ a.headerlink { visibility: hidden; } -a.brackets:before, -span.brackets > a:before{ - content: "["; -} - -a.brackets:after, -span.brackets > a:after { - content: "]"; +a:visited { + color: #551A8B; } h1:hover > a.headerlink, @@ -271,25 +260,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } -img.align-default, .figure.align-default { +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -313,24 +302,35 @@ img.align-default, .figure.align-default { /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; - padding: 7px 7px 0 7px; + padding: 7px; background-color: #ffe; width: 40%; float: right; + clear: right; + overflow-x: auto; } p.sidebar-title { font-weight: bold; } +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + /* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, div.topic { border: 1px solid #ccc; - padding: 7px 7px 0 7px; + padding: 7px; margin: 10px 0 10px 0; } @@ -352,10 +352,6 @@ div.admonition dt { font-weight: bold; } -div.admonition dl { - margin-bottom: 0; -} - p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; @@ -366,9 +362,34 @@ div.body p.centered { margin-top: 25px; } +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + /* -- tables ---------------------------------------------------------------- */ table.docutils { + margin-top: 10px; + margin-bottom: 10px; border: 0; border-collapse: collapse; } @@ -398,10 +419,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -416,32 +433,34 @@ table.citation td { border-bottom: none; } -th > p:first-child, -td > p:first-child { +th > :first-child, +td > :first-child { margin-top: 0px; } -th > p:last-child, -td > p:last-child { +th > :last-child, +td > :last-child { margin-bottom: 0px; } /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -468,10 +487,71 @@ table.field-list td, table.field-list th { /* -- hlist styles ---------------------------------------------------------- */ +table.hlist { + margin: 1em 0; +} + table.hlist td { vertical-align: top; } +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + /* -- other body styles ----------------------------------------------------- */ @@ -495,26 +575,53 @@ ol.upperroman { list-style: upper-roman; } -li > p:first-child { +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { margin-top: 0px; } -li > p:last-child { +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { margin-bottom: 0px; } -dl.footnote > dt, -dl.citation > dt { - float: left; +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; } -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; } -dl.footnote > dd:after, -dl.citation > dd:after { +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { content: ""; clear: both; } @@ -531,10 +638,6 @@ dl.field-list > dt { padding-right: 5px; } -dl.field-list > dt:after { - content: ":"; -} - dl.field-list > dd { padding-left: 0.5em; margin-top: 0em; @@ -546,7 +649,7 @@ dl { margin-bottom: 15px; } -dd > p:first-child { +dd > :first-child { margin-top: 0px; } @@ -560,6 +663,21 @@ dd { margin-left: 30px; } +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + dt:target, span.highlighted { background-color: #fbe54e; } @@ -573,14 +691,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -621,8 +731,9 @@ dl.glossary dt { .classifier:before { font-style: normal; - margin: 0.5em; + margin: 0 0.5em; content: ":"; + display: inline-block; } abbr, acronym { @@ -637,29 +748,69 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +pre, div[class*="highlight-"] { + clear: both; +} + span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; } td.linenos pre { - padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { - margin-left: 0.5em; + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; } div.code-block-caption { + margin-top: 1em; padding: 2px 5px; font-size: small; } @@ -668,12 +819,14 @@ div.code-block-caption code { background-color: transparent; } -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -685,21 +838,7 @@ 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; + margin: 1em 0; } code.xref, a code { @@ -740,8 +879,7 @@ span.eqno { } span.eqno a.headerlink { - position: relative; - left: 0px; + position: absolute; z-index: 1; } diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css index 3c33cef..88ba55b 100644 --- a/docs/_build/html/_static/css/badge_only.css +++ b/docs/_build/html/_static/css/badge_only.css @@ -1 +1 @@ -.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css index aed8cef..0f14f10 100644 --- a/docs/_build/html/_static/css/theme.css +++ b/docs/_build/html/_static/css/theme.css @@ -1,6 +1,4 @@ -/* sphinx_rtd_theme version 0.4.3 | MIT license */ -/* Built 20190212 16:02 */ -*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content .code-block-caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content .code-block-caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#3a7ca8;height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin:12px 0 0 0;display:block;font-weight:bold;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{padding:0px;border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after,.rst-content .code-block-caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after,.rst-content .code-block-caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content pre,.rst-content kbd,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold;margin-bottom:12px}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-regular.eot");src:url("../fonts/Lato/lato-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-regular.woff2") format("woff2"),url("../fonts/Lato/lato-regular.woff") format("woff"),url("../fonts/Lato/lato-regular.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bold.eot");src:url("../fonts/Lato/lato-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bold.woff2") format("woff2"),url("../fonts/Lato/lato-bold.woff") format("woff"),url("../fonts/Lato/lato-bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bolditalic.eot");src:url("../fonts/Lato/lato-bolditalic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bolditalic.woff2") format("woff2"),url("../fonts/Lato/lato-bolditalic.woff") format("woff"),url("../fonts/Lato/lato-bolditalic.ttf") format("truetype");font-weight:700;font-style:italic}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-italic.eot");src:url("../fonts/Lato/lato-italic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-italic.woff2") format("woff2"),url("../fonts/Lato/lato-italic.woff") format("woff"),url("../fonts/Lato/lato-italic.ttf") format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:url("../fonts/RobotoSlab/roboto-slab.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.ttf") format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.ttf") format("truetype")} + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js index daccd20..0398ebb 100644 --- a/docs/_build/html/_static/doctools.js +++ b/docs/_build/html/_static/doctools.js @@ -1,315 +1,149 @@ /* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * + * Base JavaScript utilities for all Sphinx HTML documentation. */ - -/** - * 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]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - 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 rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - 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); - 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(); - } +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (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)]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - 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; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - /** - * 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); - }); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * helper function to focus on search bar */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * highlight the search words provided in the url in the text + * Initialise the domain index toggle buttons */ - 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'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - 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); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js index 23fc755..b16db03 100644 --- a/docs/_build/html/_static/documentation_options.js +++ b/docs/_build/html/_static/documentation_options.js @@ -1,12 +1,13 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.0.1', - LANGUAGE: 'None', +const DOCUMENTATION_OPTIONS = { + VERSION: '0.2.0', + LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', FILE_SUFFIX: '.html', LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/docs/_build/html/_static/jquery.js b/docs/_build/html/_static/jquery.js index a1c07fd..c4c6022 100644 --- a/docs/_build/html/_static/jquery.js +++ b/docs/_build/html/_static/jquery.js @@ -1,2 +1,2 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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(e,n){S.fn[n]=function(e,t){return 0"),i("table.docutils.footnote").wrap("
"),i("table.docutils.citation").wrap("
"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i(''),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t { + const [docname, title, anchor, descr, score, filename, kind] = result + return score }, */ @@ -28,9 +23,11 @@ if (!Scorer) { // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, // Used when the priority is not in the mapping. objPrioDefault: 0, @@ -39,445 +36,571 @@ if (!Scorer) { partialTitle: 7, // query found in terms term: 5, - partialTerm: 2 + partialTerm: 2, }; } -if (!splitQuery) { - function splitQuery(query) { - return query.split(/\s+/); +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings } /** * Search Module */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - htmlToText : function(htmlString) { - var htmlElement = document.createElement('span'); - htmlElement.innerHTML = htmlString; - $(htmlElement).find('.headerlink').remove(); - docContent = $(htmlElement).find('[role=main]')[0]; - if(docContent === undefined) { - console.warn("Content block not found. Sphinx search tries to obtain it " + - "via '[role=main]'. Could you check your theme or template."); - return ""; - } - return docContent.textContent || docContent.innerText; - }, +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; }, - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function(jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - }}); + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); }, - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); } }, - hasIndex : function() { - return this._index !== null; - }, + hasIndex: () => Search._index !== null, - deferQuery : function(query) { - this._queued_query = query; - }, + deferQuery: (query) => (Search._queued_query = query), - stopPulse : function() { - this._pulse_status = 0; - }, + stopPulse: () => (Search._pulse_status = -1), - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; pulse(); }, /** * perform a search for something (or wait until index is loaded) */ - performSearch : function(query) { + performSearch: (query) => { // create the required interface elements - this.out = $('#search-results'); - this.title = $('

' + _('Searching') + '

').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

 

').appendTo(this.out); - this.output = $(' @@ -317,8 +248,6 @@

L

+

Z

+ + +
+ -
-
-

- © Copyright 2019, Pascal Audet & Andrew Schaeffer - -

+

© Copyright 2019, Pascal Audet & Andrew Schaeffer.

- Built with Sphinx using a theme provided by Read the Docs. -
+ Built with Sphinx using a + theme + provided by Read the Docs. + + - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index b090406..eb36422 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -1,177 +1,100 @@ - - + - - - - - Documentation — SplitPy 0.0.1 documentation - - - - - - - - - - - - - - - - - - + - + + Documentation — SplitPy 0.2.0 documentation + + - - + + + + + + - - - +
- -
- - -
- - - - - - - - - + \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index 24b286de92409667fdcf3e0646ad194886d739e9..6768a48ce3a6708c94e27cd0e9f9320b0f8509a6 100644 GIT binary patch delta 760 zcmVY3 zWpH7v4d}Ml9Hr64#SwmkT1&M9yJ(mug2HTx1XyeAYLP>&(|;*+jof0ATruasl~_FDwW3#E%@f{zUmt07t(v_VFy|Z zK4Rn+d_en7_*x5Ir`uhD>s5L_qP)Cri5Gn21ZH87%TXKb#97O8xJ+{%t6HgZP_*Be z!#wh?;(6ej+L{jJJ<;TPx(rFhIjGCkqO$SA(#(|WTz`-WQTdz4(r?|7gB@rjgPN)R z3sAA}{#!Y1sa!bQ*i?v-3FM!Pues#!>o-X$F5YIPpJ)531$s^!@WQCu0`xBjWYf(tVx z^@BTA4ii!NUE+^^Q~0(RWDpX}>162A})kG-HBsU29qMFKb~Bi1tQ qTTiOFsGf@G?C4`%4M)0>95ja+_8~h=odxMI8MXJ*aP}8cxET;xH-s(# delta 753 zcmVZyiY&b zvh&!Z6?G{p>i-idQk3m@t0dXJu>DnQ>P}(tq43dGHq@$j(YkzJEEls~fD#t~Sox~B z90%3L(8@SBpu0{Bl13LFPw;=JtyBkes|GX^tj&%|pmWA;R)0CvHk~5h$Q>og6?l)n zyq2(ED>E{qEfpwt^}qm;laC!?GH1h|stzM{>1UKU64f$4HPH$&3l9M$D!Rk_%( zJU8Vw7lgX5Lgztx*PS>#pe8n`LG{0oiw*BmmDi5T4S#!^E)`~G2J*-En;cRGJM>kH z{JhSr?v$#YI|#NucMUflUC+kNi&h5m&cz-nH*D$0U30NH%giFpu9(=_-k78_6rOP0 z-SM8p6Qf;|5n#ZcbFjqp?>m|N85y+YH;nJouU?;naCnDE5^m5UP?B^zrTtZ5M^gFZ zJ&o$Wn}6%Aufm9_@QF|<6K=r~tUT#-*n;yI=@H%;R|(VF^cBc~z&Af+!=Ug~U)4qw z%hO!3isxmqM=f=YKSz;*M^uAswnpvO;orqcHm!B0xHh6|!-EHg5Ee@6Cx5OS4N>`7 z(wFYB2xT{3l5sM`5DN2;7;L|sCn9h_*===hv{uSRLrd{2@PEH&i74U@<;92W@Hl2|S<+t0b_K@<_Iz!~K`)G^&rV j?Jsh0_OnxQD+OwS3+je4fx5`n(HON4^KkJSkNc~OuZ(%) diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html index c319cc3..875e6b7 100644 --- a/docs/_build/html/py-modindex.html +++ b/docs/_build/html/py-modindex.html @@ -1,38 +1,21 @@ - - + - - - - - Python Module Index — SplitPy 0.0.1 documentation - - - - - - + + + Python Module Index — SplitPy 0.2.0 documentation + + - - - - - - - - - - - - - - - - + + + + + + @@ -40,131 +23,73 @@ - - - +
- -
- - -
- - - - - - - - - + \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html index 2ed094a..bc311d3 100644 --- a/docs/_build/html/search.html +++ b/docs/_build/html/search.html @@ -1,175 +1,99 @@ - - + - - - - - Search — SplitPy 0.0.1 documentation - - - - - - + + + Search — SplitPy 0.2.0 documentation + + - - - - - - - - - - - - - - - - + + + + + + + + - - - +
- -
- - -
- - - - - - - - - - - + diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 700c124..95fdd9f 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["api","index","links","scripts","splitpy","tutorials"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["api.rst","index.rst","links.rst","scripts.rst","splitpy.rst","tutorials.rst"],objects:{"":{splitpy:[4,0,0,"-"]},"splitpy.calc":{split_RotCorr:[0,1,1,""],split_SilverChan:[0,1,1,""],split_dof:[0,1,1,""],split_errorRC:[0,1,1,""],split_errorSC:[0,1,1,""],tshift:[0,1,1,""]},"splitpy.classes":{DiagPlot:[0,2,1,""],Meta:[0,2,1,""],PickPlot:[0,2,1,""],Result:[0,2,1,""],Split:[0,2,1,""]},"splitpy.classes.DiagPlot":{fd:[0,3,1,""],plot_diagnostic:[0,4,1,""],save:[0,4,1,""],split:[0,3,1,""]},"splitpy.classes.Meta":{az:[0,3,1,""],baz:[0,3,1,""],dep:[0,3,1,""],epi_dist:[0,3,1,""],gac:[0,3,1,""],inc:[0,3,1,""],lat:[0,3,1,""],lon:[0,3,1,""],mag:[0,3,1,""],slow:[0,3,1,""],time:[0,3,1,""]},"splitpy.classes.PickPlot":{fp:[0,3,1,""],ll:[0,3,1,""],plot_LQT_phases:[0,4,1,""],save:[0,4,1,""],split:[0,3,1,""],update_LQT:[0,4,1,""]},"splitpy.classes.Result":{Emat:[0,3,1,""],dtt:[0,3,1,""],edtt:[0,3,1,""],ephi:[0,3,1,""],errc:[0,3,1,""],phi:[0,3,1,""],phi_min:[0,3,1,""],trFast:[0,3,1,""],trQ_c:[0,3,1,""],trSlow:[0,3,1,""],trT_c:[0,3,1,""]},"splitpy.classes.Split":{"null":[0,3,1,""],RC_res:[0,3,1,""],SC_res:[0,3,1,""],add_data:[0,4,1,""],add_event:[0,4,1,""],analyze:[0,4,1,""],calc_snr:[0,4,1,""],dataLQT:[0,3,1,""],dataZNE:[0,3,1,""],display_meta:[0,4,1,""],display_null_quality:[0,4,1,""],display_results:[0,4,1,""],download_data:[0,4,1,""],get_quality:[0,4,1,""],is_null:[0,4,1,""],meta:[0,3,1,""],quality:[0,3,1,""],rotate:[0,4,1,""],save:[0,4,1,""],snrh:[0,3,1,""],snrq:[0,3,1,""],sta:[0,3,1,""]},"splitpy.gui":{Keep:[0,2,1,""],Pick:[0,2,1,""],Repeat:[0,2,1,""],Save:[0,2,1,""]},"splitpy.utils":{download_data:[0,1,1,""],list_local_data_stn:[0,1,1,""],parse_localdata_for_comp:[0,1,1,""],traceshift:[0,1,1,""]},splitpy:{calc:[0,0,0,"-"],gui:[0,0,0,"-"],utils:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},terms:{"100000z":5,"107273z":5,"110000z":5,"18t03":5,"20160413_135517":5,"20160527_040843":5,"20160607_191515":5,"20160619_094723":5,"20160713_121112":5,"20160924_212841":5,"20170819_020052":5,"20170926_042000":5,"20180728_170723":5,"20180819_042858":5,"20180906_154914":5,"20180910_041902":5,"20180910_193137":5,"20180916_211148":5,"20181016_002812":5,"20190531_101232":5,"20190616_051716":5,"20190707_150840":5,"20190731_150233":5,"20190929_020251":5,"20191031_011119":5,"20200318_031345":5,"742000z":5,"boolean":0,"case":5,"class":1,"default":[0,1,3,5],"final":[3,5],"float":0,"function":0,"int":0,"long":[3,5],"new":[0,3,5],"null":[0,2,3,5],"return":0,"true":5,AND:4,BUT:4,DTS:3,FOR:4,For:[3,5],NOT:4,PKS:5,SKS:[0,1,3,5],ScS:5,THE:4,The:[0,1,3,4,5],There:[3,5],These:[0,3],USE:4,WITH:4,Yes:5,abov:4,accept:0,access:3,accompani:3,action:4,activ:[2,4],add:0,add_data:0,add_ev:0,added:0,after:[0,3,5],against:3,aggreg:1,align:0,all:[0,3,4,5],along:[4,5],alreadi:[0,3],also:[0,4,5],altern:[0,5],altnet:0,america:2,analysi:[0,1,3],analyz:[0,1,3],andrew:4,angl:[0,3],ani:[3,4,5],anwer:0,api:1,appli:[0,5],applic:0,arc:0,argument:[3,5],aris:4,arrai:1,arriv:[0,3,5],ask:5,associ:[0,3,4],associatd:3,attribut:0,audet:[2,4],auth:3,authentif:3,author:4,authpassword:3,auto:[3,5],autom:[1,3],automat:[3,4,5],avail:[0,3,4,5],averag:[1,3],ax0:0,ax1:0,ax2:0,ax3:0,axes:0,axi:0,axrc1:0,axrc2:0,axrc3:0,axrc4:0,axsc1:0,axsc2:0,axsc3:0,axsc4:0,axt:0,axvlin:0,azimuth:[0,5],back:0,backazimuth:5,bandpass:[],bar:0,barruol:2,base:[0,1,3,5],bash:3,basic:1,baz:[0,5],been:[0,1,3,4,5],befor:[3,5],behaviour:3,below:1,best:[0,5],between:[0,3,5],bgr:3,bokelmann:2,bool:0,both:[0,3],box:[0,5],build:0,bulletin:2,bundl:1,button:0,cageo:2,calc:[1,3,5],calc_snr:0,calcul:[0,3,5],call:0,can:[0,1,3,4,5],canada:2,care:3,carri:[0,5],chan:[0,3,5],chang:5,channel:[0,5],charg:4,check:[0,1,5],choos:5,circl:[0,3],cite:1,claim:4,classif:5,click:5,client:[0,3,5],clone:4,close:5,code:[3,5],collect:3,column:5,com:4,comma:3,common:0,comp:0,compat:3,compon:[0,3,5],comput:2,conda:1,condit:4,confid:0,connect:[3,4],consid:[3,5],contain:[0,3,5],contamin:5,content:0,contour:0,contract:4,control:[2,5],convent:0,coordin:0,copi:4,copyright:4,core:0,corner:[0,3],correct:[0,5],correl:[0,3,5],correspond:[0,5],creat:[1,4],criteria:5,current:[0,4],custom:[4,5],dai:[3,5],damag:4,dat:5,data:[0,1,3],databas:[0,1,3],datacent:3,datadisk:5,datalqt:0,dataset:3,datazn:0,date:3,daysac:5,ddt:[0,3],deal:4,defin:[0,3,5],deg:[0,5],degre:[0,3,5],delai:[0,3],denot:5,dep:[0,5],depend:1,depth:[0,5],desir:3,detail:1,detect:2,determin:[0,5],develop:1,diagnost:[0,3,5],diagplot:1,dict:0,dictionari:[0,3],differ:[0,1,5],direct:0,directori:[0,3],disagre:3,discard:5,disk:[3,5],displai:[0,5],display_meta:0,display_null_qu:0,display_result:0,dist:[3,5],distanc:[0,3],distribut:4,document:4,dof:0,doi:[2,4],done:[1,5],download:[0,1,3],download_data:0,dphi:[0,3,5],dst:3,dts:0,dtt:0,dttsc:0,due:0,durat:0,dure:3,each:[0,3,5],earthquak:0,east:0,edtt:0,either:[0,3],elev:5,elimin:5,emat:0,ematrix:0,enabl:1,end:[0,3,5],endt:3,endtim:5,energi:0,enter:3,environ:[1,2],ephi:0,epi:5,epi_dist:0,epicent:0,epicentr:0,equal:0,err:0,err_contour:0,err_dtt:0,err_phi:0,errc:0,error:[0,5],estiam:[],estim:[0,3,5],etc:5,eth:3,event:[0,3,4,5],everi:3,examin:5,exampl:[1,5],exceed:5,exclud:3,execut:1,exist:[3,5],exit:3,express:4,f_result:5,fair:[0,3,5],fals:[0,3,5],fast:[0,3,5],field:0,fig:[0,3,5],figur:[0,5],file:[0,3,4,5],filenam:3,fill:0,filter:[0,3],find:0,first:[0,5],fisher:0,fit:[0,4,5],flag:[3,5],fly:3,fmax:[0,3,5],fmin:[0,3,5],foat:0,folder:[3,5],follow:[0,4,5],forc:3,forg:4,format:0,found:5,fourth:5,fpathmatch:0,frame:5,framework:3,free:4,freedom:0,frequenc:[0,3,5],from:[0,1,3,5],furnish:4,further:[0,3,5],futur:5,g38118:2,gac:[0,5],gacmax:0,gacmin:0,gener:0,geologi:2,geometri:3,geonet:3,geoscienc:2,get:1,get_data_nez:[],get_qual:0,gfz:3,git:[2,4],github:[1,4],given:[0,3],good:[0,3,5],grant:4,graphic:5,great:[0,3],gui:[1,5],handl:0,has:[0,1,3,4,5],help:3,here:0,herebi:4,hhe:5,hhn:5,hhz:5,holder:4,horizont:0,http:[2,4],hypocent:0,iasp91:5,implement:[0,3],impli:4,improv:5,inc:0,incid:[0,5],includ:[3,4,5],increas:3,increment:3,indb:3,individu:3,info:[0,5],inform:[0,5],ingv:3,inherit:2,initi:0,insid:4,instal:1,instanc:3,instead:3,interact:[0,5],interfac:[3,5],internet:3,interv:0,ipgp:3,iri:[3,5],is_nul:0,its:4,januari:5,jgr:0,keep:[0,5],kei:[3,5],kind:4,koeri:3,lag:0,lat:[0,5],later:3,latitud:[0,5],lcldr:0,left:5,length:[3,5],let:5,letter:0,level:0,liabil:4,liabl:4,licenc:1,limit:[3,4],line:5,link:1,list:[0,3,5],list_local_data_stn:0,lithospher:2,lmu:3,load:[3,5],lobs3:5,loc:5,local:[0,3,5],localdata:3,locat:5,log:3,logfil:5,lon:[0,5],longitud:[0,5],longitudin:0,lqt:[0,5],ls_stdb:5,made:5,mag:[0,3,5],magnitud:[0,3,5],mai:[3,5],main:0,manual:[1,3],map:5,match:[0,3],matlab:[1,2],matrix:0,max:3,maxdist:3,maxdt:[0,3],maximum:[0,3],maxmag:3,measur:[2,3,5],merchant:4,merg:4,messag:[0,3,5],meta:[1,5],metadata:[0,5],method:[0,3,5],metnod:[],min:3,mindist:3,minim:0,minimum:[0,3,5],minmag:3,miscellan:3,misfit:0,miss:[0,3],mnt:5,mode:[1,3,5],model:5,modifi:4,modul:1,more:[1,3],most:[3,5],motion:[0,5],msnr:3,must:3,name:[0,3],nan:[0,3],ncedc:3,ndarrai:0,ndval:0,need:5,negat:3,neip:3,neotecton:2,neri:3,net:[0,3],network:[0,1,3,5],new_sampling_r:3,new_sr:0,newli:[0,4],nez:0,nois:0,non:[0,3,5],none:[0,3,5],noninfring:4,north:0,northwestern:2,note:[0,5],notic:4,number:0,object:0,obspi:[0,4,5],obtain:[3,4],occur:5,odc:3,older:3,oldest:3,onc:[1,5],one:[0,1,3,5],onli:[0,3,5],open:[0,5],option:[3,4,5],order:[3,5],orfeu:3,org:[2,4],origin:[0,5],other:[0,3,4],otherwis:4,out:[0,1,4,5],outsid:5,over:3,overrid:3,overwrit:[0,3,5],own:5,packag:4,pair:3,panel:5,paramet:[0,1,3,5],parse_localdata_for_comp:0,partial:[3,5],particl:[0,5],particular:[4,5],pascal:4,pass:5,password:3,path:[0,3,5],paudetsei:4,perform:3,permiss:4,permit:4,person:4,phase:[0,3,5],phi:[0,5],phi_min:0,phisc:0,pick:[0,1,3],pickl:[3,5],pickplot:1,pip:4,pkl:[3,5],place:5,pleas:4,plot:[0,1,3,5],plot_diagnost:0,plot_lqt_phas:0,png:0,point:0,polar:5,poor:[0,3,5],pop:5,portion:4,posit:[3,5],possibl:5,pre:[3,5],precis:3,predict:0,preferenti:3,present:[3,5],prevent:3,previou:5,previous:5,print:[0,5],proce:[0,3,5],process:[1,3],produc:[1,3,5],program:[3,5],prompt:[3,5],provid:[3,4,5],publish:4,purpos:4,pvh:0,pypi:1,pyqt5:[0,4],python:[1,3,4],qt5:0,qualiti:[0,3,5],query_fdsn_stdb:5,quick:1,radial:[0,3,5],rang:3,rate:[0,3],rather:3,ratio:0,raw:0,rc_re:0,recalc:5,recent:[3,5],recommend:4,recurs:0,red:5,refer:1,refin:[0,1,3,5],region:0,remain:4,repeat:[0,3],repositori:[1,4],repres:[0,3,5],request:[0,3,5],requir:[4,5],resif:3,restrict:[3,4],result:[1,3,5],retain:5,retriev:5,revers:3,rho:5,right:4,rotat:[0,3,5],routin:0,row:5,rtrace:0,run:5,sac:3,sampl:[0,3],save:[0,3,5],sc_nons_g:5,sc_re:0,scedc:3,schaeffer:[2,4],screen:0,script:[1,5],search:[3,5],sec:[0,3],second:5,see:[0,5],seismic:[0,5],seismogram:[0,3,5],seismolog:2,select:[3,5],sell:4,send:5,separ:[0,3,5],server:3,servic:3,set:[0,3,5],sever:[3,5],shall:4,shear:[0,1,2,3,5],shift:[0,5],show:[0,1,3,5],shown:1,signal:[0,5],silver:[0,3,5],simpl:0,simpli:[0,5],sinc:5,singl:[0,3],skip:[3,5],skk:[3,5],slow:[0,5],snr:[0,3,5],snrh:0,snrq:[0,5],snrt:[3,5],snrtlim:[0,3],societi:2,softwar:[1,4],sole:2,some:4,sometim:3,sort:0,sourc:1,space:0,specif:5,specifi:[3,5],split:[1,2,3,4,5],split_averag:[1,5],split_calc_auto:[1,5],split_calc_manu:[1,5],split_dof:0,split_errorrc:0,split_errorsc:0,split_rotcorr:0,split_silverchan:0,splite:3,splitlab:[1,2,3],splitpi:[0,1,2,3],sta:0,start:[0,1,3,5],startim:5,startt:3,starttim:5,station:[0,1,3],statu:5,stdata:0,stdb:[0,1,2,3,4],still:3,stkei:3,store:0,str:0,stream:0,string:[0,3],structur:5,subject:4,sublicens:4,subsequ:[3,5],substanti:4,success:0,successfulli:[],suitabl:5,summar:5,summari:[0,5],support:0,surfac:[0,5],system:0,take:[0,5],tangenti:[0,5],taup:0,taupymodel:0,teleseism:[0,1,3],temporarili:0,termin:5,test:[0,4],text:[0,5],tgtn:5,tgtn_rc:5,than:3,thei:[3,5],them:[3,5],therefor:0,thi:[0,3,4,5],third:5,those:3,three:[0,3,5],threshold:[0,3,5],through:5,time:[0,3,4,5],togeth:3,tool:1,toolbox:1,top:5,tort:4,total:3,toward:3,tp1:0,tp2:0,trace:[0,5],traceshift:0,transform:0,transport:1,transvers:[0,3],travel:0,tre:0,trfast:0,trn:0,trq:0,trq_c:0,trslow:0,trt:0,trt_c:0,trz:0,tshift:0,tutori:1,two:[0,1,3,5],type:[0,3,5],uniform:5,uniformli:5,updat:[0,5],update_lqt:0,usag:1,usarrai:1,use:[3,4,5],used:[0,3,5],user:[3,5],userauth:3,usernam:3,uses:[0,1,3,5],usg:3,using:[1,3,4,5],usp:3,utcdatetim:[0,3],util:1,valu:[0,3,5],verbiag:0,verbos:[0,3,5],version:[0,3,4],vertic:[0,5],visual:5,wai:3,walsh:0,warranti:4,wave:[0,1,2,3,5],waveform:[1,5],well:5,where:[1,4,5],whether:[0,4,5],which:[0,3,5],whom:4,widget:0,window:[0,1,3,5],wish:5,within:[3,5],without:4,work:[3,4],wrap:3,wustefeld:[1,2,3],year:5,yes:0,you:[4,5],your:[3,4,5],yyyymmdd_hrmnsc:5,zenodo:4,zero:3,zeroli:2,zne:[0,5],zne_data:[],zrt:0},titles:["Classes","Documentation","GitHub Repositories","Scripts","Licence","Tutorials"],titleterms:{"class":0,analysi:5,autom:5,averag:5,basic:4,calc:0,cite:4,conda:4,creat:5,data:5,databas:5,depend:4,descript:3,diagplot:0,document:1,download:5,environ:4,from:4,github:2,gui:0,instal:4,licenc:4,manual:5,meta:0,modul:0,pick:5,pickplot:0,process:5,pypi:4,refer:2,repositori:2,result:0,script:3,sourc:4,split:0,split_averag:3,split_calc_auto:3,split_calc_manu:3,splitpi:4,station:5,stdb:5,tutori:5,usag:[3,4],util:0}}) \ No newline at end of file +Search.setIndex({"alltitles":{"API Documentation":[[1,null]],"Automated analysis":[[5,"automated-analysis"]],"Citing SplitPy":[[2,"citing-splitpy"]],"Classes":[[0,null]],"Conda environment":[[4,"conda-environment"]],"Creating the StDb Database":[[5,"creating-the-stdb-database"]],"Dependencies":[[4,"dependencies"]],"Description":[[3,"description"],[3,"id1"],[3,"id3"]],"DiagPlot":[[0,"diagplot"]],"Documentation":[[1,null]],"Downloading and Processing":[[5,"downloading-and-processing"]],"Downloading data":[[5,"downloading-data"]],"GUI classes":[[0,"module-splitpy.gui"]],"Getting Started":[[1,null]],"GitHub Repositories":[[2,null]],"Installation":[[4,"installation"]],"Installing from GitHub development branch":[[4,"installing-from-github-development-branch"]],"Installing from source":[[4,"installing-from-source"]],"Licence":[[4,null]],"Manual analysis":[[5,"manual-analysis"]],"Meta":[[0,"meta"]],"Modules":[[0,"modules"]],"PickPlot":[[0,"pickplot"]],"Quick Links":[[1,null]],"Re-Processing":[[5,"re-processing"]],"Re-picking":[[5,"re-picking"]],"References":[[2,"references"]],"Result":[[0,"result"]],"Scripts":[[3,null]],"Scripts & Tutorials":[[1,null]],"Split":[[0,"split"]],"Station Metadata":[[4,"station-metadata"]],"Station average":[[5,"station-average"]],"Tutorials":[[5,null]],"Usage":[[3,"usage"],[3,"id2"],[3,"id4"]],"Using local data":[[4,"using-local-data"]],"Waveform Data":[[4,"waveform-data"]],"calc":[[0,"module-splitpy.calc"]],"split_average":[[3,"split-average"]],"split_calc_auto":[[3,"split-calc-auto"]],"split_calc_manual":[[3,"split-calc-manual"]],"utils":[[0,"module-splitpy.utils"]]},"docnames":["api","index","links","scripts","splitpy","tutorials"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["api.rst","index.rst","links.rst","scripts.rst","splitpy.rst","tutorials.rst"],"indexentries":{"add_data() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.add_data",false]],"add_event() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.add_event",false]],"align (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.align",false]],"analyze() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.analyze",false]],"az (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.az",false]],"baz (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.baz",false]],"calc_snr() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.calc_snr",false]],"datalqt (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.dataLQT",false]],"dataz12 (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.dataZ12",false]],"datazne (splitpy.classes.split attribute)":[[0,"id0",false],[0,"id1",false],[0,"splitpy.classes.Split.dataZNE",false]],"ddt (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ddt",false]],"dep (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.dep",false]],"diagplot (class in splitpy.classes)":[[0,"splitpy.classes.DiagPlot",false]],"display_meta() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_meta",false]],"display_null_quality() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_null_quality",false]],"display_results() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_results",false]],"download_data() (in module splitpy.utils)":[[0,"splitpy.utils.download_data",false]],"download_data() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.download_data",false]],"dphi (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.dphi",false]],"dtt (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.dtt",false]],"edtt (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.edtt",false]],"emat (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.Emat",false]],"ephi (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.ephi",false]],"epi_dist (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.epi_dist",false]],"errc (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.errc",false]],"fd (splitpy.classes.diagplot attribute)":[[0,"splitpy.classes.DiagPlot.fd",false]],"fp (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.fp",false]],"gac (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.gac",false]],"get_quality() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.get_quality",false]],"inc (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.inc",false]],"is_null() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.is_null",false]],"keep (class in splitpy.gui)":[[0,"splitpy.gui.Keep",false]],"lat (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.lat",false]],"ll (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.ll",false]],"lon (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.lon",false]],"mag (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.mag",false]],"maxdt (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.maxdt",false]],"meta (class in splitpy.classes)":[[0,"splitpy.classes.Meta",false]],"meta (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.meta",false]],"module":[[0,"module-splitpy.calc",false],[0,"module-splitpy.gui",false],[0,"module-splitpy.utils",false]],"null (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.null",false]],"ph (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ph",false]],"phi (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.phi",false]],"phi_min (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.phi_min",false]],"pick (class in splitpy.gui)":[[0,"splitpy.gui.Pick",false]],"pickplot (class in splitpy.classes)":[[0,"splitpy.classes.PickPlot",false]],"plot_diagnostic() (splitpy.classes.diagplot method)":[[0,"splitpy.classes.DiagPlot.plot_diagnostic",false]],"plot_lqt_phases() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.plot_LQT_phases",false]],"quality (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.quality",false]],"rc_res (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.RC_res",false]],"repeat (class in splitpy.gui)":[[0,"splitpy.gui.Repeat",false]],"result (class in splitpy.classes)":[[0,"splitpy.classes.Result",false]],"rotate() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.rotate",false]],"rotated (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.rotated",false]],"save (class in splitpy.gui)":[[0,"splitpy.gui.Save",false]],"save() (splitpy.classes.diagplot method)":[[0,"splitpy.classes.DiagPlot.save",false]],"save() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.save",false]],"save() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.save",false]],"sc_res (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.SC_res",false]],"slow (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.slow",false]],"snrh (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.snrh",false]],"snrq (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.snrq",false]],"split (class in splitpy.classes)":[[0,"splitpy.classes.Split",false]],"split (splitpy.classes.diagplot attribute)":[[0,"splitpy.classes.DiagPlot.split",false]],"split (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.split",false]],"split_dof() (in module splitpy.calc)":[[0,"splitpy.calc.split_dof",false]],"split_errorrc() (in module splitpy.calc)":[[0,"splitpy.calc.split_errorRC",false]],"split_errorsc() (in module splitpy.calc)":[[0,"splitpy.calc.split_errorSC",false]],"split_rotcorr() (in module splitpy.calc)":[[0,"splitpy.calc.split_RotCorr",false]],"split_silverchan() (in module splitpy.calc)":[[0,"splitpy.calc.split_SilverChan",false]],"splitpy.calc":[[0,"module-splitpy.calc",false]],"splitpy.gui":[[0,"module-splitpy.gui",false]],"splitpy.utils":[[0,"module-splitpy.utils",false]],"sta (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.sta",false]],"time (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.time",false]],"traceshift() (in module splitpy.utils)":[[0,"splitpy.utils.traceshift",false]],"trfast (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trFast",false]],"trq_c (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trQ_c",false]],"trslow (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trSlow",false]],"trt_c (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trT_c",false]],"tshift() (in module splitpy.calc)":[[0,"splitpy.calc.tshift",false]],"ttime (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ttime",false]],"update_lqt() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.update_LQT",false]],"zcomp (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.zcomp",false]]},"objects":{"splitpy":[[0,0,0,"-","calc"],[0,0,0,"-","gui"],[0,0,0,"-","utils"]],"splitpy.calc":[[0,1,1,"","split_RotCorr"],[0,1,1,"","split_SilverChan"],[0,1,1,"","split_dof"],[0,1,1,"","split_errorRC"],[0,1,1,"","split_errorSC"],[0,1,1,"","tshift"]],"splitpy.classes":[[0,2,1,"","DiagPlot"],[0,2,1,"","Meta"],[0,2,1,"","PickPlot"],[0,2,1,"","Result"],[0,2,1,"","Split"]],"splitpy.classes.DiagPlot":[[0,3,1,"","fd"],[0,4,1,"","plot_diagnostic"],[0,4,1,"","save"],[0,3,1,"","split"]],"splitpy.classes.Meta":[[0,3,1,"","align"],[0,3,1,"","az"],[0,3,1,"","baz"],[0,3,1,"","ddt"],[0,3,1,"","dep"],[0,3,1,"","dphi"],[0,3,1,"","epi_dist"],[0,3,1,"","gac"],[0,3,1,"","inc"],[0,3,1,"","lat"],[0,3,1,"","lon"],[0,3,1,"","mag"],[0,3,1,"","maxdt"],[0,3,1,"","ph"],[0,3,1,"","rotated"],[0,3,1,"","slow"],[0,3,1,"","time"],[0,3,1,"","ttime"],[0,3,1,"","zcomp"]],"splitpy.classes.PickPlot":[[0,3,1,"","fp"],[0,3,1,"","ll"],[0,4,1,"","plot_LQT_phases"],[0,4,1,"","save"],[0,3,1,"","split"],[0,4,1,"","update_LQT"]],"splitpy.classes.Result":[[0,3,1,"","Emat"],[0,3,1,"","dtt"],[0,3,1,"","edtt"],[0,3,1,"","ephi"],[0,3,1,"","errc"],[0,3,1,"","phi"],[0,3,1,"","phi_min"],[0,3,1,"","trFast"],[0,3,1,"","trQ_c"],[0,3,1,"","trSlow"],[0,3,1,"","trT_c"]],"splitpy.classes.Split":[[0,3,1,"","RC_res"],[0,3,1,"","SC_res"],[0,4,1,"","add_data"],[0,4,1,"","add_event"],[0,4,1,"","analyze"],[0,4,1,"","calc_snr"],[0,3,1,"","dataLQT"],[0,3,1,"","dataZ12"],[0,3,1,"id1","dataZNE"],[0,4,1,"","display_meta"],[0,4,1,"","display_null_quality"],[0,4,1,"","display_results"],[0,4,1,"","download_data"],[0,4,1,"","get_quality"],[0,4,1,"","is_null"],[0,3,1,"","meta"],[0,3,1,"","null"],[0,3,1,"","quality"],[0,4,1,"","rotate"],[0,4,1,"","save"],[0,3,1,"","snrh"],[0,3,1,"","snrq"],[0,3,1,"","sta"]],"splitpy.gui":[[0,2,1,"","Keep"],[0,2,1,"","Pick"],[0,2,1,"","Repeat"],[0,2,1,"","Save"]],"splitpy.utils":[[0,1,1,"","download_data"],[0,1,1,"","traceshift"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},"terms":{"":[0,3,5],"0":[0,3,4,5],"00":5,"000":5,"000000":5,"002":2,"01":5,"0120060190":2,"02":[0,3],"03":5,"03806173520674":5,"04":5,"05":5,"052":5,"07":5,"08":2,"1":[0,2,3,5],"10":[2,3,4,5],"10000":5,"100000z":5,"1016":2,"107273z":5,"11":0,"110000z":5,"111":5,"1130":2,"12":[4,5],"120":[0,3],"1204":2,"1211":2,"128":5,"13":5,"14":5,"141":5,"15":[0,5],"167":5,"17":5,"176":5,"1785":2,"18":5,"180":0,"18t03":5,"19":5,"1990":0,"1f":5,"2":[0,3,4,5],"20":5,"2007":2,"2008":[1,2],"2013":[0,5],"2016":[2,5],"20160413_135517":5,"20160527_040843":5,"20160607_191515":5,"20160619_094723":5,"20160713_121112":5,"20160924_212841":5,"20170819_020052":5,"20170926_042000":5,"20180728_170723":5,"20180819_042858":5,"20180906_154914":5,"20180910_041902":5,"20180910_193137":5,"20180916_211148":5,"20181016_002812":5,"2019":4,"20190531_101232":5,"20190616_051716":5,"20190707_150840":5,"20190731_150233":5,"20190929_020251":5,"20191031_011119":5,"2020":[4,5],"20200318_031345":5,"2025":0,"21":5,"22":5,"23":0,"241":5,"25":5,"27":5,"27269":5,"2727":5,"3":[0,4,5],"30":0,"332":4,"34":[2,5],"3564780":2,"36765404740968":5,"369472":0,"369480":0,"37":5,"38":5,"39":5,"4":[0,3,5],"44":2,"45":5,"47":0,"5":[0,3,5],"51":5,"51340359244245":5,"515":2,"5267":5,"52670":5,"528":2,"5281":2,"53":5,"6":[3,5],"61":5,"63":5,"68":5,"7":[4,5],"729":5,"742000z":5,"75":5,"76":5,"78":5,"8":5,"807":2,"810":2,"82":5,"85":[0,3],"87":5,"8889144288134":5,"89":5,"891":5,"94":5,"97":2,"A":[0,2,4,5],"AND":4,"AS":4,"As":5,"BE":4,"BUT":4,"Be":3,"By":5,"FOR":4,"For":[3,4,5],"IN":4,"If":[2,3,4,5],"In":5,"It":[0,5],"NO":4,"NOT":4,"No":[3,5],"OF":4,"OR":4,"THE":4,"TO":4,"The":[0,1,3,4,5],"There":[3,4,5],"These":[0,3],"To":[4,5],"WITH":4,"_":[3,5],"__":[3,5],"___":[3,5],"_____":[3,5],"abov":4,"absent":4,"accept":0,"access":3,"accompani":3,"action":4,"activ":[2,4],"ad":0,"add":0,"add_data":0,"add_ev":0,"after":[0,3,5],"against":3,"aggreg":1,"al":1,"align":0,"all":[0,3,4,5],"along":[4,5],"alreadi":3,"also":[0,4,5],"altern":[0,5],"altnet":[],"america":2,"an":[0,1,3,4,5],"analysi":[0,1,3],"analyz":[0,1,3],"andrew":4,"angl":[0,3],"angular":0,"ani":[3,4],"anwer":0,"appear":4,"appli":[0,5],"applic":0,"ar":[0,1,3,5],"arc":0,"archiv":[0,3,4],"argument":[3,4,5],"aris":4,"arriv":[0,3,5],"ask":5,"associ":[0,3,4],"associatd":3,"attribut":0,"audet":[2,4],"auth":3,"authentif":3,"author":4,"authpassword":3,"auto":[3,5],"autom":[1,3],"automat":[3,4,5],"avail":[0,3,4,5],"averag":[1,3],"ax":0,"ax0":0,"ax1":0,"ax2":0,"ax3":0,"axi":0,"axrc1":0,"axrc2":0,"axrc3":0,"axrc4":0,"axsc1":0,"axsc2":0,"axsc3":0,"axsc4":0,"axt":0,"axvlin":0,"az":[0,5],"azimuth":[0,5],"back":0,"backazimuth":5,"bar":0,"barruol":2,"base":[0,1,3,5],"bash":3,"baz":[0,5],"been":[0,1,3,4,5],"befor":[3,5],"behaviour":3,"below":[1,4],"best":[0,5],"between":[0,3,4,5],"bgr":3,"bokelmann":2,"bool":0,"boolean":0,"both":[0,3,4],"box":[0,5],"branch":1,"build":0,"bulletin":2,"bundl":1,"button":0,"c":[2,4,5],"cageo":2,"calc":[1,3,5],"calc_snr":0,"calcul":[0,3,5],"call":0,"can":[0,1,3,4,5],"canada":2,"care":3,"carri":[0,5],"case":[3,5],"caseher":3,"cd":4,"chan":[0,3,4,5],"chang":5,"channel":[3,4,5],"charact":[0,4],"charg":4,"check":[0,1,4,5],"choos":5,"circl":[0,3],"cite":1,"claim":4,"class":1,"classif":5,"click":5,"client":[0,3,4,5],"clone":4,"close":5,"code":[3,4,5],"collect":3,"column":5,"com":4,"comma":3,"command":4,"common":0,"comp":[],"compat":3,"compon":[0,3,5],"comput":2,"conda":1,"condit":4,"confid":0,"connect":[3,4],"consid":[0,3,5],"contain":[0,3,4,5],"contamin":5,"content":0,"contour":0,"contract":4,"control":[2,5],"convent":[],"convert":4,"coordin":0,"copi":4,"copyright":4,"core":0,"corner":[0,3],"correct":[0,3,5],"correl":[0,3,5],"correspond":[0,4,5],"creat":[1,4],"criteria":5,"current":[0,4],"custom":4,"d":[0,3,4,5],"dai":[3,4,5],"damag":4,"dat":5,"data":[0,1,3],"databas":[0,1,3],"datacent":3,"datadisk":5,"dataless":4,"datalqt":0,"dataset":3,"dataz12":0,"datazn":0,"date":3,"daysac":5,"db":[0,3,5],"ddt":[0,3],"deal":4,"default":[1,3,5],"defin":[0,3],"deg":[0,5],"degre":[0,3,5],"delai":[0,3],"denot":5,"dep":[0,5],"depend":[1,3],"depth":[0,5],"desir":3,"detail":[1,4],"detect":2,"determin":[0,5],"develop":1,"diagnost":[0,3,5],"diagplot":1,"dict":0,"dictionari":[0,3],"differ":[0,1,5],"direct":0,"directori":3,"discard":5,"disk":[3,5],"displai":[0,5],"display_meta":0,"display_null_qu":0,"display_result":0,"dist":[3,5],"distanc":[0,3],"distribut":4,"do":4,"document":4,"doe":4,"dof":0,"doi":[2,4],"don":4,"done":[1,5],"dot":4,"download":[0,1,3],"download_data":0,"dphi":[0,3,5],"drive":4,"dst":3,"dt":[0,3,5],"dtt":0,"dttsc":0,"dtype":[3,4],"due":[],"durat":0,"dure":[0,3],"e":[0,3,4,5],"each":[0,3,5],"earthquak":0,"east":0,"edtt":0,"either":[0,3],"elev":5,"elimin":5,"emat":0,"ematrix":0,"enabl":1,"end":[0,3,5],"endt":3,"endtim":5,"energi":0,"enter":3,"environ":[1,2],"ephi":0,"epi":5,"epi_dist":0,"epicent":0,"epicentr":0,"equal":0,"err":0,"err_contour":0,"err_dtt":0,"err_phi":0,"errc":0,"error":[0,5],"estim":[0,3,5],"et":1,"etc":5,"eth":3,"event":[0,3,4,5],"everi":3,"exactli":4,"examin":5,"exampl":[1,4,5],"exceed":5,"exclud":3,"execut":1,"exist":[3,5],"exit":3,"express":4,"extens":[3,4],"f":0,"f_result":5,"fair":[0,3,5],"fals":[0,3,5],"fast":[0,3,5],"fd":0,"fdsn":[0,4],"field":[0,4],"fig":[0,3,5],"figur":[0,5],"file":[0,3,4,5],"filenam":4,"fill":[],"filter":[0,3],"final":[3,4,5],"find":[],"first":[4,5],"fisher":0,"fit":[0,4,5],"flag":3,"float":0,"fly":3,"fmax":[0,3,5],"fmin":[0,3,5],"foat":0,"folder":[3,4,5],"follow":[0,4,5],"forc":3,"forg":4,"format":0,"found":5,"fourth":5,"fp":0,"fpathmatch":[],"frame":5,"framework":3,"free":4,"freedom":0,"frequenc":[0,3,5],"from":[0,1,3,5],"fulli":0,"function":0,"furnish":4,"further":[0,3,5],"futur":5,"g":[2,4],"g38118":2,"gac":[0,5],"gacmax":0,"gacmin":0,"gen_stdb":4,"gener":0,"geologi":2,"geometri":3,"geonet":3,"geoscienc":2,"get":0,"get_qual":0,"gfz":3,"git":[2,4],"github":1,"given":[0,3],"good":[0,3,5],"grant":4,"graphic":5,"great":[0,3],"grid":0,"ground":0,"gui":[1,5],"h":3,"ha":[0,1,3,4,5],"handl":0,"hard":4,"have":[0,3,4],"help":3,"here":4,"herebi":4,"hh":5,"hhe":5,"hhn":5,"hhz":[4,5],"holder":4,"horizont":0,"http":[2,4],"hypocent":0,"hz":[0,3],"i":[0,1,3,4,5],"iasp91":5,"identifi":[0,3],"ie":3,"implement":3,"impli":4,"improv":5,"inc":0,"incid":[0,5],"includ":[3,4,5],"increas":3,"increment":3,"indb":3,"individu":3,"info":[0,5],"inform":[0,5],"ingv":3,"inherit":2,"initi":0,"input":4,"insid":4,"instal":1,"instanc":3,"instead":3,"instrument":0,"int":0,"interact":[0,5],"interfac":[3,5],"internet":3,"interv":0,"ipgp":3,"iri":3,"is_nul":0,"its":4,"iu":3,"j":2,"januari":5,"jgr":0,"keep":[0,1,5],"kei":[3,5],"kind":4,"km":[0,5],"koeri":3,"l":0,"lag":0,"lat":[0,5],"later":3,"latitud":[0,5],"lcldr":[],"left":5,"length":[0,3,5],"let":5,"letter":[],"level":0,"liabil":4,"liabl":4,"licenc":1,"like":4,"limit":[3,4],"line":5,"list":[0,3,5],"list_local_data_stn":[],"lithospher":2,"ll":0,"lmu":3,"load":[3,4,5],"loc":[4,5],"local":[0,1,3,5],"localdata":3,"locat":[4,5],"log":3,"logfil":5,"lon":[0,5],"long":[3,5],"longitud":[0,5],"longitudin":0,"lqt":[0,5],"ls_stdb":5,"m":0,"made":5,"mag":[0,3,5],"magnitud":[0,3,5],"mai":5,"main":[0,4],"manual":[1,3],"map":5,"match":3,"matlab":[1,2],"matrix":0,"max":3,"maxdist":3,"maxdt":[0,3],"maximum":[0,3],"maxmag":3,"measur":[2,3,5],"merchant":4,"merg":4,"messag":[0,3,5],"meta":[1,5],"metadata":[0,1,5],"method":[0,3,5],"min":3,"mindist":3,"minim":0,"minimum":[0,3,5],"minise":4,"minmag":3,"miscellan":3,"misfit":0,"miss":[],"mnt":5,"mode":[1,3,5],"model":5,"modifi":4,"modul":1,"more":[1,3,4],"most":[3,5],"motion":[0,5],"mseed":[3,4],"msnr":3,"must":[3,4],"mw":5,"n":[0,4,5],"name":[0,3],"nan":[],"ncedc":3,"ndarrai":0,"ndval":[],"negat":3,"neip":3,"neotecton":2,"neri":3,"net":4,"network":[1,3,4,5],"new":[0,3,5],"new_sampling_r":3,"new_sr":0,"newli":[0,4],"nez":0,"nois":0,"non":[0,3,5],"none":[0,3,5],"noninfring":4,"north":0,"northwest":1,"northwestern":2,"note":[0,3,4,5],"notic":4,"null":[0,2,3,5],"number":0,"ny":[4,5],"o":[3,5],"object":0,"obspi":[0,4,5],"obtain":[3,4],"occur":5,"odc":3,"older":3,"oldest":3,"onc":[1,5],"one":[1,3,4,5],"onli":[0,3,4,5],"open":[0,5],"option":[3,5],"order":[3,5],"orfeu":3,"org":2,"orient":0,"orientpi":4,"origin":[0,5],"other":[0,3,4],"otherwis":4,"out":[0,1,4,5],"output":0,"outsid":5,"over":3,"overrid":3,"overwrit":[0,3,5],"p":[0,2],"packag":4,"pad":4,"pair":3,"panel":5,"paramet":[0,1,3,5],"parse_localdata_for_comp":[],"partial":[3,5],"particl":[0,5],"particular":[4,5],"pascal":4,"pass":5,"password":3,"path":[3,5],"paudetsei":4,"per":4,"perform":[0,3],"permiss":4,"permit":4,"person":4,"ph":0,"phase":[0,3,5],"phi":[0,5],"phi_min":0,"phisc":0,"pick":[0,1,3],"pickl":[3,5],"pickplot":1,"pip":4,"pk":5,"pkl":[3,4,5],"place":5,"pleas":2,"plot":[0,1,3,5],"plot_diagnost":0,"plot_lqt_phas":0,"png":0,"point":0,"polar":5,"poor":[0,3,5],"pop":5,"portion":4,"posit":[3,5],"possibl":5,"possibli":5,"pre":[3,5],"precis":3,"predict":0,"preferenti":3,"present":[3,5],"previou":5,"previous":5,"print":[0,5],"proce":[0,3,5],"process":[1,3],"produc":[1,3,5],"program":[3,5],"prompt":[3,5],"provid":[3,4,5],"publish":4,"purpos":4,"pvh":0,"pyqt5":[0,4],"python":[1,3,4],"q":[0,3,5],"qt5":0,"qualiti":[0,3,5],"query_fdsn_stdb":5,"radial":[0,3,5],"rang":3,"rate":[0,3],"ratio":0,"raw":0,"rc":[0,3,5],"rc_re":0,"re":3,"read":4,"recalc":5,"recent":[3,5],"recommend":4,"recurs":[],"red":5,"refer":1,"refin":[0,1,3,5],"region":0,"remain":4,"remov":0,"remove_respons":0,"repeat":[0,1,3],"repositori":[1,4],"repres":[0,3,5],"request":[0,3,5],"requir":[4,5],"resif":3,"resitut":0,"respons":0,"restrict":[3,4],"result":[1,3,5],"retain":5,"retriev":5,"return":0,"revers":3,"rfpy":4,"rfpy_calc":4,"rho":5,"right":4,"rotat":[0,3,5],"routin":0,"row":5,"rtrace":0,"run":[0,4,5],"sac":[3,4],"sampl":[0,3],"saniti":0,"save":[0,1,3,5],"sc":[0,3,5],"sc_nons_g":5,"sc_re":0,"scedc":3,"schaeffer":[2,4],"schaefferaj":4,"screen":0,"script":[4,5],"sd":[0,4],"search":[0,3,5],"sec":[0,3],"second":5,"see":[0,5],"seed":4,"seiscomp":4,"seismic":[0,5],"seismogram":[0,3,5],"seismograph":1,"seismolog":2,"select":[3,5],"sell":4,"send":5,"separ":[3,5],"server":[3,5],"servic":[0,3,4],"set":[0,3,5],"sever":3,"shall":4,"shear":[0,1,2,3,5],"shift":[0,5],"should":[0,4],"show":[0,1,3,5],"shown":1,"signal":[0,5],"silver":[0,3,5],"simpl":0,"simpli":[0,4,5],"sinc":5,"singl":[0,3],"sk":[0,1,3,5],"skip":[3,5],"skk":[3,5],"slow":[0,5],"snr":[0,3,5],"snrh":0,"snrq":[0,5],"snrt":[3,5],"snrtlim":[0,3],"so":[3,4],"societi":2,"softwar":[1,4],"sole":2,"some":4,"sort":[],"sourc":1,"space":0,"specif":5,"specifi":[3,5],"split":[1,2,3,4,5],"split_averag":[1,5],"split_calc_auto":[1,5],"split_calc_manu":[1,5],"split_dof":0,"split_errorrc":0,"split_errorsc":0,"split_rotcorr":0,"split_silverchan":0,"splite":3,"splitlab":[1,2,3],"splitpi":[0,1,3,4],"st":[],"sta":[0,4],"start":[0,3,5],"startim":5,"startt":3,"starttim":5,"station":[0,1,3],"statu":5,"stdata":[],"stdb":[0,1,2,3,4],"still":3,"stkei":3,"store":[0,4],"str":0,"stream":0,"string":[0,3],"structur":[4,5],"subject":4,"sublicens":4,"subsequ":[3,5],"substanti":4,"success":0,"suitabl":5,"summar":5,"summari":[0,5],"support":[],"surfac":[0,5],"system":0,"t":[0,4,5],"t1":0,"t2":0,"take":5,"tangenti":[0,5],"taup":0,"taupymodel":0,"teleseism":[0,1,3],"temporarili":0,"termin":5,"test":[0,4],"text":[0,5],"tgtn":[4,5],"tgtn_rc":5,"thei":[3,5],"them":[3,5],"therefor":0,"thi":[0,3,4,5],"third":5,"those":[3,4],"three":[0,3,5],"threshold":[0,3,5],"through":[4,5],"time":[0,3,5],"togeth":3,"tool":[1,4],"toolbox":1,"top":5,"tort":4,"total":3,"toward":3,"tp1":0,"tp2":0,"tr":0,"trace":[0,5],"traceshift":0,"transform":0,"transvers":[0,3],"travel":0,"tre":0,"trfast":0,"trn":0,"trq":0,"trq_c":0,"trslow":0,"trt":0,"trt_c":0,"true":[0,5],"trz":0,"tshift":0,"tt":0,"ttime":0,"two":[0,1,3,4,5],"type":[0,3,4,5],"un":[0,5],"uniform":5,"uniformli":5,"unknown":0,"up":5,"updat":[0,5],"update_lqt":0,"us":[0,1,2,3,5],"user":[3,5],"userauth":3,"usernam":3,"usg":3,"usp":3,"utcdatetim":[0,3],"util":1,"v":[3,5],"valu":[3,5],"veloc":0,"verbiag":0,"verbos":[0,3,5],"version":[0,3,4],"vertic":[0,3,5],"visual":5,"wai":3,"walsh":0,"warranti":4,"wave":[0,1,2,3,5],"waveform":[1,5],"we":[4,5],"web":[0,4],"well":5,"where":[1,4,5],"whether":[0,4,5],"which":[0,3,4,5],"whom":4,"widget":0,"window":[0,1,3,5],"wish":5,"within":[3,5],"without":4,"work":[2,3],"wrap":3,"wustefeld":[1,2,3],"x":5,"xml":4,"ye":[0,5],"year":[4,5],"you":[2,4,5],"your":[2,3,4],"yukon":1,"yyyymmdd_hrmnsc":5,"z":[0,3],"z12":0,"zcomp":[0,3],"zenodo":2,"zero":4,"zeroli":2,"zne":[0,5],"zrt":0},"titles":["Classes","Documentation","GitHub Repositories","Scripts","Licence","Tutorials"],"titleterms":{"analysi":5,"api":1,"autom":5,"averag":5,"branch":4,"calc":0,"cite":2,"class":0,"conda":4,"creat":5,"data":[4,5],"databas":5,"depend":4,"descript":3,"develop":4,"diagplot":0,"document":1,"download":5,"environ":4,"from":4,"get":1,"github":[2,4],"gui":0,"instal":4,"licenc":4,"link":1,"local":4,"manual":5,"meta":0,"metadata":4,"modul":0,"pick":5,"pickplot":0,"process":5,"quick":1,"re":5,"refer":2,"repositori":2,"result":0,"script":[1,3],"sourc":4,"split":0,"split_averag":3,"split_calc_auto":3,"split_calc_manu":3,"splitpi":2,"start":1,"station":[4,5],"stdb":5,"tutori":[1,5],"us":4,"usag":3,"util":0,"waveform":4}}) \ No newline at end of file diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index 88f0889..cef9c0a 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -655,7 +655,7 @@ def main(args=None): else: inum = nevtT - iev + 1 print(" ") - print("|"+"*"*50+"|") + print("*"*50) print("* #{0:d} ({1:d}/{2:d}): {3:13s} {4}".format( nevK, inum, nevtT, split.meta.time.strftime( "%Y%m%d_%H%M%S"), stkey)) From ff04391916f3678e31708c7a76b066618901987c Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:32:54 +1200 Subject: [PATCH 28/39] updated --local-data arg description --- splitpy/scripts/split_calc_auto.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index cef9c0a..dfdcb01 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -181,11 +181,12 @@ def get_arguments_calc_auto(argv=None): type=str, dest="localdata", default=None, - help="Specify path containing " + - "day-long sac or mseed files of data already downloaded. " + - "If data exists for a seismogram is already present on disk, " + - "it is selected preferentially over downloading " + - "the data using the FDSN Client interface") + help="Specify absolute path to a SeisComP Data Structure (SDS) " + + "archive containing day-long SAC or MSEED files" + + "(e.g., --local-data=/Home/username/Data/SDS). " + + "See https://www.seiscomp.de/seiscomp3/doc/applications/slarchive/SDS.html " + + "for details on the SDS format. If this option is used, it takes " + + "precedence over the --server settings.") DataGroup.add_argument( "--dtype", action="store", From 6ace205ded3f82c69ff17f2098981a3677a5adb8 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 11:40:31 +1200 Subject: [PATCH 29/39] updated script docs for --local-data --- docs/scripts.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/scripts.rst b/docs/scripts.rst index 365e9d8..e831ae9 100644 --- a/docs/scripts.rst +++ b/docs/scripts.rst @@ -108,10 +108,12 @@ Usage SAC or MSEED files. --local-data LOCALDATA - Specify path containing day-long sac or mseed files of data already - downloaded. If data exists for a seismogram is already present on - disk, it is selected preferentially over downloading the data using - the FDSN Client interface + Specify absolute path to a SeisComP Data Structure (SDS) archive + containing day-long SAC or MSEED files(e.g., --local- + data=/Home/username/Data/SDS). See + https://www.seiscomp.de/seiscomp3/doc/applications/slarchive/SDS.html + for details on the SDS format. If this option is used, it takes + precedence over the --server settings. --dtype DTYPE Specify the data archive file type, either SAC or MSEED. Note the default behaviour is to search for SAC files. Local archive files must have extensions of '.SAC' or '.MSEED'. These are case dependent, From 8d1ef703f4f22c2b33e3de1639375d2b0f5ebf56 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 12:18:16 +1200 Subject: [PATCH 30/39] updated ref to Esteve et al. (2020) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6effb09..d388af8 100644 --- a/README.md +++ b/README.md @@ -53,4 +53,4 @@ Examples of straightforward contributions include notebooks that describe publis #### Use Cases -- Esteve, C., Audet, P., Schaeffer, A.J., Schutt, D.L., Aster, R.A., and Cubley, J. (2020). Seismic evidence for craton chiseling and displacement of lithospheric mantle by the Tintina Fault in the Northern Canadian Cordilleras, Geology, in press. +- Esteve, C., Audet, P., Schaeffer, A.J., Schutt, D.L., Aster, R.A., and Cubley, J. (2020). Seismic evidence for craton chiseling and displacement of lithospheric mantle by the Tintina Fault in the Northern Canadian Cordilleras, Geology, 48, 1120–1125, https://doi.org/10.1130/G47688.1 \ No newline at end of file From 963a42138c6fa2a1969886d31b6735ceb8946bb2 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 12:18:54 +1200 Subject: [PATCH 31/39] updated tutorials docs for split_average --- docs/tutorials.rst | 45 +++++++++++--------------- splitpy/examples/figures/Figure_3.png | Bin 62019 -> 64009 bytes 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/tutorials.rst b/docs/tutorials.rst index 8e47666..55d639f 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -340,7 +340,7 @@ by typing in a terminal: .. code-block:: - $ split_average --show-fig -V TGTN.pkl + $ split_average --show-fig -V --auto TGTN.pkl ############################################################### # _ _ _ # @@ -362,35 +362,26 @@ by typing in a terminal: Fairs: True Poors: False --------------------------- - Processing 141 Events... - 20160413_135517 Good Non-Null -> Retained + Processing 136 Events... + 20160302_124948 Poor Null -> Skipped + 20160401_192455 Good Non-Null -> Retained + 20160403_082352 Poor Non-Null -> Skipped + 20160406_065848 Poor Null -> Skipped + 20160407_033253 Good Non-Null -> Retained + 20160413_135517 Fair Non-Null -> Retained + 20160414_215027 Poor Null -> Skipped + 20160428_193324 Poor Non-Null -> Skipped 20160527_040843 Good Non-Null -> Retained - 20160607_191515 Fair Non-Null -> Retained - 20160619_094723 Fair Non-Null -> Retained - 20160713_121112 Fair Non-Null -> Retained - 20160924_212841 Good Non-Null -> Retained - 20170819_020052 Good Non-Null -> Retained - 20170926_042000 Good Non-Null -> Retained - 20180728_170723 Good Non-Null -> Retained - 20180819_042858 Good Non-Null -> Retained - 20180906_154914 Fair Non-Null -> Retained - 20180910_041902 Fair Non-Null -> Retained - 20180910_193137 Good Non-Null -> Retained - 20180916_211148 Good Non-Null -> Retained - 20181016_002812 Fair Non-Null -> Retained - 20190531_101232 Poor Non-Null -> Skipped - 20190616_051716 Good Non-Null -> Retained - 20190707_150840 Good Non-Null -> Retained - 20190731_150233 Good Non-Null -> Retained - 20190929_020251 Fair Non-Null -> Retained - 20191031_011119 Good Non-Null -> Retained - 20200318_031345 Fair Non-Null -> Retained - - *** Station Average from 21 measurements *** + ... + + *** Station Average from 41 measurements *** Loc: -128.2727, 61.5267 - PHI: -4.111 d +- 2.891 - DT: 0.729 s +- 0.052 + PHI: -81.802 d +- 3.080 + DT: 0.921 s +- 0.071 Saved to: PLOTS/NY.TGTN_RC-SC_Nons_G-F_results.dat + *** Catalogue of events and results *** + Saved to: PLOTS/NY.TGTN_RC-SC_Nons_G-F_events.dat + .. figure:: ../splitpy/examples/figures/Figure_3.png :align: center diff --git a/splitpy/examples/figures/Figure_3.png b/splitpy/examples/figures/Figure_3.png index cd3e81a6250124c936d2857c80d822652dfa9840..b0f102e1fbc67e4cf32bc61a668a1f39efb7d833 100644 GIT binary patch literal 64009 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

gqB8PQ8BfCgKpuws%M3d4IMM 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�+!-twK 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 z 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 literal 62019 zcmeFZRa8}N)IYjGQA7!)1O&uDq`N~&1*AJgy1UaLL6`mbhIaO*)>dqctc)!5_e~reYd-`U^9xjh%ghZeZS8W0WrcimMMcH!y}cj$O~FeJyeK7F<>(r#TFOW!U89}3 z7XF>)hunO8iYemQRn^rW0|H(*`eB2>s0R_MIX zX1&UF*T&h|cx$SjFxUEIZ~4|;W*@Kf6B2Uk(GrH9o}MC;p5z8Y)o`&-MB9JKth=+- z3;A?*JGdsN78jegrW=Q=Tnl^32X)+oRtNJ6;l}#R&W$UUmP}I21<$rbN~|Y4ODsn} z2NO?(RJ$MkE49`o5StEH)uE!H!IY4YVAQE<{u@Mw++h7Xj9Zj~aXQs*Bov8JQ7=SA zujbWW@OBAZR!x@`78c42u&}Vus~3FGYxE1B?S$=~PJ0IxNXub9K=0w{2_J+_MWs~7 z>dJK-gMn;y=N$6R&d#eC7~{n!t+cReQBilPWfR(CILtR(;{E-v?=E!A4jU&L!gW92 zOCd^sEV&{6%CF_***T`LG)Uu*o>D-hcAMA8Ks3`C-V^%#3hH z495)|oQ1SRFIHOFRE00$;eY<6N`1l>n=r+6fwH)I{kp!jbx2qk{&=M`(}24Q_nPa@ z+{*;_4IV8mt#r*&MiGCU#{vS?3WsS>2GTL?AB)Wg3!FD6?&NtcL>u4bwz-c_Ej@L1 zybCwOY}Q9p;k?;Nmsh1Q%}K9S7TOlcMCNAlYWwi;2|aywgQLgUcGK^sCN}4dF|0_W z>3TrRRz@DN=jj29QTyG4^-&2gubP(CfgH^y5nKV$SWe4;;9zQA-WYhuXrZyOQf6kf zaLL!_C;J|k=Z6j}eNX|IP|HR%4|#b>`S|#t6!mHJC#qbXEk;|z>2BcSHVqF)Z`NKW zKqcC)k8lW!hzwV|JLj*S9&XC^{(PlgXoMX`{p!tpYj_n@s`wzmwNLZW=G;zeYAgL& zO}{_lOI07#UY;|_$jICx=l#}`A`uoD*);R#Q=3-gQ_T{K=P5niX|jou;fi0Urd}hv zUhv{bUqMkZE1LrD((s{3U9x0H98Xy7#mOh8nxl8{g>G(cK2mJn6ecU!VxCv+my+@j zWjRt*50y73m-Fe<%}KA*oN4zQ6{%9I@iM1%Qu~GW>C{La^u5Lev*H+dX(aDhR`2rB zVeRFsER~$2{Xt#q>Mx!rd*7jNRP7IF!n39n4zD5q<~Q>CV&di(tSH4+St;NalB&B;V)24CajE%%~oJWokIH#awBWn^$#T3Y<{ zH>(dRFfcG2mj9({t&^}CU@~YFz5e&(rTFv6r|>Fj8kzv=S20^NpO_-D5_Vjm7v-0f zaC#7WUd;DrtF!rGll_g<^=kR^iMXRr5*Ch-3N5LO4*kj%*VUX-wQ4tx8#its6%r@p zT_b(-`9Q9A8(SB@NVVI(T8#$}w7h%VHa_1){J(~UDSkhI9f699+g+HS_mxSTg#{CD zGVjkc+^dFhfa0&yk`9(Uc_E7v!;xqeka9}g5ynI3nZj9Z$1T6I5BsiZ za4-^{a8I7D(7Si^zBTUV>PiwkJTw%w_DV5BsV`l=(L_gEK|vv3x$beeyi%c2N4jbr1)XZHs60XA zc6K&BG+TW&5|2_(s8y{BhmX*)&vN^DJdSKu26Eb9<82=8vZj?zxV8N{QHP7|r^}&^ zpms?AS)})yi7+x#1+EMiK7pdwyEr?xn5>D<(Jb9rPD{LV`}SMdQ7|Dnv_>

4GT) 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 From ac0f30c30ce63f1865334a28cbdfe4bce38e6205 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 12:19:33 +1200 Subject: [PATCH 32/39] ghost commit --- docs/_build/doctrees/environment.pickle | Bin 90572 -> 90712 bytes docs/_build/html/_images/Figure_3.png | Bin 62019 -> 64009 bytes docs/_build/html/searchindex.js | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index dec34548ffcb4ef573bbac09d7c9152f265e84a5..319e7aac60bd003c220f66f380c9c1d9daa1a63a 100644 GIT binary patch literal 90712 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 pc94fvwiMjZ5Oz-xz=H=-b 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

gqB8PQ8BfCgKpuws%M3d4IMM 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�+!-twK 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 z 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 literal 62019 zcmeFZRa8}N)IYjGQA7!)1O&uDq`N~&1*AJgy1UaLL6`mbhIaO*)>dqctc)!5_e~reYd-`U^9xjh%ghZeZS8W0WrcimMMcH!y}cj$O~FeJyeK7F<>(r#TFOW!U89}3 z7XF>)hunO8iYemQRn^rW0|H(*`eB2>s0R_MIX zX1&UF*T&h|cx$SjFxUEIZ~4|;W*@Kf6B2Uk(GrH9o}MC;p5z8Y)o`&-MB9JKth=+- z3;A?*JGdsN78jegrW=Q=Tnl^32X)+oRtNJ6;l}#R&W$UUmP}I21<$rbN~|Y4ODsn} z2NO?(RJ$MkE49`o5StEH)uE!H!IY4YVAQE<{u@Mw++h7Xj9Zj~aXQs*Bov8JQ7=SA zujbWW@OBAZR!x@`78c42u&}Vus~3FGYxE1B?S$=~PJ0IxNXub9K=0w{2_J+_MWs~7 z>dJK-gMn;y=N$6R&d#eC7~{n!t+cReQBilPWfR(CILtR(;{E-v?=E!A4jU&L!gW92 zOCd^sEV&{6%CF_***T`LG)Uu*o>D-hcAMA8Ks3`C-V^%#3hH z495)|oQ1SRFIHOFRE00$;eY<6N`1l>n=r+6fwH)I{kp!jbx2qk{&=M`(}24Q_nPa@ z+{*;_4IV8mt#r*&MiGCU#{vS?3WsS>2GTL?AB)Wg3!FD6?&NtcL>u4bwz-c_Ej@L1 zybCwOY}Q9p;k?;Nmsh1Q%}K9S7TOlcMCNAlYWwi;2|aywgQLgUcGK^sCN}4dF|0_W z>3TrRRz@DN=jj29QTyG4^-&2gubP(CfgH^y5nKV$SWe4;;9zQA-WYhuXrZyOQf6kf zaLL!_C;J|k=Z6j}eNX|IP|HR%4|#b>`S|#t6!mHJC#qbXEk;|z>2BcSHVqF)Z`NKW zKqcC)k8lW!hzwV|JLj*S9&XC^{(PlgXoMX`{p!tpYj_n@s`wzmwNLZW=G;zeYAgL& zO}{_lOI07#UY;|_$jICx=l#}`A`uoD*);R#Q=3-gQ_T{K=P5niX|jou;fi0Urd}hv zUhv{bUqMkZE1LrD((s{3U9x0H98Xy7#mOh8nxl8{g>G(cK2mJn6ecU!VxCv+my+@j zWjRt*50y73m-Fe<%}KA*oN4zQ6{%9I@iM1%Qu~GW>C{La^u5Lev*H+dX(aDhR`2rB zVeRFsER~$2{Xt#q>Mx!rd*7jNRP7IF!n39n4zD5q<~Q>CV&di(tSH4+St;NalB&B;V)24CajE%%~oJWokIH#awBWn^$#T3Y<{ zH>(dRFfcG2mj9({t&^}CU@~YFz5e&(rTFv6r|>Fj8kzv=S20^NpO_-D5_Vjm7v-0f zaC#7WUd;DrtF!rGll_g<^=kR^iMXRr5*Ch-3N5LO4*kj%*VUX-wQ4tx8#its6%r@p zT_b(-`9Q9A8(SB@NVVI(T8#$}w7h%VHa_1){J(~UDSkhI9f699+g+HS_mxSTg#{CD zGVjkc+^dFhfa0&yk`9(Uc_E7v!;xqeka9}g5ynI3nZj9Z$1T6I5BsiZ za4-^{a8I7D(7Si^zBTUV>PiwkJTw%w_DV5BsV`l=(L_gEK|vv3x$beeyi%c2N4jbr1)XZHs60XA zc6K&BG+TW&5|2_(s8y{BhmX*)&vN^DJdSKu26Eb9<82=8vZj?zxV8N{QHP7|r^}&^ zpms?AS)})yi7+x#1+EMiK7pdwyEr?xn5>D<(Jb9rPD{LV`}SMdQ7|Dnv_>

4GT) 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 diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 95fdd9f..9a38df0 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"API Documentation":[[1,null]],"Automated analysis":[[5,"automated-analysis"]],"Citing SplitPy":[[2,"citing-splitpy"]],"Classes":[[0,null]],"Conda environment":[[4,"conda-environment"]],"Creating the StDb Database":[[5,"creating-the-stdb-database"]],"Dependencies":[[4,"dependencies"]],"Description":[[3,"description"],[3,"id1"],[3,"id3"]],"DiagPlot":[[0,"diagplot"]],"Documentation":[[1,null]],"Downloading and Processing":[[5,"downloading-and-processing"]],"Downloading data":[[5,"downloading-data"]],"GUI classes":[[0,"module-splitpy.gui"]],"Getting Started":[[1,null]],"GitHub Repositories":[[2,null]],"Installation":[[4,"installation"]],"Installing from GitHub development branch":[[4,"installing-from-github-development-branch"]],"Installing from source":[[4,"installing-from-source"]],"Licence":[[4,null]],"Manual analysis":[[5,"manual-analysis"]],"Meta":[[0,"meta"]],"Modules":[[0,"modules"]],"PickPlot":[[0,"pickplot"]],"Quick Links":[[1,null]],"Re-Processing":[[5,"re-processing"]],"Re-picking":[[5,"re-picking"]],"References":[[2,"references"]],"Result":[[0,"result"]],"Scripts":[[3,null]],"Scripts & Tutorials":[[1,null]],"Split":[[0,"split"]],"Station Metadata":[[4,"station-metadata"]],"Station average":[[5,"station-average"]],"Tutorials":[[5,null]],"Usage":[[3,"usage"],[3,"id2"],[3,"id4"]],"Using local data":[[4,"using-local-data"]],"Waveform Data":[[4,"waveform-data"]],"calc":[[0,"module-splitpy.calc"]],"split_average":[[3,"split-average"]],"split_calc_auto":[[3,"split-calc-auto"]],"split_calc_manual":[[3,"split-calc-manual"]],"utils":[[0,"module-splitpy.utils"]]},"docnames":["api","index","links","scripts","splitpy","tutorials"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["api.rst","index.rst","links.rst","scripts.rst","splitpy.rst","tutorials.rst"],"indexentries":{"add_data() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.add_data",false]],"add_event() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.add_event",false]],"align (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.align",false]],"analyze() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.analyze",false]],"az (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.az",false]],"baz (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.baz",false]],"calc_snr() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.calc_snr",false]],"datalqt (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.dataLQT",false]],"dataz12 (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.dataZ12",false]],"datazne (splitpy.classes.split attribute)":[[0,"id0",false],[0,"id1",false],[0,"splitpy.classes.Split.dataZNE",false]],"ddt (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ddt",false]],"dep (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.dep",false]],"diagplot (class in splitpy.classes)":[[0,"splitpy.classes.DiagPlot",false]],"display_meta() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_meta",false]],"display_null_quality() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_null_quality",false]],"display_results() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.display_results",false]],"download_data() (in module splitpy.utils)":[[0,"splitpy.utils.download_data",false]],"download_data() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.download_data",false]],"dphi (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.dphi",false]],"dtt (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.dtt",false]],"edtt (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.edtt",false]],"emat (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.Emat",false]],"ephi (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.ephi",false]],"epi_dist (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.epi_dist",false]],"errc (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.errc",false]],"fd (splitpy.classes.diagplot attribute)":[[0,"splitpy.classes.DiagPlot.fd",false]],"fp (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.fp",false]],"gac (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.gac",false]],"get_quality() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.get_quality",false]],"inc (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.inc",false]],"is_null() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.is_null",false]],"keep (class in splitpy.gui)":[[0,"splitpy.gui.Keep",false]],"lat (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.lat",false]],"ll (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.ll",false]],"lon (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.lon",false]],"mag (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.mag",false]],"maxdt (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.maxdt",false]],"meta (class in splitpy.classes)":[[0,"splitpy.classes.Meta",false]],"meta (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.meta",false]],"module":[[0,"module-splitpy.calc",false],[0,"module-splitpy.gui",false],[0,"module-splitpy.utils",false]],"null (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.null",false]],"ph (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ph",false]],"phi (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.phi",false]],"phi_min (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.phi_min",false]],"pick (class in splitpy.gui)":[[0,"splitpy.gui.Pick",false]],"pickplot (class in splitpy.classes)":[[0,"splitpy.classes.PickPlot",false]],"plot_diagnostic() (splitpy.classes.diagplot method)":[[0,"splitpy.classes.DiagPlot.plot_diagnostic",false]],"plot_lqt_phases() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.plot_LQT_phases",false]],"quality (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.quality",false]],"rc_res (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.RC_res",false]],"repeat (class in splitpy.gui)":[[0,"splitpy.gui.Repeat",false]],"result (class in splitpy.classes)":[[0,"splitpy.classes.Result",false]],"rotate() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.rotate",false]],"rotated (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.rotated",false]],"save (class in splitpy.gui)":[[0,"splitpy.gui.Save",false]],"save() (splitpy.classes.diagplot method)":[[0,"splitpy.classes.DiagPlot.save",false]],"save() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.save",false]],"save() (splitpy.classes.split method)":[[0,"splitpy.classes.Split.save",false]],"sc_res (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.SC_res",false]],"slow (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.slow",false]],"snrh (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.snrh",false]],"snrq (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.snrq",false]],"split (class in splitpy.classes)":[[0,"splitpy.classes.Split",false]],"split (splitpy.classes.diagplot attribute)":[[0,"splitpy.classes.DiagPlot.split",false]],"split (splitpy.classes.pickplot attribute)":[[0,"splitpy.classes.PickPlot.split",false]],"split_dof() (in module splitpy.calc)":[[0,"splitpy.calc.split_dof",false]],"split_errorrc() (in module splitpy.calc)":[[0,"splitpy.calc.split_errorRC",false]],"split_errorsc() (in module splitpy.calc)":[[0,"splitpy.calc.split_errorSC",false]],"split_rotcorr() (in module splitpy.calc)":[[0,"splitpy.calc.split_RotCorr",false]],"split_silverchan() (in module splitpy.calc)":[[0,"splitpy.calc.split_SilverChan",false]],"splitpy.calc":[[0,"module-splitpy.calc",false]],"splitpy.gui":[[0,"module-splitpy.gui",false]],"splitpy.utils":[[0,"module-splitpy.utils",false]],"sta (splitpy.classes.split attribute)":[[0,"splitpy.classes.Split.sta",false]],"time (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.time",false]],"traceshift() (in module splitpy.utils)":[[0,"splitpy.utils.traceshift",false]],"trfast (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trFast",false]],"trq_c (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trQ_c",false]],"trslow (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trSlow",false]],"trt_c (splitpy.classes.result attribute)":[[0,"splitpy.classes.Result.trT_c",false]],"tshift() (in module splitpy.calc)":[[0,"splitpy.calc.tshift",false]],"ttime (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.ttime",false]],"update_lqt() (splitpy.classes.pickplot method)":[[0,"splitpy.classes.PickPlot.update_LQT",false]],"zcomp (splitpy.classes.meta attribute)":[[0,"splitpy.classes.Meta.zcomp",false]]},"objects":{"splitpy":[[0,0,0,"-","calc"],[0,0,0,"-","gui"],[0,0,0,"-","utils"]],"splitpy.calc":[[0,1,1,"","split_RotCorr"],[0,1,1,"","split_SilverChan"],[0,1,1,"","split_dof"],[0,1,1,"","split_errorRC"],[0,1,1,"","split_errorSC"],[0,1,1,"","tshift"]],"splitpy.classes":[[0,2,1,"","DiagPlot"],[0,2,1,"","Meta"],[0,2,1,"","PickPlot"],[0,2,1,"","Result"],[0,2,1,"","Split"]],"splitpy.classes.DiagPlot":[[0,3,1,"","fd"],[0,4,1,"","plot_diagnostic"],[0,4,1,"","save"],[0,3,1,"","split"]],"splitpy.classes.Meta":[[0,3,1,"","align"],[0,3,1,"","az"],[0,3,1,"","baz"],[0,3,1,"","ddt"],[0,3,1,"","dep"],[0,3,1,"","dphi"],[0,3,1,"","epi_dist"],[0,3,1,"","gac"],[0,3,1,"","inc"],[0,3,1,"","lat"],[0,3,1,"","lon"],[0,3,1,"","mag"],[0,3,1,"","maxdt"],[0,3,1,"","ph"],[0,3,1,"","rotated"],[0,3,1,"","slow"],[0,3,1,"","time"],[0,3,1,"","ttime"],[0,3,1,"","zcomp"]],"splitpy.classes.PickPlot":[[0,3,1,"","fp"],[0,3,1,"","ll"],[0,4,1,"","plot_LQT_phases"],[0,4,1,"","save"],[0,3,1,"","split"],[0,4,1,"","update_LQT"]],"splitpy.classes.Result":[[0,3,1,"","Emat"],[0,3,1,"","dtt"],[0,3,1,"","edtt"],[0,3,1,"","ephi"],[0,3,1,"","errc"],[0,3,1,"","phi"],[0,3,1,"","phi_min"],[0,3,1,"","trFast"],[0,3,1,"","trQ_c"],[0,3,1,"","trSlow"],[0,3,1,"","trT_c"]],"splitpy.classes.Split":[[0,3,1,"","RC_res"],[0,3,1,"","SC_res"],[0,4,1,"","add_data"],[0,4,1,"","add_event"],[0,4,1,"","analyze"],[0,4,1,"","calc_snr"],[0,3,1,"","dataLQT"],[0,3,1,"","dataZ12"],[0,3,1,"id1","dataZNE"],[0,4,1,"","display_meta"],[0,4,1,"","display_null_quality"],[0,4,1,"","display_results"],[0,4,1,"","download_data"],[0,4,1,"","get_quality"],[0,4,1,"","is_null"],[0,3,1,"","meta"],[0,3,1,"","null"],[0,3,1,"","quality"],[0,4,1,"","rotate"],[0,4,1,"","save"],[0,3,1,"","snrh"],[0,3,1,"","snrq"],[0,3,1,"","sta"]],"splitpy.gui":[[0,2,1,"","Keep"],[0,2,1,"","Pick"],[0,2,1,"","Repeat"],[0,2,1,"","Save"]],"splitpy.utils":[[0,1,1,"","download_data"],[0,1,1,"","traceshift"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},"terms":{"":[0,3,5],"0":[0,3,4,5],"00":5,"000":5,"000000":5,"002":2,"01":5,"0120060190":2,"02":[0,3],"03":5,"03806173520674":5,"04":5,"05":5,"052":5,"07":5,"08":2,"1":[0,2,3,5],"10":[2,3,4,5],"10000":5,"100000z":5,"1016":2,"107273z":5,"11":0,"110000z":5,"111":5,"1130":2,"12":[4,5],"120":[0,3],"1204":2,"1211":2,"128":5,"13":5,"14":5,"141":5,"15":[0,5],"167":5,"17":5,"176":5,"1785":2,"18":5,"180":0,"18t03":5,"19":5,"1990":0,"1f":5,"2":[0,3,4,5],"20":5,"2007":2,"2008":[1,2],"2013":[0,5],"2016":[2,5],"20160413_135517":5,"20160527_040843":5,"20160607_191515":5,"20160619_094723":5,"20160713_121112":5,"20160924_212841":5,"20170819_020052":5,"20170926_042000":5,"20180728_170723":5,"20180819_042858":5,"20180906_154914":5,"20180910_041902":5,"20180910_193137":5,"20180916_211148":5,"20181016_002812":5,"2019":4,"20190531_101232":5,"20190616_051716":5,"20190707_150840":5,"20190731_150233":5,"20190929_020251":5,"20191031_011119":5,"2020":[4,5],"20200318_031345":5,"2025":0,"21":5,"22":5,"23":0,"241":5,"25":5,"27":5,"27269":5,"2727":5,"3":[0,4,5],"30":0,"332":4,"34":[2,5],"3564780":2,"36765404740968":5,"369472":0,"369480":0,"37":5,"38":5,"39":5,"4":[0,3,5],"44":2,"45":5,"47":0,"5":[0,3,5],"51":5,"51340359244245":5,"515":2,"5267":5,"52670":5,"528":2,"5281":2,"53":5,"6":[3,5],"61":5,"63":5,"68":5,"7":[4,5],"729":5,"742000z":5,"75":5,"76":5,"78":5,"8":5,"807":2,"810":2,"82":5,"85":[0,3],"87":5,"8889144288134":5,"89":5,"891":5,"94":5,"97":2,"A":[0,2,4,5],"AND":4,"AS":4,"As":5,"BE":4,"BUT":4,"Be":3,"By":5,"FOR":4,"For":[3,4,5],"IN":4,"If":[2,3,4,5],"In":5,"It":[0,5],"NO":4,"NOT":4,"No":[3,5],"OF":4,"OR":4,"THE":4,"TO":4,"The":[0,1,3,4,5],"There":[3,4,5],"These":[0,3],"To":[4,5],"WITH":4,"_":[3,5],"__":[3,5],"___":[3,5],"_____":[3,5],"abov":4,"absent":4,"accept":0,"access":3,"accompani":3,"action":4,"activ":[2,4],"ad":0,"add":0,"add_data":0,"add_ev":0,"after":[0,3,5],"against":3,"aggreg":1,"al":1,"align":0,"all":[0,3,4,5],"along":[4,5],"alreadi":3,"also":[0,4,5],"altern":[0,5],"altnet":[],"america":2,"an":[0,1,3,4,5],"analysi":[0,1,3],"analyz":[0,1,3],"andrew":4,"angl":[0,3],"angular":0,"ani":[3,4],"anwer":0,"appear":4,"appli":[0,5],"applic":0,"ar":[0,1,3,5],"arc":0,"archiv":[0,3,4],"argument":[3,4,5],"aris":4,"arriv":[0,3,5],"ask":5,"associ":[0,3,4],"associatd":3,"attribut":0,"audet":[2,4],"auth":3,"authentif":3,"author":4,"authpassword":3,"auto":[3,5],"autom":[1,3],"automat":[3,4,5],"avail":[0,3,4,5],"averag":[1,3],"ax":0,"ax0":0,"ax1":0,"ax2":0,"ax3":0,"axi":0,"axrc1":0,"axrc2":0,"axrc3":0,"axrc4":0,"axsc1":0,"axsc2":0,"axsc3":0,"axsc4":0,"axt":0,"axvlin":0,"az":[0,5],"azimuth":[0,5],"back":0,"backazimuth":5,"bar":0,"barruol":2,"base":[0,1,3,5],"bash":3,"baz":[0,5],"been":[0,1,3,4,5],"befor":[3,5],"behaviour":3,"below":[1,4],"best":[0,5],"between":[0,3,4,5],"bgr":3,"bokelmann":2,"bool":0,"boolean":0,"both":[0,3,4],"box":[0,5],"branch":1,"build":0,"bulletin":2,"bundl":1,"button":0,"c":[2,4,5],"cageo":2,"calc":[1,3,5],"calc_snr":0,"calcul":[0,3,5],"call":0,"can":[0,1,3,4,5],"canada":2,"care":3,"carri":[0,5],"case":[3,5],"caseher":3,"cd":4,"chan":[0,3,4,5],"chang":5,"channel":[3,4,5],"charact":[0,4],"charg":4,"check":[0,1,4,5],"choos":5,"circl":[0,3],"cite":1,"claim":4,"class":1,"classif":5,"click":5,"client":[0,3,4,5],"clone":4,"close":5,"code":[3,4,5],"collect":3,"column":5,"com":4,"comma":3,"command":4,"common":0,"comp":[],"compat":3,"compon":[0,3,5],"comput":2,"conda":1,"condit":4,"confid":0,"connect":[3,4],"consid":[0,3,5],"contain":[0,3,4,5],"contamin":5,"content":0,"contour":0,"contract":4,"control":[2,5],"convent":[],"convert":4,"coordin":0,"copi":4,"copyright":4,"core":0,"corner":[0,3],"correct":[0,3,5],"correl":[0,3,5],"correspond":[0,4,5],"creat":[1,4],"criteria":5,"current":[0,4],"custom":4,"d":[0,3,4,5],"dai":[3,4,5],"damag":4,"dat":5,"data":[0,1,3],"databas":[0,1,3],"datacent":3,"datadisk":5,"dataless":4,"datalqt":0,"dataset":3,"dataz12":0,"datazn":0,"date":3,"daysac":5,"db":[0,3,5],"ddt":[0,3],"deal":4,"default":[1,3,5],"defin":[0,3],"deg":[0,5],"degre":[0,3,5],"delai":[0,3],"denot":5,"dep":[0,5],"depend":[1,3],"depth":[0,5],"desir":3,"detail":[1,4],"detect":2,"determin":[0,5],"develop":1,"diagnost":[0,3,5],"diagplot":1,"dict":0,"dictionari":[0,3],"differ":[0,1,5],"direct":0,"directori":3,"discard":5,"disk":[3,5],"displai":[0,5],"display_meta":0,"display_null_qu":0,"display_result":0,"dist":[3,5],"distanc":[0,3],"distribut":4,"do":4,"document":4,"doe":4,"dof":0,"doi":[2,4],"don":4,"done":[1,5],"dot":4,"download":[0,1,3],"download_data":0,"dphi":[0,3,5],"drive":4,"dst":3,"dt":[0,3,5],"dtt":0,"dttsc":0,"dtype":[3,4],"due":[],"durat":0,"dure":[0,3],"e":[0,3,4,5],"each":[0,3,5],"earthquak":0,"east":0,"edtt":0,"either":[0,3],"elev":5,"elimin":5,"emat":0,"ematrix":0,"enabl":1,"end":[0,3,5],"endt":3,"endtim":5,"energi":0,"enter":3,"environ":[1,2],"ephi":0,"epi":5,"epi_dist":0,"epicent":0,"epicentr":0,"equal":0,"err":0,"err_contour":0,"err_dtt":0,"err_phi":0,"errc":0,"error":[0,5],"estim":[0,3,5],"et":1,"etc":5,"eth":3,"event":[0,3,4,5],"everi":3,"exactli":4,"examin":5,"exampl":[1,4,5],"exceed":5,"exclud":3,"execut":1,"exist":[3,5],"exit":3,"express":4,"extens":[3,4],"f":0,"f_result":5,"fair":[0,3,5],"fals":[0,3,5],"fast":[0,3,5],"fd":0,"fdsn":[0,4],"field":[0,4],"fig":[0,3,5],"figur":[0,5],"file":[0,3,4,5],"filenam":4,"fill":[],"filter":[0,3],"final":[3,4,5],"find":[],"first":[4,5],"fisher":0,"fit":[0,4,5],"flag":3,"float":0,"fly":3,"fmax":[0,3,5],"fmin":[0,3,5],"foat":0,"folder":[3,4,5],"follow":[0,4,5],"forc":3,"forg":4,"format":0,"found":5,"fourth":5,"fp":0,"fpathmatch":[],"frame":5,"framework":3,"free":4,"freedom":0,"frequenc":[0,3,5],"from":[0,1,3,5],"fulli":0,"function":0,"furnish":4,"further":[0,3,5],"futur":5,"g":[2,4],"g38118":2,"gac":[0,5],"gacmax":0,"gacmin":0,"gen_stdb":4,"gener":0,"geologi":2,"geometri":3,"geonet":3,"geoscienc":2,"get":0,"get_qual":0,"gfz":3,"git":[2,4],"github":1,"given":[0,3],"good":[0,3,5],"grant":4,"graphic":5,"great":[0,3],"grid":0,"ground":0,"gui":[1,5],"h":3,"ha":[0,1,3,4,5],"handl":0,"hard":4,"have":[0,3,4],"help":3,"here":4,"herebi":4,"hh":5,"hhe":5,"hhn":5,"hhz":[4,5],"holder":4,"horizont":0,"http":[2,4],"hypocent":0,"hz":[0,3],"i":[0,1,3,4,5],"iasp91":5,"identifi":[0,3],"ie":3,"implement":3,"impli":4,"improv":5,"inc":0,"incid":[0,5],"includ":[3,4,5],"increas":3,"increment":3,"indb":3,"individu":3,"info":[0,5],"inform":[0,5],"ingv":3,"inherit":2,"initi":0,"input":4,"insid":4,"instal":1,"instanc":3,"instead":3,"instrument":0,"int":0,"interact":[0,5],"interfac":[3,5],"internet":3,"interv":0,"ipgp":3,"iri":3,"is_nul":0,"its":4,"iu":3,"j":2,"januari":5,"jgr":0,"keep":[0,1,5],"kei":[3,5],"kind":4,"km":[0,5],"koeri":3,"l":0,"lag":0,"lat":[0,5],"later":3,"latitud":[0,5],"lcldr":[],"left":5,"length":[0,3,5],"let":5,"letter":[],"level":0,"liabil":4,"liabl":4,"licenc":1,"like":4,"limit":[3,4],"line":5,"list":[0,3,5],"list_local_data_stn":[],"lithospher":2,"ll":0,"lmu":3,"load":[3,4,5],"loc":[4,5],"local":[0,1,3,5],"localdata":3,"locat":[4,5],"log":3,"logfil":5,"lon":[0,5],"long":[3,5],"longitud":[0,5],"longitudin":0,"lqt":[0,5],"ls_stdb":5,"m":0,"made":5,"mag":[0,3,5],"magnitud":[0,3,5],"mai":5,"main":[0,4],"manual":[1,3],"map":5,"match":3,"matlab":[1,2],"matrix":0,"max":3,"maxdist":3,"maxdt":[0,3],"maximum":[0,3],"maxmag":3,"measur":[2,3,5],"merchant":4,"merg":4,"messag":[0,3,5],"meta":[1,5],"metadata":[0,1,5],"method":[0,3,5],"min":3,"mindist":3,"minim":0,"minimum":[0,3,5],"minise":4,"minmag":3,"miscellan":3,"misfit":0,"miss":[],"mnt":5,"mode":[1,3,5],"model":5,"modifi":4,"modul":1,"more":[1,3,4],"most":[3,5],"motion":[0,5],"mseed":[3,4],"msnr":3,"must":[3,4],"mw":5,"n":[0,4,5],"name":[0,3],"nan":[],"ncedc":3,"ndarrai":0,"ndval":[],"negat":3,"neip":3,"neotecton":2,"neri":3,"net":4,"network":[1,3,4,5],"new":[0,3,5],"new_sampling_r":3,"new_sr":0,"newli":[0,4],"nez":0,"nois":0,"non":[0,3,5],"none":[0,3,5],"noninfring":4,"north":0,"northwest":1,"northwestern":2,"note":[0,3,4,5],"notic":4,"null":[0,2,3,5],"number":0,"ny":[4,5],"o":[3,5],"object":0,"obspi":[0,4,5],"obtain":[3,4],"occur":5,"odc":3,"older":3,"oldest":3,"onc":[1,5],"one":[1,3,4,5],"onli":[0,3,4,5],"open":[0,5],"option":[3,5],"order":[3,5],"orfeu":3,"org":2,"orient":0,"orientpi":4,"origin":[0,5],"other":[0,3,4],"otherwis":4,"out":[0,1,4,5],"output":0,"outsid":5,"over":3,"overrid":3,"overwrit":[0,3,5],"p":[0,2],"packag":4,"pad":4,"pair":3,"panel":5,"paramet":[0,1,3,5],"parse_localdata_for_comp":[],"partial":[3,5],"particl":[0,5],"particular":[4,5],"pascal":4,"pass":5,"password":3,"path":[3,5],"paudetsei":4,"per":4,"perform":[0,3],"permiss":4,"permit":4,"person":4,"ph":0,"phase":[0,3,5],"phi":[0,5],"phi_min":0,"phisc":0,"pick":[0,1,3],"pickl":[3,5],"pickplot":1,"pip":4,"pk":5,"pkl":[3,4,5],"place":5,"pleas":2,"plot":[0,1,3,5],"plot_diagnost":0,"plot_lqt_phas":0,"png":0,"point":0,"polar":5,"poor":[0,3,5],"pop":5,"portion":4,"posit":[3,5],"possibl":5,"possibli":5,"pre":[3,5],"precis":3,"predict":0,"preferenti":3,"present":[3,5],"previou":5,"previous":5,"print":[0,5],"proce":[0,3,5],"process":[1,3],"produc":[1,3,5],"program":[3,5],"prompt":[3,5],"provid":[3,4,5],"publish":4,"purpos":4,"pvh":0,"pyqt5":[0,4],"python":[1,3,4],"q":[0,3,5],"qt5":0,"qualiti":[0,3,5],"query_fdsn_stdb":5,"radial":[0,3,5],"rang":3,"rate":[0,3],"ratio":0,"raw":0,"rc":[0,3,5],"rc_re":0,"re":3,"read":4,"recalc":5,"recent":[3,5],"recommend":4,"recurs":[],"red":5,"refer":1,"refin":[0,1,3,5],"region":0,"remain":4,"remov":0,"remove_respons":0,"repeat":[0,1,3],"repositori":[1,4],"repres":[0,3,5],"request":[0,3,5],"requir":[4,5],"resif":3,"resitut":0,"respons":0,"restrict":[3,4],"result":[1,3,5],"retain":5,"retriev":5,"return":0,"revers":3,"rfpy":4,"rfpy_calc":4,"rho":5,"right":4,"rotat":[0,3,5],"routin":0,"row":5,"rtrace":0,"run":[0,4,5],"sac":[3,4],"sampl":[0,3],"saniti":0,"save":[0,1,3,5],"sc":[0,3,5],"sc_nons_g":5,"sc_re":0,"scedc":3,"schaeffer":[2,4],"schaefferaj":4,"screen":0,"script":[4,5],"sd":[0,4],"search":[0,3,5],"sec":[0,3],"second":5,"see":[0,5],"seed":4,"seiscomp":4,"seismic":[0,5],"seismogram":[0,3,5],"seismograph":1,"seismolog":2,"select":[3,5],"sell":4,"send":5,"separ":[3,5],"server":[3,5],"servic":[0,3,4],"set":[0,3,5],"sever":3,"shall":4,"shear":[0,1,2,3,5],"shift":[0,5],"should":[0,4],"show":[0,1,3,5],"shown":1,"signal":[0,5],"silver":[0,3,5],"simpl":0,"simpli":[0,4,5],"sinc":5,"singl":[0,3],"sk":[0,1,3,5],"skip":[3,5],"skk":[3,5],"slow":[0,5],"snr":[0,3,5],"snrh":0,"snrq":[0,5],"snrt":[3,5],"snrtlim":[0,3],"so":[3,4],"societi":2,"softwar":[1,4],"sole":2,"some":4,"sort":[],"sourc":1,"space":0,"specif":5,"specifi":[3,5],"split":[1,2,3,4,5],"split_averag":[1,5],"split_calc_auto":[1,5],"split_calc_manu":[1,5],"split_dof":0,"split_errorrc":0,"split_errorsc":0,"split_rotcorr":0,"split_silverchan":0,"splite":3,"splitlab":[1,2,3],"splitpi":[0,1,3,4],"st":[],"sta":[0,4],"start":[0,3,5],"startim":5,"startt":3,"starttim":5,"station":[0,1,3],"statu":5,"stdata":[],"stdb":[0,1,2,3,4],"still":3,"stkei":3,"store":[0,4],"str":0,"stream":0,"string":[0,3],"structur":[4,5],"subject":4,"sublicens":4,"subsequ":[3,5],"substanti":4,"success":0,"suitabl":5,"summar":5,"summari":[0,5],"support":[],"surfac":[0,5],"system":0,"t":[0,4,5],"t1":0,"t2":0,"take":5,"tangenti":[0,5],"taup":0,"taupymodel":0,"teleseism":[0,1,3],"temporarili":0,"termin":5,"test":[0,4],"text":[0,5],"tgtn":[4,5],"tgtn_rc":5,"thei":[3,5],"them":[3,5],"therefor":0,"thi":[0,3,4,5],"third":5,"those":[3,4],"three":[0,3,5],"threshold":[0,3,5],"through":[4,5],"time":[0,3,5],"togeth":3,"tool":[1,4],"toolbox":1,"top":5,"tort":4,"total":3,"toward":3,"tp1":0,"tp2":0,"tr":0,"trace":[0,5],"traceshift":0,"transform":0,"transvers":[0,3],"travel":0,"tre":0,"trfast":0,"trn":0,"trq":0,"trq_c":0,"trslow":0,"trt":0,"trt_c":0,"true":[0,5],"trz":0,"tshift":0,"tt":0,"ttime":0,"two":[0,1,3,4,5],"type":[0,3,4,5],"un":[0,5],"uniform":5,"uniformli":5,"unknown":0,"up":5,"updat":[0,5],"update_lqt":0,"us":[0,1,2,3,5],"user":[3,5],"userauth":3,"usernam":3,"usg":3,"usp":3,"utcdatetim":[0,3],"util":1,"v":[3,5],"valu":[3,5],"veloc":0,"verbiag":0,"verbos":[0,3,5],"version":[0,3,4],"vertic":[0,3,5],"visual":5,"wai":3,"walsh":0,"warranti":4,"wave":[0,1,2,3,5],"waveform":[1,5],"we":[4,5],"web":[0,4],"well":5,"where":[1,4,5],"whether":[0,4,5],"which":[0,3,4,5],"whom":4,"widget":0,"window":[0,1,3,5],"wish":5,"within":[3,5],"without":4,"work":[2,3],"wrap":3,"wustefeld":[1,2,3],"x":5,"xml":4,"ye":[0,5],"year":[4,5],"you":[2,4,5],"your":[2,3,4],"yukon":1,"yyyymmdd_hrmnsc":5,"z":[0,3],"z12":0,"zcomp":[0,3],"zenodo":2,"zero":4,"zeroli":2,"zne":[0,5],"zrt":0},"titles":["Classes","Documentation","GitHub Repositories","Scripts","Licence","Tutorials"],"titleterms":{"analysi":5,"api":1,"autom":5,"averag":5,"branch":4,"calc":0,"cite":2,"class":0,"conda":4,"creat":5,"data":[4,5],"databas":5,"depend":4,"descript":3,"develop":4,"diagplot":0,"document":1,"download":5,"environ":4,"from":4,"get":1,"github":[2,4],"gui":0,"instal":4,"licenc":4,"link":1,"local":4,"manual":5,"meta":0,"metadata":4,"modul":0,"pick":5,"pickplot":0,"process":5,"quick":1,"re":5,"refer":2,"repositori":2,"result":0,"script":[1,3],"sourc":4,"split":0,"split_averag":3,"split_calc_auto":3,"split_calc_manu":3,"splitpi":2,"start":1,"station":[4,5],"stdb":5,"tutori":[1,5],"us":4,"usag":3,"util":0,"waveform":4}}) \ No newline at end of file +Search.setIndex({"alltitles":{"API Documentation":[[1,null]],"Automated analysis":[[5,"automated-analysis"]],"Citing SplitPy":[[2,"citing-splitpy"]],"Classes":[[0,null]],"Conda environment":[[4,"conda-environment"]],"Creating the StDb Database":[[5,"creating-the-stdb-database"]],"Dependencies":[[4,"dependencies"]],"Description":[[3,"description"],[3,"id1"],[3,"id3"]],"DiagPlot":[[0,"diagplot"]],"Documentation":[[1,null]],"Downloading and Processing":[[5,"downloading-and-processing"]],"Downloading data":[[5,"downloading-data"]],"GUI classes":[[0,"module-splitpy.gui"]],"Getting Started":[[1,null]],"GitHub Repositories":[[2,null]],"Installation":[[4,"installation"]],"Installing from GitHub development branch":[[4,"installing-from-github-development-branch"]],"Installing from source":[[4,"installing-from-source"]],"Licence":[[4,null]],"Manual analysis":[[5,"manual-analysis"]],"Meta":[[0,"meta"]],"Modules":[[0,"modules"]],"PickPlot":[[0,"pickplot"]],"Quick Links":[[1,null]],"Re-Processing":[[5,"re-processing"]],"Re-picking":[[5,"re-picking"]],"References":[[2,"references"]],"Result":[[0,"result"]],"Scripts":[[3,null]],"Scripts & Tutorials":[[1,null]],"Split":[[0,"split"]],"Station Metadata":[[4,"station-metadata"]],"Station average":[[5,"station-average"]],"Tutorials":[[5,null]],"Usage":[[3,"usage"],[3,"id2"],[3,"id4"]],"Using local data":[[4,"using-local-data"]],"Waveform Data":[[4,"waveform-data"]],"calc":[[0,"module-splitpy.calc"]],"split_average":[[3,"split-average"]],"split_calc_auto":[[3,"split-calc-auto"]],"split_calc_manual":[[3,"split-calc-manual"]],"utils":[[0,"module-splitpy.utils"]]},"docnames":["api","index","links","scripts","splitpy","tutorials"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["api.rst","index.rst","links.rst","scripts.rst","splitpy.rst","tutorials.rst"],"indexentries":{},"objects":{"splitpy":[[0,0,0,"-","calc"],[0,0,0,"-","gui"],[0,0,0,"-","utils"]],"splitpy.calc":[[0,1,1,"","split_RotCorr"],[0,1,1,"","split_SilverChan"],[0,1,1,"","split_dof"],[0,1,1,"","split_errorRC"],[0,1,1,"","split_errorSC"],[0,1,1,"","tshift"]],"splitpy.classes":[[0,2,1,"","DiagPlot"],[0,2,1,"","Meta"],[0,2,1,"","PickPlot"],[0,2,1,"","Result"],[0,2,1,"","Split"]],"splitpy.classes.DiagPlot":[[0,3,1,"","fd"],[0,4,1,"","plot_diagnostic"],[0,4,1,"","save"],[0,3,1,"","split"]],"splitpy.classes.Meta":[[0,3,1,"","align"],[0,3,1,"","az"],[0,3,1,"","baz"],[0,3,1,"","ddt"],[0,3,1,"","dep"],[0,3,1,"","dphi"],[0,3,1,"","epi_dist"],[0,3,1,"","gac"],[0,3,1,"","inc"],[0,3,1,"","lat"],[0,3,1,"","lon"],[0,3,1,"","mag"],[0,3,1,"","maxdt"],[0,3,1,"","ph"],[0,3,1,"","rotated"],[0,3,1,"","slow"],[0,3,1,"","time"],[0,3,1,"","ttime"],[0,3,1,"","zcomp"]],"splitpy.classes.PickPlot":[[0,3,1,"","fp"],[0,3,1,"","ll"],[0,4,1,"","plot_LQT_phases"],[0,4,1,"","save"],[0,3,1,"","split"],[0,4,1,"","update_LQT"]],"splitpy.classes.Result":[[0,3,1,"","Emat"],[0,3,1,"","dtt"],[0,3,1,"","edtt"],[0,3,1,"","ephi"],[0,3,1,"","errc"],[0,3,1,"","phi"],[0,3,1,"","phi_min"],[0,3,1,"","trFast"],[0,3,1,"","trQ_c"],[0,3,1,"","trSlow"],[0,3,1,"","trT_c"]],"splitpy.classes.Split":[[0,3,1,"","RC_res"],[0,3,1,"","SC_res"],[0,4,1,"","add_data"],[0,4,1,"","add_event"],[0,4,1,"","analyze"],[0,4,1,"","calc_snr"],[0,3,1,"","dataLQT"],[0,3,1,"","dataZ12"],[0,3,1,"id1","dataZNE"],[0,4,1,"","display_meta"],[0,4,1,"","display_null_quality"],[0,4,1,"","display_results"],[0,4,1,"","download_data"],[0,4,1,"","get_quality"],[0,4,1,"","is_null"],[0,3,1,"","meta"],[0,3,1,"","null"],[0,3,1,"","quality"],[0,4,1,"","rotate"],[0,4,1,"","save"],[0,3,1,"","snrh"],[0,3,1,"","snrq"],[0,3,1,"","sta"]],"splitpy.gui":[[0,2,1,"","Keep"],[0,2,1,"","Pick"],[0,2,1,"","Repeat"],[0,2,1,"","Save"]],"splitpy.utils":[[0,1,1,"","download_data"],[0,1,1,"","traceshift"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},"terms":{"":[0,3,5],"0":[0,3,4,5],"00":5,"000":5,"000000":5,"002":2,"01":5,"0120060190":2,"02":[0,3],"03":5,"03806173520674":5,"04":5,"05":5,"052":[],"07":5,"071":5,"08":2,"080":5,"1":[0,2,3,5],"10":[2,3,4,5],"10000":5,"100000z":5,"1016":2,"107273z":5,"11":0,"110000z":5,"111":[],"1130":2,"12":[4,5],"120":[0,3],"1204":2,"1211":2,"128":5,"13":5,"136":5,"14":5,"141":[],"15":[0,5],"167":5,"17":5,"176":5,"1785":2,"18":5,"180":0,"18t03":5,"19":5,"1990":0,"1f":5,"2":[0,3,4,5],"20":5,"2007":2,"2008":[1,2],"2013":[0,5],"2016":[2,5],"20160302_124948":5,"20160401_192455":5,"20160403_082352":5,"20160406_065848":5,"20160407_033253":5,"20160413_135517":5,"20160414_215027":5,"20160428_193324":5,"20160527_040843":5,"20160607_191515":[],"20160619_094723":[],"20160713_121112":[],"20160924_212841":[],"20170819_020052":[],"20170926_042000":[],"20180728_170723":[],"20180819_042858":[],"20180906_154914":[],"20180910_041902":[],"20180910_193137":[],"20180916_211148":[],"20181016_002812":[],"2019":4,"20190531_101232":[],"20190616_051716":[],"20190707_150840":[],"20190731_150233":[],"20190929_020251":[],"20191031_011119":[],"2020":[4,5],"20200318_031345":5,"2025":0,"21":[],"22":5,"23":0,"241":5,"25":5,"27":5,"27269":5,"2727":5,"3":[0,4,5],"30":0,"332":4,"34":[2,5],"3564780":2,"36765404740968":5,"369472":0,"369480":0,"37":5,"38":5,"39":5,"4":[0,3,5],"41":5,"44":2,"45":5,"47":0,"5":[0,3,5],"51":5,"51340359244245":5,"515":2,"5267":5,"52670":5,"528":2,"5281":2,"53":5,"6":[3,5],"61":5,"63":5,"68":5,"7":[4,5],"729":[],"742000z":5,"75":5,"76":5,"78":5,"8":5,"802":5,"807":2,"81":5,"810":2,"82":5,"85":[0,3],"87":5,"8889144288134":5,"89":5,"891":[],"921":5,"94":5,"97":2,"A":[0,2,4,5],"AND":4,"AS":4,"As":5,"BE":4,"BUT":4,"Be":3,"By":5,"FOR":4,"For":[3,4,5],"IN":4,"If":[2,3,4,5],"In":5,"It":[0,5],"NO":4,"NOT":4,"No":[3,5],"OF":4,"OR":4,"THE":4,"TO":4,"The":[0,1,3,4,5],"There":[3,4,5],"These":[0,3],"To":[4,5],"WITH":4,"_":[3,5],"__":[3,5],"___":[3,5],"_____":[3,5],"abov":4,"absent":4,"absolut":3,"accept":0,"access":3,"accompani":3,"action":4,"activ":[2,4],"ad":0,"add":0,"add_data":0,"add_ev":0,"after":[0,3,5],"against":3,"aggreg":1,"al":1,"align":0,"all":[0,3,4,5],"along":[4,5],"alreadi":3,"also":[0,4,5],"altern":[0,5],"altnet":[],"america":2,"an":[0,1,3,4,5],"analysi":[0,1,3],"analyz":[0,1,3],"andrew":4,"angl":[0,3],"angular":0,"ani":[3,4],"anwer":0,"appear":4,"appli":[0,5],"applic":[0,3],"ar":[0,1,3,5],"arc":0,"archiv":[0,3,4],"argument":[3,4,5],"aris":4,"arriv":[0,3,5],"ask":5,"associ":[0,3,4],"associatd":3,"attribut":0,"audet":[2,4],"auspass":3,"auth":3,"authent":3,"authentif":3,"author":4,"authpassword":3,"auto":[3,5],"autom":[1,3],"automat":[3,4,5],"avail":[0,3,4,5],"averag":[1,3],"ax":0,"ax0":0,"ax1":0,"ax2":0,"ax3":0,"axi":0,"axrc1":0,"axrc2":0,"axrc3":0,"axrc4":0,"axsc1":0,"axsc2":0,"axsc3":0,"axsc4":0,"axt":0,"axvlin":0,"az":[0,5],"azimuth":[0,5],"back":0,"backazimuth":5,"bar":0,"barruol":2,"base":[0,1,3,5],"bash":3,"baz":[0,5],"been":[0,1,3,4,5],"befor":[3,5],"behaviour":3,"below":[1,4],"best":[0,5],"between":[0,3,4,5],"bgr":3,"bokelmann":2,"bool":0,"boolean":0,"both":[0,3,4],"box":[0,5],"branch":1,"build":0,"bulletin":2,"bundl":1,"button":0,"c":[2,4,5],"cageo":2,"calc":[1,3,5],"calc_snr":0,"calcul":[0,3,5],"call":0,"can":[0,1,3,4,5],"canada":2,"care":3,"carri":[0,5],"case":[3,5],"caseher":[],"catalogu":5,"cd":4,"chan":[0,3,4,5],"chang":5,"channel":[3,4,5],"charact":[0,4],"charg":4,"check":[0,1,4,5],"choos":5,"circl":[0,3],"cite":1,"claim":4,"class":1,"classif":5,"click":5,"client":[0,3,4,5],"clone":4,"close":5,"code":[3,4,5],"collect":3,"column":5,"com":4,"comma":3,"command":4,"common":0,"comp":[],"compat":3,"compon":[0,3,5],"comput":2,"conda":1,"condit":4,"confid":0,"connect":4,"consid":[0,3,5],"contain":[0,3,4,5],"contamin":5,"content":0,"contour":0,"contract":4,"control":[2,5],"convent":[],"convert":4,"coordin":0,"copi":4,"copyright":4,"core":0,"corner":[0,3],"correct":[0,3,5],"correl":[0,3,5],"correspond":[0,4,5],"creat":[1,4],"criteria":5,"current":[0,4],"custom":4,"d":[0,3,4,5],"dai":[3,4,5],"damag":4,"dat":5,"data":[0,1,3],"databas":[0,1,3],"datacent":3,"datadisk":5,"dataless":4,"datalqt":0,"dataset":3,"dataz12":0,"datazn":0,"date":3,"daysac":5,"db":[0,3,5],"ddt":[0,3],"de":3,"deal":4,"default":[1,3,5],"defin":[0,3],"deg":[0,5],"degre":[0,3,5],"delai":[0,3],"denot":5,"dep":[0,5],"depend":[1,3],"depth":[0,5],"desir":3,"detail":[1,3,4],"detect":2,"determin":[0,5],"develop":1,"diagnost":[0,3,5],"diagplot":1,"dict":0,"dictionari":[0,3],"differ":[0,1,5],"direct":0,"directori":3,"discard":5,"disk":[3,5],"displai":[0,5],"display_meta":0,"display_null_qu":0,"display_result":0,"dist":[3,5],"distanc":[0,3],"distribut":4,"do":4,"doc":3,"document":4,"doe":4,"dof":0,"doi":[2,4],"don":4,"done":[1,5],"dot":4,"download":[0,1,3],"download_data":0,"dphi":[0,3,5],"drive":4,"dst":3,"dt":[0,3,5],"dtt":0,"dttsc":0,"dtype":[3,4],"due":[],"durat":0,"dure":[0,3],"e":[0,3,4,5],"each":[0,3,5],"earthquak":0,"earthscop":3,"east":0,"edtt":0,"edu":3,"eida":3,"either":[0,3],"elev":5,"elimin":5,"emat":0,"ematrix":0,"emsc":3,"enabl":1,"end":[0,3,5],"endt":3,"endtim":5,"energi":0,"enter":[],"environ":[1,2],"ephi":0,"epi":5,"epi_dist":0,"epicent":0,"epicentr":0,"equal":0,"err":0,"err_contour":0,"err_dtt":0,"err_phi":0,"errc":0,"error":[0,5],"estim":[0,3,5],"et":1,"etc":5,"eth":3,"event":[0,3,4,5],"everi":3,"exactli":4,"examin":5,"exampl":[1,4,5],"exceed":5,"exclud":3,"execut":1,"exist":[3,5],"exit":3,"express":4,"extens":[3,4],"f":0,"f_event":5,"f_result":5,"fair":[0,3,5],"fals":[0,3,5],"fast":[0,3,5],"fd":0,"fdsn":[0,3,4],"field":[0,4],"fig":[0,3,5],"figur":[0,5],"file":[0,3,4,5],"filenam":[3,4],"fill":[],"filter":[0,3],"final":[3,4,5],"find":[],"first":[4,5],"fisher":0,"fit":[0,4,5],"flag":3,"float":0,"fly":3,"fmax":[0,3,5],"fmin":[0,3,5],"foat":0,"folder":[3,4,5],"follow":[0,4,5],"forc":3,"forg":4,"form":3,"format":[0,3],"found":5,"fourth":5,"fp":0,"fpathmatch":[],"frame":5,"framework":3,"free":4,"freedom":0,"frequenc":[0,3,5],"from":[0,1,3,5],"fulli":0,"function":0,"furnish":4,"further":[0,3,5],"futur":5,"g":[2,3,4],"g38118":2,"gac":[0,5],"gacmax":0,"gacmin":0,"gen_stdb":4,"gener":0,"geofon":3,"geologi":2,"geometri":3,"geonet":3,"geoscienc":2,"get":0,"get_qual":0,"gfz":3,"git":[2,4],"github":1,"given":[0,3],"good":[0,3,5],"grant":4,"graphic":5,"great":[0,3],"grid":0,"ground":0,"gui":[1,5],"h":3,"ha":[0,1,3,4,5],"handl":0,"hard":4,"have":[0,3,4],"help":3,"here":[3,4],"herebi":4,"hh":5,"hhe":5,"hhn":5,"hhz":[4,5],"holder":4,"home":3,"horizont":0,"html":3,"http":[2,3,4],"hypocent":0,"hz":[0,3],"i":[0,1,3,4,5],"iasp91":5,"icgc":3,"identifi":[0,3],"ie":3,"iesdmc":3,"ignor":3,"implement":3,"impli":4,"improv":5,"inc":0,"incid":[0,5],"includ":[3,4,5],"increas":3,"increment":3,"indb":3,"index":3,"individu":3,"info":[0,5],"inform":[0,5],"ingv":3,"inherit":2,"initi":0,"input":4,"insid":4,"instal":1,"instanc":3,"instead":3,"instrument":0,"int":0,"interact":[0,5],"interfac":5,"internet":3,"interv":0,"ipgp":3,"iri":3,"irisph5":3,"is_nul":0,"isc":3,"its":4,"iu":3,"j":2,"januari":5,"jgr":0,"keep":[0,1,5],"kei":[3,5],"kind":4,"km":[0,5],"knmi":3,"koeri":3,"l":0,"lag":0,"lat":[0,5],"later":3,"latitud":[0,5],"lcldr":[],"left":5,"length":[0,3,5],"let":5,"letter":[],"level":0,"liabil":4,"liabl":4,"licenc":1,"like":4,"limit":[3,4],"line":5,"list":[0,3,5],"list_local_data_stn":[],"lithospher":2,"ll":0,"lmu":3,"load":[3,4,5],"loc":[4,5],"local":[0,1,3,5],"localdata":3,"locat":[4,5],"log":3,"logfil":5,"lon":[0,5],"long":[3,5],"longitud":[0,5],"longitudin":0,"lqt":[0,5],"ls_stdb":5,"m":0,"made":5,"mag":[0,3,5],"magnitud":[0,3,5],"mai":5,"main":[0,4],"manual":[1,3],"map":5,"match":3,"matlab":[1,2],"matrix":0,"max":3,"maxdist":3,"maxdt":[0,3],"maximum":[0,3],"maxmag":3,"measur":[2,3,5],"mechan":3,"merchant":4,"merg":4,"messag":[0,3,5],"meta":[1,5],"metadata":[0,1,5],"method":[0,3,5],"min":3,"mindist":3,"minim":0,"minimum":[0,3,5],"minise":4,"minmag":3,"miscellan":3,"misfit":0,"miss":[],"mnt":5,"mode":[1,3,5],"model":5,"modifi":4,"modul":1,"more":[1,3,4],"most":[3,5],"motion":[0,5],"mseed":[3,4],"msnr":3,"must":[3,4],"mw":5,"n":[0,4,5],"name":[0,3],"nan":[],"ncedc":3,"ndarrai":0,"ndval":[],"negat":3,"neip":[],"neotecton":2,"neri":[],"net":4,"network":[1,3,4,5],"new":[0,3,5],"new_sampling_r":3,"new_sr":0,"newli":[0,4],"nez":0,"niep":3,"noa":3,"node":3,"nois":0,"non":[0,3,5],"none":[0,3,5],"noninfring":4,"norsar":3,"north":0,"northwest":1,"northwestern":2,"note":[0,3,4,5],"notic":4,"nrcan":3,"null":[0,2,3,5],"number":0,"ny":[4,5],"o":[3,5],"object":0,"obspi":[0,4,5],"obtain":[3,4],"occur":5,"odc":3,"older":3,"oldest":3,"onc":[1,5],"one":[1,3,4,5],"onli":[0,3,4,5],"open":[0,5],"option":[3,5],"order":[3,5],"orfeu":3,"org":2,"orient":0,"orientpi":4,"origin":[0,5],"other":[0,3,4],"otherwis":4,"out":[0,1,4,5],"output":0,"outsid":5,"over":3,"overrid":3,"overwrit":[0,3,5],"p":[0,2],"packag":4,"pad":4,"pair":3,"panel":5,"paramet":[0,1,3,5],"parse_localdata_for_comp":[],"partial":[3,5],"particl":[0,5],"particular":[4,5],"pascal":4,"pass":5,"password":3,"path":[3,5],"paudetsei":4,"per":4,"perform":[0,3],"permiss":4,"permit":4,"person":4,"pgp":3,"ph":0,"phase":[0,3,5],"phi":[0,5],"phi_min":0,"phisc":0,"php":3,"pick":[0,1,3],"pickl":[3,5],"pickplot":1,"pip":4,"pk":5,"pkl":[3,4,5],"place":5,"pleas":2,"plot":[0,1,3,5],"plot_diagnost":0,"plot_lqt_phas":0,"png":0,"point":0,"polar":5,"poor":[0,3,5],"pop":5,"portion":4,"posit":[3,5],"possibl":5,"possibli":5,"potsdam":3,"pre":[3,5],"preced":3,"precis":3,"predict":0,"preferenti":[],"present":5,"previou":5,"previous":5,"print":[0,5],"proce":[0,3,5],"process":[1,3],"produc":[1,3,5],"program":[3,5],"prompt":[3,5],"provid":[3,4,5],"publish":4,"purpos":4,"pvh":0,"pyqt5":[0,4],"python":[1,3,4],"q":[0,3,5],"qt5":0,"qualiti":[0,3,5],"query_fdsn_stdb":5,"radial":[0,3,5],"rang":3,"raspishak":3,"rate":[0,3],"ratio":0,"raw":0,"rc":[0,3,5],"rc_re":0,"re":3,"read":4,"recalc":5,"recent":[3,5],"recogn":3,"recommend":4,"recurs":[],"red":5,"refer":1,"refin":[0,1,3,5],"region":0,"remain":4,"remov":0,"remove_respons":0,"repeat":[0,1,3],"repositori":[1,4],"repres":[0,3,5],"request":[0,3,5],"requir":[4,5],"resif":3,"resifph5":3,"resitut":0,"respons":0,"restrict":[3,4],"result":[1,3,5],"retain":5,"retriev":5,"return":0,"revers":3,"rfpy":4,"rfpy_calc":4,"rho":5,"right":4,"rotat":[0,3,5],"routin":0,"row":5,"rtrace":0,"run":[0,4,5],"sac":[3,4],"sampl":[0,3],"saniti":0,"save":[0,1,3,5],"sc":[0,3,5],"sc_nons_g":5,"sc_re":0,"scedc":3,"schaeffer":[2,4],"schaefferaj":4,"screen":0,"script":[4,5],"sd":[0,3,4],"search":[0,3,5],"sec":[0,3],"second":5,"see":[0,3,5],"seed":4,"seiscomp":[3,4],"seiscomp3":3,"seismic":[0,5],"seismogram":[0,3,5],"seismograph":1,"seismolog":2,"select":[3,5],"sell":4,"send":5,"separ":[3,5],"server":[3,5],"servic":[0,3,4],"set":[0,3,5],"sever":3,"shall":4,"shear":[0,1,2,3,5],"shift":[0,5],"should":[0,4],"show":[0,1,3,5],"shown":1,"signal":[0,5],"silver":[0,3,5],"simpl":0,"simpli":[0,4,5],"sinc":5,"singl":[0,3],"sk":[0,1,3,5],"skip":[3,5],"skk":[3,5],"slarchiv":3,"slow":[0,5],"snr":[0,3,5],"snrh":0,"snrq":[0,5],"snrt":[3,5],"snrtlim":[0,3],"so":[3,4],"societi":2,"softwar":[1,4],"sole":2,"some":4,"sort":[],"sourc":1,"space":0,"specif":5,"specifi":[3,5],"split":[1,2,3,4,5],"split_averag":[1,5],"split_calc_auto":[1,5],"split_calc_manu":[1,5],"split_dof":0,"split_errorrc":0,"split_errorsc":0,"split_rotcorr":0,"split_silverchan":0,"splite":3,"splitlab":[1,2,3],"splitpi":[0,1,3,4],"st":[],"sta":[0,4],"start":[0,3,5],"startim":5,"startt":3,"starttim":5,"station":[0,1,3],"statu":5,"stdata":[],"stdb":[0,1,2,3,4],"still":3,"stkei":3,"store":[0,4],"str":0,"stream":0,"string":[0,3],"structur":[3,4,5],"subject":4,"sublicens":4,"subsequ":[3,5],"substanti":4,"success":0,"suitabl":5,"summar":5,"summari":[0,5],"support":[],"surfac":[0,5],"system":0,"t":[0,4,5],"t1":0,"t2":0,"take":[3,5],"tangenti":[0,5],"taup":0,"taupymodel":0,"teleseism":[0,1,3],"temporarili":0,"termin":5,"test":[0,4],"texnet":3,"text":[0,5],"tgtn":[4,5],"tgtn_rc":5,"thei":[3,5],"them":[3,5],"therefor":0,"thi":[0,3,4,5],"third":5,"those":[3,4],"three":[0,3,5],"threshold":[0,3,5],"through":[4,5],"time":[0,3,5],"togeth":3,"token":3,"tokenfil":3,"tool":[1,4],"toolbox":1,"top":5,"tort":4,"total":3,"toward":3,"tp1":0,"tp2":0,"tr":0,"trace":[0,5],"traceshift":0,"transform":0,"transvers":[0,3],"travel":0,"tre":0,"trfast":0,"trn":0,"trq":0,"trq_c":0,"trslow":0,"trt":0,"trt_c":0,"true":[0,5],"trz":0,"tshift":0,"tt":0,"ttime":0,"two":[0,1,3,4,5],"type":[0,3,4,5],"uib":3,"un":[0,5],"uniform":5,"uniformli":5,"unknown":0,"up":5,"updat":[0,5],"update_lqt":0,"url":3,"us":[0,1,2,3,5],"user":[3,5],"userauth":3,"usernam":3,"usg":3,"usp":3,"utcdatetim":[0,3],"util":1,"v":[3,5],"valu":[3,5],"veloc":0,"verbiag":0,"verbos":[0,3,5],"version":[0,3,4],"vertic":[0,3,5],"visual":5,"wai":3,"walsh":0,"warranti":4,"wave":[0,1,2,3,5],"waveform":[1,3,5],"we":[4,5],"web":[0,3,4],"well":5,"where":[1,4,5],"whether":[0,4,5],"which":[0,3,4,5],"whom":4,"widget":0,"window":[0,1,3,5],"wish":5,"within":[3,5],"without":4,"work":[2,3],"wrap":3,"wustefeld":[1,2,3],"www":3,"x":5,"xml":4,"ye":[0,5],"year":[4,5],"you":[2,4,5],"your":[2,4],"yukon":1,"yyyymmdd_hrmnsc":5,"z":[0,3],"z12":0,"zcomp":[0,3],"zenodo":2,"zero":4,"zeroli":2,"zne":[0,5],"zrt":0},"titles":["Classes","Documentation","GitHub Repositories","Scripts","Licence","Tutorials"],"titleterms":{"analysi":5,"api":1,"autom":5,"averag":5,"branch":4,"calc":0,"cite":2,"class":0,"conda":4,"creat":5,"data":[4,5],"databas":5,"depend":4,"descript":3,"develop":4,"diagplot":0,"document":1,"download":5,"environ":4,"from":4,"get":1,"github":[2,4],"gui":0,"instal":4,"licenc":4,"link":1,"local":4,"manual":5,"meta":0,"metadata":4,"modul":0,"pick":5,"pickplot":0,"process":5,"quick":1,"re":5,"refer":2,"repositori":2,"result":0,"script":[1,3],"sourc":4,"split":0,"split_averag":3,"split_calc_auto":3,"split_calc_manu":3,"splitpi":2,"start":1,"station":[4,5],"stdb":5,"tutori":[1,5],"us":4,"usag":3,"util":0,"waveform":4}}) \ No newline at end of file From 1e7af83e2daca5b46dc1fbf2378fb73cc5ad3158 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 12:22:46 +1200 Subject: [PATCH 33/39] remove obsolete files --- .travis.yml | 49 ---------------------------------- .travis/github_deploy_key.enc | Bin 3392 -> 0 bytes setup.py.bak | 39 --------------------------- 3 files changed, 88 deletions(-) delete mode 100644 .travis.yml delete mode 100644 .travis/github_deploy_key.enc delete mode 100644 setup.py.bak diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 57130bf..0000000 --- a/.travis.yml +++ /dev/null @@ -1,49 +0,0 @@ -language: c -os: - - linux - - osx - - windows -env: - - PYTHON_VERSION=3.6 - - PYTHON_VERSION=3.7 - - PYTHON_VERSION=3.8 -jobs: - include: - - env: PYTHON_VERSION=3.7 DOCS=1 -before_install: - - wget https://raw.githubusercontent.com/trichter/conda4travis/latest/conda4travis.sh -O conda4travis.sh - - source conda4travis.sh - - conda config --add channels conda-forge - - if [[ $DOCS == 1 ]]; then - DEP="sphinx sphinx_rtd_theme"; - else - DEP="pytest-cov"; - fi - - conda create -q -n testenv python=$PYTHON_VERSION obspy $DEP -c conda-forge - - conda activate testenv - - conda list -install: - - pip install stdb - - pip install -v --no-deps . -script: - - if [[ $DOCS == 1 ]]; then - cd docs; make html; touch _build/html/.nojekyll; cd ..; - else - mkdir empty; cd empty; pytest -v --cov=splitpy ../splitpy/tests/; - fi - -after_success: - - if [[ $DOCS != 1 ]]; then - bash <(curl -s https://codecov.io/bash); - else - openssl aes-256-cbc -K $encrypted_f315283a03bb_key -iv $encrypted_f315283a03bb_iv -in ".travis/github_deploy_key.enc" -out ".travis/github_deploy_key" -d; - fi -notifications: - email: false -deploy: - provider: pages:git - edge: true # opt in to dpl v2 - deploy_key: .travis/github_deploy_key - local_dir: docs/_build/html - on: - condition: $DOCS = 1 \ No newline at end of file diff --git a/.travis/github_deploy_key.enc b/.travis/github_deploy_key.enc deleted file mode 100644 index c63f8f8317c2b39fe2c5c20741a1f863ae2b92fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3392 zcmV-G4Zre84Q)w=8hw{0T=N_SEvAcAG>F>=wIouaW|%(LR2Rluj)i5p>)eh4!-Hy_@CGTZ z7*m~0n;E1bS8s5CCIFAp63u9m7!=C}SFl#(b4|U107cAVAdQ@f-CY5pt~_T;SA|1IUxWKcaA1R32vo zziO2O=$3|adev8!WZRTjoyEBelRh%^P7tRABQ6P*cBxCjA;(C?#SYFH7cbzVYYCD! z;342cdg>V;ah{tTOD+{>pBDFCtIvy8*yw0HaHRpLWN56L^n&bp;$^ZFl-avOUv#Bl z(Hwt$sHg+_E6VO^NkVyCoRd>HL{-^1BdTS3I0LVQAIw?ihJ1w&J6a4Hq1phky+FJC zAfExGKq{@=g0YVuwBcg0~xNhAtx^i!CtVZ!~>s<__`tcSL*vboRJ)N!cfie9deUm%|UaFE# zN~Zgib0`f?iV^V3Bod@8G$8V|4vDfsQ<~Mrio5^_6skUVqjHezdbcsZ->pEMf2+b%( z5+5Qrv*1OoY^vj8hzl^%)%)NQ^Oy1P9TP)CE2BmF7f3NRA)35~<>~ws&zD)q1FW4Nz6_m8;<8f%T&?7F zQO=0rMRa|@k7xHoJjz=hmBaO4o-b;XKecakbLk)6(}&xv#D$OjI+>Tf(s%iz4u*ml}} zmrk}FJsLNT?N!S*+$5m8K$wMbApX2&?Et|Q@TG%SM`WZRFE(H$nEG&)ZXBJz?05N4 zeXT8;weqTXh#QbDXf-ua2md&@o;HS?zVcI#6>UQ%3(O9Oyu!Z!HwB|)6*My3;qRQt ziigfe`XSkNeE+i*9?p;gv#|9z!>?`+?WAS=k4iZ!X>72L;#8c00YCT8!iWR-zxmPS zahtH}y_Zn;6@_+;@3Ce78dwMyE~$!hLE$rV-<%U3IM9T@ww8#5B>nODlyLFTqJVG# zl&8=91LQtSZH~*6D_MZVxCXwG+DPizRdcZC%92A4{|7+CYZ0yIx$>=zL(b(gIGBs` za>Uh7oGN!~;N$sPvh&tl+MO>i8CCeN1#Jg@fUJZvlHYRb{|mDK3EcV{l4e{uL*sg~ zZFfz`Y_Jw-F~awqtgcx_PpCkgj*vTA3KlU9@~%tv!T^r0_>9b)d!GVdjR)auPvkkP zT{)R$6y4?dXI}tS7yptV={T6^F8EZWp@o=UqnBS=sIR3Z@e4$4xlcW9;K61vAx>&8 zrh^__~ zLIvTd0b3OR5T*B)!T{i1V~3}BU+69u4%y0fE#aac4pX$nI^X;s6aPBgTTE^BHNqDQbsxx6wzF5nO?4>#!5fCH*$+MLLx|v5S!)BaWuU z(F>R;0qP#ICF2K&JIA=isd0E${vo^rbm0m%)X4c8VMx(ONZ7I}$ZH8mv()!I1ucoj zgC@V${;I8f(w^qou#DW;8rui#z!EJ&f#FS}EGf-~DK^R{P4dr@N-OpRulqP1&G5(L z-aMq2qEMNHzku9|HXYqZ8`BvoJ7%vLvFN6p&V!qRknQrzNDQ%TAG>UDmE`a6Q{%!9 zEtpaH`Ce}s{q}zM@tQfF#6(Z+D?vz|twF`Ga zVc2R8D}|v6#Yy${uvpLAF(w7IWrUJp&sL-LPX7u&KYhkFetF$u2#*X$j@~T^Ci_KU z9?JsyA}X*DJfhHwvvzSp^M2YS-2Ub5j^XQjv~D@1yml2tM2;Qxyom|~Ip}`wSt}48 z<`fQagQ9=PM3c*6Z0g-9TC;*q3nSOL*s#+c2b+2c;hOi$_9>VnSW7FMbmDAD86qQm zY$L8|P#eIb3-MU2m=Z`8L(k&$%VZo~zrb~-iUGLdVl?#L?x5Z#Y zEe8+$alsJw-}1L@ShdM-zLC zRTkk>Yu_kOSoNBx+wUEkM01MtS1F?}?HF~*7D);C-PGkfZ@sp+2!M}KVD%+LSo>L6 z@cY8gLIFX~)#t?o@j#~~Ha$kSg>DzCX98(B^qLnrea!;ivJsd-CcaJcB?;9J9k>}v za?!{1MsnZ1)`=Q$+g^$LQ^5B3N|#o6iNZW-OKM-`TRvbks<<~{wOyzcb|z7vt zX)@axsLjzBT7_9Iz+{&)RIMk!^Uv;8dc{ffG(jzAOGRUndR9}}*q-@?B|2-cY+UkR zGr+d{5r5O%&rRgO{7`Q>4hy?eQkS-t46a(rK$rVeSW!(k1vEJ;$e+1O$C4k0kWS^7 zft5^WkA7o?HwvZeF6a&e9LfHGhy@aO4p=tgT_?IhL?X^m?!SG4D_ zo9Qq4gqdK%nb;L@?kxYSf7Chgq|G)BjzEbOcIBd+>B9}zpx1INO9>EV&_Gz8 z2fWXgC9f?QjxEjc4j8xVOt;va7oS^kJ4aNH^96>K`a`}c+_K|KV(49$uOt#|p=1gI zZbX8%ogw7bx9>ZYFR*9!ck)~1qS!%CSMoK4?+~bg{Z8M6NS6%KBoC`; zM5ZJBt|k9Uc5{w%1>UAmB7>j>c7=R&J5IGZFvOGdEI+PvFbz*yK7OdzyrvXf*S!`$ z{wWd=Tuf7^MJFu!;RxmP^q7USLrRkaC$^y0EgC!cO}L%MnDZ94>;m#KAv}Nb?xqmr z;(|9X<45Ef$u8wTFzj|5aLINIgQSjp_;M5jbb`12JYw(U{D2lQ0;s9U^!%X9GlGnY z9So(=uu(|!SL=-V==)azO!&q&ws`QqT*o1H3!Q;xkw1zMj~?E>mj&^6XG~6ob6w|G^?>PEH+Y3qmf*X&pj>$= zwj7R=Yj_n6YQpQ-$`lrZcvmTU+xfzV&xA(gLiYPNDnoX7k0>pmr8d;ypYbyrUQ25@bM=KuDrc)M#%3LaC2@ zMp!Huu=*`*JmfQ`-*NF%4#|AtVu**vzDLl{0vRKH?ICRaX)Z@I1yoa%E3dCOq|*=X WCPUBKKZd*NeXt@*9Z`^Y-Y*|P_K(g0 diff --git a/setup.py.bak b/setup.py.bak deleted file mode 100644 index a8e7af8..0000000 --- a/setup.py.bak +++ /dev/null @@ -1,39 +0,0 @@ -import os.path -from os import listdir -import re -from setuptools import setup -# from numpy.distutils.core import setup -from pathlib import Path - - -def find_version(*paths): - fname = os.path.join(os.path.dirname(__file__), *paths) - with open(fname) as fp: - code = fp.read() - match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", code, re.M) - if match: - return match.group(1) - raise RuntimeError("Unable to find version string.") - - -scripts = [str(x) for x in Path('Scripts').iterdir() if x.is_file()] - -setup( - name='splitpy', - version=find_version('splitpy', '__init__.py'), - description='Software for teleseismic shear-wave splitting analysis', - author='Pascal Audet, Andrew Schaeffer', - author_email='pascal.audet@uottawa.ca', - maintainer='Pascal Audet, Andrew Schaeffer', - maintainer_email='pascal.audet@uottawa.ca, andrew.schaeffer@canada.ca', - url='https://github.com/paudetseis/SplitPy', - classifiers=[ - 'Development Status :: 3 - Alpha', - 'License :: OSI Approved :: MIT License', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8'], - install_requires=['stdb', 'obspy', 'PyQt5'], - python_requires='>=3.6', - packages=['splitpy'], - scripts=scripts) From c9b88c22bc72e4ec46ef0d836b7650eb527ddffd Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 12:24:49 +1200 Subject: [PATCH 34/39] add deploy workflow --- .github/workflows/deploy.yml | 72 ++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..46b1d84 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,72 @@ +# This is a basic workflow to help you get started with Actions + +name: Build + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [ master ] + pull_request: + branches: [ master ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + name: ${{ matrix.os }} Python ${{ matrix.python-version }} + # The type of runner that the job will run on + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: ["ubuntu-latest"] + python-version: ["3.12"] + + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + activate-environment: test + auto-activate-base: false + python-version: ${{ matrix.python-version }} + + - name: Install + shell: bash -l {0} + run: | + conda info + conda config --add channels conda-forge + conda install obspy + pip install git+https://github.com/schaefferaj/stdb + pip install . + + - name: Tests + shell: bash -l {0} + run: | + mkdir empty + cd empty + conda install pytest + pytest -v --pyargs splitpy + + # - name: Make docs + # if: matrix.python-version == '3.12' + # shell: bash -l {0} + # run: | + # cd docs + # conda install sphinx + # pip install sphinx_rtd_theme + # make html + # touch _build/html/.nojekyll + # cd .. + + # - name: Deploy 🚀 + # if: matrix.python-version == '3.12' + # uses: JamesIves/github-pages-deploy-action@3.7.1 + # with: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # BRANCH: gh-pages # The branch the action should deploy to. + # FOLDER: docs/_build/html # The folder the action should deploy. + # CLEAN: true # Automatically remove deleted files from the deploy branch From bcff84f431d21b02af2acec10dc4ddd1f6868dbc Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 13:25:32 +1200 Subject: [PATCH 35/39] remove tests from GH actions: problem with qtagg --- .github/workflows/deploy.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 46b1d84..e640493 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -43,13 +43,13 @@ jobs: pip install git+https://github.com/schaefferaj/stdb pip install . - - name: Tests - shell: bash -l {0} - run: | - mkdir empty - cd empty - conda install pytest - pytest -v --pyargs splitpy + # - name: Tests + # shell: bash -l {0} + # run: | + # mkdir empty + # cd empty + # conda install pytest + # pytest -v --pyargs splitpy # - name: Make docs # if: matrix.python-version == '3.12' From 30901c70ff201cc537464bd0b241ed5cf2f8adc1 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 13:25:56 +1200 Subject: [PATCH 36/39] specify zcomp when initializing Split object --- splitpy/classes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/splitpy/classes.py b/splitpy/classes.py index 0200cef..6cde389 100644 --- a/splitpy/classes.py +++ b/splitpy/classes.py @@ -468,7 +468,7 @@ def download_data(self, client, new_sr=5., dts=120., # Filter Traces and resample self.dataZNE.filter('lowpass', freq=0.5*new_sr, - corners=2, zerophase=True) + corners=2, zerophase=True) self.dataZNE.resample(new_sr, no_filter=True) # Save Z12 components in case it's necessary for later From 4a2241f8cc42eb9297f6367539bb85a253d08f99 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 13:26:42 +1200 Subject: [PATCH 37/39] more verbose scripts and fixed stkeys --- splitpy/scripts/split_average.py | 15 +++++++++++++-- splitpy/scripts/split_calc_auto.py | 26 +------------------------- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/splitpy/scripts/split_average.py b/splitpy/scripts/split_average.py index bed10e5..e05bf55 100755 --- a/splitpy/scripts/split_average.py +++ b/splitpy/scripts/split_average.py @@ -171,6 +171,10 @@ def get_arguments_average(argv=None): if not exist(args.indb): parser.error("Input file " + args.indb + " does not exist") + # Create station key list + if len(args.stkeys) > 0: + args.stkeys = args.stkeys.split(',') + # Check Nulls if not args.nons and not args.nulls: parser.error("One of Non-Nulls or Nulls must be included.") @@ -311,7 +315,11 @@ def main(args=None): Qual = [] Null = [] - print(" Processing {0:d} Events...".format(len(evs))) + print(" Found {0:d} event folders...".format(len(evs))) + if args.auto: + print(" Checking 'auto' results...") + else: + print(" Checking 'manual' results...") # Loop over Pickle Files and read in required data ic = 0 @@ -414,7 +422,8 @@ def main(args=None): print(" {0} {1} Non-Null -> Skipped".format( str(Path(evSTR).name), split.quality)) - if not baz: + if len(baz) == 0: + print(" No splitting results to average") return # Gridspec for polar plot @@ -637,6 +646,8 @@ def main(args=None): # Display Plot if args.showfig: plt.show() + else: + plt.close() if __name__ == "__main__": diff --git a/splitpy/scripts/split_calc_auto.py b/splitpy/scripts/split_calc_auto.py index dfdcb01..5d7b99a 100644 --- a/splitpy/scripts/split_calc_auto.py +++ b/splitpy/scripts/split_calc_auto.py @@ -594,30 +594,6 @@ def main(args=None): " possible events |") ievs = range(0, nevtT) - # Get Local Data Availabilty - if len(args.localdata) > 0: - print("|"+"-"*50+"|") - print("| Cataloging Local Data... |") - if args.useNet: - stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, - sta=sta.station, - net=sta.network, - dtype=args.dtype, - altnet=sta.altnet) - print("| {0:>2s}.{1:5s}: {2:6d} files ".format( - sta.network, sta.station, len(stalcllist))) - else: - stalcllist = utils.list_local_data_stn( - lcldrs=args.localdata, - dtype=args.dtype, - sta=sta.station) - print("| {0:5s}: {1:6d} files ".format( - sta.station, len(stalcllist))) - else: - stalcllist = [] - print("|"+"="*50+"|") - # Select order of processing if args.reverse: ievs = range(0, nevtT) @@ -631,7 +607,7 @@ def main(args=None): ev = cat[iev] # Initialize Split object with station info - split = Split(sta) + split = Split(sta, zcomp=args.zcomp) # Add event to split object accept = split.add_event( From 84f201b2b66cae744c2cd8a10e3e04cf6d394925 Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 13:28:14 +1200 Subject: [PATCH 38/39] added verbosity in split_average tutorial --- docs/tutorials.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/tutorials.rst b/docs/tutorials.rst index 55d639f..464208b 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -108,7 +108,7 @@ This will produce, in the terminal: | Found 2 possible events | |==================================================| - |**************************************************| + ************************************************** * #1 (2/2): 20200318_031345 NY.TGTN * Phase: SKS * Origin Time: 2020-03-18 03:13:45 @@ -228,7 +228,7 @@ This will produce, in the terminal: | Found 2 possible events | |==================================================| - |**************************************************| + ************************************************** * #1 (2/2): 20200318_031345 NY.TGTN * Phase: SKS * Origin Time: 2020-03-18 03:13:45 @@ -362,7 +362,8 @@ by typing in a terminal: Fairs: True Poors: False --------------------------- - Processing 136 Events... + Found 136 event folders... + Checking 'auto' results... 20160302_124948 Poor Null -> Skipped 20160401_192455 Good Non-Null -> Retained 20160403_082352 Poor Non-Null -> Skipped From 560cb136117cf3484e7ab7849e4d15a3e588c16a Mon Sep 17 00:00:00 2001 From: Pascal Audet Date: Fri, 16 May 2025 13:31:37 +1200 Subject: [PATCH 39/39] added doc on tests --- docs/splitpy.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/splitpy.rst b/docs/splitpy.rst index 54daae9..b033199 100644 --- a/docs/splitpy.rst +++ b/docs/splitpy.rst @@ -83,6 +83,17 @@ Installing from source pip install . +Testing +------- + +A series of tests are located in the ``tests`` subdirectory. +In order to perform these tests, run ``pytest``: + +.. sourcecode:: bash + + conda install pytest + pytest -v --pyargs splitpy + Using local data ================