diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..ec4f6521b --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +pysmurf/_version.py export-subst diff --git a/.gitignore b/.gitignore index 94c4b20a2..8e0444971 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,25 @@ *.pyc *.py~ *.dat -*.png \ No newline at end of file +*.png + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +.idea/ \ No newline at end of file diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 000000000..6822acaca --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,21 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + +# Optionally build your docs in additional formats such as PDF and ePub +formats: all + +# Optionally set the version of Python and requirements required to build your docs +python: + version: 3.7 + install: + - requirements: requirements.txt + - method: pip + path: . diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 000000000..445d7be95 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,40 @@ +Copyright (c) 2019, The Board of Trustees of the Leland Stanford Junior +University, through SLAC National Accelerator Laboratory (subject to receipt +of any required approvals from the U.S. Dept. of Energy). All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +(1) Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +(2) Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +(3) Neither the name of the Leland Stanford Junior University, SLAC National + Accelerator Laboratory, U.S. Dept. of Energy nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER, THE UNITED STATES GOVERNMENT, +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. + +You are under no obligation whatsoever to provide any bug fixes, patches, or +upgrades to the features, functionality or performance of the source code +("Enhancements") to anyone; however, if you choose to make your Enhancements +available either publicly, or directly to SLAC National Accelerator Laboratory, +without imposing a separate written license agreement for such Enhancements, +then you hereby grant the following license: a non-exclusive, royalty-free +perpetual license to install, use, modify, prepare derivative works, incorporate +into other computer software, distribute, and sublicense such Enhancements or +derivative works thereof, in binary and source code form. + diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..b915e182e --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include versioneer.py +include pysmurf/_version.py diff --git a/README.md b/README.md index b373165f7..1e3ed12a2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ # pysmurf -The python control software for SMuRF. Includes scripts to do low level commands as well as higher level analysis. + +[![Documentation Status](https://readthedocs.org/projects/pysmurf/badge/?version=latest)](https://pysmurf.readthedocs.io/en/latest/?badge=latest) + +The python control software for SMuRF. Includes scripts to do low level +commands as well as higher level analysis. + +## Installation +To install pysmurf clone this repository and install using pip: + +``` +git clone https://github.com/slaclab/pysmurf.git +cd pysmurf/ +pip3 install -r requirements.txt +pip3 install . +``` + +## Documentation +Documentation is built using Sphinx, and follows the +[Google Style Docstrings][1]. To build the documentation first install the +pysmurf package, then run: + +``` +cd docs/ +make html +``` + +Output will be located in `_build/html`. You can view the compiled +documentation by opening `_build/html/index.html` in the browser of your +choice. + +[1]: https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html diff --git a/__init__.py b/__init__.py deleted file mode 100644 index 80fd2c34e..000000000 --- a/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -''' -init for root python directory -''' -from .base.smurf_control import SmurfControl diff --git a/base/__init__.py b/base/__init__.py deleted file mode 100644 index 50fbe8477..000000000 --- a/base/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -''' -init for base -''' -from .base_class import SmurfBase \ No newline at end of file diff --git a/cfg_files/rflab/experiment_rflab_thermal_testing_201907.cfg b/cfg_files/rflab/experiment_rflab_thermal_testing_201907.cfg index 42162d53d..a119c337f 100644 --- a/cfg_files/rflab/experiment_rflab_thermal_testing_201907.cfg +++ b/cfg_files/rflab/experiment_rflab_thermal_testing_201907.cfg @@ -298,6 +298,16 @@ # For Stanford 5-6ghz 528 box in FP29, with a standard (not # modified for high current) RTM "fraction_full_scale": 0.495, + "delta_freq" : { + "0" : 0.02, + "1" : 0.02, + "2" : 0.02, + "3" : 0.02, + "4" : 0.02, + "5" : 0.02, + "6" : 0.02, + "7" : 0.02 + }, "lms_freq": { "0" : 16500, "1" : 16500, @@ -308,16 +318,6 @@ "6" : 16500, "7" : 16500 }, - "delta_freq" : { - "0" : 0.02, - "1" : 0.02, - "2" : 0.02, - "3" : 0.02, - "4" : 0.02, - "5" : 0.02, - "6" : 0.02, - "7" : 0.02 - }, # The fraction of each flux ramp cycle above which we start # applying feedback, within each cycle. Must be >0. If >1, # then You want this to be large enough to mask the transient @@ -346,14 +346,14 @@ "7" : 0.98 }, "gradient_descent_gain": { - "0" : 1e-5, - "1" : 1e-5, - "2" : 1e-5, - "3" : 1e-5, - "4" : 1e-5, - "5" : 1e-5, - "6" : 1e-5, - "7" : 1e-5 + "0" : 1e-4, + "1" : 1e-4, + "2" : 1e-4, + "3" : 1e-4, + "4" : 1e-4, + "5" : 1e-4, + "6" : 1e-4, + "7" : 1e-4 }, "gradient_descent_averages": { "0" : 1, @@ -365,6 +365,66 @@ "6" : 1, "7" : 1 }, + "gradient_descent_converge_hz": { + "0" : 500, + "1" : 500, + "2" : 500, + "3" : 500, + "4" : 500, + "5" : 500, + "6" : 500, + "7" : 500 + }, + "gradient_descent_step_hz": { + "0" : 1000, + "1" : 1000, + "2" : 1000, + "3" : 1000, + "4" : 1000, + "5" : 1000, + "6" : 1000, + "7" : 1000 + }, + "gradient_descent_beta": { + "0" : 0, + "1" : 0, + "2" : 0, + "3" : 0, + "4" : 0, + "5" : 0, + "6" : 0, + "7" : 0 + }, + "gradient_descent_momentum": { + "0" : 1, + "1" : 1, + "2" : 1, + "3" : 1, + "4" : 1, + "5" : 1, + "6" : 1, + "7" : 1 + }, + "eta_scan_del_f": { + "0": 5000, + "1": 5000, + "2": 5000, + "3": 5000, + "4": 5000, + "5": 5000, + "6": 5000, + "7": 5000 + }, + "eta_scan_amplitude":{ + "0" : 12, + "1" : 12, + "2" : 12, + "3" : 12, + "4" : 12, + "5" : 12, + "6" : 12, + "7" : 12 + }, "eta_scan_averages": { "0" : 1, "1" : 1, diff --git a/cfg_files/stanford/README.md b/cfg_files/stanford/README.md new file mode 100644 index 000000000..6036bda40 --- /dev/null +++ b/cfg_files/stanford/README.md @@ -0,0 +1,69 @@ +# Stanford pysmurf cfg file index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cfg fileDescription
Frankenpolar Run 29 pysmurf configuration files
experiment_fp29_cc02-02_lbOnlyBay0.cfg + For use with cryostat card C02-02. Configures only 4x 500MHz + bands. To be used with single bay fw versions. Assumes only 1x + LB AMC is installed in bay 0. Configures for backplane timing + (timing master must be installed in slot 2 of the same crate). +
experiment_fp29_cc02-02_hbOnlyBay0.cfg + For use with cryostat card C02-02. Configures only 4x 500MHz + bands. To be used with single bay fw versions. Assumes only 1x + HB AMC is installed in bay 0. Configures for backplane timing + (timing master must be installed in slot 2 of the same crate). +
experiment_fp29_cc02-02_fullBand.cfg + For use with cryostat card C02-02. Configures all eight 500MHz + bands. Configures for external (front-panel) 122.88 MHz + reference. +
Frankenpolar Run 30 pysmurf configuration files
experiment_fp30_srv03_rfsoc.cfg + Test cfg used to take noise data with the RFSoC on cold + resonators. +
experiment_fp30_cc02-03_lbOnlyBay0.cfg + For use with cryostat card C02-03. Configures only 4x 500MHz + bands. To be used with single bay fw versions. Assumes only 1x + LB AMC is installed in bay 0. Configures for backplane timing + (timing master must be installed in slot 2 of the same crate). +
+ diff --git a/cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02.cfg b/cfg_files/stanford/experiment_fp29_cc02-02_fullBand.cfg similarity index 100% rename from cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02.cfg rename to cfg_files/stanford/experiment_fp29_cc02-02_fullBand.cfg diff --git a/cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02_hbOnlyBay0.cfg b/cfg_files/stanford/experiment_fp29_cc02-02_hbOnlyBay0.cfg similarity index 100% rename from cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02_hbOnlyBay0.cfg rename to cfg_files/stanford/experiment_fp29_cc02-02_hbOnlyBay0.cfg diff --git a/cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02_lbOnlyBay0.cfg b/cfg_files/stanford/experiment_fp29_cc02-02_lbOnlyBay0.cfg similarity index 100% rename from cfg_files/stanford/smurf-srv10/experiment_fp29_srv10_dspv3_cc02-02_lbOnlyBay0.cfg rename to cfg_files/stanford/experiment_fp29_cc02-02_lbOnlyBay0.cfg diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_lbOnlyBay0.cfg b/cfg_files/stanford/experiment_fp30_cc02-03_lbOnlyBay0.cfg similarity index 62% rename from cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_lbOnlyBay0.cfg rename to cfg_files/stanford/experiment_fp30_cc02-03_lbOnlyBay0.cfg index f815dbf79..8c3ffffbd 100644 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_lbOnlyBay0.cfg +++ b/cfg_files/stanford/experiment_fp30_cc02-03_lbOnlyBay0.cfg @@ -2,35 +2,54 @@ "epics_root" : "test_epics", "init": { - "bands" : [2,3], "dspEnable": 1, + "band_0" : { + "iq_swap_in" : 0, + "iq_swap_out" : 0, + # Measured for 8234f45 by SWH on 8/1/19 + "refPhaseDelay" : 6, + "refPhaseDelayFine" : 16, + "trigRstDly" : 15, # 0xF + "feedbackEnable": 1, + "feedbackGain" : 256, + "feedbackPolarity" : 1, + "feedbackLimitkHz": 225, + "lmsGain": 6, + "att_uc": 24, + "att_dc": 0, + "amplitude_scale": 12 + }, + + "band_1" : { + "iq_swap_in" : 0, + "iq_swap_out" : 0, + # Measured for 8234f45 by SWH on 8/1/19 + "refPhaseDelay" : 6, + "refPhaseDelayFine" : 19, + "trigRstDly" : 15, # 0xF + "feedbackEnable": 1, + "feedbackGain" : 256, + "feedbackPolarity" : 1, + "feedbackLimitkHz": 225, + "lmsGain": 6, + "att_uc": 24, + "att_dc": 0, + "amplitude_scale": 12 + }, + "band_2" : { "iq_swap_in" : 0, "iq_swap_out" : 0, + # Measured for 8234f45 by SWH on 8/1/19 "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. + "refPhaseDelayFine" : 11, "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, "feedbackEnable": 1, "feedbackGain" : 256, "feedbackPolarity" : 1, - "synthesisScale": 2, "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], + "lmsGain": 6, "att_uc": 24, "att_dc": 0, "amplitude_scale": 12 @@ -39,29 +58,15 @@ "band_3" : { "iq_swap_in" : 0, "iq_swap_out" : 0, + # Measured for 8234f45 by SWH on 8/1/19 "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. + "refPhaseDelayFine" : 16, "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, "feedbackEnable": 1, "feedbackGain" : 256, "feedbackPolarity" : 1, - "synthesisScale": 2, "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], + "lmsGain": 6, "att_uc": 24, "att_dc": 0, "amplitude_scale": 12 @@ -71,21 +76,16 @@ "bad_mask" : { }, -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - "amplifier": { - "hemt_Vg" : 0.570, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 0.12891, + "hemt_Vg" : 0.54, + "bit_to_V_hemt" : 3.8592e-06, + "hemt_Id_offset" : 0.16758, "LNA_Vg" : -0.7575, # 32 if using a C02 cryostat card. Some C01s were # kludged to provide a 50k gate voltage for ASU 50K LNAs # in early testing. For those, use 2. "dac_num_50k" : 32, - "bit_to_V_50k" : 3.88e-6, + "bit_to_V_50k" : 3.8592e-06, "hemt_gate_min_voltage" : -1.0, "hemt_gate_max_voltage" : 1.0 }, @@ -149,21 +149,13 @@ "14" : [29,30] }, -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - "R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, +"bias_line_resistance" : 15800, +"high_low_current_ratio" : 6.08, "high_current_mode_bool": 0, -"all_bias_groups": [3], +"all_bias_groups": [7], "tune_band" : { "n_samples" : 262144, @@ -173,16 +165,27 @@ "freq_min" : -250000000, # For Stanford 5-6ghz 528 box in FP29, with a standard (not # modified for high current) RTM - "fraction_full_scale": 0.495, + "fraction_full_scale": 0.489, + "reset_rate_khz": 4.0, + "delta_freq": { + "0" : 0.02, + "1" : 0.02, + "2" : 0.02, + "3" : 0.02 + }, "lms_freq": { - "2" : 16500, - "3" : 16500 + "0" : 16500, + "1" : 19945, + "2" : 19986, + "3" : 20218 }, # The fraction of each flux ramp cycle above which we start # applying feedback, within each cycle. Must be >0. If >1, # then You want this to be large enough to mask the transient # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { + "feedback_start_frac" : { + "0" : 0.05, + "1" : 0.05, "2" : 0.05, "3" : 0.05 }, @@ -190,27 +193,70 @@ # applying feedback, within each cycle. Must be >0. If >1, # then feedback over the entire cycle (after feedbackStart). "feedback_end_frac" : { + "0" : 0.98, + "1" : 0.98, "2" : 0.98, "3" : 0.98 - }, + }, "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 + "0" : 1e-4, + "1" : 1e-4, + "2" : 1e-4, + "3" : 1e-4 }, "gradient_descent_averages": { - "2" : 10, - "3" : 10 + "0" : 1, + "1" : 1, + "2" : 1, + "3" : 1 }, + "gradient_descent_converge_hz":{ + "0" : 500, + "1" : 500, + "2" : 500, + "3" : 500 + }, + "gradient_descent_step_hz":{ + "0" : 1000, + "1" : 1000, + "2" : 1000, + "3" : 1000 + }, + "gradient_descent_momentum":{ + "0" : 1, + "1" : 1, + "2" : 1, + "3" : 1 + }, + "gradient_descent_beta": { + "0" : 0, + "1" : 0, + "2" : 0, + "3" : 0 + }, + "eta_scan_del_f": { + "0": 5000, + "1": 5000, + "2": 5000, + "3": 5000 + }, + "eta_scan_amplitude":{ + "0" : 12, + "1" : 12, + "2" : 12, + "3" : 12 + }, "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1556941499_tune.npy" + "0" : 1, + "1" : 1, + "2" : 1, + "3" : 1 + } + #"default_tune": "/data/smurf_data/tune/1558666435_tune.npy" }, "flux_ramp" : { "select_ramp" : 1, - "ramp_start_mode" : 0, "num_flux_ramp_counter_bits" : 32 }, @@ -221,9 +267,10 @@ "timing" : { # "ext_ref" : internal oscillator locked to an external # front-panel reference, or unlocked if there is no front - # panel reference. (LmkReg_0x0147 : 0x1A) + # panel reference. (LmkReg_0x0147 : 0x1A). Also sets + # flux_ramp_start_mode=0 # "backplane" : takes timing from timing master through - # backplane. + # backplane. Also sets flux_ramp_start_mode=1. "timing_reference" : "backplane" }, @@ -245,11 +292,12 @@ # versios of the DSPv3 fw. May be different for each band, in # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 + "mask_channel_offset" : 0 }, "default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", +# For remote commanding +#"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", "tune_dir" : "/data/smurf_data/tune", "status_dir" : "/data/smurf_data/status" } diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp30_srv03_rfsoc.cfg b/cfg_files/stanford/experiment_fp30_srv03_rfsoc.cfg similarity index 100% rename from cfg_files/stanford/smurf-srv03/experiment_fp30_srv03_rfsoc.cfg rename to cfg_files/stanford/experiment_fp30_srv03_rfsoc.cfg diff --git a/cfg_files/stanford/fp30_smurf_startup.cfg b/cfg_files/stanford/fp30_smurf_startup.cfg new file mode 100644 index 000000000..8d132eedf --- /dev/null +++ b/cfg_files/stanford/fp30_smurf_startup.cfg @@ -0,0 +1,31 @@ +shelfmanager=shm-smrf-sp01 + +set_crate_fans_to_full=true +# COMTEL max fan level is 100, ASIS is 15, ELMA is 15 +## COMTEL in RF lab +max_fan_level=100 +## ELMA in RF lab +#max_fan_level=15 +## ASIS in RF lab +#max_fan_level=15 + +attach_at_end=true +screenshot_signal_analyzer=false +configure_pysmurf=true +reboot=true +using_timing_master=true +run_half_band_test=false +write_config=false +start_atca_monitor=true +# still not completely parallel. Also doesn't work. +parallel_setup=false +cpwd=$PWD + +pysmurf=/home/cryo/docker/pysmurf/dev + +crate_id=3 +slots_in_configure_order=(4) + +pysmurf_init_script=scratch/shawn/scripts/init_stanford.py + +tmux_session_name=smurf \ No newline at end of file diff --git a/cfg_files/stanford/smurf-srv03/README.md b/cfg_files/stanford/smurf-srv03/README.md deleted file mode 100644 index f03dc20b7..000000000 --- a/cfg_files/stanford/smurf-srv03/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Stanford/smurf-srv03 cfg file index - -| cfg file | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------ | -| [experiment_fp29_srv03_dspv3_cc02-03.cfg](experiment_fp29_srv03_dspv3_cc02-03.cfg) -| Started 6/20/19 by SWH. LB+HB in a C2 carrier. Created just after 6/9/19 NIST CMB+X-ray deployment to continue testing with carrier C2-01. Configures all eight bands over 4-8 GHz. Configures for cryostat card C02-03. Timing from external reference. | -| [experiment_fp29_srv03_dspv3_cc02-03_lbOnlyBay0.cfg](experiment_fp29_srv03_dspv3_cc02-03_lbOnlyBay0.cfg) -| Started 6/21/10 by SWH. For use with LB AMC in bay 0 of any carrier. Configures only bands 0-3. Configures for cryostat card C02-03. Timing from backplane. | \ No newline at end of file diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp28_srv03.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp28_srv03.cfg deleted file mode 100644 index baba9edf3..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp28_srv03.cfg +++ /dev/null @@ -1,149 +0,0 @@ -{ -"epics_root" : "mitch_epics", -"init": { - "bands" : [1,2,3], - "dspEnable": 1, - - "band_1" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [2, 3], - "att_uc": 15, - "att_dc": 0 - }, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 15, - "att_dc": 0 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 15, - "att_dc": 0 - } -}, - -"amplifier": { -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000 -}, - -"constant" : { - "pa_per_phi0" : 0.000009 -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc01-02_lbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc01-02_lbOnlyBay0.cfg deleted file mode 100644 index dc2dd02bb..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc01-02_lbOnlyBay0.cfg +++ /dev/null @@ -1,256 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 1.00546875, - "LNA_Vg" : -0.718, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 2, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C01 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -# Set for C01 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.495, - "lms_freq": { - "2" : 16500, - "3" : 16500 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "2" : 0.05, - "3" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "2" : 0.98, - "3" : 0.98 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1556941499_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # "ext_ref" : internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. (LmkReg_0x0147 : 0x1A) - # "backplane" : takes timing from timing master through - # backplane. - "timing_reference" : "backplane" -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 1, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versios of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_hbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_hbOnlyBay0.cfg deleted file mode 100644 index cb63a5d67..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-02_hbOnlyBay0.cfg +++ /dev/null @@ -1,255 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.570, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 0.12891, - "LNA_Vg" : -0.7575, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 32, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "0" : 0, - "1" : 1, - "2" : 2, - "3" : 3, - "4" : 4, - "5" : 5, - "6" : 6, - "7" : 7, - "8" : 8, - "9" : 9, - "10" : 10, - "11" : 11, - "12" : 12, - "13" : 13, - "14" : 14, - "15" : 15 -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "0" : [1,2], - "1" : [3,4], - "2" : [5,6], - "3" : [7,8], - "4" : [9,10], - "5" : [11,12], - "6" : [13,14], - "7" : [15,16], - "8" : [17,18], - "9" : [19,20], - "10" : [21,22], - "11" : [23,24], - "12" : [25,26], - "13" : [27,28], - "14" : [29,30] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.65, - "lms_freq": { - "2" : 8520, - "3" : 8520 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "2" : 0.05, - "3" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "2" : 0.98, - "3" : 0.98 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1555011900_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # "ext_ref" : internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. (LmkReg_0x0147 : 0x1A) - # "backplane" : takes timing from timing master through - # backplane. - "timing_reference" : "backplane" -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 1, - "data_frames" : 300000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versions of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03.cfg deleted file mode 100644 index 6202bc272..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03.cfg +++ /dev/null @@ -1,426 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "dspEnable": 1, - - "band_0" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 12, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_1" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 12, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 12, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 12, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_4" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_5" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_6" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_7" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"amplifier": { - "hemt_Vg" : 0.570, - "bit_to_V_hemt" : 3.8592e-06, - "hemt_Id_offset" : 0.16758, - "LNA_Vg" : -0.7575, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 32, - "bit_to_V_50k" : 3.8592E-06, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "0" : 0, - "1" : 1, - "2" : 2, - "3" : 3, - "4" : 4, - "5" : 5, - "6" : 6, - "7" : 7, - "8" : 8, - "9" : 9, - "10" : 10, - "11" : 11, - "12" : 12, - "13" : 13, - "14" : 14, - "15" : 15 -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "0" : [1,2], - "1" : [3,4], - "2" : [5,6], - "3" : [7,8], - "4" : [9,10], - "5" : [11,12], - "6" : [13,14], - "7" : [15,16], - "8" : [17,18], - "9" : [19,20], - "10" : [21,22], - "11" : [23,24], - "12" : [25,26], - "13" : [27,28], - "14" : [29,30] -}, - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.495, - "delta_freq": { - "0" : 0.02, - "1" : 0.02, - "2" : 0.02, - "3" : 0.02, - "4" : 0.02, - "5" : 0.02, - "6" : 0.02, - "7" : 0.02 - }, - "lms_freq": { - "0" : 16500, - "1" : 16500, - "2" : 16500, - "3" : 16500, - "4" : 16500, - "5" : 16500, - "6" : 16500, - "7" : 16500 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "0" : 0.05, - "1" : 0.05, - "2" : 0.05, - "3" : 0.05, - "4" : 0.05, - "5" : 0.05, - "6" : 0.05, - "7" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "0" : 0.98, - "1" : 0.98, - "2" : 0.98, - "3" : 0.98, - "4" : 0.98, - "5" : 0.98, - "6" : 0.98, - "7" : 0.98 - }, - "gradient_descent_gain": { - "0" : 1e-5, - "1" : 1e-5, - "2" : 1e-5, - "3" : 1e-5, - "4" : 1e-5, - "5" : 1e-5, - "6" : 1e-5, - "7" : 1e-5 - }, - "gradient_descent_averages": { - "0" : 10, - "1" : 10, - "2" : 10, - "3" : 10, - "4" : 10, - "5" : 10, - "6" : 10, - "7" : 10 - }, - "eta_scan_averages": { - "0" : 10, - "1" : 10, - "2" : 10, - "3" : 10, - "4" : 10, - "5" : 10, - "6" : 10, - "7" : 10 - } - #"default_tune": "/data/smurf_data/tune/1558666435_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # "ext_ref" : internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. (LmkReg_0x0147 : 0x1A). Also sets - # flux_ramp_start_mode=0 - # "backplane" : takes timing from timing master through - # backplane. Also sets flux_ramp_start_mode=1. - "timing_reference" : "ext_ref" -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 1, - "data_frames" : 300000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versios of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 -}, - -"default_data_dir": "/data/smurf_data", -# For remote commanding -#"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03_lbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03_lbOnlyBay0.cfg deleted file mode 100644 index 5d5d23b2a..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_cc02-03_lbOnlyBay0.cfg +++ /dev/null @@ -1,374 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "dspEnable": 1, - - "band_0" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - #https://confluence.slac.stanford.edu/display/SMuRF/0eea5630 - #"refPhaseDelay" : 6, - #"refPhaseDelayFine" : 9, - #"lmsDelay" : 24, - # Measured for 5ee81820 by SWH on 7/11/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 41, - # Measured for 071150b0 by SWH on 7/3/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 38, - # lmsDelay only gets set from the cfg if it's present - # ; otherwise it gets set to 4*refPhaseDelay. It's - # supposed to be 4*refPhaseDelay, but in fw 071150b0, - # refPhaseDelay is 8, and 4*8=32, which exceeds 31, - # which is the maximum value lmsDelay can be set to in - # 071150b0. - #"lmsDelay" : 31, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - # Measured for a406a45 by SWH on 7/19/19 - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 42, - #"lmsDelay" : 31, - # Measured for 081ca90 by SWH on 7/19/19 - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 7, - "lmsDelay" : 24, - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 6, - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_1" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - #https://confluence.slac.stanford.edu/display/SMuRF/0eea5630 - #"refPhaseDelay" : 6, - #"refPhaseDelayFine" : 5, - #"lmsDelay" : 24, - # Measured for 5ee81820 by SWH on 7/11/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 41, - # Measured for 071150b0 by SWH on 7/3/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 39, - # lmsDelay only gets set from the cfg if it's present - # ; otherwise it gets set to 4*refPhaseDelay. It's - # supposed to be 4*refPhaseDelay, but in fw 071150b0, - # refPhaseDelay is 8, and 4*8=32, which exceeds 31, - # which is the maximum value lmsDelay can be set to in - # 071150b0. - #"lmsDelay" : 31, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - # Measured for a406a45 by SWH on 7/19/19 - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 44, - #"lmsDelay" : 31, - # Measured for 081ca90 by SWH on 7/19/19 - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 15, - "lmsDelay" : 24, - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 6, - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - #https://confluence.slac.stanford.edu/display/SMuRF/0eea5630 - #"refPhaseDelay" : 6, - #"refPhaseDelayFine" : 8, - #"lmsDelay" : 24, - # Measured for 5ee81820 by SWH on 7/11/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 44, - # Measured for 071150b0 by SWH on 7/3/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 43, - # lmsDelay only gets set from the cfg if it's present - # ; otherwise it gets set to 4*refPhaseDelay. It's - # supposed to be 4*refPhaseDelay, but in fw 071150b0, - # refPhaseDelay is 8, and 4*8=32, which exceeds 31, - # which is the maximum value lmsDelay can be set to in - # 071150b0. - #"lmsDelay" : 31, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - # Measured for a406a45 by SWH on 7/19/19 - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 49, - #"lmsDelay" : 31, - # Measured for 081ca90 by SWH on 7/19/19 - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 4, - "lmsDelay" : 24, - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 6, - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - #https://confluence.slac.stanford.edu/display/SMuRF/0eea5630 - #"refPhaseDelay" : 6, - #"refPhaseDelayFine" : 10, - #"lmsDelay" : 24, - # Measured for 5ee81820 by SWH on 7/11/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 47, - # Measured for 071150b0 by SWH on 7/3/19 with C02-01 - # carrier + LB AMC C03-A01-03. - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 39, - # lmsDelay only gets set from the cfg if it's present - # ; otherwise it gets set to 4*refPhaseDelay. It's - # supposed to be 4*refPhaseDelay, but in fw 071150b0, - # refPhaseDelay is 8, and 4*8=32, which exceeds 31, - # which is the maximum value lmsDelay can be set to in - # 071150b0. - #"lmsDelay" : 31, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - # Measured for a406a45 by SWH on 7/19/19 - #"refPhaseDelay" : 8, - #"refPhaseDelayFine" : 50, - #"lmsDelay" : 31, - # Measured for 081ca90 by SWH on 7/19/19 - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 17, - "lmsDelay" : 24, - "trigRstDly" : 15, # 0xF - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "feedbackLimitkHz": 225, - "lmsGain": 6, - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"amplifier": { - "hemt_Vg" : 0.570, - "bit_to_V_hemt" : 3.8592e-06, - "hemt_Id_offset" : 0.16758, - "LNA_Vg" : -0.7575, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 32, - "bit_to_V_50k" : 3.8592e-06, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "0" : 0, - "1" : 1, - "2" : 2, - "3" : 3, - "4" : 4, - "5" : 5, - "6" : 6, - "7" : 7, - "8" : 8, - "9" : 9, - "10" : 10, - "11" : 11, - "12" : 12, - "13" : 13, - "14" : 14, - "15" : 15 -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "0" : [1,2], - "1" : [3,4], - "2" : [5,6], - "3" : [7,8], - "4" : [9,10], - "5" : [11,12], - "6" : [13,14], - "7" : [15,16], - "8" : [17,18], - "9" : [19,20], - "10" : [21,22], - "11" : [23,24], - "12" : [25,26], - "13" : [27,28], - "14" : [29,30] -}, - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.489, - "delta_freq": { - "0" : 0.02, - "1" : 0.02, - "2" : 0.02, - "3" : 0.02 - }, - "lms_freq": { - "0" : 16500, - "1" : 19945, - "2" : 19986, - "3" : 20218 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "0" : 0.05, - "1" : 0.05, - "2" : 0.05, - "3" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "0" : 0.98, - "1" : 0.98, - "2" : 0.98, - "3" : 0.98 - }, - "gradient_descent_gain": { - "0" : 1e-5, - "1" : 1e-5, - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "0" : 10, - "1" : 10, - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "0" : 10, - "1" : 10, - "2" : 10, - "3" : 10 - } - #"default_tune": "/data/smurf_data/tune/1558666435_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # "ext_ref" : internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. (LmkReg_0x0147 : 0x1A). Also sets - # flux_ramp_start_mode=0 - # "backplane" : takes timing from timing master through - # backplane. Also sets flux_ramp_start_mode=1. - "timing_reference" : "backplane" -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 1, - "data_frames" : 300000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versios of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : 0 -}, - -"default_data_dir": "/data/smurf_data", -# For remote commanding -#"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_hbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_hbOnlyBay0.cfg deleted file mode 100644 index 17ed40fa4..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_hbOnlyBay0.cfg +++ /dev/null @@ -1,256 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.570, - "bit_to_V_hemt" : 1.92e-6, - # Units=mA - "hemt_Id_offset" : 0.12891, - "LNA_Vg" : -0.7575, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 32, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "0" : 0, - "1" : 1, - "2" : 2, - "3" : 3, - "4" : 4, - "5" : 5, - "6" : 6, - "7" : 7, - "8" : 8, - "9" : 9, - "10" : 10, - "11" : 11, - "12" : 12, - "13" : 13, - "14" : 14, - "15" : 15 -}, - -# Set for C02 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "0" : [1,2], - "1" : [3,4], - "2" : [5,6], - "3" : [7,8], - "4" : [9,10], - "5" : [11,12], - "6" : [13,14], - "7" : [15,16], - "8" : [17,18], - "9" : [19,20], - "10" : [21,22], - "11" : [23,24], - "12" : [25,26], - "13" : [27,28], - "14" : [29,30] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.65, - "lms_freq": { - "2" : 8520, - "3" : 8520 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "2" : 0.05, - "3" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "2" : 0.98, - "3" : 0.98 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1555011900_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # sel_ext_ref = 0: locked to the fiber timing system if - # - # sel_ext_ref = 1: internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. Assumes defaults.yml locks to fiber - # timing system by default (LmkReg_0x0147 : 0x0A) - "sel_ext_ref" : 1 -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versios of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_lbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_lbOnlyBay0.cfg deleted file mode 100644 index 255b6acea..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_dspv3_noExtRef_lbOnlyBay0.cfg +++ /dev/null @@ -1,257 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay" : 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - # Matches system latency for LMS feedback (multiplex - # of 52x 9.6MHz ticks) Adjust to match refPhaseDelay*4 - # (e.g. if refPhaseDelay = 6, lmsDelay = 24). Mitch - # is checking this ; might not be refPhaseDelay*4 - - # need to revisit. - "lmsDelay": 24, - # Adjust trigRstDly such that the ramp resets at the - # flux ramp glitch. Not totally clear at the moment - # what that means. - "trigRstDly" : 15, # 0xF - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 1.00546875, - "LNA_Vg" : -0.718, - # 32 if using a C02 cryostat card. Some C01s were - # kludged to provide a 50k gate voltage for ASU 50K LNAs - # in early testing. For those, use 2. - "dac_num_50k" : 2, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -# Set for C01 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -# Set for C01 cryostat card. See -#https://confluence.slac.stanford.edu/display/SMuRF/Cryostat+board -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - # For Stanford 5-6ghz 528 box in FP29, with a standard (not - # modified for high current) RTM - "fraction_full_scale": 0.495, - "lms_freq": { - "2" : 16500, - "3" : 16500 - }, - # The fraction of each flux ramp cycle above which we start - # applying feedback, within each cycle. Must be >0. If >1, - # then You want this to be large enough to mask the transient - # which occurs after each flux ramp reset. Must be in [0,1). - "feedback_start_frac" : { - "2" : 0.05, - "3" : 0.05 - }, - # The fraction of each flux ramp cycle above which we stop - # applying feedback, within each cycle. Must be >0. If >1, - # then feedback over the entire cycle (after feedbackStart). - "feedback_end_frac" : { - "2" : 0.98, - "3" : 0.98 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1556941499_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"timing" : { - # sel_ext_ref = 0: locked to the fiber timing system if - # - # sel_ext_ref = 1: internal oscillator locked to an external - # front-panel reference, or unlocked if there is no front - # panel reference. Assumes defaults.yml locks to fiber - # timing system by default (LmkReg_0x0147 : 0x0A) - "sel_ext_ref" : 1 -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 1, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20, - # Kludge to account for offset in gcp channel number in early - # versios of the DSPv3 fw. May be different for each band, in - # mitch_4_30 the offset for band 2 is -2. Mitch plans to fix - # in fw, so this should be unnecessary soon. - "mask_channel_offset" : -2 -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef.cfg deleted file mode 100644 index 7656882c4..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef.cfg +++ /dev/null @@ -1,196 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 11 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "bit_to_V_hemt" : 1.92e-6, - "bit_to_V_hemt_offset" : 0, - "LNA_Vg" : -0.718, - "dac_num_50k" : 32, - "bit_to_V_50k" : 3.88e-6 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - "fraction_full_scale": 0.495, - "lms_freq": { - "2" : 16660, - "3" : 19500 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1547959798_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"fs" : 180.37518037518038, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20 - -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_hbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_hbOnlyBay0.cfg deleted file mode 100644 index 1efd797e2..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_hbOnlyBay0.cfg +++ /dev/null @@ -1,198 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 1.00546875, - "LNA_Vg" : -0.718, - "dac_num_50k" : 2, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - "fraction_full_scale": 0.65, - "lms_freq": { - "2" : 8520, - "3" : 8520 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1555011900_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20 - -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_lbOnlyBay0.cfg b/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_lbOnlyBay0.cfg deleted file mode 100644 index c78c47dc6..000000000 --- a/cfg_files/stanford/smurf-srv03/experiment_fp29_srv03_noExtRef_lbOnlyBay0.cfg +++ /dev/null @@ -1,198 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 2, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 24, - "att_dc": 0, - "amplitude_scale": 12 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "bit_to_V_hemt" : 1.92e-6, - "hemt_Id_offset" : 1.00546875, - "LNA_Vg" : -0.718, - "dac_num_50k" : 2, - "bit_to_V_50k" : 3.88e-6, - "hemt_gate_min_voltage" : -1.0, - "hemt_gate_max_voltage" : 1.0 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - "fraction_full_scale": 0.170, - "lms_freq": { - "2" : 16500, - "3" : 16500 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1554415480_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 0, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"fs" : 200.0, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/data/smurf2mce_config/smurf2mce.cfg", - "mask_file" : "/data/smurf2mce_config/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0, - "num_averages" : 20 - -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv04/experiment_fp28_srv04.cfg b/cfg_files/stanford/smurf-srv04/experiment_fp28_srv04.cfg deleted file mode 100644 index 17852adba..000000000 --- a/cfg_files/stanford/smurf-srv04/experiment_fp28_srv04.cfg +++ /dev/null @@ -1,191 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - "bands" : [2,3], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2_teses.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "LNA_Vg" : -0.718 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - "fraction_full_scale": 0.495, - "lms_freq": { - "2" : 16660, - "3" : 19500 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10 - }, - "default_tune": "/data/smurf_data/tune/1547959798_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 1, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"fs" : 180.37518037518038, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/usr/local/controls/Applications/smurf/smurf2mce/current/mcetransmit/smurf2mce.cfg", - "mask_file" : "/usr/local/controls/Applications/smurf/smurf2mce/current/mcetransmit/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0 - -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/cfg_files/stanford/smurf-srv04/experiment_fp29_srv04.cfg b/cfg_files/stanford/smurf-srv04/experiment_fp29_srv04.cfg deleted file mode 100644 index 64d1857d3..000000000 --- a/cfg_files/stanford/smurf-srv04/experiment_fp29_srv04.cfg +++ /dev/null @@ -1,243 +0,0 @@ -{ -"epics_root" : "test_epics", -"init": { - "bands" : [2,3,6,7], - "dspEnable": 1, - - "band_2" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5250, - "data_out_mux" : [6, 7], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_3" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 5750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_6" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 7250, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - }, - - "band_7" : { - "iq_swap_in" : 0, - "iq_swap_out" : 0, - "refPhaseDelay" : 6, - "refPhaseDelayFine" : 0, - "toneScale" : 2, - "analysisScale" : 3, - "feedbackEnable": 1, - "feedbackGain" : 256, - "feedbackPolarity" : 1, - "synthesisScale": 3, - "feedbackLimitkHz": 225, - "lmsGain": 7, - "rfEnable": 1, - "bandCenterMHz": 7750, - "data_out_mux" : [8, 9], - "att_uc": 0, - "att_dc": 0, - "amplitude_scale": 11 - } -}, - -"bad_mask" : { -}, - -"channel_assignment" : { - "band_2" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b2.txt", - "band_3" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b3.txt", - "band_6" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b6.txt", - "band_7" : "/usr/local/controls/Applications/smurf/pysmurf/pysmurf/scratch/shawn/channel_assignment_b7.txt" -}, - -"amplifier": { - "hemt_Vg" : 0.60, - "LNA_Vg" : -0.718 -}, - -"attenuator" : { - "att1" : 0, - "att2" : 1, - "att3" : 2, - "att4" : 3 -}, - -"chip_to_freq" : { - "9" : [4.94150, 5.05], - "10" : [5.05, 5.17550 ], - "11" : [5.20150, 5.28250 ], - "12" : [5.28250, 5.41050 ], - "13" : [5.42050, 5.54550 ], - "14" : [5.55150, 5.67650 ], - "15" : [5.66650, 5.79150 ], - "16" : [5.79050, 5.91550 ] -}, - -"pic_to_bias_group": { - "9" : 8, - "11" : 10, - "13" : 12, - "15" : 14, - "14" : 15, - "12" : 13, - "10" : 11, - "8" : 9, - "7" : 6, - "5" : 4, - "3" : 2, - "1" : 0, - "6" : 7, - "4" : 5, - "2" : 3, - "0" : 1 -}, - -"bias_group_to_pair" : { - "8" : [2,1], - "10": [4,3], - "12": [6,5], - "14": [8,7], - "15": [10,9], - "13": [12,11], - "11": [14,13], - "9": [16,15], - "6": [18,17], - "4": [20,19], - "2": [22,21], - "0": [24,23], - "7": [26,25], - "5": [28,27], - "3": [30,29], - "1": [32,31] -}, - -"band_to_chip" : { - "1" : [1, 2, 3, 4], - "2" : [5, 6, 7, 8], - "3" : [9, 10, 11, 12], - "4" : [13, 14, 15, 16] -}, - - -"R_sh" : 390e-6, -"bias_line_resistance" : 25479, -"high_low_current_ratio" : 12.50, - -"high_current_mode_bool": 0, - -"all_bias_groups": [3], - -"tune_band" : { - "n_samples" : 262144, - "grad_cut" : 0.05, - "amp_cut" : 0.25, - "freq_max" : 250000000, - "freq_min" : -250000000, - "fraction_full_scale": 0.495, - "lms_freq": { - "2" : 16660, - "3" : 19500, - "6" : 0, - "7" : 0 - }, - "gradient_descent_gain": { - "2" : 1e-5, - "3" : 1e-5, - "6" : 1e-5, - "7" : 1e-5 - }, - "gradient_descent_averages": { - "2" : 10, - "3" : 10, - "6" : 10, - "7" : 10 - }, - "eta_scan_averages": { - "2" : 10, - "3" : 10, - "6" : 10, - "7" : 10 - }, - "default_tune": "/data/smurf_data/tune/1547959798_tune.npy" -}, - -"flux_ramp" : { - "select_ramp" : 1, - "ramp_start_mode" : 1, - "num_flux_ramp_counter_bits" : 32 -}, - -"constant" : { - "pA_per_phi0" : 9e6 -}, - -"fs" : 180.37518037518038, - -"smurf_to_mce" : { - "smurf_to_mce_file" : "/usr/local/controls/Applications/smurf/smurf2mce/current/mcetransmit/smurf2mce.cfg", - "mask_file" : "/usr/local/controls/Applications/smurf/smurf2mce/current/mcetransmit/mask.txt", - "receiver_ip" : "tcp://192.168.3.1:3334", - "port_number" : "3334", - "filter_freq" : 63, - "filter_order" : 4, - "filter_gain" : 1.0, - "file_name_extend" : 0, - "data_frames" : 2000000, - "static_mask" : 0 - -}, - -"default_data_dir": "/data/smurf_data", -"smurf_cmd_dir": "/data/smurf_data/smurf_cmd", -"tune_dir" : "/data/smurf_data/tune", -"status_dir" : "/data/smurf_data/status" -} diff --git a/command/__init__.py b/command/__init__.py deleted file mode 100644 index d6bb08793..000000000 --- a/command/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -''' -init for command directory -''' diff --git a/debug/__init__.py b/debug/__init__.py deleted file mode 100644 index 047502118..000000000 --- a/debug/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -''' -init for debug dir -''' diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..69fa449dd --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +_build/ diff --git a/docs/Makefile b/docs/Makefile index 43aa28bd0..161b5978b 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -5,9 +5,8 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = -BUILDDIR = _build SOURCEDIR = . -BUILDDIR = . +BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle deleted file mode 100644 index 47849b226..000000000 Binary files a/docs/_build/doctrees/environment.pickle and /dev/null differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree deleted file mode 100644 index 4c8caa225..000000000 Binary files a/docs/_build/doctrees/index.doctree and /dev/null differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo deleted file mode 100644 index 48faa5f6d..000000000 --- a/docs/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: a8c20b35fe6c25f611b68eb68a9c5b04 -tags: fbb0d17656682115ca4d033fb2f83ba1 diff --git a/docs/_build/html/_sources/index.txt b/docs/_build/html/_sources/index.txt deleted file mode 100644 index 877b7ced3..000000000 --- a/docs/_build/html/_sources/index.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. pysmurf documentation master file, created by - sphinx-quickstart on Tue Feb 19 15:17:07 2019. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to pysmurf's documentation! -=================================== - -Contents: - -.. toctree:: - :maxdepth: 2 - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css deleted file mode 100644 index a04d6545b..000000000 --- a/docs/_build/html/_static/basic.css +++ /dev/null @@ -1,417 +0,0 @@ -/** - * Sphinx stylesheet -- basic theme - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -img { - border: 0; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -/* -- general body styles --------------------------------------------------- */ - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 0; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -/* -- other body styles ----------------------------------------------------- */ - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlight { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.refcount { - color: #060; -} - -.optional { - font-size: 1.3em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - background-color: transparent; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} diff --git a/docs/_build/html/_static/default.css b/docs/_build/html/_static/default.css deleted file mode 100644 index 372574404..000000000 --- a/docs/_build/html/_static/default.css +++ /dev/null @@ -1,230 +0,0 @@ -/** - * Sphinx stylesheet -- default theme - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: sans-serif; - font-size: 100%; - background-color: #11303d; - color: #000; - margin: 0; - padding: 0; -} - -div.document { - background-color: #1c4e63; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 230px; -} - -div.body { - background-color: #ffffff; - color: #000000; - padding: 0 20px 30px 20px; -} - -div.footer { - color: #ffffff; - width: 100%; - padding: 9px 0 9px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #ffffff; - text-decoration: underline; -} - -div.related { - background-color: #133f52; - line-height: 30px; - color: #ffffff; -} - -div.related a { - color: #ffffff; -} - -div.sphinxsidebar { -} - -div.sphinxsidebar h3 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.4em; - font-weight: normal; - margin: 0; - padding: 0; -} - -div.sphinxsidebar h3 a { - color: #ffffff; -} - -div.sphinxsidebar h4 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.3em; - font-weight: normal; - margin: 5px 0 0 0; - padding: 0; -} - -div.sphinxsidebar p { - color: #ffffff; -} - -div.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; -} - -div.sphinxsidebar ul { - margin: 10px; - padding: 0; - color: #ffffff; -} - -div.sphinxsidebar a { - color: #98dbcc; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #355f7c; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -div.body p, div.body dd, div.body li { - text-align: justify; - line-height: 130%; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Trebuchet MS', sans-serif; - background-color: #f2f2f2; - font-weight: normal; - color: #20435c; - border-bottom: 1px solid #ccc; - margin: 20px -20px 10px -20px; - padding: 3px 0 3px 10px; -} - -div.body h1 { margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 160%; } -div.body h3 { font-size: 140%; } -div.body h4 { font-size: 120%; } -div.body h5 { font-size: 110%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #c60f0f; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - background-color: #c60f0f; - color: white; -} - -div.body p, div.body dd, div.body li { - text-align: justify; - line-height: 130%; -} - -div.admonition p.admonition-title + p { - display: inline; -} - -div.admonition p { - margin-bottom: 5px; -} - -div.admonition pre { - margin-bottom: 5px; -} - -div.admonition ul, div.admonition ol { - margin-bottom: 5px; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre { - padding: 5px; - background-color: #eeffcc; - color: #333333; - line-height: 120%; - border: 1px solid #ac9; - border-left: none; - border-right: none; -} - -tt { - background-color: #ecf0f3; - padding: 0 1px 0 1px; - font-size: 0.95em; -} - -.warning tt { - background: #efc2c2; -} - -.note tt { - background: #d6d6d6; -} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js deleted file mode 100644 index 9447678cd..000000000 --- a/docs/_build/html/_static/doctools.js +++ /dev/null @@ -1,232 +0,0 @@ -/// XXX: make it cross browser - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger - */ -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", - "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {} -} - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -} - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s == 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -} - -/** - * small function to check if an array contains - * a given item. - */ -jQuery.contains = function(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == item) - return true; - } - return false; -} - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node) { - if (node.nodeType == 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { - var span = document.createElement("span"); - span.className = className; - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this) - }); - } - } - return this.each(function() { - highlight(this); - }); -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initModIndex(); - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can savely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated == 'undefined') - return string; - return (typeof translated == 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated == 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlight'); - }); - }, 10); - $('') - .appendTo($('.sidebar .this-page-menu')); - } - }, - - /** - * init the modindex toggle buttons - */ - initModIndex : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - console.log($('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_MODINDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); - $('span.highlight').removeClass('highlight'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this == '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/docs/_build/html/_static/jquery.js b/docs/_build/html/_static/jquery.js deleted file mode 100644 index 82b98e1d7..000000000 --- a/docs/_build/html/_static/jquery.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * jQuery 1.2.6 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ - * $Rev: 5685 $ - */ -(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else -return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else -return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else -selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else -this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else -return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else -jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else -jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else -ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else -while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else -for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else -xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else -jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else -for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else -s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else -e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css deleted file mode 100644 index 1f2d2b618..000000000 --- a/docs/_build/html/_static/pygments.css +++ /dev/null @@ -1,61 +0,0 @@ -.hll { background-color: #ffffcc } -.c { color: #408090; font-style: italic } /* Comment */ -.err { border: 1px solid #FF0000 } /* Error */ -.k { color: #007020; font-weight: bold } /* Keyword */ -.o { color: #666666 } /* Operator */ -.cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.cp { color: #007020 } /* Comment.Preproc */ -.c1 { color: #408090; font-style: italic } /* Comment.Single */ -.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.gd { color: #A00000 } /* Generic.Deleted */ -.ge { font-style: italic } /* Generic.Emph */ -.gr { color: #FF0000 } /* Generic.Error */ -.gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.gi { color: #00A000 } /* Generic.Inserted */ -.go { color: #303030 } /* Generic.Output */ -.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.gs { font-weight: bold } /* Generic.Strong */ -.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.gt { color: #0040D0 } /* Generic.Traceback */ -.kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.kp { color: #007020 } /* Keyword.Pseudo */ -.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.kt { color: #902000 } /* Keyword.Type */ -.m { color: #208050 } /* Literal.Number */ -.s { color: #4070a0 } /* Literal.String */ -.na { color: #4070a0 } /* Name.Attribute */ -.nb { color: #007020 } /* Name.Builtin */ -.nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.no { color: #60add5 } /* Name.Constant */ -.nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.ne { color: #007020 } /* Name.Exception */ -.nf { color: #06287e } /* Name.Function */ -.nl { color: #002070; font-weight: bold } /* Name.Label */ -.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.nt { color: #062873; font-weight: bold } /* Name.Tag */ -.nv { color: #bb60d5 } /* Name.Variable */ -.ow { color: #007020; font-weight: bold } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #208050 } /* Literal.Number.Float */ -.mh { color: #208050 } /* Literal.Number.Hex */ -.mi { color: #208050 } /* Literal.Number.Integer */ -.mo { color: #208050 } /* Literal.Number.Oct */ -.sb { color: #4070a0 } /* Literal.String.Backtick */ -.sc { color: #4070a0 } /* Literal.String.Char */ -.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.s2 { color: #4070a0 } /* Literal.String.Double */ -.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.sh { color: #4070a0 } /* Literal.String.Heredoc */ -.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.sx { color: #c65d09 } /* Literal.String.Other */ -.sr { color: #235388 } /* Literal.String.Regex */ -.s1 { color: #4070a0 } /* Literal.String.Single */ -.ss { color: #517918 } /* Literal.String.Symbol */ -.bp { color: #007020 } /* Name.Builtin.Pseudo */ -.vc { color: #bb60d5 } /* Name.Variable.Class */ -.vg { color: #bb60d5 } /* Name.Variable.Global */ -.vi { color: #bb60d5 } /* Name.Variable.Instance */ -.il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js deleted file mode 100644 index f679a7544..000000000 --- a/docs/_build/html/_static/searchtools.js +++ /dev/null @@ -1,471 +0,0 @@ -/** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words, hlwords is the list of normal, unstemmed - * words. the first one is used to find the occurance, the - * latter for highlighting it. - */ - -jQuery.makeSearchSummary = function(text, keywords, hlwords) { - var textLower = text.toLowerCase(); - var start = 0; - $.each(keywords, function() { - var i = textLower.indexOf(this.toLowerCase()); - if (i > -1) - start = i; - }); - start = Math.max(start - 120, 0); - var excerpt = ((start > 0) ? '...' : '') + - $.trim(text.substr(start, 240)) + - ((start + 240 - text.length) ? '...' : ''); - var rv = $('
').text(excerpt); - $.each(hlwords, function() { - rv = rv.highlightText(this, 'highlight'); - }); - return rv; -} - -/** - * Porter Stemmer - */ -var PorterStemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - -/** - * Search Module - */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } - }, - - /** - * Sets the index - */ - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); - } - }, - - hasIndex : function() { - return this._index !== null; - }, - - deferQuery : function(query) { - this._queued_query = query; - }, - - stopPulse : function() { - this._pulse_status = 0; - }, - - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (var i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something - */ - performSearch : function(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 = $('