diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000000..69703cad06 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,4 @@ +# Migration commits for linting, formatting +a008125e8203ae7245af8af945846ae54e0d51c4 +7d9f5008ae77a7ded8c721e952f958e56c4174f5 +977964573e4260c096d6f74ec908da7d810f1e80 diff --git a/.github/codecov.yml b/.github/codecov.yml index 93b33a1713..9b3ef12bf5 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -16,4 +16,4 @@ coverage: # extension: # https://github.com/codecov/browser-extension target: auto - threshold: 1% \ No newline at end of file + threshold: 1% diff --git a/.github/dependabot.yml b/.github/dependabot.yml index fd49e1c275..c5c71c97c6 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,4 +5,4 @@ updates: schedule: interval: daily time: "09:00" - open-pull-requests-limit: 10 \ No newline at end of file + open-pull-requests-limit: 10 diff --git a/.github/workflows/dev_tests.yaml b/.github/workflows/dev_tests.yaml new file mode 100644 index 0000000000..17edb9c67f --- /dev/null +++ b/.github/workflows/dev_tests.yaml @@ -0,0 +1,48 @@ +name: Run development tests + +on: + pull_request: + push: + workflow_dispatch: + schedule: + # Run every Sunday at 03:53 UTC + - cron: 53 3 * * 0 + +jobs: + dev_tests: + runs-on: "${{ matrix.os }}" + strategy: + matrix: + python-version: [ + "3.11", + "3.12", + "3.13", + ] + + os: + - ubuntu-latest + - macos-latest + + steps: + - uses: actions/checkout@v4 + + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + channels: conda-forge + conda-remove-defaults: true + miniforge-version: latest + + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: | + 3.11 + 3.12 + 3.13 + + + - name: Run dev tests + run: | + python -m pip install nox + nox -s run_dev_tests -- -vv diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..52350e589c --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,43 @@ +# Linting and format-checking workflow for the repository. +# +# Behavior in this file, other than setup, is controlled in the file +# .pre-commit-config.yaml in the top directory of the repository. +# +# Any automations should be added to that file. This check runs over the entire +# repository, not just changes. +name: Lint repository + +on: + pull_request: + push: + workflow_dispatch: + schedule: + # Run every Sunday at 03:53 UTC + - cron: 53 3 * * 0 + +jobs: + lint: + runs-on: "${{ matrix.os }}" + strategy: + matrix: + python-version: ["3.12"] + os: + - ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + + - name: Install packages + shell: bash -l {0} + run: python -m pip install nox + + - name: Run pre-commit via nox + shell: bash -l {0} + run: | + nox -s lint diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 84eeed0039..453e8ef24b 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -9,7 +9,7 @@ on: - cron: 53 3 * * 0 jobs: - tests: + unit_tests: runs-on: ubuntu-latest strategy: matrix: diff --git a/.jenkins/Jenkinsfile_conda b/.jenkins/Jenkinsfile_conda index 59acb0b4d3..bb6743d2de 100644 --- a/.jenkins/Jenkinsfile_conda +++ b/.jenkins/Jenkinsfile_conda @@ -148,4 +148,3 @@ pipeline { } } } - diff --git a/.jenkins/scripts/setup_dirs.sh b/.jenkins/scripts/setup_dirs.sh index bd5e7460a1..7aabc432c8 100755 --- a/.jenkins/scripts/setup_dirs.sh +++ b/.jenkins/scripts/setup_dirs.sh @@ -17,4 +17,3 @@ if [[ -n "${DRAGONS_TEST_OUT-}" ]]; then else echo "DRAGONS_TEST_OUT is not set, so not deleting it" fi - diff --git a/.jenkins/scripts/update_files_permissions.sh b/.jenkins/scripts/update_files_permissions.sh index ebade41477..396101f848 100755 --- a/.jenkins/scripts/update_files_permissions.sh +++ b/.jenkins/scripts/update_files_permissions.sh @@ -8,4 +8,3 @@ chmod -Rv 775 $DRAGONS_TEST_INPUTS || echo 1 chmod -Rv 775 $DRAGONS_TEST_OUTPUTS || echo 1 chmod -Rv 775 $DRAGONS_TEST_REFS || echo 1 - diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..6be007f5bd --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,68 @@ +# pre-commit configuration for DRAGONS +# +# Please follow these guidelines: +# +# 1) All linting behavior can & should be defined in this file. For example, +# that includes: +# +# + Formatting +# + Syntax/type checks +# + Commit protections/standards +# +# 2) Do not include any tests involving the execution of this software, under +# any circumstances. +# +# 3) This should be a superset of the NOIRLab Python Standard, which can be +# found here: +# +# https://github.com/teald/python-standard-template/blob/main/.pre-commit-config.yaml +default_stages: [pre-commit] + +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-yaml + - id: check-json + - id: check-toml + - id: check-docstring-first + exclude: "archived/" + - id: check-case-conflict + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-symlinks + - id: check-vcs-permalinks + - id: forbid-submodules + +- repo: https://github.com/executablebooks/mdformat + rev: 0.7.18 # Use the ref you want to point at + hooks: + - id: mdformat + # Optionally add plugins + additional_dependencies: + - mdformat-gfm + - mdformat-black + args: ['--wrap=80'] + +# Below is the formatter (to be turned on after pyproject.toml update) +# # Mirror uses compiled black, so faster. +# - repo: https://github.com/psf/black-pre-commit-mirror +# rev: 24.8.0 +# hooks: +# - id: black +# # It is recommended to specify the latest version of Python +# # supported by your project here, or alternatively use +# # pre-commit's default_language_version, see +# # https://pre-commit.com/#top_level-default_language_version +# language_version: python3.12 +# exclude: "archived/" + + +# Below is linter (to be turned on after pyproject.toml update) +# - repo: https://github.com/astral-sh/ruff-pre-commit +# # Ruff version. +# rev: v0.8.3 +# hooks: +# # Run the linter. +# - id: ruff +# exclude: "archived/" diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 2b9e8a3620..2094e2bf54 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/LICENSE b/LICENSE index 8b7e96aaf0..9de1b5ffac 100644 --- a/LICENSE +++ b/LICENSE @@ -31,4 +31,3 @@ 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. - diff --git a/README.md b/README.md index f624a8bbf2..9d5cfcb84e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ - - @@ -11,18 +9,19 @@
# Current Status -**The stable version is v3.2.2.** +**The stable version is v3.2.2.** -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13821517.svg)](https://doi.org/10.5281/zenodo.13821517) DRAGONS is distributed as a conda package, *dragons*, and it is -included in the conda *gemini* stack. +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13821517.svg)](https://doi.org/10.5281/zenodo.13821517) +DRAGONS is distributed as a conda package, *dragons*, and it is included in the +conda *gemini* stack. Version 3.2 is recommend for the reduction of **imaging** data from Gemini's current facility instruments: GMOS, NIRI, Flamingos-2, and GSAOI, for the reduction of GMOS longslit spectroscopy data, and the reduction of GHOST data. -To reduce other types of Gemini spectroscopy data, please continue to use -the [Gemini IRAF package](https://www.gemini.edu/observing/phase-iii/reducing-data/gemini-iraf-data-reduction-software). +To reduce other types of Gemini spectroscopy data, please continue to use the +[Gemini IRAF package](https://www.gemini.edu/observing/phase-iii/reducing-data/gemini-iraf-data-reduction-software). To install DRAGONS: @@ -37,40 +36,40 @@ $ conda config --add channels conda-forge $ conda config --add channels http://astroconda.gemini.edu/public ``` +A list of changes since 3.1 can be found in the +[Change Logs](https://dragons.readthedocs.io/en/v3.2.0/changes.html). -A list of changes since 3.1 can be found in the [Change Logs](https://dragons.readthedocs.io/en/v3.2.0/changes.html). +______________________________________________________________________ ---- # What is DRAGONS -DRAGONS is a platform for the reduction and processing of astronomical data. -The DRAGONS meta-package includes an infrastructure for automation of the -processes and algorithms for processing of astronomical data, with focus on the -reduction of Gemini data. +DRAGONS is a platform for the reduction and processing of astronomical data. The +DRAGONS meta-package includes an infrastructure for automation of the processes +and algorithms for processing of astronomical data, with focus on the reduction +of Gemini data. ---- +______________________________________________________________________ # Documentation + Documentation on DRAGONS v3.2 is available on "readthedocs" at: -* https://dragons.readthedocs.io/en/v3.2.2/ +- https://dragons.readthedocs.io/en/v3.2.2/ There your will find manuals for Astrodata and the Recipe System, and hands-on tutorials on reducing Gemini imaging data with DRAGONS. -Gemini users with imaging data to reduce should pick the tutorial discussing -the reduction of data from the appropriate instrument. +Gemini users with imaging data to reduce should pick the tutorial discussing the +reduction of data from the appropriate instrument. -Software developers should start with the Astrodata and Recipe System -manuals. +Software developers should start with the Astrodata and Recipe System manuals. ---- +______________________________________________________________________ # Setting up a development environment -To run checkouts, first set up a development conda environment. This is what -we are using at this time for the `master` branch and the `release/3.2.x` -branches. +To run checkouts, first set up a development conda environment. This is what we +are using at this time for the `master` branch and the `release/3.2.x` branches. ``` $ conda create -n dgdev3.10_20240401 python=3.10 astropy=6 astroquery matplotlib numpy psutil pytest python-dateutil requests scikit-image scipy sextractor sqlalchemy ds9 gwcs specutils sphinx sphinx_rtd_theme bokeh holoviews cython future astroscrappy=1.1 fitsverify imexam @@ -78,8 +77,8 @@ $ conda activate dgdev3.10_20240401 $ pip install git+https://github.com/GeminiDRSoftware/GeminiObsDB.git@release/1.0.x $ pip install git+https://github.com/GeminiDRSoftware/GeminiCalMgr.git@release/1.1.x ``` -Dependencies change all the time and can break the development environment -or cause problems when conda tries to find a solution for the dependencies. -This not guaranteed to work flawlessly, you might have to adjust version -requirements. +Dependencies change all the time and can break the development environment or +cause problems when conda tries to find a solution for the dependencies. This +not guaranteed to work flawlessly, you might have to adjust version +requirements. diff --git a/old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py b/archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py similarity index 99% rename from old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py rename to archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py index ea26cec277..32bfe87dd3 100644 --- a/old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py +++ b/archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/parameters_GEMINI.py @@ -86,7 +86,7 @@ "default" : 0.067, "type" : "float", "recipeOverride": True, - "userOverride" : True, + "userOverride" : True, "uiLevel" : "UIBASIC", }, "source":{ # gmos catalog is combination of sdss9, vstatlas and apass7 @@ -378,7 +378,7 @@ "default" : None, "type" : "float", "recipeOverride": True, - "userOverride" : True, + "userOverride" : True, "uiLevel" : "UIBASIC", }, "mask":{ @@ -424,7 +424,7 @@ "uiLevel" : "UIBASIC", }, }, - "display":{ + "display":{ "extname":{ "default" : "SCI", "type" : "str", @@ -725,7 +725,7 @@ "recipeOverride": True, "userOverride" : True, "uiLevel" : "UIBASIC", - }, + }, "nhigh":{ "default" : 1, "type" : "int", @@ -769,7 +769,7 @@ "recipeOverride": True, "userOverride" : True, "uiLevel" : "UIBASIC", - }, + }, "nhigh":{ "default" : 1, "type" : "int", @@ -816,7 +816,7 @@ "userOverride" : True, "uiLevel" : "UIBASIC", }, - }, + }, "storeProcessedBias":{ "suffix":{ "default" : "_bias", @@ -825,7 +825,7 @@ "userOverride" : True, "uiLevel" : "UIBASIC", }, - }, + }, "storeProcessedDark":{ "suffix":{ "default" : "_dark", @@ -834,7 +834,7 @@ "userOverride" : True, "uiLevel" : "UIBASIC", }, - }, + }, "storeProcessedFlat":{ "suffix":{ "default" : "_flat", @@ -843,7 +843,7 @@ "userOverride" : True, "uiLevel" : "UIBASIC", }, - }, + }, "storeProcessedStandard":{ "suffix":{ "default" : "_standard", @@ -852,7 +852,7 @@ "userOverride" : True, "uiLevel" : "UIBASIC", }, - }, + }, "storeProcessedSlitIllum":{ "suffix":{ "default" : "_slitillum", @@ -895,7 +895,7 @@ "recipeOverride": True, "userOverride" : True, "uiLevel" : "UIBASIC", - }, + }, }, "writeOutputs":{ "suffix":{ diff --git a/old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py b/archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py similarity index 94% rename from old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py rename to archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py index 082329b293..f2b28cc784 100644 --- a/old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py +++ b/archived/old_astrodata_Gemini/RECIPES_Gemini/primitives/primitives_GEMINI.py @@ -31,7 +31,7 @@ class GEMINIPrimitives(BookkeepingPrimitives,CalibrationPrimitives, above, 'GENERALPrimitives'. """ astrotype = "GEMINI" - + def init(self, rc): BookkeepingPrimitives.init(self, rc) CalibrationPrimitives.init(self, rc) @@ -46,7 +46,7 @@ def init(self, rc): StandardizePrimitives.init(self, rc) return rc init.pt_hide = True - + def standardizeGeminiHeaders(self, rc): """ This primitive is used to make the changes and additions to the @@ -54,90 +54,90 @@ def standardizeGeminiHeaders(self, rc): """ # Instantiate the log log = logutils.get_logger(__name__) - + # Log the standard "starting primitive" debug message log.debug(gt.log_message("primitive", "standardizeGeminiHeaders", "starting")) - + # Define the keyword to be used for the time stamp for this primitive timestamp_key = self.timestamp_keys["standardizeGeminiHeaders"] - + # Initialize the list of output AstroData objects adoutput_list = [] - + # Loop over each input AstroData object in the input list for ad in rc.get_inputs_as_astrodata(): - + # Check whether the standardizeGeminiHeaders primitive has been run # previously if ad.phu_get_key_value(timestamp_key): log.warning("No changes will be made to %s, since it has " "already been processed by " "standardizeGeminiHeaders" % ad.filename) - + # Append the input AstroData object to the list of output # AstroData objects without further processing adoutput_list.append(ad) continue - + # Standardize the headers of the input AstroData object. Update the # keywords in the headers that are common to all Gemini data. log.status("Updating keywords that are common to all Gemini data") - + # Original name ad.store_original_name() - + # Number of science extensions gt.update_key(adinput=ad, keyword="NSCIEXT", value=ad.count_exts("SCI"), comment=None, extname="PHU", keyword_comments=self.keyword_comments) - + # Number of extensions - gt.update_key(adinput=ad, keyword="NEXTEND", value=len(ad), comment=None, + gt.update_key(adinput=ad, keyword="NEXTEND", value=len(ad), comment=None, extname="PHU", keyword_comments=self.keyword_comments) - + # Physical units (assuming raw data has units of ADU) gt.update_key(adinput=ad, keyword="BUNIT", value="adu", comment=None, extname="SCI", keyword_comments=self.keyword_comments) - + # Add the appropriate time stamps to the PHU gt.mark_history(adinput=ad, primname=self.myself(), keyword=timestamp_key) - + # Change the filename - ad.filename = gt.filename_updater(adinput=ad, suffix=rc["suffix"], + ad.filename = gt.filename_updater(adinput=ad, suffix=rc["suffix"], strip=True) - + # Append the output AstroData object to the list of output - # AstroData objects + # AstroData objects adoutput_list.append(ad) - + # Report the list of output AstroData objects to the reduction context rc.report_output(adoutput_list) - + yield rc def mosaicADdetectors(self,rc): # Uses python MosaicAD script """ This primitive will mosaic the SCI frames of the input images, along with the VAR and DQ frames if they exist. - + :param tile: tile images instead of mosaic :type tile: Python boolean (True/False), default is False - + """ log = logutils.get_logger(__name__) # Log the standard "starting primitive" debug message log.debug(gt.log_message("primitive", "mosaicADdetectors", "starting")) - + # Define the keyword to be used for the time stamp for this primitive timestamp_key = self.timestamp_keys["mosaicADdetectors"] # Initialize the list of output AstroData objects adoutput_list = [] - + # Loop over each input AstroData object in the input list for ad in rc.get_inputs_as_astrodata(): - + # Validate Data #if (ad.phu_get_key_value('GPREPARE')==None) and \ # (ad.phu_get_key_value('PREPARE')==None): @@ -153,7 +153,7 @@ def mosaicADdetectors(self,rc): # Uses python MosaicAD script # AstroData objects without further processing adoutput_list.append(ad) continue - + # If the input AstroData object only has one extension, there is no # need to mosaic the detectors if ad.count_exts("SCI") == 1: @@ -163,10 +163,10 @@ def mosaicADdetectors(self,rc): # Uses python MosaicAD script # AstroData objects without further processing adoutput_list.append(ad) continue - + # Get the necessary parameters from the RC tile = rc["tile"] - + log.stdinfo("Mosaicking %s ..."%ad.filename) log.stdinfo("MosaicAD: Using tile: %s ..."%tile) #t1 = time.time() @@ -177,10 +177,10 @@ def mosaicADdetectors(self,rc): # Uses python MosaicAD script adout = mo.as_astrodata(tile=tile) #t2 = time.time() #print '%s took %0.3f ms' % ('as_astrodata', (t2-t1)*1000.0) - + # Verify mosaicAD was actually run on the file # then log file names of successfully reduced files - if adout.phu_get_key_value("MOSAIC"): + if adout.phu_get_key_value("MOSAIC"): log.fullinfo("File "+adout.filename+\ " was successfully mosaicked") @@ -190,23 +190,23 @@ def mosaicADdetectors(self,rc): # Uses python MosaicAD script # Change the filename adout.filename = gt.filename_updater( adinput=ad, suffix=rc["suffix"], strip=True) - + # Append the output AstroData object to the list # of output AstroData objects adoutput_list.append(adout) - + # Report the list of output AstroData objects to the reduction # context rc.report_output(adoutput_list) - + yield rc - + def traceFootprints(self, rc): - + """ This primitive will create and append a 'TRACEFP' Bintable HDU to the - AD object. The content of this HDU is the footprints information + AD object. The content of this HDU is the footprints information from the espectroscopic flat in the SCI array. :param logLevel: Verbosity setting for log messages to the screen. @@ -216,7 +216,7 @@ def traceFootprints(self, rc): """ # Instantiate the log log = logutils.get_logger(__name__) - + # Log the standard "starting primitive" debug message log.debug(gt.log_message("primitive", "", "starting")) @@ -240,13 +240,13 @@ def traceFootprints(self, rc): trace_threshold=rc["trace_threshold"]) except: log.warning("Error in traceFootprints with file: %s"%ad.filename) - + # Change the filename - adout.filename = gt.filename_updater(adinput=ad, + adout.filename = gt.filename_updater(adinput=ad, suffix=rc["suffix"], strip=True) - # Append the output AstroData object to the list of output + # Append the output AstroData object to the list of output # AstroData objects. adoutput_list.append(adout) @@ -258,7 +258,7 @@ def traceFootprints(self, rc): def cutFootprints(self, rc): - + """ This primitive will create and append multiple HDU to the output AD object. Each HDU correspond to a rectangular cut containing a @@ -283,7 +283,7 @@ def cutFootprints(self, rc): # Loop over each input AstroData object in the input list for ad in rc.get_inputs_as_astrodata(): # Call the user level function - + # Check that the input ad has the TRACEFP extension, # otherwise, create it. if ad['TRACEFP'] == None: @@ -296,14 +296,14 @@ def cutFootprints(self, rc): log.error("Error in cut_slits with file: %s"%ad.filename) # DO NOT add this input ad to the adoutput_lis continue - - + + # Change the filename - adout.filename = gt.filename_updater(adinput=ad, + adout.filename = gt.filename_updater(adinput=ad, suffix=rc["suffix"], strip=True) - # Append the output AstroData object to the list of output + # Append the output AstroData object to the list of output # AstroData objects. adoutput_list.append(adout) @@ -317,7 +317,7 @@ def attachWavelengthSolution(self,rc): # Instantiate the log log = logutils.get_logger(__name__) - + # Define the keyword to be used for the time stamp timestamp_key = self.timestamp_keys["attachWavelengthSolution"] @@ -346,7 +346,7 @@ def attachWavelengthSolution(self,rc): arc = AstroData(arc) tmp_list.append(arc) arc_list = tmp_list - + arc_dict = gt.make_dict(key_list=adinput, value_list=arc_list) for ad in adinput: @@ -354,8 +354,8 @@ def attachWavelengthSolution(self,rc): arc = arc_dict[ad] else: arc = rc.get_cal(ad, "processed_arc") - - # Take care of the case where there was no arc + + # Take care of the case where there was no arc if arc is None: log.warning("Could not find an appropriate arc for %s" \ % (ad.filename)) @@ -377,8 +377,8 @@ def attachWavelengthSolution(self,rc): gt.mark_history(adinput=ad, primname=self.myself(), keyword=timestamp_key) # Change the filename - ad.filename = gt.filename_updater(adinput=ad, - suffix=rc["suffix"], + ad.filename = gt.filename_updater(adinput=ad, + suffix=rc["suffix"], strip=True) adoutput_list.append(ad) else: @@ -388,6 +388,5 @@ def attachWavelengthSolution(self,rc): # Report the list of output AstroData objects to the reduction # context rc.report_output(adoutput_list) - - yield rc + yield rc diff --git a/old_other/astrodata/tests/__init__.py b/archived/old_other/astrodata/tests/__init__.py similarity index 100% rename from old_other/astrodata/tests/__init__.py rename to archived/old_other/astrodata/tests/__init__.py diff --git a/old_other/astrodata/tests/test_AstroDataAPI.py b/archived/old_other/astrodata/tests/test_AstroDataAPI.py similarity index 98% rename from old_other/astrodata/tests/test_AstroDataAPI.py rename to archived/old_other/astrodata/tests/test_AstroDataAPI.py index 894a38eb01..a34d73712b 100644 --- a/old_other/astrodata/tests/test_AstroDataAPI.py +++ b/archived/old_other/astrodata/tests/test_AstroDataAPI.py @@ -8,7 +8,7 @@ __version__ = '$Revision$'[11:-2] __version_date__ = '$Date$'[7:-2] # ------------------------------------------------------------------------------ -""" Initial AstroData API tests. +""" Initial AstroData API tests. To run theses tests w/ pytest: @@ -39,7 +39,7 @@ if GEM0 is None: for path in sys.path: if 'gemini_python' in path: - GEM1 = os.path.join(path.split('gemini_python')[0], + GEM1 = os.path.join(path.split('gemini_python')[0], 'gemini_python', 'test_data') break @@ -80,7 +80,7 @@ # ==================================== tests ================================== xfail = pytest.mark.xfail # ============================================================================== -# Constructor +# Constructor def test_constructor_0(): """ Good filename """ assert AstroData(dataset=TESTFILE) @@ -104,7 +104,7 @@ def test_constructor_4(): """ dataset as bad URL """ with pytest.raises(AstroDataError): assert AstroData(dataset=TESTURL) - + def test_constructor_5(): """ HDUList """ assert AstroData(dataset=pfob) @@ -371,7 +371,7 @@ def test_method_append_3(): ad = AstroData(TESTFILE) initial_len = len(ad) ad.append(moredata=pfob, auto_number=True) - assert len(ad) == initial_len + len(pfob) - 1 + assert len(ad) == initial_len + len(pfob) - 1 def test_method_append_4(): ad = AstroData(TESTFILE) @@ -383,7 +383,7 @@ def test_method_append_5(): ad = AstroData(TESTFILE) ad.append(moredata=hdu1, auto_number=True) assert ad.hdulist[-1] == hdu1 - + def test_method_append_6(): ad = AstroData(TESTFILE) initial_len = len(ad) @@ -568,7 +568,7 @@ def test_attr_types_1(): def test_attr_types_2(): ad = AstroData(TESTFILE) - assert KNOWNTYPE in ad.types + assert KNOWNTYPE in ad.types def test_attr_types_3(): ad = AstroData(TESTFILE) @@ -675,13 +675,13 @@ def test_method_ext_index_3(): assert ad.ext_index(('SCI',3)) == 2 # rename_ext() -def test_method_rename_ext_1(): # Raise on multi-ext +def test_method_rename_ext_1(): # Raise on multi-ext ad = AstroData(TESTFILE) with pytest.raises(SingleHDUMemberExcept): ad.rename_ext("SCI", ver=99) def test_method_rename_ext_2(): - ad = AstroData(TESTFILE) + ad = AstroData(TESTFILE) with pytest.raises(SingleHDUMemberExcept): ad.rename_ext("FOO") @@ -707,7 +707,7 @@ def test_method_extname_1(): assert isinstance(ad.extname(), str) def test_method_extname_2(): - ad = AstroData(TESTFILE2) + ad = AstroData(TESTFILE2) assert ad.extname() == 'SCI' def test_method_extname_3(): @@ -721,7 +721,7 @@ def test_method_extver_1(): assert isinstance(ad.extver(), int) def test_method_extver_2(): - ad = AstroData(TESTFILE2) + ad = AstroData(TESTFILE2) assert ad.extver() == 1 def test_method_extver_3(): @@ -753,7 +753,7 @@ def test_method_info_3(): ad.info(oid=True) sys.stdout = old_stdout assert isinstance(mystdout.getvalue(), str) - + def test_method_info_4(): old_stdout = sys.stdout sys.stdout = mystdout = StringIO() diff --git a/astrodata/.readthedocs.yaml b/astrodata/.readthedocs.yaml index e80232f0c8..df5b793a92 100644 --- a/astrodata/.readthedocs.yaml +++ b/astrodata/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt -# - requirements: docs/requirements.txt \ No newline at end of file +# - requirements: docs/requirements.txt diff --git a/astrodata/doc/.readthedocs.yaml b/astrodata/doc/.readthedocs.yaml index 02f76b790d..fc746292c7 100644 --- a/astrodata/doc/.readthedocs.yaml +++ b/astrodata/doc/.readthedocs.yaml @@ -29,4 +29,4 @@ python: - requirements: requirements.txt - requirements: doc/requirements.txt - method: pip - path: . \ No newline at end of file + path: . diff --git a/astrodata/doc/_static/rtd_theme_overrides.css b/astrodata/doc/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/astrodata/doc/_static/rtd_theme_overrides.css +++ b/astrodata/doc/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/astrodata/doc/_static/rtd_theme_overrides_references.css b/astrodata/doc/_static/rtd_theme_overrides_references.css index 785c691ebf..23660678c6 100644 --- a/astrodata/doc/_static/rtd_theme_overrides_references.css +++ b/astrodata/doc/_static/rtd_theme_overrides_references.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/astrodata/doc/conf.py b/astrodata/doc/conf.py index 1f70f11f4d..834bd84542 100644 --- a/astrodata/doc/conf.py +++ b/astrodata/doc/conf.py @@ -462,4 +462,3 @@ def setup(app): """.format(v = rtdurl) - diff --git a/astrodata/doc/progmanual/tags.rst b/astrodata/doc/progmanual/tags.rst index 01a2c82b5d..58bef8466d 100644 --- a/astrodata/doc/progmanual/tags.rst +++ b/astrodata/doc/progmanual/tags.rst @@ -156,5 +156,5 @@ and starts iterating over the ``TagSet`` list. 4. Finally, neither ``GCAL_IR_OFF`` nor ``LAMPOFF`` are in ``blocked``, and ``PROCESSED`` is not in ``tags``, meaning that we can add this tag set to the final one. - + Our result will look something like: ``{'BIAS', 'CAL', 'GMOS', 'GCAL_IR_OFF', 'LAMPOFF'}`` diff --git a/doc/DRAGONS/_static/css/custom_code.css b/doc/DRAGONS/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/doc/DRAGONS/_static/css/custom_code.css +++ b/doc/DRAGONS/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/doc/DRAGONS/_static/fonts.css b/doc/DRAGONS/_static/fonts.css index ea822553c8..562c34e947 100644 --- a/doc/DRAGONS/_static/fonts.css +++ b/doc/DRAGONS/_static/fonts.css @@ -24,4 +24,4 @@ .big { font-size: 120%; -} \ No newline at end of file +} diff --git a/doc/DRAGONS/_static/rtd_theme_overrides.css b/doc/DRAGONS/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/doc/DRAGONS/_static/rtd_theme_overrides.css +++ b/doc/DRAGONS/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/doc/DRAGONS/_static/todo-styles.css b/doc/DRAGONS/_static/todo-styles.css index dcf9445b79..09f3659575 100644 --- a/doc/DRAGONS/_static/todo-styles.css +++ b/doc/DRAGONS/_static/todo-styles.css @@ -5,4 +5,3 @@ border-left: 2px solid red; border-right: 2px solid red; background-color: #ff6347 } - diff --git a/doc/DRAGONS/conf.py b/doc/DRAGONS/conf.py index 76d7ea0b56..34e50dafc5 100644 --- a/doc/DRAGONS/conf.py +++ b/doc/DRAGONS/conf.py @@ -26,7 +26,7 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ - 'sphinx.ext.autodoc', + 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', diff --git a/doc/DRAGONS/development/continuous_integration.rst b/doc/DRAGONS/development/continuous_integration.rst new file mode 100644 index 0000000000..9d04f172c2 --- /dev/null +++ b/doc/DRAGONS/development/continuous_integration.rst @@ -0,0 +1,148 @@ +.. _continuous_integration: + +Continuous Integration +====================== + +DRAGONS uses a Continuous Integration pipeline from commit to merge, in order +to: + +1. Maintain basic coding standards across our software and packages. +2. Provide peace of mind to new and regular contributors. +3. Catch classes on common bugs and antipatterns early in the development + process. +4. Perform testing and code analysis for feedback on complexity, coverage, + performance, and integrity. + +When using our :ref:`development environments ` and +our repository, all CI will be automatically managed for you. + +Linting, formatting, and quick checks (``pre-commit``) +------------------------------------------------------ + +.. ATTENTION:: + + You can run these checks manually at any time by running + + .. code-block:: bash + + nox -s lint + + + It performs exactly the same thing as: + + .. code-block:: bash + + pre-commit run --all + + + +We perform quick conformance operations---specifically, formatting, linting, +and validating changes---when you try to commit your changes. + +.. _pre-commit_docs: https://pre-commit.com/ + +The following tools are used to accomplish this through :ref:`pre-commit +`_. It runs the following other tools (with *no need to install +them yourself*): + +.. _ruff_docs: https://docs.astral.sh/ruff/ +.. _black_docs: https://black.readthedocs.io/en/stable/ +.. _pre_commit_default_hooks: https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#pre-commit-hooks +.. _mdformat_hook: https://github.com/hukkin/mdformat + ++-------------------------------------------------------------+--------------------------+ +| Tool | Chore | ++-------------------------------------------------------------+--------------------------+ +| ``black`` (`link `_) | Automated formatting | ++-------------------------------------------------------------+--------------------------+ +| ``ruff`` (`link `_) | Linting | ++-------------------------------------------------------------+--------------------------+ +| ``pre-commit-hooks`` (`link `_) | Miscellaneous validation | ++-------------------------------------------------------------+--------------------------+ +| ``mdformat`` (`link `_) | Markdown formatting | ++-------------------------------------------------------------+--------------------------+ + +.. _noirlab_python_template: https://github.com/teald/python-standard-template + +These tools will comprise a superset of NOIRLab's Python Coding Standard +outlined in the `Python standard template `_. + +Formatting +^^^^^^^^^^ + +DRAGONS uses the `black ` formatter for all formatting in the +repository. We chose it for it focus on: + ++ Consistency ++ Minimal diffs between changes ++ Clarity + +You can learn more about the formatter in `the black documentation +`_, but there are a few concepts that may be useful to your +development. + +Trailing commas +*************** + +Trailing commas are used to expand collections. For example, if I omit the +trailing comma, the formatter will not change the following line: + +.. code-block:: python + + def my_func_with_a_few_arguments(arg_1, arg_2, *, kwarg_1): + """It has arguments, but does nothing.""" + +If we instead add a trailing comma after ``kwarg_``, it will expand the +arguments when the formatter is run: + +.. code-block:: python + + def my_func_with_a_few_arguments(arg_1, arg_2, *, kwarg_1,): + """It has arguments, but does nothing.""" + +becomes + +.. code-block:: python + + def my_func_with_a_few_arguments( + arg_1, + arg_2, + *, + kwarg_1, + ): + """It has arguments, but does nothing.""" + +This also happens if the arguments become *too large to fit on one line, +alone*. black will automatically add the trailing comma. + +*Why should you use this?* It is not just difficult to parse functions with +many arguments on a single line; it makes the diffs between code versions much +less clear than they otherwise would be. If one argument is modified, a whole +line of arguments is changed and history about prior changes to arguments is +obfuscated in the commit history. + +If a function's arguments, or the contents of a literal ``dict``, ``list``, or +other collection, are numerous and not obvious by eye, if can be a good idea to +just add the trialing comma yourself.. + +Ignoring the formatter +********************** + +To ignore lines of code when formatting, you add ``# fmt: off`` and ``# fmt: +on`` before and after (respectively) the lines to be ignored. For example: + +.. code-block:: python + + # The below code will be formatted + code = ("my code with unnecessary parentheses") + + # The code after the below comment will not. + # fmt: off + my_matrix = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9] + ] + + # fmt: on + # After the above comment, formatting is applied. diff --git a/doc/DRAGONS/development/development_environments.rst b/doc/DRAGONS/development/development_environments.rst new file mode 100644 index 0000000000..a713e91f8b --- /dev/null +++ b/doc/DRAGONS/development/development_environments.rst @@ -0,0 +1,116 @@ +.. _development_environments: + +Development Environments +======================== + +.. _nox: https://github.com/wntrblm/nox +.. _pipx: https://github.com/pypa/pipx + +DRAGONS provides a common development environment, available through our `nox`_ +automations. + +To get started, ensure you have `nox`_ installed. We recommend using `pipx`_ to +avoid adding a package to your global environment, though you can also use +`pip` or a different platform. + +To install using `pipx`_: + +.. code-block:: console + + pipx install nox + +To install using `pip`_: + +.. code-block:: console + + pip install nox + + # Alternatively... to specify the python you're using. + + python -m pip install nox + + +Generating a fresh development environment +------------------------------------------ + +.. _venv: https://docs.python.org/3/library/venv.html +.. _conda: https://github.com/conda-forge/miniforge + +We currently support two development environments, one that uses `venv`_ +and another that uses `conda`_. Which you use is up to preference, though keep +the following in mind: + ++ Installation of packages is the same for both environments with the exception + of ``sextractor``. Everything else (including DRAGONS) is installed via `pip`. ++ You can pass normal `conda create` command line arguments to the `conda` + development environment, making it slightly more configurable. Details below. + + +``venv`` environments +------------------- + +.. warning:: + + This process will overwrite existing environments and files at the local + path `venv/`. If you have anything there you want to keep, save it before + proceeding. + +New `venv`_ environments can be generated using the ``devenv`` session: + +.. code-block:: console + + nox -s devenv + +This will not activate the environment for you. `venv` environments are created +in a new local directory, ``venv/``. To activate a `venv`, you run ``source +venv/bin/activate``. You'll know the environment is active when the prompt +``(dragons_venv)`` is visible on your terminal prompt. For example: + +.. code-block:: console + + awesomedev@my_laptop $ source venv/bin/activate + (dragons_venv) awesomedev@my_laptop $ + +Now, you will be using the correct packages and python to develop with DRAGONS. +That's it! If you decide you need a fresh environment, or update something, you +can trivially generate a new one with the exact same `nox` command. + + +``conda`` environments +---------------------- + +.. warning:: + + This process will delete ``conda`` environments with the same name as the + requested environment. By default, that is ``dragons_dev``, so if you run + the nox command to generate a new default conda environment, it will delete + any environment it finds named ``dragons_dev``. + + You can specify a specific name, as discussed below, and that will be + overridden. + +New `conda`_ environments can be generating using the ``devconda`` `nox`_ session: + +.. code-block:: console + + nox -s devconda + +You can specify arguments for ``conda create`` using a trailing ``--`` followed +by the arguments. For example, if we want to name our environment +``my_conda_env``: + +.. code-block:: console + + nox -s devconda -- --name my_conda_env + +By default, the environment name is ``dragons_dev``. + +This script does not automatically activate your environment. To activate your +conda environment, you need to run: + +.. code-block:: console + + conda activate dragons_dev + +If you specified a custom name, you'll need to replace ``dragons_dev`` with +that name. diff --git a/doc/DRAGONS/development/index.rst b/doc/DRAGONS/development/index.rst new file mode 100644 index 0000000000..f0e365b2b6 --- /dev/null +++ b/doc/DRAGONS/development/index.rst @@ -0,0 +1,19 @@ + +Development Documentation +========================= + +.. TODO: Add link to documetation homepage below + +This is the development documentation for DRAGONS. This is *not* covering +developing with or using DRAGONS, which are covered in our **Programmer's +Manuals** and **User Manuals**, respectively. These can be found on the +documentation home page. + +This documentation covers specific components of the DRAGONS development process. + +.. toctree:: + :maxdepth: 2 + + development_environments.rst + continuous_integration.rst + testing.rst diff --git a/doc/DRAGONS/development/testing.rst b/doc/DRAGONS/development/testing.rst new file mode 100644 index 0000000000..82f2559172 --- /dev/null +++ b/doc/DRAGONS/development/testing.rst @@ -0,0 +1,4 @@ +Running and creating tests +========================== + +Tests are executed in isolated testing environments generated by `nox`_. diff --git a/doc/DRAGONS/dragonsteam.rst b/doc/DRAGONS/dragonsteam.rst index 4a53d5d280..623ac20860 100644 --- a/doc/DRAGONS/dragonsteam.rst +++ b/doc/DRAGONS/dragonsteam.rst @@ -34,4 +34,4 @@ Past DRAGONS Team Members Special Thanks ============== -* Vinicius Placco \ No newline at end of file +* Vinicius Placco diff --git a/doc/DRAGONS/index.rst b/doc/DRAGONS/index.rst index c73a012a2b..82a4b42159 100644 --- a/doc/DRAGONS/index.rst +++ b/doc/DRAGONS/index.rst @@ -81,4 +81,3 @@ Releases .. testing.rst .. todolist:: - diff --git a/doc/DRAGONS/releasenotes.rst b/doc/DRAGONS/releasenotes.rst index ac5f3d583e..6826235b8e 100644 --- a/doc/DRAGONS/releasenotes.rst +++ b/doc/DRAGONS/releasenotes.rst @@ -158,5 +158,3 @@ will nevertheless be useful to our users. Installation instructions can be found in the Recipe System User Manual at: |RSUserShow| - - diff --git a/doc/requirements.txt b/doc/requirements.txt index a9e2ab237c..95b9c78737 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,2 +1,2 @@ # requirements only used for building documentation -sphinx-rtd-theme \ No newline at end of file +sphinx-rtd-theme diff --git a/extern_licenses/jqplot b/extern_licenses/jqplot index 3730cff00f..c73fb46716 100644 --- a/extern_licenses/jqplot +++ b/extern_licenses/jqplot @@ -5,13 +5,13 @@ * Version: @VERSION * * Copyright (c) 2009-2011 Chris Leonello - * jqPlot is currently available for use in all personal or commercial projects - * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL - * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can - * choose the license that best suits your project and use it accordingly. + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. * - * Although not required, the author would appreciate an email letting him - * know of any substantial use of jqPlot. You can reach the author at: + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: * chris at jqplot dot com or see http://www.jqplot.com/info.php . * * If you are feeling kind and generous, consider supporting the project by @@ -30,18 +30,18 @@ * * Copyright (c) 2010-2011 Chris Leonello * - * jsDate is currently available for use in all personal or commercial projects - * under both the MIT and GPL version 2.0 licenses. This means that you can + * jsDate is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can * choose the license that best suits your project and use it accordingly. * - * jsDate borrows many concepts and ideas from the Date Instance + * jsDate borrows many concepts and ideas from the Date Instance * Methods by Ken Snyder along with some parts of Ken's actual code. - * + * * Ken's origianl Date Instance Methods and copyright notice: - * + * * Ken Snyder (ken d snyder at gmail dot com) * 2008-09-10 - * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) * Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) * * jqplotToImage function based on Larry Siden's export-jqplot-to-png.js. @@ -51,6 +51,6 @@ * Larry's original code can be found here: * * https://github.com/lsiden/export-jqplot-to-png - * - * + * + * */ diff --git a/extern_licenses/jqplot_excanvas b/extern_licenses/jqplot_excanvas index b1ecd779c6..a236e8d5ed 100644 --- a/extern_licenses/jqplot_excanvas +++ b/extern_licenses/jqplot_excanvas @@ -1,4 +1,4 @@ -// Memory Leaks patch from http://explorercanvas.googlecode.com/svn/trunk/ +// Memory Leaks patch from http://explorercanvas.googlecode.com/svn/trunk/ // svn : r73 // ------------------------------------------------------------------ // Copyright 2006 Google Inc. diff --git a/extern_licenses/jquery.color b/extern_licenses/jquery.color index 1d3ac7d0a6..fd76e0168b 100644 --- a/extern_licenses/jquery.color +++ b/extern_licenses/jquery.color @@ -8,4 +8,3 @@ * * Date: @DATE */ - diff --git a/extern_licenses/numdisplay b/extern_licenses/numdisplay index 7e8019a89e..d62fd3729f 100644 --- a/extern_licenses/numdisplay +++ b/extern_licenses/numdisplay @@ -26,4 +26,3 @@ 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. - diff --git a/gemini_instruments/cirpass/adclass.py b/gemini_instruments/cirpass/adclass.py index 000c7a30db..c23b6aea20 100644 --- a/gemini_instruments/cirpass/adclass.py +++ b/gemini_instruments/cirpass/adclass.py @@ -49,7 +49,7 @@ def _tag_bias(self): @astro_data_descriptor def ra(self): """ - Returns the name of the + Returns the name of the Returns ------- @@ -62,7 +62,7 @@ def ra(self): @astro_data_descriptor def dec(self): """ - Returns the name of the + Returns the name of the Returns ------- diff --git a/gemini_instruments/flamingos/adclass.py b/gemini_instruments/flamingos/adclass.py index 8f0a8a5caf..f05a49b072 100644 --- a/gemini_instruments/flamingos/adclass.py +++ b/gemini_instruments/flamingos/adclass.py @@ -33,7 +33,7 @@ def _tag_flat(self): @astro_data_tag def _tag_twilight(self): if 'twilight' in self.phu.get('OBJECT', '').lower(): - return TagSet(['TWILIGHT', 'CAL']) + return TagSet(['TWILIGHT', 'CAL']) @astro_data_tag def _tag_dark(self): @@ -138,7 +138,7 @@ def exposure_time(self): @astro_data_descriptor def filter_name(self, stripID=False, pretty=False): - return self.phu.get(self._keyword_for('filter_name')) + return self.phu.get(self._keyword_for('filter_name')) @astro_data_descriptor def ra(self): diff --git a/gemini_instruments/gemini/lookup.py b/gemini_instruments/gemini/lookup.py index d4c82dc0ff..f663e40ceb 100644 --- a/gemini_instruments/gemini/lookup.py +++ b/gemini_instruments/gemini/lookup.py @@ -19,7 +19,7 @@ nominal_extinction = { # These are the nominal MK and CP extinction values - # ie the k values where the magnitude of the star should be modified by + # ie the k values where the magnitude of the star should be modified by # -= k(airmass-1.0) # # Columns are given as: diff --git a/gemini_instruments/gemini/tests/test_descriptors.py b/gemini_instruments/gemini/tests/test_descriptors.py index d963a7841a..23ec3f11e4 100644 --- a/gemini_instruments/gemini/tests/test_descriptors.py +++ b/gemini_instruments/gemini/tests/test_descriptors.py @@ -112,7 +112,7 @@ def ad(request): filename = request.param path = astrodata.testing.download_from_archive(filename) return astrodata.open(path) - + @pytest.mark.dragons_remote_data @pytest.mark.parametrize("ad", test_files, indirect=True) diff --git a/gemini_instruments/hokupaa_quirc/adclass.py b/gemini_instruments/hokupaa_quirc/adclass.py index 13662efb95..e80d7a8563 100644 --- a/gemini_instruments/hokupaa_quirc/adclass.py +++ b/gemini_instruments/hokupaa_quirc/adclass.py @@ -91,7 +91,7 @@ def instrument(self, generic=False): Returns ------- - : + : instrument name """ @@ -105,7 +105,7 @@ def observation_type(self): Returns ------- - : + : observation type. """ @@ -114,7 +114,7 @@ def observation_type(self): @astro_data_descriptor def ra(self): """ - Returns the name of the + Returns the name of the Returns ------- @@ -127,7 +127,7 @@ def ra(self): @astro_data_descriptor def dec(self): """ - Returns the name of the + Returns the name of the Returns ------- diff --git a/gemini_instruments/hrwfs/adclass.py b/gemini_instruments/hrwfs/adclass.py index 10b0feb5de..06465c682a 100644 --- a/gemini_instruments/hrwfs/adclass.py +++ b/gemini_instruments/hrwfs/adclass.py @@ -49,7 +49,7 @@ def _tag_bias(self): @astro_data_descriptor def ra(self): """ - Returns the name of the + Returns the name of the Returns ------- @@ -62,7 +62,7 @@ def ra(self): @astro_data_descriptor def dec(self): """ - Returns the name of the + Returns the name of the Returns ------- diff --git a/gemini_instruments/igrins/adclass.py b/gemini_instruments/igrins/adclass.py index 0eb34387b1..2bbb138d54 100644 --- a/gemini_instruments/igrins/adclass.py +++ b/gemini_instruments/igrins/adclass.py @@ -133,7 +133,7 @@ def instrument(self, generic=False): Returns ------- - : + : instrument name """ @@ -251,7 +251,7 @@ def _slit_x_center(self): Returns ------- - : + : center x position in pixels """ @@ -264,7 +264,7 @@ def _slit_y_center(self): Returns ------- - : + : center y position in pixels """ @@ -277,7 +277,7 @@ def _slit_width(self): Returns ------- - : + : slit width in pixels """ @@ -290,7 +290,7 @@ def _slit_length(self): Returns ------- - : + : slit length in pixels """ @@ -303,11 +303,11 @@ def _slit_angle(self): Returns ------- - : + : slit length in pixels """ - return self.phu.get(self._keyword_for('slit_angle')) + return self.phu.get(self._keyword_for('slit_angle')) @astro_data_descriptor def target_ra(self): diff --git a/gemini_instruments/niri/tests/test_niri.py b/gemini_instruments/niri/tests/test_niri.py index 6eef03c991..d83a0991ff 100644 --- a/gemini_instruments/niri/tests/test_niri.py +++ b/gemini_instruments/niri/tests/test_niri.py @@ -78,4 +78,3 @@ def test_ra_dec_from_text(astrofaker): assert ad.target_dec() == pytest.approx(24.345277777777778) from astropy import units as u - diff --git a/geminidr/core/parameters_nearIR.py b/geminidr/core/parameters_nearIR.py index dc6a5c4519..ffe4cab708 100644 --- a/geminidr/core/parameters_nearIR.py +++ b/geminidr/core/parameters_nearIR.py @@ -79,7 +79,7 @@ class cleanFFTReadoutConfig(config.Config): allowed={"default": "perform pattern removal if pattern in strong enough", "skip": "skip primitive"}, default="skip", optional=False) - + class separateFlatsDarksConfig(config.Config): diff --git a/geminidr/core/primitives_nearIR.py b/geminidr/core/primitives_nearIR.py index b2cb829478..4916981d11 100644 --- a/geminidr/core/primitives_nearIR.py +++ b/geminidr/core/primitives_nearIR.py @@ -577,32 +577,32 @@ def reblock(data): def cleanFFTReadout(self, adinputs=None, **params): """ - This attempts to remove the pattern noise in NIRI/GNIRS data - in the Fourier domain. It shares similar capabilities as - cleanReadout (automatically determining pattern coverage, - leveling intra- and inter-quad biases), but with an additonal - advantage of being able to handling pattern noise that varies + This attempts to remove the pattern noise in NIRI/GNIRS data + in the Fourier domain. It shares similar capabilities as + cleanReadout (automatically determining pattern coverage, + leveling intra- and inter-quad biases), but with an additonal + advantage of being able to handling pattern noise that varies from row to row. NOTE, however, when battle tested, cleanReadout performs equally or better than this Fourier version. For e.g., this Fourier version may not work when applied to an image with a strong gradient in background supersposed with a strong pattern noise; there will likely be issues in leveling of signals. Additionally, this Fourier version DOES NOT work well for cross- - dispersed spectra. - - The processing flow of this algorithm is the following. For each - quadrant, take the FFT row by row and relying on the known - periodicity of the pattern (8 pix), look for significant peaks - in the amplitude spectrum at the corresponding frequency and its - harmonics, and interpolate over them. This should clean - the noise. Subtract the resulting frame from the input frame - to generate the pattern frame. - Then, leverage the four-fold symmetry of the pattern coverage to - determine the edges. To this end, median-combine the pattern - amplitude functions (using the pattern frame) after standardizing - each separately. The regions unaffected by pattern noise will - show up in such a stacked amplitude function near -1. - Finally, in a similar manner to cleanReadout, the signal levels + dispersed spectra. + + The processing flow of this algorithm is the following. For each + quadrant, take the FFT row by row and relying on the known + periodicity of the pattern (8 pix), look for significant peaks + in the amplitude spectrum at the corresponding frequency and its + harmonics, and interpolate over them. This should clean + the noise. Subtract the resulting frame from the input frame + to generate the pattern frame. + Then, leverage the four-fold symmetry of the pattern coverage to + determine the edges. To this end, median-combine the pattern + amplitude functions (using the pattern frame) after standardizing + each separately. The regions unaffected by pattern noise will + show up in such a stacked amplitude function near -1. + Finally, in a similar manner to cleanReadout, the signal levels are normalized across the edges within each quad and across quads. Parameters @@ -610,33 +610,33 @@ def cleanFFTReadout(self, adinputs=None, **params): suffix: str, Default: "_readoutFFTCleaned" Suffix to be added to output files. win_size: int - Window size to compute local threshold for finding significant Fourier peaks at - the target frequencies corresponding to the pattern noise periodicity. + Window size to compute local threshold for finding significant Fourier peaks at + the target frequencies corresponding to the pattern noise periodicity. periodicity: int Pattern noise periodicity. For NIRI/GNIRS, it is known to be 8 pix. sigma_fact: float - Sigma factor used for the Fourier amplitude threshold. + Sigma factor used for the Fourier amplitude threshold. pat_thres: float - Threshold used to characterise the strength of the standardized pattern noise. If - smaller than this value, the pattern noise is absent. + Threshold used to characterise the strength of the standardized pattern noise. If + smaller than this value, the pattern noise is absent. lquad: bool Level the offset in bias level across (sub-)quads that typically accompany pattern noise. l2clean: bool - Perform a second-level cleaning of the pattern to do away with Fourier artifacts, - e.g., ringing from bright stars. This operates on the pattern frame and tries to + Perform a second-level cleaning of the pattern to do away with Fourier artifacts, + e.g., ringing from bright stars. This operates on the pattern frame and tries to interpolate over rogue rows. l2thres: float Sigma factor to be used in thresholding for l2clean. For stubborn Fourier artifacts, - consider decreasing this value. + consider decreasing this value. smoothing_extent: int - Width (in pixels) of the region at a given quad interface to be smoothed over + Width (in pixels) of the region at a given quad interface to be smoothed over on each side of the interface. pad_rows: int - Number of dummy rows to append to the top quads of the image. This is to take care of - weird quad structure like that for GNIRS, where the top and bottom quads are not equal - in size but are read out synchronously. For example, for GNIRS, the top quad is really - only 510 rows but read out synchronously with the "bottom" 510 rows although this "bottom" + Number of dummy rows to append to the top quads of the image. This is to take care of + weird quad structure like that for GNIRS, where the top and bottom quads are not equal + in size but are read out synchronously. For example, for GNIRS, the top quad is really + only 510 rows but read out synchronously with the "bottom" 510 rows although this "bottom" quad has 512 rows. clean: str, Default: "skip" Must be one of "skip" or "default". Note "force" option doesn't exist for this FFT method. @@ -682,7 +682,7 @@ def cleanFFTReadout(self, adinputs=None, **params): pad_objmask = np.full((pad_rows, ext.OBJMASK.shape[1]), DQ.no_data) ext.OBJMASK = np.insert(ext.OBJMASK, qysize, pad_objmask, axis=0) log.stdinfo(f"Padded {pad_rows} dummy rows for image taken with {ad.instrument()}") - + ori_ext = deepcopy(ext) pattern_data = {} rows_cleaned = 0 @@ -697,7 +697,7 @@ def cleanFFTReadout(self, adinputs=None, **params): num_samples = len(quad.data[i,:]) row_data = quad.data[i,:] row_fft = rfft(row_data) - row_freq = rfftfreq(num_samples, 1) + row_freq = rfftfreq(num_samples, 1) amp = np.abs(row_fft) _ind = np.argmin(np.abs(row_freq - 1/periodicity)) ##find the index closest to the principal target frequency a_mean, a_median, a_std = sigma_clipped_stats(amp[_ind-win_size:_ind+win_size], sigma=2.0) @@ -707,14 +707,14 @@ def cleanFFTReadout(self, adinputs=None, **params): if np.interp(1/periodicity, row_freq, amp)>amp_threshold: ##if principal target frequency stands out then automatically clean its harmonics counter = 1 while int(counter*1/periodicity*num_samples) <= (num_samples-1): - mask.append(int(counter*1/periodicity*num_samples)) + mask.append(int(counter*1/periodicity*num_samples)) counter += 1 rows_cleaned += 1 mask = np.array(mask) real_ = row_fft.real imag_ = row_fft.imag - idx = np.arange(len(row_fft)) + idx = np.arange(len(row_fft)) MM = np.isin(idx, mask) real_[MM] = np.interp(idx[MM].astype(float), idx[~MM].astype(float), real_[~MM]) imag_[MM] = np.interp(idx[MM].astype(float), idx[~MM].astype(float), imag_[~MM]) @@ -723,12 +723,12 @@ def cleanFFTReadout(self, adinputs=None, **params): row_fft.real = real_ row_fft.imag = imag_ row_data_new = irfft(row_fft) - quad.data[i,:] = row_data_new + quad.data[i,:] = row_data_new pattern_data[tb+'-'+lr] = ori_quad.data - quad.data if lquad and rows_cleaned>0: - ## intra-quad leveling + ## intra-quad leveling for K in ['bottom-left', 'bottom-right']: pattern_data[K] = np.flipud(pattern_data[K]) @@ -745,8 +745,8 @@ def cleanFFTReadout(self, adinputs=None, **params): edges = {} #dummy dict to make use of the _levelQuad function if np.sum(MSK) > 0: for ystart, tb in zip((0, qysize),('bottom','top')): - for xstart, lr in zip((0, qxsize),('left','right')): - quad = ext.nddata[ystart:ystart + qysize, xstart:xstart + qxsize] + for xstart, lr in zip((0, qxsize),('left','right')): + quad = ext.nddata[ystart:ystart + qysize, xstart:xstart + qxsize] mean_collapsed_signa, median_collapsed_signal, __ = sigma_clipped_stats(quad.data, axis=1, sigma=2.0) if np.sum(MSK) > np.sum(~MSK): ##to normalize the smaller section to the larger section @@ -759,7 +759,7 @@ def cleanFFTReadout(self, adinputs=None, **params): median_collapsed_signal[mask] = np.NAN mean_collapsed_signa[mask] = np.NAN - ## for intra-quad, level to the same value. Note that when there is a strong gradient in the quad, this method will fail + ## for intra-quad, level to the same value. Note that when there is a strong gradient in the quad, this method will fail for _ind in np.arange(len(median_collapsed_signal))[mask]: offset = np.nanmean(median_collapsed_signal) - sigma_clipped_stats(quad.data[_ind,:], sigma=2.0)[1] quad.data[_ind,:] += offset @@ -776,37 +776,37 @@ def cleanFFTReadout(self, adinputs=None, **params): MASK = ext.mask masked_data = np.ma.masked_array(ext.data, mask=MASK) self._levelQuad(masked_data, smoothing_extent=smoothing_extent, edges=edges) - - if l2clean and rows_cleaned>0: + + if l2clean and rows_cleaned>0: for ystart, tb in zip((0, qysize),('bottom','top')): - for xstart, lr in zip((0, qxsize),('left','right')): + for xstart, lr in zip((0, qxsize),('left','right')): quad = ext.nddata[ystart:ystart + qysize, xstart:xstart + qxsize] - ori_quad = ori_ext.nddata[0][ystart:ystart + qysize, xstart:xstart + qxsize] - ## update the pattern data (lquad, if called, would have modified it) + ori_quad = ori_ext.nddata[0][ystart:ystart + qysize, xstart:xstart + qxsize] + ## update the pattern data (lquad, if called, would have modified it) pattern_data[tb+'-'+lr] = ori_quad.data - quad.data if tb=='top': pattern_data[tb+'-'+lr] = np.flipud(ori_quad.data - quad.data) strength = {} for K, V in pattern_data.items(): - strength[K] = np.std(V, axis=1) + strength[K] = np.std(V, axis=1) collapsed_matrix = pd.DataFrame(strength) - standardized_collapsed_matrix = (collapsed_matrix - collapsed_matrix.median())/collapsed_matrix.std() + standardized_collapsed_matrix = (collapsed_matrix - collapsed_matrix.median())/collapsed_matrix.std() meddev_matrix = standardized_collapsed_matrix.sub(standardized_collapsed_matrix.mean(axis=1), axis=0) ## flatten the curves pattern_data_new = {} - bucket = np.array([meddev_matrix[V] for V in meddev_matrix.columns]) - mn, med, st = sigma_clipped_stats(bucket, sigma=2.5) + bucket = np.array([meddev_matrix[V] for V in meddev_matrix.columns]) + mn, med, st = sigma_clipped_stats(bucket, sigma=2.5) for K in meddev_matrix.columns: - bb = meddev_matrix[K].values + bb = meddev_matrix[K].values mask = (bb < mn - l2thres * st) | (bb > mn + l2thres * st) pattern_data_new[K] = deepcopy(pattern_data[K]) if np.sum(mask) > 0: - for i in range(pattern_data_new[K].shape[1]): ## work at column-by-column level - pattern_data_new[K][mask,i] = np.interp(np.arange(pattern_data[K].shape[0])[mask], + for i in range(pattern_data_new[K].shape[1]): ## work at column-by-column level + pattern_data_new[K][mask,i] = np.interp(np.arange(pattern_data[K].shape[0])[mask], np.arange(pattern_data[K].shape[0])[~mask], pattern_data[K][~mask,i]) for K in ['top-left', 'top-right']: @@ -815,7 +815,7 @@ def cleanFFTReadout(self, adinputs=None, **params): ## create the full improved pattern temp_top = np.hstack((pattern_data_new['top-left'], pattern_data_new['top-right'])) temp_bottom = np.hstack((pattern_data_new['bottom-left'], pattern_data_new['bottom-right'])) - temp = np.vstack((temp_bottom, temp_top)) + temp = np.vstack((temp_bottom, temp_top)) ext.data = ori_ext.data[0] - temp if pad_rows>0: @@ -823,14 +823,14 @@ def cleanFFTReadout(self, adinputs=None, **params): ext.mask = np.delete(ext.mask, np.arange(qysize, qysize+pad_rows), axis=0) if hasattr(ext, 'OBJMASK'): ext.OBJMASK = np.delete(ext.OBJMASK, np.arange(qysize, qysize+pad_rows), axis=0) - + # Timestamp and update filename gt.mark_history(ad, primname=self.myself(), keyword=timestamp_key) ad.update_filename(suffix=params["suffix"], strip=True) return adinputs - + def separateFlatsDarks(self, adinputs=None, **params): """ diff --git a/geminidr/core/tests/test_nearIR.py b/geminidr/core/tests/test_nearIR.py index 02a471c704..3bf3b43409 100644 --- a/geminidr/core/tests/test_nearIR.py +++ b/geminidr/core/tests/test_nearIR.py @@ -141,7 +141,7 @@ def test_clean_readout(in_file, path_to_inputs, path_to_refs): "N20060218S0138", # NIRI image "S20060501S0081", # GNIRS XD spectrum "S20060806S0080", # GNIRS XD spectrum - "S20070131S0105", # GNIRS XD spectrum + "S20070131S0105", # GNIRS XD spectrum "N20101227S0040", # GNIRS LS (par needs tweaking pat_thres=0.1). Only FFT can handle this frame. "N20231112S0136", # GNIRS LS ]) @@ -152,7 +152,7 @@ def test_clean_fftreadout(in_file, path_to_inputs, path_to_refs): pm = PrimitiveMapper(ad.tags, ad.instrument(generic=True).lower(), mode="sq", drpkg="geminidr") pclass = pm.get_applicable_primitives() - p = pclass([ad]) + p = pclass([ad]) ad_out = p.cleanFFTReadout(clean="default")[0] ref = astrodata.open(os.path.join(path_to_refs, in_file + '_readoutFFTCleaned.fits')) assert ad_compare(ad_out, ref) diff --git a/geminidr/core/tests/test_resample.py b/geminidr/core/tests/test_resample.py index cecc6452c9..760549192b 100644 --- a/geminidr/core/tests/test_resample.py +++ b/geminidr/core/tests/test_resample.py @@ -65,4 +65,4 @@ def test_shift_images(astrofaker, separator, trim_data, file_write, path_to_outp assert coord.separation(new_coord) < 1e-6 * u.arcsec # should be identical if file_write: - os.remove(shifts_par) \ No newline at end of file + os.remove(shifts_par) diff --git a/geminidr/core/tests/test_wcs_creation_and_stability.py b/geminidr/core/tests/test_wcs_creation_and_stability.py index 42f951cc7a..0db90fb769 100644 --- a/geminidr/core/tests/test_wcs_creation_and_stability.py +++ b/geminidr/core/tests/test_wcs_creation_and_stability.py @@ -106,4 +106,4 @@ def test_gmos_wcs_stability(raw_ad_path, do_prepare, do_overscan_correct, tile_a c = SkyCoord(*ad[new_ref_index].wcs(x, y), unit="deg") assert c0.separation(c) < 1e-9 * u.arcsec - os.remove(TEMPFILE) \ No newline at end of file + os.remove(TEMPFILE) diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/css/custom_code.css b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/css/custom_code.css +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/fonts.css b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/fonts.css +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/rtd_theme_overrides.css b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/rtd_theme_overrides.css +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqarecipes.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqarecipes.rst index dcbbdfe911..d15a8aa2aa 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqarecipes.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqarecipes.rst @@ -13,4 +13,3 @@ geminidr.gmos.recipes.qa.recipes_IMAGE .. automodule:: geminidr.gmos.recipes.qa.recipes_IMAGE :members: :undoc-members: - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqlrecipes.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqlrecipes.rst index d072e4ff12..6764c51884 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqlrecipes.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/appendices/recipes/gmosqlrecipes.rst @@ -13,4 +13,3 @@ geminidr.gmos.recipes.ql.recipes_IMAGE .. automodule:: geminidr.gmos.recipes.ql.recipes_IMAGE :members: :undoc-members: - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/flows.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/flows.rst index c6fc9503db..7e27a814e8 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/flows.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/flows.rst @@ -37,5 +37,3 @@ Top-Level Flow Charts for Processing of Calibrations Top-Level Flow Charts for Processing of Science ----------------------------------------------- - - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosprimitives.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosprimitives.rst index 21a58b69d1..d5fdd9bbb1 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosprimitives.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosprimitives.rst @@ -86,4 +86,4 @@ primitives_gmos_spect .. rubric:: Methods defined in class -.. inheritance-diagram:: geminidr.gmos.primitives_gmos_spect.GMOSSpect \ No newline at end of file +.. inheritance-diagram:: geminidr.gmos.primitives_gmos_spect.GMOSSpect diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosrecipes.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosrecipes.rst index 3c04d2131e..52c2e22308 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosrecipes.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmosrecipes.rst @@ -44,4 +44,3 @@ Issues and Limitations remember: focus programmer's view memory issues with some recipes. - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmostests.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmostests.rst index 35d7bf7792..b12786712d 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmostests.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/gmostests.rst @@ -39,4 +39,3 @@ Missing or Desirable Tests -------------------------- .. note:: as a list, or in a table - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/index.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/index.rst index 9773fa2d06..67ac69206e 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/index.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/index.rst @@ -40,4 +40,3 @@ Indices and tables * :ref:`search` .. todolist:: - diff --git a/geminidr/doc/progmanuals/GMOSDR_ProgManual/tags.rst b/geminidr/doc/progmanuals/GMOSDR_ProgManual/tags.rst index bdf23e8ec2..d179ca7790 100644 --- a/geminidr/doc/progmanuals/GMOSDR_ProgManual/tags.rst +++ b/geminidr/doc/progmanuals/GMOSDR_ProgManual/tags.rst @@ -13,4 +13,4 @@ for calibration association, for archive (including processed data). Association Table ================= -associate ad tags with type of observations \ No newline at end of file +associate ad tags with type of observations diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/F2Img-DRTutorial/.readthedocs.yaml index e753dfdcc3..448a206df2 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/01_introduction.rst b/geminidr/doc/tutorials/F2Img-DRTutorial/01_introduction.rst index 3013d38cbe..16e70a59e3 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/01_introduction.rst +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/01_introduction.rst @@ -80,4 +80,3 @@ will work in the subdirectory named ``f2img_tutorial/playground``. but if you really want to learn how to search for and retrieve the data yourself, see the step-by-step instructions for Example 1 in the appendix :ref:`goadownload`. - diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/05_issues_and_limitations.rst b/geminidr/doc/tutorials/F2Img-DRTutorial/05_issues_and_limitations.rst index 661b0dbeaf..001280d6cd 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/05_issues_and_limitations.rst +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/05_issues_and_limitations.rst @@ -50,4 +50,4 @@ screen. We recommend using the DRAGONS logger located in the :linenos: from gempy.utils import logutils - logutils.config(file_name='f2_data_reduction.log') \ No newline at end of file + logutils.config(file_name='f2_data_reduction.log') diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/Makefile b/geminidr/doc/tutorials/F2Img-DRTutorial/Makefile index 431574d781..174072efb3 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/Makefile +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/Makefile @@ -17,4 +17,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/_static/css/code.xref-styles.css b/geminidr/doc/tutorials/F2Img-DRTutorial/_static/css/code.xref-styles.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/_static/css/code.xref-styles.css +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/_static/css/code.xref-styles.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/F2Img-DRTutorial/appendices/01_goa_download.rst b/geminidr/doc/tutorials/F2Img-DRTutorial/appendices/01_goa_download.rst index 855e76c376..a6c6ffa328 100644 --- a/geminidr/doc/tutorials/F2Img-DRTutorial/appendices/01_goa_download.rst +++ b/geminidr/doc/tutorials/F2Img-DRTutorial/appendices/01_goa_download.rst @@ -103,4 +103,4 @@ downloaded the data from the `Gemini Archive "at-file" Facility \ No newline at end of file + "at-file" Facility diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/GHOST-DRTutorial/.readthedocs.yaml index bfa969b592..bd5eeb5b03 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/css/custom_code.css b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/css/custom_code.css +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/fonts.css b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/fonts.css +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/rtd_theme_overrides.css b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/_static/rtd_theme_overrides.css +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_cmdline.rst b/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_cmdline.rst index 1f117a4008..a5cd017b11 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_cmdline.rst +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_cmdline.rst @@ -703,4 +703,4 @@ so you should run reduce -r makeIRAFCompatible S20230416S0079_red001_dragons.fits which will create a file ``S20230416S0079_red001_irafCompatible.fits`` that -IRAF can read. Note, however, that this file is **incompatible with DRAGONS**. \ No newline at end of file +IRAF can read. Note, however, that this file is **incompatible with DRAGONS**. diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_dataset.rst b/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_dataset.rst index d5f53cd915..d23c22f2a9 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_dataset.rst +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/ex1_ghost_stdonetarget_dataset.rst @@ -82,6 +82,3 @@ You can download them from here: https://archive.gemini.edu/searchform/GHOST/notengineering/cols=CTOWBEQ/NotFail/not_site_monitoring/BPM Put them in ``playdata/example1/``. - - - diff --git a/geminidr/doc/tutorials/GHOST-DRTutorial/index.rst b/geminidr/doc/tutorials/GHOST-DRTutorial/index.rst index 2d3cbd55cc..b439889c6f 100644 --- a/geminidr/doc/tutorials/GHOST-DRTutorial/index.rst +++ b/geminidr/doc/tutorials/GHOST-DRTutorial/index.rst @@ -32,4 +32,4 @@ Indices and tables * :ref:`modindex` * :ref:`search` -.. todolist:: \ No newline at end of file +.. todolist:: diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/GMOSImg-DRTutorial/.readthedocs.yaml index 8e4c1d8a82..3107ecb2de 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/01_introduction.rst b/geminidr/doc/tutorials/GMOSImg-DRTutorial/01_introduction.rst index 45552f5161..c390e5e707 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/01_introduction.rst +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/01_introduction.rst @@ -83,4 +83,3 @@ will work in the subdirectory named ``gmosimg_tutorial/playground``. but if you really want to learn how to search for and retrieve the data yourself, see the step-by-step instructions for Example 1 in the appendix, :ref:`goadownload`. - diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/05_issues_and_limitations.rst b/geminidr/doc/tutorials/GMOSImg-DRTutorial/05_issues_and_limitations.rst index 9e6707029d..f4c23115aa 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/05_issues_and_limitations.rst +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/05_issues_and_limitations.rst @@ -44,4 +44,4 @@ screen. We recommend using the DRAGONS logger located in the Astropy warnings ================ You might see some warning messages from AstroPy that are related to the -header of the images. It is safe to ignore them. \ No newline at end of file +header of the images. It is safe to ignore them. diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/Makefile b/geminidr/doc/tutorials/GMOSImg-DRTutorial/Makefile index 431574d781..174072efb3 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/Makefile +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/Makefile @@ -17,4 +17,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/_static/css/code.xref-styles.css b/geminidr/doc/tutorials/GMOSImg-DRTutorial/_static/css/code.xref-styles.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/_static/css/code.xref-styles.css +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/_static/css/code.xref-styles.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/GMOSImg-DRTutorial/appendices/01_goa_download.rst b/geminidr/doc/tutorials/GMOSImg-DRTutorial/appendices/01_goa_download.rst index 0193325cef..1639c08e9a 100644 --- a/geminidr/doc/tutorials/GMOSImg-DRTutorial/appendices/01_goa_download.rst +++ b/geminidr/doc/tutorials/GMOSImg-DRTutorial/appendices/01_goa_download.rst @@ -107,4 +107,4 @@ downloaded the data from the `Gemini Archive "at-file" Facility \ No newline at end of file + "at-file" Facility diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/GMOSLS-DRTutorial/.readthedocs.yaml index 4b0f4f5c5a..18ae8f6d74 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/01_overview.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/01_overview.rst index 83cb5b3454..0499f6bbea 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/01_overview.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/01_overview.rst @@ -34,4 +34,4 @@ We show how to run the same reduction using both methods. * :ref:`ns_example` * :ref:`nsred_example` -See the |RSUserInstall| to install the software if you have not already. \ No newline at end of file +See the |RSUserInstall| to install the software if you have not already. diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/02_datasets.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/02_datasets.rst index cc8a60f1d4..e8db6ca241 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/02_datasets.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/02_datasets.rst @@ -33,4 +33,3 @@ we will work in the subdirectory named ``gmosls_tutorial/playground``. .. note:: All the raw data can also be downloaded from the Gemini Observatory Archive. Using the tutorial data package is probably more convenient. - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/05_tips_and_tricks.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/05_tips_and_tricks.rst index 2c2ab2cac4..c53a5ada1d 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/05_tips_and_tricks.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/05_tips_and_tricks.rst @@ -164,6 +164,3 @@ do it. In the science-approved version of the GMOS longslit support in DRAGONS, there will be an interactive tool to inspect and adjust the sensitivity function. - - - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/07_interactive.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/07_interactive.rst index 1c4460ca49..ab0487840e 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/07_interactive.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/07_interactive.rst @@ -243,4 +243,4 @@ inspect all the apertures of interest. The tracing algorithm can be controlled with the "Left Panel". There might be cases (eg. faint sources) where the defaults struggle to follow the signal and the plot looks really noisy or odd. You can experiment with those input -parameters to see if you can get a better trace to fit. \ No newline at end of file +parameters to see if you can get a better trace to fit. diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/css/custom_code.css b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/css/custom_code.css +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/fonts.css b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/fonts.css +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/rtd_theme_overrides.css b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/rtd_theme_overrides.css +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered.rst index 83399d3af7..ff3796e3a7 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered.rst @@ -15,5 +15,3 @@ dwarf candidate. ex1_gmosls_dithered_dataset ex1_gmosls_dithered_cmdline ex1_gmosls_dithered_api - - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered_dataset.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered_dataset.rst index 1213e2833a..52f4d35744 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered_dataset.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex1_gmosls_dithered_dataset.rst @@ -72,4 +72,3 @@ package. They can also be downloaded from the Gemini Observatory Archive (GOA). +---------------------+---------------------------------------------+ | BPM || bpm_20140601_gmos-s_Ham_22_full_12amp.fits | +---------------------+---------------------------------------------+ - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither.rst index a1c2d37607..41327f1209 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither.rst @@ -14,5 +14,3 @@ In this example we will reduce a GMOS longslit observation containing traces of ex2_gmosls_large_dither_dataset ex2_gmosls_large_dither_cmdline ex2_gmosls_large_dither_api - - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_api.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_api.rst index 30f13374c7..3bc59682f7 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_api.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_api.rst @@ -246,13 +246,13 @@ receive the Astrodata tag ``STANDARD``. To be recognized, the name of the star must be in a lookup table. All spectrophotometric standards normally used at Gemini are in that table. -For this example with a large wavelength dither, we will be reducing the standard star observations at each -central wavelength separately without stacking them. The standard star reduction -recipe stacks all the observations in a given file list. So we need to create -separate file lists for the different central wavelengths. +For this example with a large wavelength dither, we will be reducing the standard star observations at each +central wavelength separately without stacking them. The standard star reduction +recipe stacks all the observations in a given file list. So we need to create +separate file lists for the different central wavelengths. -First, let's inspect the central wavelength of the standard star frames in our raw data directory. -For this, we can loop through all the files with the tag ``STANDARD`` and print +First, let's inspect the central wavelength of the standard star frames in our raw data directory. +For this, we can loop through all the files with the tag ``STANDARD`` and print the value for the descriptor of interest, here ``central_wavelength``. .. code-block:: python @@ -263,7 +263,7 @@ the value for the descriptor of interest, here ``central_wavelength``. for std in all_stdstar: ad = astrodata.open(std) print(std, ' ', ad.central_wavelength()) - + :: ../playdata/example2/S20220608S0098.fits 7.05e-07 @@ -484,11 +484,11 @@ Processed Standard - Sensitivity Function ========================================= The GMOS longslit spectrophotometric standards are normally taken when there is a hole in the queue schedule, often when the weather is not good enough -for science observations. For a large wavelength dither, i.e., a difference -in central wavelength much greater than about 10 nm, a spectrophotometric standard should be -taken at each of those positions to calculate the respective sensitvity functions. -The latter will then be used for spectrophotometric calibration of the science observations -at the corresponding central wavelengths. +for science observations. For a large wavelength dither, i.e., a difference +in central wavelength much greater than about 10 nm, a spectrophotometric standard should be +taken at each of those positions to calculate the respective sensitvity functions. +The latter will then be used for spectrophotometric calibration of the science observations +at the corresponding central wavelengths. The reduction of the standard will be using a BPM, a master bias, a master flat, and a processed arc. If those have been added to the local calibration @@ -548,15 +548,15 @@ The interactive tools are introduced in section :ref:`interactive`. **The 795nm Standard** For the standard star observation at central wavelength 795 nm in this -dataset, ``calculateSensitivity`` with its default parameter values yields a suboptimal number -of data points to constrain its sensitivity curve (see the left plot below; click the panel to enlarge). -There is a conspicuous gap between 820 and 980 nm -- a result of the amplifier #5 issue and compounded -by the presence of telluric absorption redward of around 880 nm. - -To deal with this, we can consider interpolating the (reference) data of the spectrophotometric standard, -given that it has a smooth spectrum, -to generate new sensitivity data points to fit. -This is enabled by the ``resampling`` parameter, whose value +dataset, ``calculateSensitivity`` with its default parameter values yields a suboptimal number +of data points to constrain its sensitivity curve (see the left plot below; click the panel to enlarge). +There is a conspicuous gap between 820 and 980 nm -- a result of the amplifier #5 issue and compounded +by the presence of telluric absorption redward of around 880 nm. + +To deal with this, we can consider interpolating the (reference) data of the spectrophotometric standard, +given that it has a smooth spectrum, +to generate new sensitivity data points to fit. +This is enabled by the ``resampling`` parameter, whose value we update as follows .. code-block:: python @@ -573,14 +573,14 @@ we update as follows .. image:: _graphics/LS_ldred_sens_before.png :width: 325 :alt: Sensitivity function before optimization - - + + .. image:: _graphics/LS_ldred_sens_after.png :width: 325 :alt: Sensitivity function after optimization -The resulting curve is shown on the right plot (click the panel to enlarge). Notice that we have also tuned other parameters in the -interactive tool and have manually masked four data points. +The resulting curve is shown on the right plot (click the panel to enlarge). Notice that we have also tuned other parameters in the +interactive tool and have manually masked four data points. .. note:: If you wish to inspect the spectrum in aperture 1: @@ -600,10 +600,10 @@ interactive tool and have manually masked four data points. Science Observations ==================== -As mentioned previously, the science target is the central galaxy of an Odd Radio Circle. The sequence -has two images that were dithered in wavelength (with a large step of 90 nm). +As mentioned previously, the science target is the central galaxy of an Odd Radio Circle. The sequence +has two images that were dithered in wavelength (with a large step of 90 nm). DRAGONS will register the two images, align and stack them before -extracting the 1-D spectrum. +extracting the 1-D spectrum. This is what one raw image looks like. @@ -611,11 +611,11 @@ This is what one raw image looks like. :width: 600 :alt: raw science image -The broad, white and black vertical bands (slightly to the left of the middle) are related -to the GMOS-S amplifier #5 issues. -As can be seen, there are two obvious sources in this observation. Regardless of whether -both of them are of interest to the program, DRAGONS will locate, trace, and extract -them automatically. Each extracted spectrum is stored in an individual extension +The broad, white and black vertical bands (slightly to the left of the middle) are related +to the GMOS-S amplifier #5 issues. +As can be seen, there are two obvious sources in this observation. Regardless of whether +both of them are of interest to the program, DRAGONS will locate, trace, and extract +them automatically. Each extracted spectrum is stored in an individual extension in the output multi-extension FITS file. @@ -633,29 +633,29 @@ science observations and extract the 1-D spectrum. reduce_science.recipename = 'reduceWithMultipleStandards' reduce_science.uparms = dict([('interactive', True)]) reduce_science.runr() - -Here we use a different science reduction recipe ``reduceWithMultipleStandards`` (line 97) -than the default. The -latter performs flux calibration *after* stacking the extracted spectra -as described :ref:`here `, which is not suitable -for these observations with a large wavelength dither. The recipe -``reduceWithMultipleStandards`` will run flux calibration for each + +Here we use a different science reduction recipe ``reduceWithMultipleStandards`` (line 97) +than the default. The +latter performs flux calibration *after* stacking the extracted spectra +as described :ref:`here `, which is not suitable +for these observations with a large wavelength dither. The recipe +``reduceWithMultipleStandards`` will run flux calibration for each central wavelength using the corresponding sensitivity function from the -spectrophotometric standard before stacking +spectrophotometric standard before stacking the observations -- the desired workflow for this example. -You can make use of the interactive tools to optimize the reduction. For +You can make use of the interactive tools to optimize the reduction. For the science reduction above, we have deleted any additional apertures found -by DRAGONS barring the two most prominent ones (see the left plot; click -to enlarge). You simply hover over the unwanted peak and press D. Furthermore, -we have selected sigma-clipping while tracing the apertures (right plot; +by DRAGONS barring the two most prominent ones (see the left plot; click +to enlarge). You simply hover over the unwanted peak and press D. Furthermore, +we have selected sigma-clipping while tracing the apertures (right plot; click to enlarge). Notice that there is an additional tab for Aperture 2 -in the upper part of the right plot. +in the upper part of the right plot. .. image:: _graphics/LS_ldred_findAp_sci.png :width: 325 :alt: Apertures found by DRAGONS - + .. image:: _graphics/LS_ldred_traceAp_sci.png :width: 325 :alt: Tracing of aperture @@ -663,12 +663,12 @@ in the upper part of the right plot. The outputs include a 2-D spectrum image (``S20220611S0716_2D.fits``), which has been bias corrected, flat fielded, QE-corrected, wavelength-calibrated, corrected for distortion, sky-subtracted, flux-calibrated, and stacked, and also the 1-D spectra -(``S20171022S0087_1D.fits``) extracted from this 2-D spectrum image. The 1-D spectra are stored -as 1-D FITS images in extensions of the output Multi-Extension FITS file, along with their -respective variance and data quality (or mask) arrays. +(``S20171022S0087_1D.fits``) extracted from this 2-D spectrum image. The 1-D spectra are stored +as 1-D FITS images in extensions of the output Multi-Extension FITS file, along with their +respective variance and data quality (or mask) arrays. + +.. note:: If you wish to inspect the content of the 1-D output, run: -.. note:: If you wish to inspect the content of the 1-D output, run: - .. code-block:: python astrodata.open('S20220611S0716_1D.fits').info() @@ -736,13 +736,13 @@ The 1-D flux-calibrated spectra of the two apertures are shown below. .. image:: _graphics/LS_ldred_ap1_spec1D.png :width: 325 :alt: 1D spectrum for aperture 1 - + .. image:: _graphics/LS_ldred_ap2_spec1D.png :width: 325 - :alt: 1D spectrum for aperture 2 + :alt: 1D spectrum for aperture 2 To learn how to plot a 1-D spectrum with matplotlib using the WCS from a Python -script, see Tips and Tricks :ref:`plot_1d`. +script, see Tips and Tricks :ref:`plot_1d`. If you need an ascii representation of the spectum, you can use the primitive ``write1DSpectra`` to extract the values from the FITS file. diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_cmdline.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_cmdline.rst index 7018f110fe..329a68290e 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_cmdline.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_cmdline.rst @@ -7,7 +7,7 @@ Example 2 - Longslit large-dither point source - using the "reduce" command line ******************************************************************************** -In this example, we will reduce a GMOS longslit observation of `ORC J0102-2450 `_, +In this example, we will reduce a GMOS longslit observation of `ORC J0102-2450 `_, an Odd Radio Circle, using the "|reduce|" command that is operated directly from the unix shell. Just open a terminal and load the DRAGONS conda environment to get started. @@ -184,11 +184,11 @@ Two lists for the spectrophotometric standard star -------------------------------------------------- If a spectrophotometric standard is recognized as such by DRAGONS, it will receive the Astrodata tag ``STANDARD``. All spectrophotometric standards -normally used at Gemini are in the DRAGONS list of recognized standards. -For this example, we will be reducing the standard star observations at each -central wavelength separately without stacking them. The standard star reduction -recipe stacks all the observations in a given file list. So we need to create -separate file lists for the different central wavelengths. +normally used at Gemini are in the DRAGONS list of recognized standards. +For this example, we will be reducing the standard star observations at each +central wavelength separately without stacking them. The standard star reduction +recipe stacks all the observations in a given file list. So we need to create +separate file lists for the different central wavelengths. First, let's check the central wavelength of the standard star frames in our raw data directory. @@ -200,15 +200,15 @@ First, let's check the central wavelength of the standard star frames in our raw filename central_wavelength ------------------------------------------------------------- ../playdata/example2/S20220608S0098.fits 7.05e-07 - ../playdata/example2/S20220608S0101.fits 7.95e-07 + ../playdata/example2/S20220608S0101.fits 7.95e-07 -We will then create two standard star lists for the two central wavelengths. +We will then create two standard star lists for the two central wavelengths. :: dataselect ../playdata/example2/*.fits --tags STANDARD --expr='central_wavelength==7.05e-07' -o std_705nm.lis dataselect ../playdata/example2/*.fits --tags STANDARD --expr='central_wavelength==7.95e-07' -o std_795nm.lis - + A list for the science observations ----------------------------------- @@ -320,13 +320,13 @@ Processed Arc - Wavelength Solution =================================== GMOS longslit arc can be obtained at night with the observation sequence, if requested by the program, but are often obtained at the end of the night -or the following afternoon instead. In this example, the arcs have been obtained at night, +or the following afternoon instead. In this example, the arcs have been obtained at night, as part of the sequence. Like the spectroscopic flats, they are not stacked, which means that they can be sent to reduce all together and will be reduced individually. The wavelength solution is automatically calculated and has been found to be -quite reliable. There might be cases where it fails; inspect the RMS of +quite reliable. There might be cases where it fails; inspect the RMS of ``determineWavelengthSolution`` in the logs to confirm a good solution. :: @@ -347,11 +347,11 @@ Processed Standard - Sensitivity Function ========================================= The GMOS longslit spectrophotometric standards are normally taken when there is a hole in the queue schedule, often when the weather is not good enough -for science observations. For a large wavelength dither, i.e., a difference -in central wavelength much greater than about 10 nm, a spectrophotometric standard should be -taken at each of those positions to calculate the respective sensitvity functions. -The latter will then be used for spectrophotometric calibration of the science observations -at the corresponding central wavelengths. +for science observations. For a large wavelength dither, i.e., a difference +in central wavelength much greater than about 10 nm, a spectrophotometric standard should be +taken at each of those positions to calculate the respective sensitvity functions. +The latter will then be used for spectrophotometric calibration of the science observations +at the corresponding central wavelengths. The reduction of the standard will be using a BPM, a master bias, a master flat, and a processed arc. If those have been added to the local calibration @@ -384,7 +384,7 @@ interactive mode for all four: Since the standard star spectrum is bright and strong, and the exposure short, it is somewhat unlikely that interactivity will be needed for the sky subtraction, or finding and tracing the spectrum. The fitting of the -sensitivity function however can sometimes benefit from little adjustment. +sensitivity function however can sometimes benefit from little adjustment. To activate the interactive mode **only** for the measurement of the sensitivity function: @@ -393,20 +393,20 @@ sensitivity function: reduce @std_705nm.lis -p calculateSensitivity:interactive=True -The interactive tools are introduced in section :ref:`interactive`. +The interactive tools are introduced in section :ref:`interactive`. **The 795nm Standard** For the standard star observation at central wavelength 795 nm in this -dataset, ``calculateSensitivity`` with its default parameter values yields a suboptimal number -of data points to constrain its sensitivity curve (see the left plot below; click the panel to enlarge). -There is a conspicuous gap between 820 and 980 nm -- a result of the amplifier #5 issue and compounded -by the presence of telluric absorption redward of around 880 nm. - -To deal with this, we can consider interpolating the (reference) data of the spectrophotometric standard, -given that it has a smooth spectrum, -to generate new sensitivity data points to fit. -This is enabled by the ``resampling`` parameter, whose value +dataset, ``calculateSensitivity`` with its default parameter values yields a suboptimal number +of data points to constrain its sensitivity curve (see the left plot below; click the panel to enlarge). +There is a conspicuous gap between 820 and 980 nm -- a result of the amplifier #5 issue and compounded +by the presence of telluric absorption redward of around 880 nm. + +To deal with this, we can consider interpolating the (reference) data of the spectrophotometric standard, +given that it has a smooth spectrum, +to generate new sensitivity data points to fit. +This is enabled by the ``resampling`` parameter, whose value we update as follows .. todo:: The trace and the sensfunc plot are different from 3.2.x For the @@ -420,14 +420,14 @@ we update as follows .. image:: _graphics/LS_ldred_sens_before.png :width: 325 :alt: Sensitivity function before optimization - - + + .. image:: _graphics/LS_ldred_sens_after.png :width: 325 :alt: Sensitivity function after optimization -The resulting curve is shown on the right plot (click the panel to enlarge). Notice that we have also tuned other parameters in the -interactive tool and have manually masked four data points. +The resulting curve is shown on the right plot (click the panel to enlarge). Notice that we have also tuned other parameters in the +interactive tool and have manually masked four data points. .. note:: If you wish to inspect the spectra:: @@ -444,10 +444,10 @@ interactive tool and have manually masked four data points. Science Observations ==================== -As mentioned previously, the science target is the central galaxy of an Odd Radio Circle. The sequence -has two images that were dithered in wavelength (with a large step of 90 nm). +As mentioned previously, the science target is the central galaxy of an Odd Radio Circle. The sequence +has two images that were dithered in wavelength (with a large step of 90 nm). DRAGONS will register the two images, align and stack them before -extracting the 1-D spectrum. +extracting the 1-D spectrum. This is what one raw image looks like. @@ -455,11 +455,11 @@ This is what one raw image looks like. :width: 600 :alt: raw science image -The broad, white and black vertical bands (slightly to the left of the middle) are related -to the GMOS-S amplifier #5 issues. -As can be seen, there are two obvious sources in this observation. Regardless of whether -both of them are of interest to the program, DRAGONS will locate, trace, and extract -them automatically. Each extracted spectrum is stored in an individual extension +The broad, white and black vertical bands (slightly to the left of the middle) are related +to the GMOS-S amplifier #5 issues. +As can be seen, there are two obvious sources in this observation. Regardless of whether +both of them are of interest to the program, DRAGONS will locate, trace, and extract +them automatically. Each extracted spectrum is stored in an individual extension in the output multi-extension FITS file. @@ -472,21 +472,21 @@ science observations and extract the 1-D spectrum. reduce -r reduceWithMultipleStandards @sci.lis -p interactive=True -Here we use a different science reduction recipe ``reduceWithMultipleStandards`` -than the default. The -latter performs flux calibration *after* stacking the extracted spectra -as described :ref:`here `, which is not suitable -for these observations with a large wavelength dither. The recipe -``reduceWithMultipleStandards`` will run flux calibration for each +Here we use a different science reduction recipe ``reduceWithMultipleStandards`` +than the default. The +latter performs flux calibration *after* stacking the extracted spectra +as described :ref:`here `, which is not suitable +for these observations with a large wavelength dither. The recipe +``reduceWithMultipleStandards`` will run flux calibration for each central wavelength using the corresponding sensitivity function from the -spectrophotometric standard before stacking +spectrophotometric standard before stacking the observations -- the desired workflow for this example. -You can make use of the interactive tools to optimize the reduction. For +You can make use of the interactive tools to optimize the reduction. For the science reduction above, we have deleted any additional apertures found -by DRAGONS barring the two most prominent ones (see the left plot; click -to enlarge). You simply hover over the unwanted peak and press D. Furthermore, -we have selected sigma-clipping while tracing the apertures (right plot; +by DRAGONS barring the two most prominent ones (see the left plot; click +to enlarge). You simply hover over the unwanted peak and press D. Furthermore, +we have selected sigma-clipping while tracing the apertures (right plot; click to enlarge). Notice that there is an additional tab for Aperture 2 in the upper part of the right plot. @@ -495,7 +495,7 @@ in the upper part of the right plot. .. image:: _graphics/LS_ldred_findAp_sci.png :width: 325 :alt: Apertures found by DRAGONS - + .. image:: _graphics/LS_ldred_traceAp_sci.png :width: 325 :alt: Tracing of aperture @@ -504,8 +504,8 @@ The outputs include a 2-D spectrum image (``S20220611S0716_2D.fits``), which has bias corrected, flat fielded, QE-corrected, wavelength-calibrated, corrected for distortion, sky-subtracted, flux-calibrated, and stacked, and also the 1-D spectra (``S20220611S0716_1D.fits``) extracted from this 2-D spectrum image. The 1-D spectra are stored -as 1-D FITS images in extensions of the output Multi-Extension FITS file, along with their -respective variance and data quality (or mask) arrays. +as 1-D FITS images in extensions of the output Multi-Extension FITS file, along with their +respective variance and data quality (or mask) arrays. This is what the 2-D spectrum looks like. @@ -545,10 +545,10 @@ The 1-D flux-calibrated spectra of the two apertures are shown below. .. image:: _graphics/LS_ldred_ap1_spec1D.png :width: 325 :alt: 1D spectrum for aperture 1 - + .. image:: _graphics/LS_ldred_ap2_spec1D.png :width: 325 - :alt: 1D spectrum for aperture 2 + :alt: 1D spectrum for aperture 2 Since there are only two images, several bad columns, and artifacts remain in the data. Many are flagged in the mask, the DQ plane of the output FITS diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_dataset.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_dataset.rst index 7d3b86c156..07ac5ba08a 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_dataset.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex2_gmosls_large_dither_dataset.rst @@ -5,10 +5,10 @@ ******************************* Example 2 - Dataset description ******************************* -The dataset used in this example is from a GMOS longslit observation from the program GS-2022A-FT-110. -The primary target is the central galaxy of an Odd Radio Circle, `ORC J0102-2450 `_. -The observation sequence makes a large wavelength dither (several tens of nanometer) to circumvent the issues with -GMOS South amplifier #5, which began in January 2022. During reduction, DRAGONS will adjust for the difference in +The dataset used in this example is from a GMOS longslit observation from the program GS-2022A-FT-110. +The primary target is the central galaxy of an Odd Radio Circle, `ORC J0102-2450 `_. +The observation sequence makes a large wavelength dither (several tens of nanometer) to circumvent the issues with +GMOS South amplifier #5, which began in January 2022. During reduction, DRAGONS will adjust for the difference in central wavelength and then stack the aligned spectra automatically. The observation uses the R400 grating on GMOS South. The central wavelengths @@ -73,4 +73,3 @@ package. They can also be downloaded from the Gemini Observatory Archive (GOA). +---------------------+---------------------------------------------+ | BPM || bpm_20220128_gmos-s_Ham_22_full_12amp.fits | +---------------------+---------------------------------------------+ - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns.rst index 69911ff697..53b5b2569a 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns.rst @@ -16,5 +16,3 @@ Hamamatsu CCDs. ex3_gmosls_ns_dataset ex3_gmosls_ns_cmdline ex3_gmosls_ns_api - - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns_dataset.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns_dataset.rst index 62a583fd0b..48b57ff81b 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns_dataset.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex3_gmosls_ns_dataset.rst @@ -75,4 +75,4 @@ package. They can also be downloaded from the Gemini Observatory Archive (GOA). desired by the PI. DRAGONS will use a dark if there is one. In contrast, for the EEV CCDs and the ee2vv CCDs, nod-and-shuffle - darks are required, not optional. \ No newline at end of file + darks are required, not optional. diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex4_gmosls_nsred.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex4_gmosls_nsred.rst index b410d9fc2b..43f9d94a11 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex4_gmosls_nsred.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/ex4_gmosls_nsred.rst @@ -19,4 +19,3 @@ that extra order using the interactive tools. ex4_gmosls_nsred_dataset ex4_gmosls_nsred_cmdline ex4_gmosls_nsred_api - diff --git a/geminidr/doc/tutorials/GMOSLS-DRTutorial/index.rst b/geminidr/doc/tutorials/GMOSLS-DRTutorial/index.rst index e74f1dc3cd..fe4936a525 100644 --- a/geminidr/doc/tutorials/GMOSLS-DRTutorial/index.rst +++ b/geminidr/doc/tutorials/GMOSLS-DRTutorial/index.rst @@ -36,4 +36,4 @@ Indices and tables * :ref:`modindex` * :ref:`search` -.. todolist:: \ No newline at end of file +.. todolist:: diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/.readthedocs.yaml index 5d41b66b56..b173b464c0 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/01_overview.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/01_overview.rst index 06c90c0e3f..217fa5fd5c 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/01_overview.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/01_overview.rst @@ -32,4 +32,3 @@ in two different ways: We show how to run the same reduction using both methods. * :ref:`twostars_example` - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/02_datasets.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/02_datasets.rst index 2e318820e8..d9413b5c2b 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/02_datasets.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/02_datasets.rst @@ -31,4 +31,3 @@ will work in the subdirectory named ``gnirsimg_tutorial/playground``. .. note:: All the raw data can also be downloaded from the Gemini Observatory Archive. Using the tutorial data package is probably more convenient. - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/05_tips_and_tricks.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/05_tips_and_tricks.rst index cf78e15d84..abbcf8c3c4 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/05_tips_and_tricks.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/05_tips_and_tricks.rst @@ -177,4 +177,3 @@ The list of recognized processed calibration is: * processed_flat * processed_fringe * processed_standard - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/Makefile b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/Makefile index 2355fe96fd..1e532d5523 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/Makefile +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/Makefile @@ -17,4 +17,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/css/custom_code.css b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/css/custom_code.css +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/fonts.css b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/fonts.css +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/rtd_theme_overrides.css b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/rtd_theme_overrides.css +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars.rst index 4ae9ca053f..f36331748e 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars.rst @@ -16,5 +16,3 @@ in time will be used for sky subtraction of each frame. ex1_gnirsim_twostars_dataset ex1_gnirsim_twostars_cmdline ex1_gnirsim_twostars_api - - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars_cmdline.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars_cmdline.rst index 17ab192a49..72801af5c1 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars_cmdline.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/ex1_gnirsim_twostars_cmdline.rst @@ -225,4 +225,3 @@ signal-to-noise. .. image:: _graphics/gnirs_keyhole_after.png :scale: 60% :align: center - diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/index.rst b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/index.rst index d4735b7b3b..3319c46542 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/index.rst +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/index.rst @@ -31,4 +31,4 @@ Indices and tables * :ref:`modindex` * :ref:`search` -.. todolist:: \ No newline at end of file +.. todolist:: diff --git a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/retired/DRAGONSlinks.txt b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/retired/DRAGONSlinks.txt index cdda9c0fc9..b00d358e69 100644 --- a/geminidr/doc/tutorials/GNIRSImg-DRTutorial/retired/DRAGONSlinks.txt +++ b/geminidr/doc/tutorials/GNIRSImg-DRTutorial/retired/DRAGONSlinks.txt @@ -36,4 +36,4 @@ .. |atfile| raw:: html - "at-file" Facility \ No newline at end of file + "at-file" Facility diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/.readthedocs.yaml index bf047ed3e5..d6b6947aec 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/01_introduction.rst b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/01_introduction.rst index b4e1ece944..04bfc95ee6 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/01_introduction.rst +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/01_introduction.rst @@ -72,4 +72,3 @@ will work in the subdirectory named ``gsaoiimg_tutorial/playground``. but if you really want to learn how to search for and retrieve the data yourself, see the step-by-step instructions for Example 1 in the appendix, :ref:`goadownload`. - diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/05_issues_and_limitations.rst b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/05_issues_and_limitations.rst index 1f401ad529..f1fa3b55d2 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/05_issues_and_limitations.rst +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/05_issues_and_limitations.rst @@ -40,4 +40,4 @@ on the screen. We recommend using the DRAGONS logger located in the :linenos: from gempy.utils import logutils - logutils.config(file_name='gsaoi_data_reduction.log') \ No newline at end of file + logutils.config(file_name='gsaoi_data_reduction.log') diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/Makefile b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/Makefile index 298ea9e213..51285967a7 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/Makefile +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/Makefile @@ -16,4 +16,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/README b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/README index 61912db867..fa5a7536f9 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/README +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/README @@ -1,7 +1,7 @@ To ensure some sort of uniformity across our Sphinx documents please use -this template. Follow the instructions below. +this template. Follow the instructions below. -First, go to the directory that will contain the sources and +First, go to the directory that will contain the sources and run sphinx-quickstart to get the basic structure laid out and the Makefile created. @@ -24,13 +24,13 @@ index.rst The template index.rst has additional statements over the default to make the HTML look a bit better and to display the TODOs. Also, it shows how to set up an appendix section. - - Copy the template index.rst on top of the automatically generated one - and edit as needed. In particular, edit the with what it - says. You can remove the appendix section if you don't need it. Of + + Copy the template index.rst on top of the automatically generated one + and edit as needed. In particular, edit the with what it + says. You can remove the appendix section if you don't need it. Of course, replace "intro" and "yourcontent" with the name of your .rst files. (There is an example "intro.rst" file in the template directory.) - + $ cp /DPSG-TEMP-110_TeamSphinxManual/index.rst . $ launch editor on index.rst @@ -40,19 +40,19 @@ index-latex.rst copy it over and edit the strings appropriately. If you do not need an appendix, just delete that section (from .. raw:: latex to appendices/appendix_yourcontent, inclusively). - + $ cp /DPSG-TEMP-110_TeamSphinxManual/index-latex.rst . $ launch editor on index-latex.rst - + conf.py There is a bit of work to do on this file changing strings relating to the - title of the manual, your name, version number. However, all the special + title of the manual, your name, version number. However, all the special code to pick up the "index-latex.rst", the todo style, and setting up the extensions is done for you. So, in the end, it is simpler this way. $ cp /DPSG-TEMP-110_TeamSphinxManual/conf.py . $ launch editor on conf.py - + Things to edit: * Replace all the "" with the title of your document. * Replace all the "ReplaceWithTitle" with a CamelCase string of your title. @@ -61,7 +61,7 @@ conf.py * Replace the only occurrence of "2016" with the current year. * Find "version =", and set the X.Y version number * Find "release =", and set the full version/release number (eg. X.Y.Z) - + That should do it. That's it with the edits. @@ -70,4 +70,3 @@ For reference, the template directory has a source .rst example, "intro.rst" and an appendix example. It would be nice if we could adopt the section delimiters from the examples as our standard. (Though of course ReST does not care, just us, humans.) - \ No newline at end of file diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/_static/css/code.xref-styles.css b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/_static/css/code.xref-styles.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/_static/css/code.xref-styles.css +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/_static/css/code.xref-styles.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/appendices/01_goa_download.rst b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/appendices/01_goa_download.rst index d7b44268b0..444d604e95 100644 --- a/geminidr/doc/tutorials/GSAOIImg-DRTutorial/appendices/01_goa_download.rst +++ b/geminidr/doc/tutorials/GSAOIImg-DRTutorial/appendices/01_goa_download.rst @@ -64,4 +64,4 @@ downloaded the data from the `Gemini Archive "at-file" Facility \ No newline at end of file + "at-file" Facility diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/.readthedocs.yaml b/geminidr/doc/tutorials/NIRIImg-DRTutorial/.readthedocs.yaml index f273257aee..0063c7381e 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/.readthedocs.yaml +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/.readthedocs.yaml @@ -27,4 +27,4 @@ sphinx: python: install: - requirements: requirements.txt - - requirements: doc/requirements.txt \ No newline at end of file + - requirements: doc/requirements.txt diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/01_overview.rst b/geminidr/doc/tutorials/NIRIImg-DRTutorial/01_overview.rst index 207619a774..4ea4c37d13 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/01_overview.rst +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/01_overview.rst @@ -31,4 +31,4 @@ We show how to run the same reduction using both methods. We plan to add additional examples in the future. -See the |RSUserInstall| to install the software if you have not already. \ No newline at end of file +See the |RSUserInstall| to install the software if you have not already. diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/02_datasets.rst b/geminidr/doc/tutorials/NIRIImg-DRTutorial/02_datasets.rst index fabeeddc43..9cc608e9c6 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/02_datasets.rst +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/02_datasets.rst @@ -30,4 +30,3 @@ we will work in the subdirectory named ``niriimg_tutorial/playground``. .. note:: All the raw data can also be downloaded from the Gemini Observatory Archive. Using the tutorial data package is probably more convenient. - diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/Makefile b/geminidr/doc/tutorials/NIRIImg-DRTutorial/Makefile index dc2d29cf39..a3926c72f0 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/Makefile +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/Makefile @@ -17,4 +17,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/css/custom_code.css b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/css/custom_code.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/css/custom_code.css +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/css/custom_code.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/fonts.css b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/fonts.css +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/rtd_theme_overrides.css b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/rtd_theme_overrides.css +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/_static/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended.rst b/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended.rst index 75713be3e6..8b5d0f625e 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended.rst +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended.rst @@ -17,5 +17,3 @@ the science observation that is not "contaminated" by the galaxy. ex1_niriim_extended_dataset ex1_niriim_extended_cmdline ex1_niriim_extended_api - - diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended_cmdline.rst b/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended_cmdline.rst index 6f3b2d57d8..5e0ead1358 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended_cmdline.rst +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/ex1_niriim_extended_cmdline.rst @@ -359,4 +359,4 @@ the common area, rather the image size is adjusted to include the complete area covered by the whole sequence. Of course the areas covered by less than the full stack of images will have a lower signal-to-noise. The final MEF file has three named extensions, the science (SCI), the variance (VAR), and the data -quality plane (DQ). \ No newline at end of file +quality plane (DQ). diff --git a/geminidr/doc/tutorials/NIRIImg-DRTutorial/index.rst b/geminidr/doc/tutorials/NIRIImg-DRTutorial/index.rst index e50f6b054a..e4ebf99d82 100644 --- a/geminidr/doc/tutorials/NIRIImg-DRTutorial/index.rst +++ b/geminidr/doc/tutorials/NIRIImg-DRTutorial/index.rst @@ -23,7 +23,7 @@ Tutorial Series - NIRI Imaging Data Reduction with DRAGONS ex1_niriim_extended 05_tips_and_tricks 06_issues_and_limitations - + Indices and tables ================== @@ -32,4 +32,4 @@ Indices and tables * :ref:`modindex` * :ref:`search` -.. todolist:: \ No newline at end of file +.. todolist:: diff --git a/geminidr/doc/usermanuals/README b/geminidr/doc/usermanuals/README index a66b976ad7..028018bdc2 100644 --- a/geminidr/doc/usermanuals/README +++ b/geminidr/doc/usermanuals/README @@ -41,4 +41,3 @@ Dev and test for primitives Dev and test for recipes * ./generate_recipedoc.py gmos -d testdoc - diff --git a/geminidr/doc/usermanuals/_static/css/code.xref-styles.css b/geminidr/doc/usermanuals/_static/css/code.xref-styles.css index 785c691ebf..23660678c6 100644 --- a/geminidr/doc/usermanuals/_static/css/code.xref-styles.css +++ b/geminidr/doc/usermanuals/_static/css/code.xref-styles.css @@ -13,4 +13,3 @@ /* border: solid 1px #e1e4e5; */ text-decoration: underline; } - diff --git a/geminidr/doc/usermanuals/_static/css/fonts.css b/geminidr/doc/usermanuals/_static/css/fonts.css index b6c4949c81..8fd395842a 100644 --- a/geminidr/doc/usermanuals/_static/css/fonts.css +++ b/geminidr/doc/usermanuals/_static/css/fonts.css @@ -33,4 +33,4 @@ .bolditalic { font-weight: bold; font-style: italic; -} \ No newline at end of file +} diff --git a/geminidr/doc/usermanuals/_static/css/rtd_theme_overrides.css b/geminidr/doc/usermanuals/_static/css/rtd_theme_overrides.css index 62910a0bb7..912eac4c0b 100644 --- a/geminidr/doc/usermanuals/_static/css/rtd_theme_overrides.css +++ b/geminidr/doc/usermanuals/_static/css/rtd_theme_overrides.css @@ -3,13 +3,13 @@ @media screen and (min-width: 767px) { .wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from + /* !important prevents the common CSS stylesheets from overriding this as on RTD the are loaded after this stylesheet */ white-space: normal !important; - } + } .wy-table-responsive { - /* margin-bottom: 24px; */ + /* margin-bottom: 24px; */ /* max-width: 100%; */ overflow: visible !important; } diff --git a/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.core.primitives_ccd.CCD.subtractOverscan_param.rst b/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.core.primitives_ccd.CCD.subtractOverscan_param.rst index 2bed542a44..d80828538b 100644 --- a/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.core.primitives_ccd.CCD.subtractOverscan_param.rst +++ b/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.core.primitives_ccd.CCD.subtractOverscan_param.rst @@ -7,7 +7,7 @@ Parameter defaults and options none Row-by-row values spline3 Cubic spline chebyshev Chebyshev polynomial - + order None Order of fitting function Valid Range = [0,inf) lsigma 3.0 Low rejection in sigma of fit diff --git a/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.gmos.primitives_gmos.GMOS.subtractOverscan_param.rst b/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.gmos.primitives_gmos.GMOS.subtractOverscan_param.rst index b31afcd5f3..219c6a6bab 100644 --- a/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.gmos.primitives_gmos.GMOS.subtractOverscan_param.rst +++ b/geminidr/doc/usermanuals/examples/primitives/generated_doc/geminidr.gmos.primitives_gmos.GMOS.subtractOverscan_param.rst @@ -7,7 +7,7 @@ Parameter defaults and options none Row-by-row values spline3 Cubic spline chebyshev Chebyshev polynomial - + order None Order of fitting function Valid Range = [0,inf) lsigma 3.0 Low rejection in sigma of fit diff --git a/geminidr/doc/usermanuals/examples/primitives/primitive_createExample.rst b/geminidr/doc/usermanuals/examples/primitives/primitive_createExample.rst index 648c62b303..ca93f2a7e6 100644 --- a/geminidr/doc/usermanuals/examples/primitives/primitive_createExample.rst +++ b/geminidr/doc/usermanuals/examples/primitives/primitive_createExample.rst @@ -84,4 +84,3 @@ Issues and Limitations ---------------------- Optional, okay to refer to the section from another implementation to avoid unnecessary duplication. - diff --git a/geminidr/doc/usermanuals/examples/primitives/primitives_index.rst b/geminidr/doc/usermanuals/examples/primitives/primitives_index.rst index 3e2369bb0b..77b6530934 100644 --- a/geminidr/doc/usermanuals/examples/primitives/primitives_index.rst +++ b/geminidr/doc/usermanuals/examples/primitives/primitives_index.rst @@ -11,4 +11,3 @@ Primitives Reference :numbered: primitive_createExample - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeIRAFCompatible.rst index cf7ed6b46d..9a2d7d86fb 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeProcessedArc.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeProcessedArc.rst index 93205b644e..2bbfe4a394 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeProcessedArc.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeProcessedArc.rst @@ -18,4 +18,3 @@ makeProcessedArc p.determineDistortion() p.storeProcessedArc() p.writeOutputs() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeIRAFCompatible.rst index 9e6c6d9efa..7786cb3d0b 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeProcessedBias.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeProcessedBias.rst index 13003cd585..d396e00be8 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeProcessedBias.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_BIAS.makeProcessedBias.rst @@ -28,4 +28,3 @@ equal to the name of the first input bias image with "_bias.fits" appended. p.makeIRAFCompatible() p.storeProcessedBias() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeIRAFCompatible.rst index 4fec79e16d..9ab27e121f 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeProcessedDark.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeProcessedDark.rst index 7eb9c1e88e..f235d2b470 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeProcessedDark.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_DARK.makeProcessedDark.rst @@ -32,4 +32,3 @@ equal to the name of the first input bias image with "_dark.fits" appended. p.makeIRAFCompatible() p.storeProcessedDark() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeIRAFCompatible.rst index 171ffbbf1f..331954bdf8 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeProcessedFlat.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeProcessedFlat.rst index 94cb950de2..109594e671 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeProcessedFlat.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_IMAGE.makeProcessedFlat.rst @@ -32,4 +32,3 @@ flat image with "_flat.fits" appended. p.makeIRAFCompatible() p.storeProcessedFlat() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeIRAFCompatible.rst index 5466e3de17..c806a6288a 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatNoStack.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatNoStack.rst index da2a2bb307..d6a8465e73 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatNoStack.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatNoStack.rst @@ -17,4 +17,3 @@ makeProcessedFlatNoStack p.thresholdFlatfield() p.makeIRAFCompatible() p.storeProcessedFlat() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatStack.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatStack.rst index 1b38502ae1..a98769af7d 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatStack.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedFlatStack.rst @@ -18,4 +18,3 @@ makeProcessedFlatStack p.thresholdFlatfield() p.makeIRAFCompatible() p.storeProcessedFlat() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedSlitIllum.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedSlitIllum.rst index eadfb5c860..98661db170 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedSlitIllum.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_FLAT_LS_SPECT.makeProcessedSlitIllum.rst @@ -17,4 +17,3 @@ makeProcessedSlitIllum p.makeSlitIllum() p.makeIRAFCompatible() p.storeProcessedSlitIllum() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.alignAndStack.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.alignAndStack.rst index 8e6877db5b..0a5ac89edb 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.alignAndStack.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.alignAndStack.rst @@ -23,4 +23,3 @@ This recipe stack already preprocessed data. p.scaleCountsToReference() p.stackFrames(zero=True) return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst index 608dc5144e..e40a5cd508 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeProcessedFringe.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeProcessedFringe.rst index 56187b7f48..59275fd08a 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeProcessedFringe.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeProcessedFringe.rst @@ -30,4 +30,3 @@ to the name of the first input bias image with "_fringe.fits" appended. p.makeFringeFrame() p.storeProcessedFringe() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduce.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduce.rst index 9dc95f3be7..44d0e340dc 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduce.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduce.rst @@ -37,4 +37,3 @@ convert the raw input science images into a stacked image. p.stackFrames(zero=True) p.storeProcessedScience(suffix="_image") return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDs.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDs.rst index 4911406b97..178d7def3d 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDs.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDs.rst @@ -48,4 +48,3 @@ of the images and then applied to each of the CCDs separately. p.appendStream(stream="all", from_stream="main", copy=False) p.mergeInputs(instream="all") p.storeProcessedScience(suffix="_image") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDsCentral.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDsCentral.rst index fc6045574a..3cdc93ebcd 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDsCentral.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.reduceSeparateCCDsCentral.rst @@ -47,4 +47,3 @@ separately. The relative WCS is determined from the central CCD p.appendStream(stream="all", from_stream="main", copy=False) p.mergeInputs(instream="all") p.storeProcessedScience(suffix="_image") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.makeIRAFCompatible.rst index 9b4a6a69b8..991eb34c40 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceScience.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceScience.rst index 8a1ec5d550..57a94a4ee0 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceScience.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceScience.rst @@ -40,4 +40,3 @@ todo: add docstring p.extractSpectra() p.fluxCalibrate() p.storeProcessedScience(suffix="_1D") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceStandard.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceStandard.rst index f4c58230a6..6477541f0d 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceStandard.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceStandard.rst @@ -37,4 +37,3 @@ todo: add docstring p.calculateSensitivity() p.storeProcessedStandard() p.writeOutputs() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceWithMultipleStandards.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceWithMultipleStandards.rst index 1ca0016bf1..8673fc6fd7 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceWithMultipleStandards.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_LS_SPECT.reduceWithMultipleStandards.rst @@ -40,4 +40,3 @@ todo: add docstring p.storeProcessedScience(suffix="_2D") p.extractSpectra() p.storeProcessedScience(suffix="_1D") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_NS_LS_SPECT.reduce.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_NS_LS_SPECT.reduce.rst index 6cf4364f82..173a12a2fc 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_NS_LS_SPECT.reduce.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_NS_LS_SPECT.reduce.rst @@ -49,4 +49,3 @@ This recipe reduces GMOS N&S longslit science data. p.extractSpectra() p.fluxCalibrate() p.storeProcessedScience(suffix="_1D") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_SLITILLUM_LS_SPECT.makeProcessedSlitIllum.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_SLITILLUM_LS_SPECT.makeProcessedSlitIllum.rst index 6c8feba90b..dea22ecdde 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_SLITILLUM_LS_SPECT.makeProcessedSlitIllum.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_SLITILLUM_LS_SPECT.makeProcessedSlitIllum.rst @@ -17,4 +17,3 @@ makeProcessedSlitIllum p.makeSlitIllum() p.makeIRAFCompatible() p.storeProcessedSlitIllum() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.makeIRAFCompatible.rst index 17d5f39c51..bc4a23c346 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.makeIRAFCompatible.rst @@ -22,4 +22,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceScience.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceScience.rst index b46e2cfb3d..2b5c7cce6c 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceScience.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceScience.rst @@ -41,4 +41,3 @@ todo: add docstring p.extractSpectra() p.fluxCalibrate() p.storeProcessedScience(suffix="_1D") - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceStandard.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceStandard.rst index 0173c1fd11..263ae543a6 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceStandard.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_STANDARD_LS_SPECT.reduceStandard.rst @@ -38,4 +38,3 @@ todo: add docstring p.calculateSensitivity() p.storeProcessedStandard() p.writeOutputs() - diff --git a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_common.makeIRAFCompatible.rst b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_common.makeIRAFCompatible.rst index 3c324502e1..79a7084681 100644 --- a/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_common.makeIRAFCompatible.rst +++ b/geminidr/doc/usermanuals/examples/recipes/generated_doc/geminidr.gmos.recipes.sq.recipes_common.makeIRAFCompatible.rst @@ -21,4 +21,3 @@ only if the reduced file will be used as input to Gemini IRAF tasks. p.makeIRAFCompatible() p.writeOutputs() return - diff --git a/geminidr/doc/usermanuals/examples/recipes/gmos_cal_sq_recipes.rst b/geminidr/doc/usermanuals/examples/recipes/gmos_cal_sq_recipes.rst index 3d8e7a7e20..6991a9013e 100644 --- a/geminidr/doc/usermanuals/examples/recipes/gmos_cal_sq_recipes.rst +++ b/geminidr/doc/usermanuals/examples/recipes/gmos_cal_sq_recipes.rst @@ -27,4 +27,3 @@ GMOS Calibrations Recipes .. gmos_cal_flat_ls_spect_sq_recipes gmos_cal_wavecal_ls_sq_recipes .. gmos_cal_standard_ls_sq_recipes - diff --git a/geminidr/doc/usermanuals/examples/recipes/gmos_cal_wavecal_ls_sq_recipes.rst b/geminidr/doc/usermanuals/examples/recipes/gmos_cal_wavecal_ls_sq_recipes.rst index 87a81043ae..d3180c9753 100644 --- a/geminidr/doc/usermanuals/examples/recipes/gmos_cal_wavecal_ls_sq_recipes.rst +++ b/geminidr/doc/usermanuals/examples/recipes/gmos_cal_wavecal_ls_sq_recipes.rst @@ -26,4 +26,3 @@ Utility Recipes *************** .. include:: generated_doc/geminidr.gmos.recipes.sq.recipes_ARC_LS_SPECT.makeIRAFCompatible.rst - diff --git a/geminidr/doc/usermanuals/examples/recipes/gmos_img_sq_recipes.rst b/geminidr/doc/usermanuals/examples/recipes/gmos_img_sq_recipes.rst index b78f2eab8e..c5a5cb37d0 100644 --- a/geminidr/doc/usermanuals/examples/recipes/gmos_img_sq_recipes.rst +++ b/geminidr/doc/usermanuals/examples/recipes/gmos_img_sq_recipes.rst @@ -29,4 +29,4 @@ Utility Recipes *************** .. include:: generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.alignAndStack.rst -.. include:: generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst \ No newline at end of file +.. include:: generated_doc/geminidr.gmos.recipes.sq.recipes_IMAGE.makeIRAFCompatible.rst diff --git a/geminidr/doc/usermanuals/examples/recipes/gmos_sq_recipes.rst b/geminidr/doc/usermanuals/examples/recipes/gmos_sq_recipes.rst index 915a7969af..b8c5a10a82 100644 --- a/geminidr/doc/usermanuals/examples/recipes/gmos_sq_recipes.rst +++ b/geminidr/doc/usermanuals/examples/recipes/gmos_sq_recipes.rst @@ -16,4 +16,4 @@ GMOS Science Recipes gmos_img_sq_recipes .. gmos_ls_sq_recipes - .. gmos_ns_sq_recipes \ No newline at end of file + .. gmos_ns_sq_recipes diff --git a/geminidr/doc/usermanuals/examples/recipes/recipes_index.rst b/geminidr/doc/usermanuals/examples/recipes/recipes_index.rst index 01fa001c84..f662b143fc 100644 --- a/geminidr/doc/usermanuals/examples/recipes/recipes_index.rst +++ b/geminidr/doc/usermanuals/examples/recipes/recipes_index.rst @@ -13,4 +13,3 @@ Recipes Reference gmos_sq_recipes .. niri_sq_recipes - diff --git a/geminidr/doc/usermanuals/recipes/recipes_index.rst b/geminidr/doc/usermanuals/recipes/recipes_index.rst index fb89405902..00e1cb7e51 100644 --- a/geminidr/doc/usermanuals/recipes/recipes_index.rst +++ b/geminidr/doc/usermanuals/recipes/recipes_index.rst @@ -15,5 +15,3 @@ Recipes Reference .. gnirs_sq_recipes .. gsaoi_sq_recipes .. niri_sq_recipes - - diff --git a/geminidr/doc/usermanuals/utility_scripts/generate_primdoc.py b/geminidr/doc/usermanuals/utility_scripts/generate_primdoc.py index ba1245435a..3b72aaf557 100755 --- a/geminidr/doc/usermanuals/utility_scripts/generate_primdoc.py +++ b/geminidr/doc/usermanuals/utility_scripts/generate_primdoc.py @@ -282,4 +282,4 @@ def main(argv=None): # the generic, just different defaults, no point in repeating the docstring. # make testdoc -# utility_scripts/generate_primdoc.py core gmos -d testdoc \ No newline at end of file +# utility_scripts/generate_primdoc.py core gmos -d testdoc diff --git a/geminidr/doc/usermanuals/utility_scripts/generate_recipedoc.py b/geminidr/doc/usermanuals/utility_scripts/generate_recipedoc.py index a2ebbc65c6..9316666285 100755 --- a/geminidr/doc/usermanuals/utility_scripts/generate_recipedoc.py +++ b/geminidr/doc/usermanuals/utility_scripts/generate_recipedoc.py @@ -291,5 +291,3 @@ def main(argv=None): if __name__ == '__main__': sys.exit(main()) - - diff --git a/geminidr/f2/lookups/maskdb.py b/geminidr/f2/lookups/maskdb.py index 601d5923b4..87754e0bcc 100644 --- a/geminidr/f2/lookups/maskdb.py +++ b/geminidr/f2/lookups/maskdb.py @@ -5,4 +5,4 @@ illumMask_dict = { 'F2_IMAGE_11': 'f2_image_illumination.fits', -} \ No newline at end of file +} diff --git a/geminidr/f2/lookups/nearIRsky.dat b/geminidr/f2/lookups/nearIRsky.dat index 57ae7a8edd..0ff83547ca 100644 --- a/geminidr/f2/lookups/nearIRsky.dat +++ b/geminidr/f2/lookups/nearIRsky.dat @@ -10,7 +10,7 @@ # # Because of the very high resolution OH line list from Rousselot et al, # the list was then modified removing lines that could not be identified -# with the medium resolution mode on ISAAC. Because of the lower +# with the medium resolution mode on ISAAC. Because of the lower # resolution R=2000 mode of GNIRS, the blended lines will be identified # by the strongest line in the blend. # diff --git a/geminidr/f2/lookups/nearIRsky_with_2nd_order.dat b/geminidr/f2/lookups/nearIRsky_with_2nd_order.dat index 599fa3efe3..7fbc7b7f73 100644 --- a/geminidr/f2/lookups/nearIRsky_with_2nd_order.dat +++ b/geminidr/f2/lookups/nearIRsky_with_2nd_order.dat @@ -10,7 +10,7 @@ # # Because of the very high resolution OH line list from Rousselot et al, # the list was then modified removing lines that could not be identified -# with the medium resolution mode on ISAAC. Because of the lower +# with the medium resolution mode on ISAAC. Because of the lower # resolution R=2000 mode of GNIRS, the blended lines will be identified # by the strongest line in the blend. # diff --git a/geminidr/f2/parameters_f2_spect.py b/geminidr/f2/parameters_f2_spect.py index 71e68c58fc..8917181ab4 100644 --- a/geminidr/f2/parameters_f2_spect.py +++ b/geminidr/f2/parameters_f2_spect.py @@ -30,8 +30,7 @@ def setDefaults(self): class skyCorrectConfig(parameters_preprocess.skyCorrectConfig): def setDefaults(self): - self.scale_sky = False #MS: IF for whatever reason the exposure times are different between frames being subtracted, one should have a check to turn this on. + self.scale_sky = False #MS: IF for whatever reason the exposure times are different between frames being subtracted, one should have a check to turn this on. self.offset_sky = False self.mask_objects = False self.dilation = 0. - diff --git a/geminidr/f2/primitives_f2_spect.py b/geminidr/f2/primitives_f2_spect.py index 072bb7df18..09736725a6 100644 --- a/geminidr/f2/primitives_f2_spect.py +++ b/geminidr/f2/primitives_f2_spect.py @@ -325,7 +325,7 @@ def determineWavelengthSolution(self, adinputs=None, **params): if min_snr_isNone: self.log.stdinfo(f'Parameter "min_snr" is set to None. ' f'Using min_snr={these_params["min_snr"]} for {ad.filename}') - + adoutputs.extend(super().determineWavelengthSolution([ad], **these_params)) return adoutputs diff --git a/geminidr/f2/recipes/qa/recipes_LS_SPECT.py b/geminidr/f2/recipes/qa/recipes_LS_SPECT.py index b9e1e81cf0..18b74df401 100644 --- a/geminidr/f2/recipes/qa/recipes_LS_SPECT.py +++ b/geminidr/f2/recipes/qa/recipes_LS_SPECT.py @@ -9,7 +9,7 @@ def reduceScience(p): """ - To be updated as development continues: This recipe processes F2 longslit + To be updated as development continues: This recipe processes F2 longslit spectroscopic data, currently up to basic extraction (no telluric correction). Parameters @@ -53,6 +53,6 @@ def reduceScience(p): p.traceApertures() p.extractSpectra() p.plotSpectraForQA() - - + + _default = reduceScience diff --git a/geminidr/f2/recipes/sq/recipes_IMAGE.py b/geminidr/f2/recipes/sq/recipes_IMAGE.py index 4d7b2c63e7..4af65cca91 100644 --- a/geminidr/f2/recipes/sq/recipes_IMAGE.py +++ b/geminidr/f2/recipes/sq/recipes_IMAGE.py @@ -254,4 +254,4 @@ def makeIRAFCompatible(p): p.makeIRAFCompatible() p.writeOutputs() - return \ No newline at end of file + return diff --git a/geminidr/f2/recipes/tests/reduce_img.sh b/geminidr/f2/recipes/tests/reduce_img.sh index cccbd77d17..c765d8ea8c 100755 --- a/geminidr/f2/recipes/tests/reduce_img.sh +++ b/geminidr/f2/recipes/tests/reduce_img.sh @@ -61,4 +61,3 @@ reduce @sciset.lis -p alignAndStack:save=True -p addDQ:user_bpm=${bpm} # Check the final result & return status: compare_file $(last_result_filename stack) - diff --git a/geminidr/f2/recipes/tests/reduce_img_nodarks.sh b/geminidr/f2/recipes/tests/reduce_img_nodarks.sh index 386dad6533..e764a4f3dd 100755 --- a/geminidr/f2/recipes/tests/reduce_img_nodarks.sh +++ b/geminidr/f2/recipes/tests/reduce_img_nodarks.sh @@ -61,4 +61,3 @@ reduce @sciset.lis -p darkCorrect:do_dark=False -p alignAndStack:save=True -p ad # Check the final result & return status: compare_file $(last_result_filename stack) - diff --git a/geminidr/f2/recipes/tests/test_H_img.sh b/geminidr/f2/recipes/tests/test_H_img.sh index 5ec7d57823..8f361acd61 100755 --- a/geminidr/f2/recipes/tests/test_H_img.sh +++ b/geminidr/f2/recipes/tests/test_H_img.sh @@ -10,4 +10,3 @@ start_test_set "$name" "$script_dir/reduce_img_nodarks.sh" F2/H/raw "S201801..S00[0-1]" 48 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/f2/recipes/tests/test_J_img.sh b/geminidr/f2/recipes/tests/test_J_img.sh index 110e42db37..0a4636085a 100755 --- a/geminidr/f2/recipes/tests/test_J_img.sh +++ b/geminidr/f2/recipes/tests/test_J_img.sh @@ -10,4 +10,3 @@ start_test_set "$name" "$script_dir/reduce_img.sh" "$name" "S20130719S052" "S20130719S055" || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/f2/recipes/tests/test_K-red_img.sh b/geminidr/f2/recipes/tests/test_K-red_img.sh index 49396a284b..ec0e6803b6 100755 --- a/geminidr/f2/recipes/tests/test_K-red_img.sh +++ b/geminidr/f2/recipes/tests/test_K-red_img.sh @@ -10,4 +10,3 @@ start_test_set "$name" "$script_dir/reduce_img.sh" "$name" "S2018(0303S|0207S00[23])" "S2018(0211S|0207S004)" 25 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv10000_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv10000_za48_r0.dat index 20f3bf0ba1..12a8fcc941 100644 --- a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv10000_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv10000_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 8930 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 10000 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv2300_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv2300_za48_r0.dat index 8ee450c4c9..6f755ee5c3 100644 --- a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv2300_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv2300_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 8930 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 2300 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv4300_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv4300_za48_r0.dat index 6eaa24cf83..c43d1886ab 100644 --- a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv4300_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv4300_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 8930 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 4300 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv7600_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv7600_za48_r0.dat index 35114cd2d7..c5c8981b1f 100644 --- a/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv7600_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_cp_850-6000nm_wv7600_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 8930 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 7600 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1000_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1000_za48_r0.dat index efad777daa..ef506c2323 100644 --- a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1000_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1000_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 13825 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 1000 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1600_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1600_za48_r0.dat index 0cdb4cf70a..547b9c7894 100644 --- a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1600_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv1600_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 13825 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 1600 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv3000_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv3000_za48_r0.dat index c89bafebab..dbcc9279d5 100644 --- a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv3000_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv3000_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 13825 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 3000 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv5000_za48_r0.dat b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv5000_za48_r0.dat index 5752bb9e19..fb5a30eb9d 100644 --- a/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv5000_za48_r0.dat +++ b/geminidr/gemini/lookups/atran_models/atran_mk_850-6000nm_wv5000_za48_r0.dat @@ -1,7 +1,7 @@ # ATRAN synthetic spectrum for 850-6000nm, unconvolved, resampled to 0.01nm. # Input parameters: Obs Altitude: 13825 feet, Obs Latitude: 39 degrees, # Water Vapor Overburden: 5000 microns, Std Atmosphere with: 2 Layers, -# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 +# Zenith Angle: 48 degrees, Wavelength Range: 0.85 - 6.0 microns, Smoothing R: 0 # units nanometer # wavelengths in IN VACUUM 850.000 1.0000000 diff --git a/geminidr/gemini/lookups/color_corrections.py b/geminidr/gemini/lookups/color_corrections.py index b0b8f4bb0f..606eda3a84 100644 --- a/geminidr/gemini/lookups/color_corrections.py +++ b/geminidr/gemini/lookups/color_corrections.py @@ -1,27 +1,32 @@ -# Color corrections for photometry -# The nature of encoding transformations should be clear from these examples -# K_MKO = K_2MASS -0.003 (+/-0.007) - 0.026 (+/-0.011) * (J-K)_2MASS -# K_MKO = K_2MASS -0.006 (+/-0.004) - 0.071 (+/-0.020) * (H-K)_2MASS -# Leggett 2008, http://arxiv.org/pdf/astro-ph/0609461v1.pdf -# K(prime) = K_MKO + 0.22 (+/- 0.003) * (H-K)_2MASS -# (Wainscoat and Cowie 1992AJ.103.332W) -# If multiple options, make a list of lists; code will choose options -# with smallest uncertainty on an object-by-object basis -# The filter names are case-sensitive -# The catalog column names are not +""" +Color corrections for photometry +The nature of encoding transformations should be clear from these examples + K_MKO = K_2MASS -0.003 (+/-0.007) - 0.026 (+/-0.011) * (J-K)_2MASS + K_MKO = K_2MASS -0.006 (+/-0.004) - 0.071 (+/-0.020) * (H-K)_2MASS + Leggett 2008, http://arxiv.org/pdf/astro-ph/0609461v1.pdf + K(prime) = K_MKO + 0.22 (+/- 0.003) * (H-K)_2MASS + (Wainscoat and Cowie 1992AJ.103.332W) +If multiple options, make a list of lists; code will choose options +with smallest uncertainty on an object-by-object basis +The filter names are case-sensitive +The catalog column names are not +""" + colorTerms = { -'u' : ['u'], -'g' : ['g'], -'r' : ['r'], -'i' : ['i'], -'z' : ['z'], -'J' : ['j'], -'H' : ['h'], -'Kshort' : ['k'], -'K(short)' : ['k'], -'Ks' : ['k'], -'K' : [['k',(-0.003,0.007),(-0.026,0.011,'j-k')], - ['k',(-0.006,0.004),(-0.071,0.020,'h-k')]], -'Kprime' : ['k',(-0.006,0.007),(0.149,0.023,'h-k')], -'K(prime)' : ['k',(-0.006,0.007),(0.149,0.023,'h-k')], + "u": ["u"], + "g": ["g"], + "r": ["r"], + "i": ["i"], + "z": ["z"], + "J": ["j"], + "H": ["h"], + "Kshort": ["k"], + "K(short)": ["k"], + "Ks": ["k"], + "K": [ + ["k", (-0.003, 0.007), (-0.026, 0.011, "j-k")], + ["k", (-0.006, 0.004), (-0.071, 0.020, "h-k")], + ], + "Kprime": ["k", (-0.006, 0.007), (0.149, 0.023, "h-k")], + "K(prime)": ["k", (-0.006, 0.007), (0.149, 0.023, "h-k")], } diff --git a/geminidr/gemini/lookups/extinction_data.py b/geminidr/gemini/lookups/extinction_data.py index 752289e507..89fe5be596 100644 --- a/geminidr/gemini/lookups/extinction_data.py +++ b/geminidr/gemini/lookups/extinction_data.py @@ -116,4 +116,4 @@ def extinction(wave, site=None, telescope=None): except AttributeError: # Assume it's nm already wave_in_nm = wave - return extinction_curves[site](wave_in_nm) \ No newline at end of file + return extinction_curves[site](wave_in_nm) diff --git a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_10000_XJHK.dat b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_10000_XJHK.dat index e1ccafbd0b..c6e217c3ca 100644 --- a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_10000_XJHK.dat +++ b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_10000_XJHK.dat @@ -1,4 +1,4 @@ -# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=10000 +# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=10000 # Based on the line list computed by Philippe Rousselot (Observatory of Besancon, France). 900.000 0.0000000 900.010 0.0000000 diff --git a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_1500_XJHK.dat b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_1500_XJHK.dat index 593c680d7d..936bf16f54 100644 --- a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_1500_XJHK.dat +++ b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_1500_XJHK.dat @@ -1,4 +1,4 @@ -# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=1500 +# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=1500 # Based on the line list computed by Philippe Rousselot (Observatory of Besancon, France). 900.000 0.0019955 900.100 0.0028002 diff --git a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_20000_XJHK.dat b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_20000_XJHK.dat index 20f7d9cbff..689a25313e 100644 --- a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_20000_XJHK.dat +++ b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_20000_XJHK.dat @@ -1,4 +1,4 @@ -# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=20000 +# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=20000 # Based on the line list computed by Philippe Rousselot (Observatory of Besancon, France). 900.000 0.0000000 900.010 0.0000000 diff --git a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_500_XJHK.dat b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_500_XJHK.dat index 2436dee449..d28455f50f 100644 --- a/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_500_XJHK.dat +++ b/geminidr/gemini/lookups/oh_synthetic_spectra/oh_conv_500_XJHK.dat @@ -1,4 +1,4 @@ -# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=500 +# Synthetic OH emission line spectrum in XJHK-bands, convolved to R=500 # Based on the line list computed by Philippe Rousselot (Observatory of Besancon, France). 900.000 0.0012915 900.100 0.0013413 diff --git a/geminidr/gemini/lookups/qa_constraints.py b/geminidr/gemini/lookups/qa_constraints.py index 147aef81fe..5d9f2a42a2 100644 --- a/geminidr/gemini/lookups/qa_constraints.py +++ b/geminidr/gemini/lookups/qa_constraints.py @@ -1,25 +1,26 @@ -# Gives BG band constraints in mags / square arcsec for given (GMOS) filter -# These are derived by Paul Hirst based on both -# http://www.gemini.edu/sciops/telescopes-and-sites/observing-condition-constraints/optical-sky-background -# And the model sky spectra in the ITC. -# There are uncertainties and caveats with these numbers, and discrepancies between different sources of data and -# different assumptions. Predicting sky brightness is not an exact science. These are probably affected by systematics -# at the +/- 0.3 level in some cases, especially i and z. - -#NOTE. Nelson Zarate: Added JHK filter for NIRI. The user of this dictionaty is +"""Gives BG band constraints in mags / square arcsec for given (GMOS) filter +These are derived by Paul Hirst based on both +http://www.gemini.edu/sciops/telescopes-and-sites/observing-condition-constraints/optical-sky-background +And the model sky spectra in the ITC. +There are uncertainties and caveats with these numbers, and discrepancies between different sources of data and +different assumptions. Predicting sky brightness is not an exact science. These are probably affected by systematics +at the +/- 0.3 level in some cases, especially i and z. +""" + +# NOTE. Nelson Zarate: Added JHK filter for NIRI. The user of this dictionaty is # primitives_qa.py/measureBG() at the GENERALPrimitives level. Otherwise we would need # to create a NIRI measureBG() primitive just to handle this dictionary. bgBands = { -'u':{20:21.66, 50:19.49, 80:17.48}, -'g':{20:21.62, 50:20.68, 80:19.36}, -'r':{20:21.33, 50:20.32, 80:19.34}, -'i':{20:20.44, 50:19.97, 80:19.30}, -'z':{20:19.51, 50:19.04, 80:18.37}, -'J':{20:16.20, 50:16.20, 80:16.20}, -'H':{20:13.80, 50:13.80, 80:13.80}, -'K':{20:14.60, 50:14.60, 80:14.60}, -'Ks':{20:14.60, 50:14.60, 80:14.60}, + "u": {20: 21.66, 50: 19.49, 80: 17.48}, + "g": {20: 21.62, 50: 20.68, 80: 19.36}, + "r": {20: 21.33, 50: 20.32, 80: 19.34}, + "i": {20: 20.44, 50: 19.97, 80: 19.30}, + "z": {20: 19.51, 50: 19.04, 80: 18.37}, + "J": {20: 16.20, 50: 16.20, 80: 16.20}, + "H": {20: 13.80, 50: 13.80, 80: 13.80}, + "K": {20: 14.60, 50: 14.60, 80: 14.60}, + "Ks": {20: 14.60, 50: 14.60, 80: 14.60}, } # Gives CC band constraints as a function of magnitudes of extinction. @@ -30,33 +31,30 @@ # focal reducer, also we're using a nominal rather than measured atmospheric extinction # so we take the photometric number to be less than 0.08 mags extinction. -ccBands = { -50:0.08, 70:0.3, 80:1.0 -} +ccBands = {50: 0.08, 70: 0.3, 80: 1.0} # Gives IQ band constraints for given filter + wavefront sensor combination # Note that X has just been set to the average of Y and J. iqBands = { -'u': {20:0.60, 70:0.90, 85:1.20}, -'g': {20:0.60, 70:0.85, 85:1.10}, -'r': {20:0.50, 70:0.75, 85:1.05}, -'i': {20:0.50, 70:0.75, 85:1.05}, -'Z': {20:0.50, 70:0.70, 85:0.95}, -'Y': {20:0.40, 70:0.70, 85:0.95}, -'X': {20:0.40, 70:0.65, 85:0.90}, -'J': {20:0.40, 70:0.60, 85:0.85}, -'H': {20:0.40, 70:0.60, 85:0.85}, -'K': {20:0.35, 70:0.55, 85:0.80}, -'L': {20:0.35, 70:0.50, 85:0.75}, -'M': {20:0.35, 70:0.50, 85:0.70}, -'N': {20:0.34, 70:0.37, 85:0.45}, -'Q': {20:0.54, 70:0.54, 85:0.54}, - -'AO': {20:0.45, 70:0.80, 85:1.20} # from view_wfs.py (telops ~/bin) + "u": {20: 0.60, 70: 0.90, 85: 1.20}, + "g": {20: 0.60, 70: 0.85, 85: 1.10}, + "r": {20: 0.50, 70: 0.75, 85: 1.05}, + "i": {20: 0.50, 70: 0.75, 85: 1.05}, + "Z": {20: 0.50, 70: 0.70, 85: 0.95}, + "Y": {20: 0.40, 70: 0.70, 85: 0.95}, + "X": {20: 0.40, 70: 0.65, 85: 0.90}, + "J": {20: 0.40, 70: 0.60, 85: 0.85}, + "H": {20: 0.40, 70: 0.60, 85: 0.85}, + "K": {20: 0.35, 70: 0.55, 85: 0.80}, + "L": {20: 0.35, 70: 0.50, 85: 0.75}, + "M": {20: 0.35, 70: 0.50, 85: 0.70}, + "N": {20: 0.34, 70: 0.37, 85: 0.45}, + "Q": {20: 0.54, 70: 0.54, 85: 0.54}, + "AO": {20: 0.45, 70: 0.80, 85: 1.20}, # from view_wfs.py (telops ~/bin) } # Gives WV band constraints (in mm of precipitable H2O at zenith) for Mauna Kea and Cerro Pachon. wvBands = { - 'Gemini-North': {"20": 1.0, "50": 1.6, "80": 3.0}, - 'Gemini-South': {"20": 2.3, "50": 4.3, "80": 7.6} + "Gemini-North": {"20": 1.0, "50": 1.6, "80": 3.0}, + "Gemini-South": {"20": 2.3, "50": 4.3, "80": 7.6}, } diff --git a/geminidr/gemini/lookups/source_detection/default.nnw b/geminidr/gemini/lookups/source_detection/default.nnw index 3b2c967d5e..6c1d480199 100644 --- a/geminidr/gemini/lookups/source_detection/default.nnw +++ b/geminidr/gemini/lookups/source_detection/default.nnw @@ -24,6 +24,5 @@ NNW -1.70059e+00 -3.65695e+00 1.22367e+00 -5.74367e-01 -3.29571e+00 2.46316e+00 5.22353e+00 2.42038e+00 1.22919e+00 -9.22250e-01 -2.32028e+00 - 0.00000e+00 - 1.00000e+00 - + 0.00000e+00 + 1.00000e+00 diff --git a/geminidr/gemini/lookups/source_detection/default.param b/geminidr/gemini/lookups/source_detection/default.param index 99a26290e1..38065b4660 100644 --- a/geminidr/gemini/lookups/source_detection/default.param +++ b/geminidr/gemini/lookups/source_detection/default.param @@ -176,4 +176,3 @@ BACKGROUND #RAD14 #RAD15 #VIGNET - diff --git a/geminidr/gemini/lookups/source_detection/default.sex b/geminidr/gemini/lookups/source_detection/default.sex index 5c2bc7fb2d..6429ba235e 100644 --- a/geminidr/gemini/lookups/source_detection/default.sex +++ b/geminidr/gemini/lookups/source_detection/default.sex @@ -1,78 +1,78 @@ # Default configuration file for SExtractor 2.8.6 # EB 2009-04-09 # - + #-------------------------------- Catalog ------------------------------------ - + CATALOG_NAME test.fits # name of the output catalog CATALOG_TYPE FITS_1.0 # NONE,ASCII,ASCII_HEAD, ASCII_SKYCAT, # ASCII_VOTABLE, FITS_1.0 or FITS_LDAC PARAMETERS_NAME default.param # name of the file containing catalog contents - + #------------------------------- Extraction ---------------------------------- - + DETECT_TYPE CCD # CCD (linear) or PHOTO (with gamma correction) DETECT_MINAREA 8 # minimum number of pixels above threshold DETECT_THRESH 2.0 # or , in mag.arcsec-2 ANALYSIS_THRESH 2.0 # or , in mag.arcsec-2 - + FILTER Y # apply filter for detection (Y or N)? FILTER_NAME default.conv # name of the file containing the filter - + DEBLEND_NTHRESH 32 # Number of deblending sub-thresholds DEBLEND_MINCONT 0.005 # Minimum contrast parameter for deblending - + CLEAN Y # Clean spurious detections? (Y or N)? CLEAN_PARAM 1.0 # Cleaning efficiency - + MASK_TYPE CORRECT # type of detection MASKing: can be one of # NONE, BLANK or CORRECT FLAG_TYPE OR # IMAFLAGS_ISO set to bitwise OR of DQ values - + #------------------------------ Photometry ----------------------------------- - + PHOT_APERTURES 20 # MAG_APER aperture diameter(s) in pixels PHOT_AUTOPARAMS 2.5, 3.5 # MAG_AUTO parameters: , PHOT_PETROPARAMS 2.0, 3.5 # MAG_PETRO parameters: , # PHOT_FLUXFRAC 0.5 # The isophote fraction for FLUX_RADIUS - + SATUR_LEVEL 5000000.0 # level (in ADUs) at which arises saturation SATUR_KEY SATURATE # keyword for saturation level (in ADUs) - + MAG_ZEROPOINT 0.0 # magnitude zero-point MAG_GAMMA 4.0 # gamma of emulsion (for photographic scans) GAIN 1.0 # detector gain in e-/ADU GAIN_KEY GAIN # keyword for detector gain in e-/ADU PIXEL_SCALE 0 # size of pixel in arcsec (0=use FITS WCS info) - + #------------------------- Star/Galaxy Separation ---------------------------- - + SEEING_FWHM 1.2 # stellar FWHM in arcsec STARNNW_NAME default.nnw # Neural-Network_Weight table filename - + #------------------------------ Background ----------------------------------- - + BACK_SIZE 32 # Background mesh: or , BACK_FILTERSIZE 8 # Background filter: or , #------------------------------ Check Image ---------------------------------- - + CHECKIMAGE_TYPE NONE # can be NONE, BACKGROUND, BACKGROUND_RMS, # MINIBACKGROUND, MINIBACK_RMS, -BACKGROUND, # FILTERED, OBJECTS, -OBJECTS, SEGMENTATION, # or APERTURES CHECKIMAGE_NAME check.fits # Filename for the check-image - + #--------------------- Memory (change with caution!) ------------------------- - + MEMORY_OBJSTACK 5000 # number of objects in stack MEMORY_PIXSTACK 1000000 # number of pixels in stack MEMORY_BUFSIZE 2048 # number of lines in buffer - + #----------------------------- Miscellaneous --------------------------------- - + VERBOSE_TYPE NORMAL # can be QUIET, NORMAL or FULL WRITE_XML N # Write XML file (Y/N)? XML_NAME sex.xml # Filename for XML output diff --git a/geminidr/gemini/lookups/source_detection/default_nodq.param b/geminidr/gemini/lookups/source_detection/default_nodq.param index 15218f1f3b..ad3bd68bab 100644 --- a/geminidr/gemini/lookups/source_detection/default_nodq.param +++ b/geminidr/gemini/lookups/source_detection/default_nodq.param @@ -175,4 +175,3 @@ BACKGROUND #RAD14 #RAD15 #VIGNET - diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/bd+284211.dat b/geminidr/gemini/lookups/spectrophotometric_standards/bd+284211.dat index 1547c483a6..db75587cc3 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/bd+284211.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/bd+284211.dat @@ -84,32 +84,32 @@ 7200.00 11.21 50. 7250.00 11.21 50. 7300.00 11.18 50. -7350 11.14 50 -7400 11.13 50 -7450 11.15 50 -7500 11.16 50 -7750 11.22 50 -7800 11.23 50 -7850 11.24 50 -7900 11.26 50 -7950 11.28 50 -8000 11.26 50 -8050 11.30 50 -8600 11.33 50 -8650 11.34 50 -8700 11.33 50 -8750 11.35 50 -8800 11.35 50 -8850 11.35 50 -8900 11.36 50 -9700 11.62 50 -9750 11.63 50 -9800 11.63 50 -9850 11.59 50 -9900 11.57 50 -9950 11.63 50 -10000 11.64 50 -10050 11.71 50 -10100 11.75 50 -10150 11.73 50 -10200 11.74 50 +7350 11.14 50 +7400 11.13 50 +7450 11.15 50 +7500 11.16 50 +7750 11.22 50 +7800 11.23 50 +7850 11.24 50 +7900 11.26 50 +7950 11.28 50 +8000 11.26 50 +8050 11.30 50 +8600 11.33 50 +8650 11.34 50 +8700 11.33 50 +8750 11.35 50 +8800 11.35 50 +8850 11.35 50 +8900 11.36 50 +9700 11.62 50 +9750 11.63 50 +9800 11.63 50 +9850 11.59 50 +9900 11.57 50 +9950 11.63 50 +10000 11.64 50 +10050 11.71 50 +10100 11.75 50 +10150 11.73 50 +10200 11.74 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/feige110.dat b/geminidr/gemini/lookups/spectrophotometric_standards/feige110.dat index 9db72a6d21..c0c4ffacc6 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/feige110.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/feige110.dat @@ -84,32 +84,32 @@ 7200.00 12.47 50. 7250.00 12.47 50. 7300.00 12.45 50. -7350 12.45 50 -7400 12.44 50 -7450 12.45 50 -7500 12.46 50 -7750 12.53 50 -7800 12.53 50 -7850 12.55 50 -7900 12.57 50 -7950 12.58 50 -8000 12.57 50 -8050 12.61 50 -8600 12.64 50 -8650 12.65 50 -8700 12.64 50 -8750 12.66 50 -8800 12.67 50 -8850 12.68 50 -8900 12.68 50 -9700 12.94 50 -9750 12.99 50 -9800 12.95 50 -9850 12.86 50 -9900 12.86 50 -9950 13.00 50 -10000 13.02 50 -10050 13.01 50 -10100 12.98 50 -10150 13.00 50 -10200 13.01 50 +7350 12.45 50 +7400 12.44 50 +7450 12.45 50 +7500 12.46 50 +7750 12.53 50 +7800 12.53 50 +7850 12.55 50 +7900 12.57 50 +7950 12.58 50 +8000 12.57 50 +8050 12.61 50 +8600 12.64 50 +8650 12.65 50 +8700 12.64 50 +8750 12.66 50 +8800 12.67 50 +8850 12.68 50 +8900 12.68 50 +9700 12.94 50 +9750 12.99 50 +9800 12.95 50 +9850 12.86 50 +9900 12.86 50 +9950 13.00 50 +10000 13.02 50 +10050 13.01 50 +10100 12.98 50 +10150 13.00 50 +10200 13.01 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/feige34.dat b/geminidr/gemini/lookups/spectrophotometric_standards/feige34.dat index 9844937fd3..167eb59945 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/feige34.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/feige34.dat @@ -84,32 +84,32 @@ 7200.00 11.83 50. 7250.00 11.82 50. 7300.00 11.82 50. -7350 11.79 50 -7400 11.79 50 -7450 11.81 50 -7500 11.81 50 -7750 11.86 50 -7800 11.89 50 -7850 11.88 50 -7900 11.88 50 -7950 11.91 50 -8000 11.88 50 -8050 11.91 50 -8600 11.94 50 -8650 11.94 50 -8700 11.93 50 -8750 11.93 50 -8800 11.94 50 -8850 11.93 50 -8900 11.95 50 -9700 12.14 50 -9750 12.14 50 -9800 12.18 50 -9850 12.12 50 -9900 12.17 50 -9950 12.23 50 -10000 12.27 50 -10050 12.28 50 -10100 12.31 50 -10150 12.29 50 -10200 12.29 50 +7350 11.79 50 +7400 11.79 50 +7450 11.81 50 +7500 11.81 50 +7750 11.86 50 +7800 11.89 50 +7850 11.88 50 +7900 11.88 50 +7950 11.91 50 +8000 11.88 50 +8050 11.91 50 +8600 11.94 50 +8650 11.94 50 +8700 11.93 50 +8750 11.93 50 +8800 11.94 50 +8850 11.93 50 +8900 11.95 50 +9700 12.14 50 +9750 12.14 50 +9800 12.18 50 +9850 12.12 50 +9900 12.17 50 +9950 12.23 50 +10000 12.27 50 +10050 12.28 50 +10100 12.31 50 +10150 12.29 50 +10200 12.29 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/feige66.dat b/geminidr/gemini/lookups/spectrophotometric_standards/feige66.dat index f3ff8b5918..f631267cfe 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/feige66.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/feige66.dat @@ -84,32 +84,32 @@ 7200.00 11.13 50. 7250.00 11.14 50. 7300.00 11.13 50. -7350 11.13 50 -7400 11.13 50 -7450 11.14 50 -7500 11.15 50 -7750 11.19 50 -7800 11.23 50 -7850 11.22 50 -7900 11.22 50 -7950 11.25 50 -8000 11.23 50 -8050 11.26 50 -8600 11.29 50 -8650 11.29 50 -8700 11.30 50 -8750 11.29 50 -8800 11.30 50 -8850 11.30 50 -8900 11.30 50 -9700 11.53 50 -9750 11.53 50 -9800 11.57 50 -9850 11.54 50 -9900 11.59 50 -9950 11.64 50 -10000 11.66 50 -10050 11.77 50 -10100 11.78 50 -10150 11.74 50 -10200 11.77 50 +7350 11.13 50 +7400 11.13 50 +7450 11.14 50 +7500 11.15 50 +7750 11.19 50 +7800 11.23 50 +7850 11.22 50 +7900 11.22 50 +7950 11.25 50 +8000 11.23 50 +8050 11.26 50 +8600 11.29 50 +8650 11.29 50 +8700 11.30 50 +8750 11.29 50 +8800 11.30 50 +8850 11.30 50 +8900 11.30 50 +9700 11.53 50 +9750 11.53 50 +9800 11.57 50 +9850 11.54 50 +9900 11.59 50 +9950 11.64 50 +10000 11.66 50 +10050 11.77 50 +10100 11.78 50 +10150 11.74 50 +10200 11.77 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/feige67.dat b/geminidr/gemini/lookups/spectrophotometric_standards/feige67.dat index 6e886e702a..344cf84c13 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/feige67.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/feige67.dat @@ -84,32 +84,32 @@ 7200.00 12.50 50. 7250.00 12.50 50. 7300.00 12.50 50. -7350 12.46 50 -7400 12.46 50 -7450 12.48 50 -7500 12.48 50 -7750 12.53 50 -7800 12.56 50 -7850 12.56 50 -7900 12.57 50 -7950 12.59 50 -8000 12.57 50 -8050 12.61 50 -8600 12.64 50 -8650 12.65 50 -8700 12.63 50 -8750 12.64 50 -8800 12.65 50 -8850 12.63 50 -8900 12.65 50 -9700 12.90 50 -9750 12.92 50 -9800 12.94 50 -9850 12.89 50 -9900 12.94 50 -9950 13.02 50 -10000 13.06 50 -10050 13.08 50 -10100 13.10 50 -10150 13.12 50 -10200 13.15 50 +7350 12.46 50 +7400 12.46 50 +7450 12.48 50 +7500 12.48 50 +7750 12.53 50 +7800 12.56 50 +7850 12.56 50 +7900 12.57 50 +7950 12.59 50 +8000 12.57 50 +8050 12.61 50 +8600 12.64 50 +8650 12.65 50 +8700 12.63 50 +8750 12.64 50 +8800 12.65 50 +8850 12.63 50 +8900 12.65 50 +9700 12.90 50 +9750 12.92 50 +9800 12.94 50 +9850 12.89 50 +9900 12.94 50 +9950 13.02 50 +10000 13.06 50 +10050 13.08 50 +10100 13.10 50 +10150 13.12 50 +10200 13.15 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/g191b2b.dat b/geminidr/gemini/lookups/spectrophotometric_standards/g191b2b.dat index 0c9fe2bf35..1aeda74422 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/g191b2b.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/g191b2b.dat @@ -84,32 +84,32 @@ 7200.00 12.47 50. 7250.00 12.46 50. 7300.00 12.43 50. -7350 12.43 50 -7400 12.42 50 -7450 12.44 50 -7500 12.45 50 -7750 12.51 50 -7800 12.53 50 -7850 12.53 50 -7900 12.55 50 -7950 12.57 50 -8000 12.56 50 -8050 12.59 50 -8600 12.63 50 -8650 12.62 50 -8700 12.63 50 -8750 12.64 50 -8800 12.64 50 -8850 12.65 50 -8900 12.66 50 -9700 12.93 50 -9750 12.95 50 -9800 12.95 50 -9850 12.87 50 -9900 12.88 50 -9950 13.00 50 -10000 12.99 50 -10050 12.98 50 -10100 12.98 50 -10150 12.96 50 -10200 12.95 50 +7350 12.43 50 +7400 12.42 50 +7450 12.44 50 +7500 12.45 50 +7750 12.51 50 +7800 12.53 50 +7850 12.53 50 +7900 12.55 50 +7950 12.57 50 +8000 12.56 50 +8050 12.59 50 +8600 12.63 50 +8650 12.62 50 +8700 12.63 50 +8750 12.64 50 +8800 12.64 50 +8850 12.65 50 +8900 12.66 50 +9700 12.93 50 +9750 12.95 50 +9800 12.95 50 +9850 12.87 50 +9900 12.88 50 +9950 13.00 50 +10000 12.99 50 +10050 12.98 50 +10100 12.98 50 +10150 12.96 50 +10200 12.95 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/gd140.dat b/geminidr/gemini/lookups/spectrophotometric_standards/gd140.dat index 68598e4fd3..b050acb843 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/gd140.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/gd140.dat @@ -84,32 +84,32 @@ 7200.00 13.08 50. 7250.00 13.10 50. 7300.00 13.11 50. -7350 13.04 50 -7400 13.03 50 -7450 13.05 50 -7500 13.06 50 -7750 13.09 50 -7800 13.13 50 -7850 13.12 50 -7900 13.11 50 -7950 13.15 50 -8000 13.12 50 -8050 13.15 50 -8600 13.18 50 -8650 13.18 50 -8700 13.18 50 -8750 13.17 50 -8800 13.17 50 -8850 13.16 50 -8900 13.18 50 -9700 13.41 50 -9750 13.41 50 -9800 13.42 50 -9850 13.40 50 -9900 13.48 50 -9950 13.60 50 -10000 13.71 50 -10050 13.68 50 -10100 13.68 50 -10150 13.65 50 -10200 13.73 50 +7350 13.04 50 +7400 13.03 50 +7450 13.05 50 +7500 13.06 50 +7750 13.09 50 +7800 13.13 50 +7850 13.12 50 +7900 13.11 50 +7950 13.15 50 +8000 13.12 50 +8050 13.15 50 +8600 13.18 50 +8650 13.18 50 +8700 13.18 50 +8750 13.17 50 +8800 13.17 50 +8850 13.16 50 +8900 13.18 50 +9700 13.41 50 +9750 13.41 50 +9800 13.42 50 +9850 13.40 50 +9900 13.48 50 +9950 13.60 50 +10000 13.71 50 +10050 13.68 50 +10100 13.68 50 +10150 13.65 50 +10200 13.73 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/hiltner600.dat b/geminidr/gemini/lookups/spectrophotometric_standards/hiltner600.dat index ffb8a18c1c..2fe9e5c281 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/hiltner600.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/hiltner600.dat @@ -84,32 +84,32 @@ 7200.00 10.63 50. 7250.00 10.61 50. 7300.00 10.60 50. -7350 10.57 50 -7400 10.56 50 -7450 10.56 50 -7500 10.56 50 -7750 10.58 50 -7800 10.60 50 -7850 10.57 50 -7900 10.60 50 -7950 10.60 50 -8000 10.59 50 -8050 10.62 50 -8600 10.58 50 -8650 10.57 50 -8700 10.51 50 -8750 10.57 50 -8800 10.51 50 -8850 10.55 50 -8900 10.52 50 -9700 10.68 50 -9750 10.66 50 -9800 10.67 50 -9850 10.61 50 -9900 10.58 50 -9950 10.61 50 -10000 10.61 50 -10050 10.69 50 -10100 10.63 50 -10150 10.59 50 -10200 10.53 50 +7350 10.57 50 +7400 10.56 50 +7450 10.56 50 +7500 10.56 50 +7750 10.58 50 +7800 10.60 50 +7850 10.57 50 +7900 10.60 50 +7950 10.60 50 +8000 10.59 50 +8050 10.62 50 +8600 10.58 50 +8650 10.57 50 +8700 10.51 50 +8750 10.57 50 +8800 10.51 50 +8850 10.55 50 +8900 10.52 50 +9700 10.68 50 +9750 10.66 50 +9800 10.67 50 +9850 10.61 50 +9900 10.58 50 +9950 10.61 50 +10000 10.61 50 +10050 10.69 50 +10100 10.63 50 +10150 10.59 50 +10200 10.53 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/hz44.dat b/geminidr/gemini/lookups/spectrophotometric_standards/hz44.dat index 906b2360fb..4640172016 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/hz44.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/hz44.dat @@ -84,32 +84,32 @@ 7200.00 12.36 50. 7250.00 12.36 50. 7300.00 12.35 50. -7350 12.30 50 -7400 12.29 50 -7450 12.31 50 -7500 12.32 50 -7750 12.37 50 -7800 12.41 50 -7850 12.40 50 -7900 12.41 50 -7950 12.44 50 -8000 12.41 50 -8050 12.45 50 -8600 12.49 50 -8650 12.49 50 -8700 12.48 50 -8750 12.48 50 -8800 12.49 50 -8850 12.48 50 -8900 12.49 50 -9700 12.75 50 -9750 12.73 50 -9800 12.76 50 -9850 12.73 50 -9900 12.78 50 -9950 12.84 50 -10000 12.93 50 -10050 12.95 50 -10100 12.98 50 -10150 12.95 50 -10200 12.97 50 +7350 12.30 50 +7400 12.29 50 +7450 12.31 50 +7500 12.32 50 +7750 12.37 50 +7800 12.41 50 +7850 12.40 50 +7900 12.41 50 +7950 12.44 50 +8000 12.41 50 +8050 12.45 50 +8600 12.49 50 +8650 12.49 50 +8700 12.48 50 +8750 12.48 50 +8800 12.49 50 +8850 12.48 50 +8900 12.49 50 +9700 12.75 50 +9750 12.73 50 +9800 12.76 50 +9850 12.73 50 +9900 12.78 50 +9950 12.84 50 +10000 12.93 50 +10050 12.95 50 +10100 12.98 50 +10150 12.95 50 +10200 12.97 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/pg0823546.dat b/geminidr/gemini/lookups/spectrophotometric_standards/pg0823546.dat index 6997cf8bf3..4c9fac8bc3 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/pg0823546.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/pg0823546.dat @@ -84,32 +84,32 @@ 7200.00 14.88 50. 7250.00 15.02 50. 7300.00 14.84 50. -7350 14.80 50 -7400 14.80 50 -7450 14.82 50 -7500 14.82 50 -7750 14.86 50 -7800 14.89 50 -7850 14.86 50 -7900 14.88 50 -7950 14.91 50 -8000 14.88 50 -8050 14.92 50 -8600 14.94 50 -8650 14.90 50 -8700 14.91 50 -8750 14.88 50 -8800 14.88 50 -8850 14.89 50 -8900 14.94 50 -9700 15.18 50 -9750 15.44 50 -9800 15.19 50 -9850 14.91 50 -9900 15.10 50 -9950 15.86 50 -10000 15.96 50 -10050 15.22 50 -10100 15.11 50 -10150 15.19 50 -10200 15.08 50 +7350 14.80 50 +7400 14.80 50 +7450 14.82 50 +7500 14.82 50 +7750 14.86 50 +7800 14.89 50 +7850 14.86 50 +7900 14.88 50 +7950 14.91 50 +8000 14.88 50 +8050 14.92 50 +8600 14.94 50 +8650 14.90 50 +8700 14.91 50 +8750 14.88 50 +8800 14.88 50 +8850 14.89 50 +8900 14.94 50 +9700 15.18 50 +9750 15.44 50 +9800 15.19 50 +9850 14.91 50 +9900 15.10 50 +9950 15.86 50 +10000 15.96 50 +10050 15.22 50 +10100 15.11 50 +10150 15.19 50 +10200 15.08 50 diff --git a/geminidr/gemini/lookups/spectrophotometric_standards/wolf1346.dat b/geminidr/gemini/lookups/spectrophotometric_standards/wolf1346.dat index 1b47170805..05e0b405a7 100644 --- a/geminidr/gemini/lookups/spectrophotometric_standards/wolf1346.dat +++ b/geminidr/gemini/lookups/spectrophotometric_standards/wolf1346.dat @@ -84,32 +84,32 @@ 7200.00 12.13 50. 7250.00 12.12 50. 7300.00 12.12 50. -7350 12.06 50 -7400 12.05 50 -7450 12.07 50 -7500 12.08 50 -7750 12.13 50 -7800 12.15 50 -7850 12.15 50 -7900 12.16 50 -7950 12.18 50 -8000 12.16 50 -8050 12.19 50 -8600 12.22 50 -8650 12.22 50 -8700 12.22 50 -8750 12.23 50 -8800 12.23 50 -8850 12.23 50 -8900 12.24 50 -9700 12.45 50 -9750 12.47 50 -9800 12.47 50 -9850 12.42 50 -9900 12.45 50 -9950 12.58 50 -10000 12.63 50 -10050 12.69 50 -10100 12.65 50 -10150 12.61 50 -10200 12.63 50 +7350 12.06 50 +7400 12.05 50 +7450 12.07 50 +7500 12.08 50 +7750 12.13 50 +7800 12.15 50 +7850 12.15 50 +7900 12.16 50 +7950 12.18 50 +8000 12.16 50 +8050 12.19 50 +8600 12.22 50 +8650 12.22 50 +8700 12.22 50 +8750 12.23 50 +8800 12.23 50 +8850 12.23 50 +8900 12.24 50 +9700 12.45 50 +9750 12.47 50 +9800 12.47 50 +9850 12.42 50 +9900 12.45 50 +9950 12.58 50 +10000 12.63 50 +10050 12.69 50 +10100 12.65 50 +10150 12.61 50 +10200 12.63 50 diff --git a/geminidr/gemini/tests/sh_functions b/geminidr/gemini/tests/sh_functions index ff3658a0a5..6e227808b8 100644 --- a/geminidr/gemini/tests/sh_functions +++ b/geminidr/gemini/tests/sh_functions @@ -72,4 +72,3 @@ end_test_set() { # name nerr echo exit $nerr } - diff --git a/geminidr/gemini/tests/test_gemini.py b/geminidr/gemini/tests/test_gemini.py index 244664b28f..1ad9b80e3c 100644 --- a/geminidr/gemini/tests/test_gemini.py +++ b/geminidr/gemini/tests/test_gemini.py @@ -173,4 +173,4 @@ def test_standardize_wcs_create_new(dataset): # there may be an absolute offset. for c1, c2 in zip(coords1, coords2): separations = [cc1.separation(cc2).arcsec for cc1, cc2 in zip(c1, c2)] - assert np.std(separations) < dataset[2] \ No newline at end of file + assert np.std(separations) < dataset[2] diff --git a/geminidr/ghost/lookups/Polyfit/README b/geminidr/ghost/lookups/Polyfit/README index f124ab77a9..baadd411ea 100644 --- a/geminidr/ghost/lookups/Polyfit/README +++ b/geminidr/ghost/lookups/Polyfit/README @@ -1 +1 @@ -Any Polyfit aperture models should be stored here as binary FITS tables \ No newline at end of file +Any Polyfit aperture models should be stored here as binary FITS tables diff --git a/geminidr/ghost/lookups/Polyfit/ghost_thar_linelist_20220718.dat b/geminidr/ghost/lookups/Polyfit/ghost_thar_linelist_20220718.dat index 2ebb610574..613992a6b8 100644 --- a/geminidr/ghost/lookups/Polyfit/ghost_thar_linelist_20220718.dat +++ b/geminidr/ghost/lookups/Polyfit/ghost_thar_linelist_20220718.dat @@ -1,411 +1,411 @@ - 27951.4149 3576.615368 5.153 Ar II W + 27951.4149 3576.615368 5.153 Ar II W 27087.9796 3690.623869 3.906 Th I P 26878.1606 3719.434728 4.607 Th I P -# 26807.002 3729.308136 3.433 Ar II W - 26745.4646 3737.888945 3.163 Ar II W - 26508.0267 3771.370827 4.259 Th I P -# 26243.0166 3809.456226 3.275 Ar II L - 25997.6861 3845.405511 2.941 Ar II L - 25962.7407 3850.581478 3.727 Ar II L - 25952.2693 3852.135168 3.175 Th I L - 25936.2783 3854.510257 2.812 Th II L - 25842.2953 3868.528624 3.508 Ar II L - 25806.9833 3873.822102 4.029 Th I L - 25663.9063 3895.419264 3.515 Th I L - 25526.3105 3916.417436 3.771 Th I L - 25478.2881 3923.7994 3.286 Th I L - 25465.829 3925.719162 3.603 Ar II L - 25440.2317 3929.669203 3.805 Th II L - 25421.6161 3932.546855 3.29 Ar II L - 25419.2603 3932.911332 3.552 Th I L -# 25306.7596 3950.395397 4.173 Th I L - 25249.8455 3959.299941 3.184 Th I L - 25198.3452 3967.392112 3.949 Th I L - 25168.1355 3972.154338 3.57 XX 0 L - 25153.4305 3974.476567 3.21 Ar II L - 25122.5897 3979.355779 3.281 Ar II L - 25052.4792 3990.492442 3.271 Th I L - 25042.6825 3992.053554 2.653 Ar II L - 24915.104 4012.495421 3.871 Th I L - 24873.9836 4019.128807 4.27 Th II L -# 24807.956 4029.826137 3.019 Th I L -# 24805.0847 4030.292633 3.094 XX 0 L - 24801.7013 4030.842436 4.129 Th I L - 24773.32 4035.460437 3.219 Ar II L -# 24769.7144 4036.047864 4.394 Th I L -# 24752.8063 4038.804857 2.578 Ar II L - 24727.7687 4042.894358 3.965 Ar II L - 24718.453 4044.418042 3.694 Ar I L - 24666.5951 4052.92101 4.033 Ar II L - 24602.9416 4063.407073 3.54 Th I L - 24529.9226 4075.503004 3.475 Th I L - 24523.1489 4076.628745 3.326 Ar II L - 24521.2566 4076.943344 3.126 Ar II L - 24488.5551 4082.38772 3.316 Ar II L - 24482.0713 4083.468911 3.414 Th I L - 24472.641 4085.042472 3.179 Th II L - 24470.2972 4085.433751 3.167 Th I L - 24463.7893 4086.520592 3.848 Th II L - 24448.1329 4089.137621 3.259 Th I L - 24414.6398 4094.747403 3.891 Th II L - 24396.7667 4097.747286 3.79 Th I L - 24381.3329 4100.341269 4.183 Th I L - 24290.0028 4115.758823 3.551 Th I L - 24284.3704 4116.713432 3.655 Th II L - 23998.4216 4165.766346 3.751 Th I L - 23970.993 4170.53309 3.847 Th I L - 23905.9331 4181.883406 3.768 Ar I L +# 26807.002 3729.308136 3.433 Ar II W + 26745.4646 3737.888945 3.163 Ar II W + 26508.0267 3771.370827 4.259 Th I P +# 26243.0166 3809.456226 3.275 Ar II L + 25997.6861 3845.405511 2.941 Ar II L + 25962.7407 3850.581478 3.727 Ar II L + 25952.2693 3852.135168 3.175 Th I L + 25936.2783 3854.510257 2.812 Th II L + 25842.2953 3868.528624 3.508 Ar II L + 25806.9833 3873.822102 4.029 Th I L + 25663.9063 3895.419264 3.515 Th I L + 25526.3105 3916.417436 3.771 Th I L + 25478.2881 3923.7994 3.286 Th I L + 25465.829 3925.719162 3.603 Ar II L + 25440.2317 3929.669203 3.805 Th II L + 25421.6161 3932.546855 3.29 Ar II L + 25419.2603 3932.911332 3.552 Th I L +# 25306.7596 3950.395397 4.173 Th I L + 25249.8455 3959.299941 3.184 Th I L + 25198.3452 3967.392112 3.949 Th I L + 25168.1355 3972.154338 3.57 XX 0 L + 25153.4305 3974.476567 3.21 Ar II L + 25122.5897 3979.355779 3.281 Ar II L + 25052.4792 3990.492442 3.271 Th I L + 25042.6825 3992.053554 2.653 Ar II L + 24915.104 4012.495421 3.871 Th I L + 24873.9836 4019.128807 4.27 Th II L +# 24807.956 4029.826137 3.019 Th I L +# 24805.0847 4030.292633 3.094 XX 0 L + 24801.7013 4030.842436 4.129 Th I L + 24773.32 4035.460437 3.219 Ar II L +# 24769.7144 4036.047864 4.394 Th I L +# 24752.8063 4038.804857 2.578 Ar II L + 24727.7687 4042.894358 3.965 Ar II L + 24718.453 4044.418042 3.694 Ar I L + 24666.5951 4052.92101 4.033 Ar II L + 24602.9416 4063.407073 3.54 Th I L + 24529.9226 4075.503004 3.475 Th I L + 24523.1489 4076.628745 3.326 Ar II L + 24521.2566 4076.943344 3.126 Ar II L + 24488.5551 4082.38772 3.316 Ar II L + 24482.0713 4083.468911 3.414 Th I L + 24472.641 4085.042472 3.179 Th II L + 24470.2972 4085.433751 3.167 Th I L + 24463.7893 4086.520592 3.848 Th II L + 24448.1329 4089.137621 3.259 Th I L + 24414.6398 4094.747403 3.891 Th II L + 24396.7667 4097.747286 3.79 Th I L + 24381.3329 4100.341269 4.183 Th I L + 24290.0028 4115.758823 3.551 Th I L + 24284.3704 4116.713432 3.655 Th II L + 23998.4216 4165.766346 3.751 Th I L + 23970.993 4170.53309 3.847 Th I L + 23905.9331 4181.883406 3.768 Ar I L 0 4208.890 0 XX 0 0 - 23728.9928 4213.067117 3.483 Th I L - 23704.4412 4217.430828 3.252 Ar II L - 23689.6343 4220.066936 3.035 Th I L - 23675.2141 4222.637351 3.398 Ar II L - 23644.3027 4228.157937 3.978 Ar II L - 23638.7712 4229.147346 3.559 Th I L - 23631.6258 4230.426111 3.234 Th I L - 23603.5188 4235.463786 4.317 Th I L + 23728.9928 4213.067117 3.483 Th I L + 23704.4412 4217.430828 3.252 Ar II L + 23689.6343 4220.066936 3.035 Th I L + 23675.2141 4222.637351 3.398 Ar II L + 23644.3027 4228.157937 3.978 Ar II L + 23638.7712 4229.147346 3.559 Th I L + 23631.6258 4230.426111 3.234 Th I L + 23603.5188 4235.463786 4.317 Th I L 0 4257.496 0 XX 0 0 -# 23432.9935 4266.286458 3.941 Ar I L -# 23431.6706 4266.527325 3.922 Ar II L +# 23432.9935 4266.286458 3.941 Ar I L +# 23431.6706 4266.527325 3.922 Ar II L # 0 4312.997 0 XX 0 0 -# 23167.0889 4315.254471 3.84 Th I L - 23093.9807 4328.915443 3.851 Th I L - 23077.3781 4332.029855 3.617 Ar II L - 23022.0345 4342.443971 3.788 Th I L - 22834.1416 4378.176824 4.112 Th I L - 22826.3714 4379.667209 4.249 Ar II L - 22814.9488 4381.859986 3.972 Th II L - 22798.3139 4385.057274 4.015 Ar II L - 22766.8846 4391.110881 4.137 Th II L - 22757.2285 4392.974102 3.481 Th I L - 22705.7873 4402.926798 4.043 Th I L -# 22646.3323 4414.486318 3.605 Th I L - 22634.2387 4416.845034 3.241 Th I L - 22561.952 4430.996494 3.873 Ar II L - 22547.492 4433.838218 3.76 Ar II L - 22518.9325 4439.461496 3.731 Ar II L - 22471.2607 4448.879769 3.916 Ar II L - 22452.6578 4452.565919 3.931 Th I L - 22425.2816 4458.001577 3.987 Th I L - 22412.4328 4460.557349 3.029 Ar II L - 22408.9979 4461.241078 3.708 Th I L - 22407.5585 4461.527666 3.734 Th I L - 22260.5991 4490.982155 3.439 Ar II L - 0 4493.333 0 XX 0 0 - 22216.0731 4499.983224 3.741 Th I L - 22201.5491 4502.927116 3.343 Ar II L - 22190.2681 4505.216342 3.597 Th I L - 22141.6045 4515.118228 4.227 Th I L - 22015.414 4540.998918 3.833 Th I L - 21787.859 4588.426418 3.936 Th I L - 21767.7445 4592.66643 3.811 Th I L - 21738.8877 4598.762949 3.951 Ar II L - 21604.8328 4627.298084 3.174 Th I L - 21600.6138 4628.201884 3.419 Th I L - 21599.4977 4628.441048 3.32 Ar I L - 21551.8006 4638.684582 3.667 Th I L - 21438.4863 4663.202971 3.988 Th I L - 0 4673.660 0 XX 0 0 - 21407.356 4669.984249 4.046 Th I L - 21333.305 4686.1947 4.199 Th I L - 21313.1682 4690.622309 3.755 Th I L - 21233.176 4708.29364 3.5 Th I L - 21126.5625 4732.054032 4.118 Ar II L - 0 4739.676 0 XX 0 0 - 21036.0547 4752.414027 3.981 Th II L - 20973.4451 4766.601069 4.11 Th I L - 20886.1198 4786.530632 3.41 Th I L - 20883.4284 4787.147499 3.665 Th I L - 20873.6664 4789.386339 4.188 Th I L - 20856.8635 4793.24488 3.215 Th I L - 20845.2567 4795.913819 3.322 Th I L - 20785.8771 4809.614655 4.099 Th I L - 20693.3477 4831.120944 4.316 Th I L - 20691.307 4831.597425 3.871 Th I L - 20653.358 4840.475242 3.123 XX 0 L - 20651.7901 4840.84274 4.539 Th I L - 20619.7588 4848.362742 4.171 Th I L - 20610.9288 4850.439875 3.689 Th II L - 20600.6133 4852.868708 3.473 XX 0 L - 20491.4014 4878.733135 4.423 Th I L - 20481.026 4881.204677 3.543 Th I L - 20476.6671 4882.243739 3.166 Ar II L - 20452.7703 4887.948196 3.378 XX 1 L - 20432.6576 4892.759664 3.286 Th I L - 20429.7951 4893.445228 3.123 Th I L - 20360.2634 4910.156909 3.63 Th I L - 20350.4344 4912.528468 3.338 Th II L - 20320.2903 4919.816059 4.365 Th II L - 20282.0764 4929.085714 3.009 Th I L - 20265.1216 4933.209697 3.922 Ar II L - 20238.7347 4939.641603 4.139 Th I L -# 20224.7244 4943.063499 4.058 Th I L - 20210.0086 4946.662819 3.719 Th II L - 20193.8284 4950.626354 3.33 Th II L - 20073.9709 4980.185897 3.558 Th I L - 20064.7004 4982.486931 3.82 Th I L - 20053.0889 4985.372021 4.132 Th I L - 20037.2681 4989.308372 3.624 Th I L - 19986.039 5002.097356 4.55 Th I L - 19980.0422 5003.598696 3.227 Th I L - 19957.1617 5009.335298 3.971 Ar II L - 0 5017.160 0 XX 0 0 - 19875.6013 5029.891591 3.661 Th I L - 19838.7674 5039.230522 4.311 Th I L - 19815.1048 5045.248316 3.603 Th I L - 19808.0559 5047.043744 3.964 Th I L - 19793.3865 5050.784272 3.995 Th I L - 19789.0597 5051.888619 3.573 Th I L - 19743.6239 5063.514632 3.419 Th I L - 19739.3861 5064.601734 4.121 Th I L - 19738.0487 5064.944882 4.162 Th I L - 19737.0856 5065.192056 3.913 Th I L - 19733.4104 5066.135402 3.525 Th I L - 19673.9522 5081.446377 3.312 Th I L - 19660.2256 5084.994251 3.101 Th I L -# 19615.8997 5096.484919 4.005 Th I L - 19609.9033 5098.043343 3.391 Th II L - 19544.7257 5115.044494 4.338 Th I L - 19493.4838 5128.490403 3.529 Th I L - 19469.7337 5134.746459 3.862 Th I L - 19459.3975 5137.473905 3.32 Th I L - 19430.7911 5145.037484 3.106 Th II L - 19429.7673 5145.30861 3.867 Ar II L - 19396.0917 5154.242014 4.216 Th I L - 19379.6882 5158.604754 4.606 Th I L - 19368.6694 5161.539521 3.792 Th I L - 19365.8694 5162.285814 3.744 Ar I L - 19361.4728 5163.458074 4.16 Th I L - 19317.0771 5175.325212 3.595 Th I L - 19245.93 5194.457234 3.776 Th I L - 19240.907 5195.813306 4.168 Th I L - 19189.529 5209.724726 3.75 Th I L - 19183.9839 5211.230608 4.402 Th I L - 19155.0209 5219.11026 4.085 Th I L -# 19050.8285 5247.654859 4.086 Th II L - 19005.7396 5260.104444 3.694 Th I L - 18981.9017 5266.710292 4.13 Th I L - 18891.8456 5291.81662 3.411 Th I L - 18868.7909 5298.282447 3.896 Th I L -# 18476.5268 5410.768418 4.073 Th I L - 18431.4296 5424.007403 3.832 Th I L - 18425.7551 5425.677824 3.594 Th II L -# 18407.3205 5431.111593 4.07 Th I L - 18337.9671 5451.65205 3.572 Ar I L - 18336.0614 5452.21866 4.043 Th I L - 18273.9222 5470.758744 3.666 Th I L - 18201.1114 5492.643935 3.993 Th I L - 18162.5634 5504.30159 4.017 Th I L - 18143.8027 5509.993104 4.099 Th I L - 18127.7477 5514.873106 4.028 Th I L - 18040.3758 5541.582669 3.154 Th I L - 18036.1188 5542.890641 3.793 Th I L - 18018.9372 5548.176013 4.181 Th I L - 17990.178 5557.045427 4.11 Th I L - 17980.9705 5559.891048 4.019 Th I L -# 17928.3679 5576.204181 3.877 Th I L -# 17918.2352 5579.357544 4.197 Th I L - 17867.9344 5595.064394 4.265 Th I L - 17847.0776 5601.603067 4.274 Th I L - 17837.8044 5604.515166 3.902 Th II L - 17818.2033 5610.680538 3.874 Th I L - 17813.7993 5612.067646 3.953 Th I L - 17726.3748 5639.746033 4.307 Th II L -# 17646.794 5665.179556 4.124 Th I L -# 17609.8878 5677.052542 3.929 Th I L - 17584.6743 5685.192577 3.619 Th I L - 17544.2425 5698.294609 3.265 Th I L - 17517.1644 5707.103137 4.119 Th II L - 17461.221 5725.388111 4.161 Th I L - 17418.2277 5739.520188 3.599 Ar I L - 17388.3294 5749.389072 3.811 Th II L - 17377.3342 5753.026927 4.205 Th I L -# 17345.6719 5763.528456 4.184 Th I L -# 17331.681 5768.181074 3.983 Th I L - 17267.4285 5789.644814 4.203 Th I L - 17259.1237 5792.430723 4.188 Th I L - 17248.2902 5796.068933 3.79 Th I L - 17230.4161 5802.081595 3.176 Ar I L - 17190.8914 5815.421655 3.974 Th II L - 17081.4519 5852.680944 3.997 Th I L - 17079.1362 5853.474514 4.038 Th I L - 17077.2518 5854.120429 3.93 Th I L - 17059.2128 5860.31081 3.661 Ar I L - 17049.2972 5863.719119 3.925 Th I L - 16994.5054 5882.624429 3.596 Ar I L - 16985.6219 5885.701097 4.187 Th I L - 16969.0451 5891.45079 4.128 Th I L - 16871.8109 5925.404219 4.006 Th I L - 16869.4547 5926.231866 4.17 Th I L - 16731.5835 5975.065492 4.422 Th I L - 16697.3914 5987.301034 3.406 Ar I L - 16692.5297 5989.044879 4.341 Th II L - 16687.0643 5991.006437 4.226 Th I L - 16658.7112 6001.203223 4.001 Th I L - 16647.72 6005.16538 4.119 Th I L - 16642.4369 6007.071707 4.217 Th I L - 16633.8842 6010.160403 4.242 Th I L - 16603.8394 6021.035954 4.358 Th I L - 16592.5019 6025.15012 3.47 Ar I L - 16577.9344 6030.444634 4.051 Th I L - 16555.3236 6038.680894 3.927 Th I L - 16516.9157 6052.723191 3.624 Ar I L - 16515.1212 6053.380881 4.067 Th I L -# 16461.4885 6073.103405 3.785 Th II L - 16444.9174 6079.223155 3.969 Th I L - 16421.1282 6088.030147 4.435 Th I L - 16413.6972 6090.786428 3.206 Ar I L - 16392.1217 6098.803276 3.695 Ar I L - 16384.2718 6101.725299 4.051 Th I L - 16381.9371 6102.594888 4.264 Th I L - 16373.7803 6105.635022 3.722 Ar I L - 16368.6914 6107.533218 3.758 XX 0 L - 16269.5317 6144.757809 3.06 Th I L - 16250.3973 6151.993136 4.522 Th I L - 16243.7375 6154.515407 3.569 Th I L - 16018.7613 6240.953508 3.786 Th I L - 16013.201 6243.120579 3.894 Ar II L - 15976.5997 6257.423258 4.212 Th I L -# 15876.5065 6296.873431 3.731 Ar I L - 15849.3632 6307.657424 3.75 Ar I L - 15813.8566 6321.820008 3.276 Th I L - 15789.8935 6331.414229 3.443 Th I L - 15677.1914 6376.930646 4.294 Th I L - 15651.5069 6387.39542 4.288 Th I L - 15420.4983 6483.0833 4.172 Ar II L - 15402.3141 6490.737378 4.369 Th I L - 15396.4786 6493.197488 3.993 Th I L - 15101.6929 6619.945897 4.239 Th II L - 15060.118 6638.221029 4.191 Ar II L - 15058.5508 6638.911903 4.118 Th I L -# 15056.671 6639.740761 4.078 Ar II L - 15001.7455 6664.050878 3.809 Ar I L - 14996.5522 6666.358628 4.231 Ar II L - 14977.818 6674.696969 4.531 Th I L - 14956.3153 6684.293258 4.377 Ar II L - 14926.3497 6697.712496 4.096 Th I L - 14923.7609 6698.874332 3.819 Ar I L - 14774.3664 6766.612079 4.089 Ar I L - 14648.6644 6824.677603 4.336 Th I L - 14643.1467 6827.249245 3.692 Ar I L - 14639.3164 6829.035562 4.617 Th I L - 14541.9645 6874.753192 4.511 Th I L - 14531.7565 6879.582453 3.88 Ar I L - 14515.9197 6887.088119 3.839 Ar I L - 14410.0993 6937.663708 4.722 Ar I N - 14397.7579 6943.610523 4.236 Th I P - 14381.4649 6951.477124 3.812 Ar I N - 14363.3392 6960.249543 3.812 Ar I N - 14302.9125 6989.65526 4.541 Th I P - 14243.9935 7018.567528 3.82 Th I P - 14220.3219 7030.250958 5.172 Ar I N - 14142.9024 7068.735373 5.022 Ar I N - 14112.0908 7084.169001 4.158 Th I P - 14107.0428 7086.703961 3.512 Ar I N - 14065.8118 7107.477291 4.422 Ar I N - 14032.0848 7124.560689 3.78 Th I P - 14029.606 7125.819469 4.422 Ar I N - 13981.6036 7150.284392 3.541 Th I P - 13964.8977 7158.838154 4.112 Ar I N - 13945.307 7168.895141 4.381 Th I P - 13936.603 7173.372448 3.424 Th I P - 13884.9744 7200.045414 3.397 Th I P - 13871.6145 7206.979882 4.872 Ar I N - 13869.6392 7208.006314 4.202 Th I P - 13860.6336 7212.689565 3.64 Th I P - 13848.227 7219.151439 3.319 Th I P - 13760.5074 7265.171889 4.112 Ar I N - 13723.2369 7284.903267 3.591 Th I P - 13672.9139 7311.715419 4.572 Ar I N - 13664.8981 7316.004481 4.422 Ar I N - 13641.999 7328.285014 3.579 Th I P - 13618.0895 7341.151478 3.559 Th I P - 13600.1897 7350.813537 3.662 Ar I N - 13595.6047 7353.29255 4.872 Ar I N - 13560.8874 7372.117865 5.322 Ar I N - 13522.6211 7392.979599 4.262 Ar I N - 13463.7725 7425.29365 3.962 Ar I N - 13457.1632 7428.940503 3.953 Th I P - 13454.7857 7430.253226 3.613 Th I P - 13445.5306 7435.367797 4.422 Ar I N - 13443.8515 7436.29646 3.962 Ar I N - 13381.1108 7471.163605 3.512 Ar I N - 13362.8836 7481.354454 3.714 Th I P - 13358.8283 7483.62556 3.278 Th I P - 13357.5778 7484.326163 3.362 Ar I N - 13328.4985 7500.6551 2.912 Ar I N - 13311.1909 7510.407726 3.062 Ar I N - 13284.4818 7525.507848 3.191 Th II P - 13242.5909 7549.313767 3.534 Th I P - 13107.4063 7627.17483 3.437 Th I P - 13104.4744 7628.881301 2.912 Ar I N - 13034.1252 7670.056955 3.062 Ar I N - 12835.1953 7788.934115 3.957 Th I P - 12787.8531 7817.769853 4.232 Th I P - 12739.3428 7847.539388 4.205 Th I P - 12716.0579 7861.909446 2.462 Ar I N - 12709.494 7865.96977 3.715 Th I P - 12446.1079 8032.431249 3.788 Th I P - 12438.6957 8037.217764 2.912 Ar I N - 12424.9392 8046.116362 3.212 Ar I N - 12413.8438 8053.307955 3.812 Ar I N - 12251.9425 8159.727615 3.821 Th I P - 12236.8577 8169.786443 3.49 Th I P - 12211.2616 8186.911262 4.063 Th I P - 12114.3664 8252.393524 3.404 Th I P -# 12080.3567 8275.626506 3.874 Th I P - 12014.693 8320.855356 3.969 Th I P - 11877.8392 8416.726817 4.134 Th I P - 11876.0454 8417.998115 3.705 Th I P - 11871.4942 8421.225355 4.017 Th I P - 11837.3907 8445.486996 3.803 Th I P - 11835.9549 8446.511509 4.262 Th I P - 11774.9034 8490.305885 3.062 Ar I N - 11685.9368 8554.943992 3.327 Th I P - 11661.1607 8573.120489 3.885 Th I P - 11616.9119 8605.775647 3.812 Ar I N - 11597.1239 8620.459617 3.512 Ar I N - 11519.687 8678.407764 2.612 Ar I N -# 11478.9133 8709.234029 3.413 Th I P - 11428.0054 8748.030881 3.986 Th I P - 11414.6799 8758.243376 3.886 Th I P - 11410.1954 8761.685632 3.512 Ar I N - 11396.9605 8771.860292 3.263 Ar II W - 11361.6956 8799.086895 3.212 Ar I N - 11307.5983 8841.183227 3.392 Th I P - 11272.3451 8868.833307 3.714 Th I P - 11148.145 8967.640269 4.301 Th I P - 11048.8279 9048.250039 4.353 Th I P -# 10901.1562 9170.821948 2.609 Th I P +# 23167.0889 4315.254471 3.84 Th I L + 23093.9807 4328.915443 3.851 Th I L + 23077.3781 4332.029855 3.617 Ar II L + 23022.0345 4342.443971 3.788 Th I L + 22834.1416 4378.176824 4.112 Th I L + 22826.3714 4379.667209 4.249 Ar II L + 22814.9488 4381.859986 3.972 Th II L + 22798.3139 4385.057274 4.015 Ar II L + 22766.8846 4391.110881 4.137 Th II L + 22757.2285 4392.974102 3.481 Th I L + 22705.7873 4402.926798 4.043 Th I L +# 22646.3323 4414.486318 3.605 Th I L + 22634.2387 4416.845034 3.241 Th I L + 22561.952 4430.996494 3.873 Ar II L + 22547.492 4433.838218 3.76 Ar II L + 22518.9325 4439.461496 3.731 Ar II L + 22471.2607 4448.879769 3.916 Ar II L + 22452.6578 4452.565919 3.931 Th I L + 22425.2816 4458.001577 3.987 Th I L + 22412.4328 4460.557349 3.029 Ar II L + 22408.9979 4461.241078 3.708 Th I L + 22407.5585 4461.527666 3.734 Th I L + 22260.5991 4490.982155 3.439 Ar II L + 0 4493.333 0 XX 0 0 + 22216.0731 4499.983224 3.741 Th I L + 22201.5491 4502.927116 3.343 Ar II L + 22190.2681 4505.216342 3.597 Th I L + 22141.6045 4515.118228 4.227 Th I L + 22015.414 4540.998918 3.833 Th I L + 21787.859 4588.426418 3.936 Th I L + 21767.7445 4592.66643 3.811 Th I L + 21738.8877 4598.762949 3.951 Ar II L + 21604.8328 4627.298084 3.174 Th I L + 21600.6138 4628.201884 3.419 Th I L + 21599.4977 4628.441048 3.32 Ar I L + 21551.8006 4638.684582 3.667 Th I L + 21438.4863 4663.202971 3.988 Th I L + 0 4673.660 0 XX 0 0 + 21407.356 4669.984249 4.046 Th I L + 21333.305 4686.1947 4.199 Th I L + 21313.1682 4690.622309 3.755 Th I L + 21233.176 4708.29364 3.5 Th I L + 21126.5625 4732.054032 4.118 Ar II L + 0 4739.676 0 XX 0 0 + 21036.0547 4752.414027 3.981 Th II L + 20973.4451 4766.601069 4.11 Th I L + 20886.1198 4786.530632 3.41 Th I L + 20883.4284 4787.147499 3.665 Th I L + 20873.6664 4789.386339 4.188 Th I L + 20856.8635 4793.24488 3.215 Th I L + 20845.2567 4795.913819 3.322 Th I L + 20785.8771 4809.614655 4.099 Th I L + 20693.3477 4831.120944 4.316 Th I L + 20691.307 4831.597425 3.871 Th I L + 20653.358 4840.475242 3.123 XX 0 L + 20651.7901 4840.84274 4.539 Th I L + 20619.7588 4848.362742 4.171 Th I L + 20610.9288 4850.439875 3.689 Th II L + 20600.6133 4852.868708 3.473 XX 0 L + 20491.4014 4878.733135 4.423 Th I L + 20481.026 4881.204677 3.543 Th I L + 20476.6671 4882.243739 3.166 Ar II L + 20452.7703 4887.948196 3.378 XX 1 L + 20432.6576 4892.759664 3.286 Th I L + 20429.7951 4893.445228 3.123 Th I L + 20360.2634 4910.156909 3.63 Th I L + 20350.4344 4912.528468 3.338 Th II L + 20320.2903 4919.816059 4.365 Th II L + 20282.0764 4929.085714 3.009 Th I L + 20265.1216 4933.209697 3.922 Ar II L + 20238.7347 4939.641603 4.139 Th I L +# 20224.7244 4943.063499 4.058 Th I L + 20210.0086 4946.662819 3.719 Th II L + 20193.8284 4950.626354 3.33 Th II L + 20073.9709 4980.185897 3.558 Th I L + 20064.7004 4982.486931 3.82 Th I L + 20053.0889 4985.372021 4.132 Th I L + 20037.2681 4989.308372 3.624 Th I L + 19986.039 5002.097356 4.55 Th I L + 19980.0422 5003.598696 3.227 Th I L + 19957.1617 5009.335298 3.971 Ar II L + 0 5017.160 0 XX 0 0 + 19875.6013 5029.891591 3.661 Th I L + 19838.7674 5039.230522 4.311 Th I L + 19815.1048 5045.248316 3.603 Th I L + 19808.0559 5047.043744 3.964 Th I L + 19793.3865 5050.784272 3.995 Th I L + 19789.0597 5051.888619 3.573 Th I L + 19743.6239 5063.514632 3.419 Th I L + 19739.3861 5064.601734 4.121 Th I L + 19738.0487 5064.944882 4.162 Th I L + 19737.0856 5065.192056 3.913 Th I L + 19733.4104 5066.135402 3.525 Th I L + 19673.9522 5081.446377 3.312 Th I L + 19660.2256 5084.994251 3.101 Th I L +# 19615.8997 5096.484919 4.005 Th I L + 19609.9033 5098.043343 3.391 Th II L + 19544.7257 5115.044494 4.338 Th I L + 19493.4838 5128.490403 3.529 Th I L + 19469.7337 5134.746459 3.862 Th I L + 19459.3975 5137.473905 3.32 Th I L + 19430.7911 5145.037484 3.106 Th II L + 19429.7673 5145.30861 3.867 Ar II L + 19396.0917 5154.242014 4.216 Th I L + 19379.6882 5158.604754 4.606 Th I L + 19368.6694 5161.539521 3.792 Th I L + 19365.8694 5162.285814 3.744 Ar I L + 19361.4728 5163.458074 4.16 Th I L + 19317.0771 5175.325212 3.595 Th I L + 19245.93 5194.457234 3.776 Th I L + 19240.907 5195.813306 4.168 Th I L + 19189.529 5209.724726 3.75 Th I L + 19183.9839 5211.230608 4.402 Th I L + 19155.0209 5219.11026 4.085 Th I L +# 19050.8285 5247.654859 4.086 Th II L + 19005.7396 5260.104444 3.694 Th I L + 18981.9017 5266.710292 4.13 Th I L + 18891.8456 5291.81662 3.411 Th I L + 18868.7909 5298.282447 3.896 Th I L +# 18476.5268 5410.768418 4.073 Th I L + 18431.4296 5424.007403 3.832 Th I L + 18425.7551 5425.677824 3.594 Th II L +# 18407.3205 5431.111593 4.07 Th I L + 18337.9671 5451.65205 3.572 Ar I L + 18336.0614 5452.21866 4.043 Th I L + 18273.9222 5470.758744 3.666 Th I L + 18201.1114 5492.643935 3.993 Th I L + 18162.5634 5504.30159 4.017 Th I L + 18143.8027 5509.993104 4.099 Th I L + 18127.7477 5514.873106 4.028 Th I L + 18040.3758 5541.582669 3.154 Th I L + 18036.1188 5542.890641 3.793 Th I L + 18018.9372 5548.176013 4.181 Th I L + 17990.178 5557.045427 4.11 Th I L + 17980.9705 5559.891048 4.019 Th I L +# 17928.3679 5576.204181 3.877 Th I L +# 17918.2352 5579.357544 4.197 Th I L + 17867.9344 5595.064394 4.265 Th I L + 17847.0776 5601.603067 4.274 Th I L + 17837.8044 5604.515166 3.902 Th II L + 17818.2033 5610.680538 3.874 Th I L + 17813.7993 5612.067646 3.953 Th I L + 17726.3748 5639.746033 4.307 Th II L +# 17646.794 5665.179556 4.124 Th I L +# 17609.8878 5677.052542 3.929 Th I L + 17584.6743 5685.192577 3.619 Th I L + 17544.2425 5698.294609 3.265 Th I L + 17517.1644 5707.103137 4.119 Th II L + 17461.221 5725.388111 4.161 Th I L + 17418.2277 5739.520188 3.599 Ar I L + 17388.3294 5749.389072 3.811 Th II L + 17377.3342 5753.026927 4.205 Th I L +# 17345.6719 5763.528456 4.184 Th I L +# 17331.681 5768.181074 3.983 Th I L + 17267.4285 5789.644814 4.203 Th I L + 17259.1237 5792.430723 4.188 Th I L + 17248.2902 5796.068933 3.79 Th I L + 17230.4161 5802.081595 3.176 Ar I L + 17190.8914 5815.421655 3.974 Th II L + 17081.4519 5852.680944 3.997 Th I L + 17079.1362 5853.474514 4.038 Th I L + 17077.2518 5854.120429 3.93 Th I L + 17059.2128 5860.31081 3.661 Ar I L + 17049.2972 5863.719119 3.925 Th I L + 16994.5054 5882.624429 3.596 Ar I L + 16985.6219 5885.701097 4.187 Th I L + 16969.0451 5891.45079 4.128 Th I L + 16871.8109 5925.404219 4.006 Th I L + 16869.4547 5926.231866 4.17 Th I L + 16731.5835 5975.065492 4.422 Th I L + 16697.3914 5987.301034 3.406 Ar I L + 16692.5297 5989.044879 4.341 Th II L + 16687.0643 5991.006437 4.226 Th I L + 16658.7112 6001.203223 4.001 Th I L + 16647.72 6005.16538 4.119 Th I L + 16642.4369 6007.071707 4.217 Th I L + 16633.8842 6010.160403 4.242 Th I L + 16603.8394 6021.035954 4.358 Th I L + 16592.5019 6025.15012 3.47 Ar I L + 16577.9344 6030.444634 4.051 Th I L + 16555.3236 6038.680894 3.927 Th I L + 16516.9157 6052.723191 3.624 Ar I L + 16515.1212 6053.380881 4.067 Th I L +# 16461.4885 6073.103405 3.785 Th II L + 16444.9174 6079.223155 3.969 Th I L + 16421.1282 6088.030147 4.435 Th I L + 16413.6972 6090.786428 3.206 Ar I L + 16392.1217 6098.803276 3.695 Ar I L + 16384.2718 6101.725299 4.051 Th I L + 16381.9371 6102.594888 4.264 Th I L + 16373.7803 6105.635022 3.722 Ar I L + 16368.6914 6107.533218 3.758 XX 0 L + 16269.5317 6144.757809 3.06 Th I L + 16250.3973 6151.993136 4.522 Th I L + 16243.7375 6154.515407 3.569 Th I L + 16018.7613 6240.953508 3.786 Th I L + 16013.201 6243.120579 3.894 Ar II L + 15976.5997 6257.423258 4.212 Th I L +# 15876.5065 6296.873431 3.731 Ar I L + 15849.3632 6307.657424 3.75 Ar I L + 15813.8566 6321.820008 3.276 Th I L + 15789.8935 6331.414229 3.443 Th I L + 15677.1914 6376.930646 4.294 Th I L + 15651.5069 6387.39542 4.288 Th I L + 15420.4983 6483.0833 4.172 Ar II L + 15402.3141 6490.737378 4.369 Th I L + 15396.4786 6493.197488 3.993 Th I L + 15101.6929 6619.945897 4.239 Th II L + 15060.118 6638.221029 4.191 Ar II L + 15058.5508 6638.911903 4.118 Th I L +# 15056.671 6639.740761 4.078 Ar II L + 15001.7455 6664.050878 3.809 Ar I L + 14996.5522 6666.358628 4.231 Ar II L + 14977.818 6674.696969 4.531 Th I L + 14956.3153 6684.293258 4.377 Ar II L + 14926.3497 6697.712496 4.096 Th I L + 14923.7609 6698.874332 3.819 Ar I L + 14774.3664 6766.612079 4.089 Ar I L + 14648.6644 6824.677603 4.336 Th I L + 14643.1467 6827.249245 3.692 Ar I L + 14639.3164 6829.035562 4.617 Th I L + 14541.9645 6874.753192 4.511 Th I L + 14531.7565 6879.582453 3.88 Ar I L + 14515.9197 6887.088119 3.839 Ar I L + 14410.0993 6937.663708 4.722 Ar I N + 14397.7579 6943.610523 4.236 Th I P + 14381.4649 6951.477124 3.812 Ar I N + 14363.3392 6960.249543 3.812 Ar I N + 14302.9125 6989.65526 4.541 Th I P + 14243.9935 7018.567528 3.82 Th I P + 14220.3219 7030.250958 5.172 Ar I N + 14142.9024 7068.735373 5.022 Ar I N + 14112.0908 7084.169001 4.158 Th I P + 14107.0428 7086.703961 3.512 Ar I N + 14065.8118 7107.477291 4.422 Ar I N + 14032.0848 7124.560689 3.78 Th I P + 14029.606 7125.819469 4.422 Ar I N + 13981.6036 7150.284392 3.541 Th I P + 13964.8977 7158.838154 4.112 Ar I N + 13945.307 7168.895141 4.381 Th I P + 13936.603 7173.372448 3.424 Th I P + 13884.9744 7200.045414 3.397 Th I P + 13871.6145 7206.979882 4.872 Ar I N + 13869.6392 7208.006314 4.202 Th I P + 13860.6336 7212.689565 3.64 Th I P + 13848.227 7219.151439 3.319 Th I P + 13760.5074 7265.171889 4.112 Ar I N + 13723.2369 7284.903267 3.591 Th I P + 13672.9139 7311.715419 4.572 Ar I N + 13664.8981 7316.004481 4.422 Ar I N + 13641.999 7328.285014 3.579 Th I P + 13618.0895 7341.151478 3.559 Th I P + 13600.1897 7350.813537 3.662 Ar I N + 13595.6047 7353.29255 4.872 Ar I N + 13560.8874 7372.117865 5.322 Ar I N + 13522.6211 7392.979599 4.262 Ar I N + 13463.7725 7425.29365 3.962 Ar I N + 13457.1632 7428.940503 3.953 Th I P + 13454.7857 7430.253226 3.613 Th I P + 13445.5306 7435.367797 4.422 Ar I N + 13443.8515 7436.29646 3.962 Ar I N + 13381.1108 7471.163605 3.512 Ar I N + 13362.8836 7481.354454 3.714 Th I P + 13358.8283 7483.62556 3.278 Th I P + 13357.5778 7484.326163 3.362 Ar I N + 13328.4985 7500.6551 2.912 Ar I N + 13311.1909 7510.407726 3.062 Ar I N + 13284.4818 7525.507848 3.191 Th II P + 13242.5909 7549.313767 3.534 Th I P + 13107.4063 7627.17483 3.437 Th I P + 13104.4744 7628.881301 2.912 Ar I N + 13034.1252 7670.056955 3.062 Ar I N + 12835.1953 7788.934115 3.957 Th I P + 12787.8531 7817.769853 4.232 Th I P + 12739.3428 7847.539388 4.205 Th I P + 12716.0579 7861.909446 2.462 Ar I N + 12709.494 7865.96977 3.715 Th I P + 12446.1079 8032.431249 3.788 Th I P + 12438.6957 8037.217764 2.912 Ar I N + 12424.9392 8046.116362 3.212 Ar I N + 12413.8438 8053.307955 3.812 Ar I N + 12251.9425 8159.727615 3.821 Th I P + 12236.8577 8169.786443 3.49 Th I P + 12211.2616 8186.911262 4.063 Th I P + 12114.3664 8252.393524 3.404 Th I P +# 12080.3567 8275.626506 3.874 Th I P + 12014.693 8320.855356 3.969 Th I P + 11877.8392 8416.726817 4.134 Th I P + 11876.0454 8417.998115 3.705 Th I P + 11871.4942 8421.225355 4.017 Th I P + 11837.3907 8445.486996 3.803 Th I P + 11835.9549 8446.511509 4.262 Th I P + 11774.9034 8490.305885 3.062 Ar I N + 11685.9368 8554.943992 3.327 Th I P + 11661.1607 8573.120489 3.885 Th I P + 11616.9119 8605.775647 3.812 Ar I N + 11597.1239 8620.459617 3.512 Ar I N + 11519.687 8678.407764 2.612 Ar I N +# 11478.9133 8709.234029 3.413 Th I P + 11428.0054 8748.030881 3.986 Th I P + 11414.6799 8758.243376 3.886 Th I P + 11410.1954 8761.685632 3.512 Ar I N + 11396.9605 8771.860292 3.263 Ar II W + 11361.6956 8799.086895 3.212 Ar I N + 11307.5983 8841.183227 3.392 Th I P + 11272.3451 8868.833307 3.714 Th I P + 11148.145 8967.640269 4.301 Th I P + 11048.8279 9048.250039 4.353 Th I P +# 10901.1562 9170.821948 2.609 Th I P 0. 9203.962 0. XX 0 0 - 10788.9417 9266.206929 3.952 Th I P - 10777.2341 9276.273096 3.568 Th I P - 10761.8167 9289.562352 3.804 Th I P - 10759.5369 9291.530673 5.622 Ar I N - 10654.3399 9383.272149 3.509 Th I P - 10615.6654 9417.456971 2.089 Th I P + 10788.9417 9266.206929 3.952 Th I P + 10777.2341 9276.273096 3.568 Th I P + 10761.8167 9289.562352 3.804 Th I P + 10759.5369 9291.530673 5.622 Ar I N + 10654.3399 9383.272149 3.509 Th I P + 10615.6654 9417.456971 2.089 Th I P # 10599.7474 9431.599536 3.364 Th I P - 10556.006 9470.681818 3.753 Th I P - 10551.3297 9474.879195 4.238 Th I P - 10547.4896 9478.328794 3.169 Ar I W - 10528.4185 9495.497829 4.069 Th I P - 10526.5437 9497.189003 4.221 Th I P - 10514.959 9507.652426 2.574 Th I P - 10456.0207 9561.245166 3.626 Th I P - 10411.7224 9601.925116 3.103 Ar II W - 10381.833 9629.569247 3.551 Th I P - 10344.0975 9664.69825 3.821 Th I P - 10329.0176 9678.80832 2.763 Ar II W -# 10305.8536 9700.563011 4.019 Th I P - 10257.3196 9746.462788 4.37 Th I P - 10188.0839 9812.697557 3.945 Th I P - 10173.8258 9826.449598 4.324 Th I P - 10166.6109 9833.42312 4.378 Th I P - 9958.0604 10039.364012 3.764 Th I P - 9928.7757 10068.974981 3.799 Ar I W - 9886.9291 10111.592224 3.423 Ar II W - 9548.4337 10470.052823 6.222 Ar I N - 9541.1608 10478.033852 5.539 Ar I W + 10556.006 9470.681818 3.753 Th I P + 10551.3297 9474.879195 4.238 Th I P + 10547.4896 9478.328794 3.169 Ar I W + 10528.4185 9495.497829 4.069 Th I P + 10526.5437 9497.189003 4.221 Th I P + 10514.959 9507.652426 2.574 Th I P + 10456.0207 9561.245166 3.626 Th I P + 10411.7224 9601.925116 3.103 Ar II W + 10381.833 9629.569247 3.551 Th I P + 10344.0975 9664.69825 3.821 Th I P + 10329.0176 9678.80832 2.763 Ar II W +# 10305.8536 9700.563011 4.019 Th I P + 10257.3196 9746.462788 4.37 Th I P + 10188.0839 9812.697557 3.945 Th I P + 10173.8258 9826.449598 4.324 Th I P + 10166.6109 9833.42312 4.378 Th I P + 9958.0604 10039.364012 3.764 Th I P + 9928.7757 10068.974981 3.799 Ar I W + 9886.9291 10111.592224 3.423 Ar II W + 9548.4337 10470.052823 6.222 Ar I N + 9541.1608 10478.033852 5.539 Ar I W 0. 5231.159 0. XX 0 0 0. 5312.002 0. XX 0 0 # 0. 5326.975 0. XX 0 0 @@ -475,17 +475,17 @@ 0. 3868.530 0. XX 0 0 0. 3886.916 0. XX 0 0 0. 3898.437 0. XX 0 0 -# 12669.0601 7891.074479 3.962 Ar I N +# 12669.0601 7891.074479 3.962 Ar I N 0. 6032.124 0. XX 0 0 0. 5912.084 0. XX 0 0 0. 5804.141 0. XX 0 0 - 17234.1342 5800.829807 4.5 Th I L - 18047.9343 5539.2618 4.455 Th I L + 17234.1342 5800.829807 4.5 Th I L + 18047.9343 5539.2618 4.455 Th I L # 0. 8478.358 0. XX 0 0 # 0. 8478.358 0. XX 0 0 0. 7567.741 0. XX 0 0 - 12000.856 8330.449354 4.426 Th I P - 0. 9985.050 0. XX 0 0 - 0. 9970.463 0. XX 0 0 - 0. 9987.635 0. XX 0 0 - 0. 9993.863 0. XX 0 0 + 12000.856 8330.449354 4.426 Th I P + 0. 9985.050 0. XX 0 0 + 0. 9970.463 0. XX 0 0 + 0. 9987.635 0. XX 0 0 + 0. 9993.863 0. XX 0 0 diff --git a/geminidr/ghost/lookups/Polyfit/westinhouse.dat b/geminidr/ghost/lookups/Polyfit/westinhouse.dat index 4cb8b00fb3..eefef547ad 100644 --- a/geminidr/ghost/lookups/Polyfit/westinhouse.dat +++ b/geminidr/ghost/lookups/Polyfit/westinhouse.dat @@ -94,21 +94,21 @@ 0 3265.5778 1 ThII 0 3271.1199 1 Th 0 3271.8912 1 ThI -0 3272.0268 1 ThI +0 3272.0268 1 ThI 0 3273.9157 1 ThII -0 3275.0676 1 ThII +0 3275.0676 1 ThII 0 3276.1712 1 Th -0 3280.3713 1 ThII +0 3280.3713 1 ThII 0 3281.0488 1 ThI 0 3281.2731 1 Th 0 3281.7016 1 ArII -0 3282.6166 1 Th +0 3282.6166 1 Th 0 3282.9795 1 ThII -0 3285.7525 1 ThI +0 3285.7525 1 ThI 0 3286.5829 1 ThII -0 3287.7893 1 ThII +0 3287.7893 1 ThII 0 3290.5996 1 Th -0 3291.7394 1 ThII +0 3291.7394 1 ThII 0 3292.5209 1 ThII 0 3293.2257 1 Th 0 3293.9481 1 ThII @@ -116,41 +116,41 @@ 0 3296.6073 1 ThII 0 3297.3748 1 ThII 0 3297.8333 1 ThII -0 3298.0498 1 ThI +0 3298.0498 1 ThI 0 3299.6687 1 ThII 0 3301.6511 1 ThI 0 3304.2383 1 ThI -0 3305.3036 1 ThI +0 3305.3036 1 ThI 0 3307.2283 1 ArII 0 3308.4740 1 Th 0 3309.3654 1 ThI -0 3310.1988 1 Th +0 3310.1988 1 Th 0 3313.6784 1 Th -0 3314.8268 1 ThII +0 3314.8268 1 ThII 0 3319.9101 1 ThI 0 3320.3004 1 ThII 0 3320.4763 1 ThI -0 3321.4508 1 ThII +0 3321.4508 1 ThII 0 3321.5741 1 ThI -0 3322.0933 1 ThI +0 3322.0933 1 ThI 0 3324.7527 1 ThII 0 3325.1207 1 ThII 0 3326.4652 1 ThII -0 3327.1931 1 ThI +0 3327.1931 1 ThI 0 3329.7284 1 ThI -0 3330.4770 1 ThI +0 3330.4770 1 ThI 0 3333.1290 1 ThI -0 3334.6041 1 ThII +0 3334.6041 1 ThII 0 3335.0639 1 ThII -0 3336.1618 1 ThII -0 3337.8703 1 ThII +0 3336.1618 1 ThII +0 3337.8703 1 ThII 0 3338.3970 1 ThII -0 3340.7254 1 ThI +0 3340.7254 1 ThI 0 3343.1644 1 ThI 0 3343.6183 1 ThII 0 3345.1709 1 ThI 0 3345.8804 1 Th -0 3346.5560 1 ThII +0 3346.5560 1 ThII 0 3346.9648 1 ThI 0 3347.9923 1 Th 0 3348.7684 1 ThI @@ -163,30 +163,30 @@ 0 3355.1061 1 ThI 0 3355.2587 1 ThII 0 3355.5631 1 ThII -0 3358.6020 1 ThII +0 3358.6020 1 ThII 0 3359.7569 1 ThII 0 3360.3735 1 ThII 0 3360.9982 1 ThI 0 3361.1979 1 ThI -0 3361.6190 1 ThII +0 3361.6190 1 ThII 0 3361.7367 1 ThII 0 3362.6762 1 ThII -0 3364.6855 1 ThII +0 3364.6855 1 ThII 0 3365.1376 1 ThI -0 3365.3383 1 ThI +0 3365.3383 1 ThI 0 3366.5171 1 ThII 0 3367.5822 1 ThI 0 3367.8189 1 ThII 0 3371.7967 1 ThII -0 3372.8230 1 Th +0 3372.8230 1 Th 0 3373.4925 1 ThI 0 3374.5814 1 ThII 0 3374.9749 1 ThI 0 3376.4359 1 ArII 0 3378.5734 1 ThII -0 3380.8595 1 ThI +0 3380.8595 1 ThI 0 3383.1068 1 ThII -0 3385.5316 1 ThII +0 3385.5316 1 ThII 0 3386.5006 1 ThII 0 3387.9205 1 ThI 0 3388.5309 1 ArII @@ -194,116 +194,116 @@ 0 3389.6405 1 ThII 0 3390.3681 1 Th 0 3391.8713 1 ThI -0 3392.0349 1 ThII +0 3392.0349 1 ThII 0 3393.4215 1 ThI 0 3393.9929 1 ThI 0 3394.7970 1 ThII -0 3396.7278 1 ThI +0 3396.7278 1 ThI 0 3397.5161 1 ThI -0 3398.5448 1 ThI +0 3398.5448 1 ThI 0 3401.7110 1 ThI 0 3402.0264 1 ThII -0 3402.6952 1 ThII +0 3402.6952 1 ThII 0 3404.6508 1 ThII -0 3405.5584 1 ThI +0 3405.5584 1 ThI 0 3406.2418 1 ThII 0 3407.8302 1 ThI 0 3408.7499 1 ThI 0 3409.2699 1 ThII -0 3410.0756 1 ThI +0 3410.0756 1 ThI 0 3413.0130 1 ThI -0 3415.8846 1 ThI +0 3415.8846 1 ThI 0 3417.4978 1 ThI 0 3418.7755 1 ThII 0 3419.1733 1 ThII -0 3421.2100 1 ThI -0 3422.6561 1 ThI -0 3423.1290 1 Th -0 3423.9897 1 ThI +0 3421.2100 1 ThI +0 3422.6561 1 ThI +0 3423.1290 1 Th +0 3423.9897 1 ThI 0 3425.4348 1 ThI 0 3425.9436 1 ThII -0 3427.0923 1 ThI +0 3427.0923 1 ThI 0 3428.6221 1 ThI 0 3428.7144 1 ThI -0 3428.9992 1 ThI +0 3428.9992 1 ThI 0 3430.4175 1 Th -0 3431.8104 1 ThII -0 3433.9988 1 ThII -0 3434.7271 1 ThI -0 3435.9771 1 ThII -0 3436.7272 1 ThI -0 3437.3071 1 ThI +0 3431.8104 1 ThII +0 3433.9988 1 ThII +0 3434.7271 1 ThI +0 3435.9771 1 ThII +0 3436.7272 1 ThI +0 3437.3071 1 ThI 0 3438.9503 1 ThII -0 3439.3987 1 ThI +0 3439.3987 1 ThI 0 3439.7118 1 ThII 0 3441.0359 1 ThII 0 3441.3647 1 ThII 0 3441.5268 1 ThI -0 3442.5790 1 ThI +0 3442.5790 1 ThI 0 3445.2173 1 ThII 0 3445.7441 1 ThII -0 3446.5474 1 ThI +0 3446.5474 1 ThI 0 3448.9487 1 ThI 0 3449.2871 1 ThII 0 3449.6448 1 ThII -0 3451.7023 1 ThI -0 3452.6820 1 ThII +0 3451.7023 1 ThI +0 3452.6820 1 ThII 0 3454.0952 1 ArII -0 3455.6130 1 ThI -0 3457.0691 1 ThI +0 3455.6130 1 ThI +0 3457.0691 1 ThI 0 3461.0187 1 ThI 0 3461.2172 1 ThI -0 3462.8505 1 ThII +0 3462.8505 1 ThII 0 3463.7197 1 ThII 0 3464.1272 1 ArII -0 3465.0626 1 ThI -0 3465.7650 1 ThII +0 3465.0626 1 ThI +0 3465.7650 1 ThII 0 3466.5383 1 ThI 0 3466.6459 1 ThI -0 3468.2198 1 ThII -0 3469.3454 1 ThI -0 3469.9208 1 ThII +0 3468.2198 1 ThII +0 3469.3454 1 ThI +0 3469.9208 1 ThII 0 3470.5675 1 ThI 0 3471.0005 1 ThI -0 3471.2186 1 ThI -0 3471.9593 1 ThI +0 3471.2186 1 ThI +0 3471.9593 1 ThI 0 3476.3852 1 ThI 0 3476.7474 1 ArII 0 3477.7042 1 ThII 0 3478.2324 1 ArII 0 3478.4635 1 ThII -0 3479.1725 1 ThII +0 3479.1725 1 ThII 0 3479.6847 1 ThI 0 3480.0525 1 ThI 0 3480.5055 1 ArII 0 3482.5482 1 ThII -0 3482.7613 1 ThII -0 3484.0800 1 ThII +0 3482.7613 1 ThII +0 3484.0800 1 ThII 0 3485.2124 1 ThII -0 3486.5512 1 ThI +0 3486.5512 1 ThI 0 3487.8436 1 ThII 0 3488.8338 1 ThI 0 3489.1841 1 ThI -0 3489.5076 1 ThI +0 3489.5076 1 ThI 0 3490.4524 1 ThII 0 3490.8733 1 ArII 0 3491.2439 1 ArII -0 3491.5360 1 ArII -0 3491.9000 1 ThI +0 3491.5360 1 ArII +0 3491.9000 1 ThI 0 3493.2513 1 Th -0 3493.5185 1 ThII -0 3495.6998 1 ThI +0 3493.5185 1 ThII +0 3495.6998 1 ThI 0 3496.0604 1 Th -0 3496.8107 1 ThI +0 3496.8107 1 ThI 0 3497.2628 1 ThII -0 3498.0098 1 ThII -0 3498.6210 1 ThI +0 3498.0098 1 ThII +0 3498.6210 1 ThI 0 3499.6829 1 Th 0 3499.8218 1 ThI 0 3499.9866 1 ThII 0 3500.1032 1 Th 0 3501.4559 1 ThII -0 3501.8666 1 ThI +0 3501.8666 1 ThI 0 3502.9637 1 ThI 0 3503.6144 1 ThII 0 3503.7859 1 ThI @@ -313,49 +313,49 @@ 0 3507.5464 1 Th 0 3509.0889 1 ThI 0 3509.7785 1 ArII -0 3511.1574 1 ThI -0 3511.5620 1 ThII +0 3511.1574 1 ThI +0 3511.5620 1 ThII 0 3512.7425 1 ThII 0 3514.3877 1 ArII 0 3514.9621 1 ThII 0 3516.3545 1 Th 0 3516.8243 1 ThII -0 3518.4040 1 ThI +0 3518.4040 1 ThI 0 3518.8858 1 ThI 0 3519.9936 1 ArII 0 3521.0595 1 ThI 0 3521.2601 1 ArII -0 3523.5061 1 ThI +0 3523.5061 1 ThI 0 3523.7585 1 ThI 0 3524.1787 1 ThI 0 3524.7091 1 ThI -0 3526.6342 1 ThI +0 3526.6342 1 ThI 0 3527.0005 1 Th 0 3527.3224 1 ThI -0 3528.4116 1 ThI +0 3528.4116 1 ThI 0 3528.8202 1 ThII -0 3528.9544 1 ThII -0 3529.3859 1 ThI -0 3530.5148 1 ThI -0 3531.4505 1 ThI -0 3533.1826 1 ThI +0 3528.9544 1 ThII +0 3529.3859 1 ThI +0 3530.5148 1 ThI +0 3531.4505 1 ThI +0 3533.1826 1 ThI 0 3535.3196 1 ArII -0 3536.0108 1 ThI +0 3536.0108 1 ThI 0 3537.1597 1 ThII 0 3539.3223 1 ThII -0 3539.5872 1 ThII +0 3539.5872 1 ThII 0 3539.8401 1 ThI 0 3541.6159 1 ThII -0 3542.4979 1 ThI +0 3542.4979 1 ThI 0 3543.1475 1 ArII -0 3544.0179 1 ThI +0 3544.0179 1 ThI 0 3545.2851 1 ThII 0 3545.5956 1 ArII -0 3545.8450 1 ArII -0 3547.3376 1 ThI +0 3545.8450 1 ArII +0 3547.3376 1 ThI 0 3547.9175 1 Th 0 3548.5144 1 ArII -0 3549.5959 1 ThI +0 3549.5959 1 ThI 0 3550.7184 1 ThI 0 3551.4019 1 ThI 0 3553.1103 1 ThII @@ -368,7 +368,7 @@ 0 3559.5081 1 ArII 0 3561.0304 1 ArII 0 3561.7809 1 ThI -0 3562.1930 1 ArII +0 3562.1930 1 ArII 0 3565.0298 1 ArII 0 3565.6042 1 ThI 0 3567.0471 1 ThII @@ -379,7 +379,7 @@ 0 3570.3577 1 ThI 0 3570.5239 1 ThI 0 3571.5731 1 ThII -0 3572.3923 1 ThII +0 3572.3923 1 ThII 0 3573.2196 1 ThII 0 3575.1263 1 ThI 0 3575.3018 1 ThI @@ -393,8 +393,8 @@ 0 3581.7579 1 ThI 0 3582.0091 1 ThII 0 3582.3546 1 ArII -0 3583.1022 1 ThI -0 3584.1756 1 ThI +0 3583.1022 1 ThI +0 3584.1756 1 ThI 0 3585.0509 1 ThII 0 3585.7702 1 ThII 0 3588.4407 1 ArII @@ -404,8 +404,8 @@ 0 3589.9941 1 ThI 0 3590.5250 1 Th 0 3590.9253 1 ThI -0 3591.4524 1 ThI -0 3592.7794 1 ThI +0 3591.4524 1 ThI +0 3592.7794 1 ThI 0 3594.1111 1 ThII 0 3594.7216 1 Th 0 3594.9856 1 ThI @@ -413,7 +413,7 @@ 0 3597.4955 1 Th 0 3598.1199 1 ThI 0 3598.5247 1 ThI -0 3599.7240 1 ThI +0 3599.7240 1 ThI 0 3600.4323 1 ThI 0 3601.0344 1 ThII 0 3601.5093 1 ArII @@ -451,16 +451,16 @@ 0 3622.3358 1 Th 0 3622.7954 1 ThI 0 3623.7725 1 ThI -0 3624.4720 1 ThI +0 3624.4720 1 ThI 0 3624.8953 1 ThII -0 3625.0293 1 ThI +0 3625.0293 1 ThI 0 3625.1496 1 ThI -0 3625.6280 1 ThII +0 3625.6280 1 ThII 0 3625.8933 1 ThI -0 3626.9390 1 ThI +0 3626.9390 1 ThI 0 3629.8503 1 Th 0 3632.8303 1 ThI -0 3634.5822 1 ThI +0 3634.5822 1 ThI 0 3634.8124 1 ArII 0 3635.2419 1 ThII 0 3635.4195 1 ThII @@ -468,14 +468,14 @@ 0 3636.1728 1 ThII 0 3636.5667 1 ThII 0 3636.8345 1 Th -0 3637.0310 1 ArII +0 3637.0310 1 ArII 0 3637.5557 1 ThII 0 3638.3192 1 ThI 0 3638.6444 1 ThI 0 3639.4469 1 ThII 0 3639.8329 1 ArII 0 3641.9647 1 ThI -0 3642.2490 1 ThI +0 3642.2490 1 ThI 0 3642.5729 1 ThI 0 3643.5123 1 ThI 0 3643.8250 1 ThI @@ -493,7 +493,7 @@ 0 3651.5716 1 ThII 0 3652.1683 1 ThII 0 3652.5372 1 ThII -0 3654.4618 1 ThI +0 3654.4618 1 ThI 0 3655.1256 1 ThI 0 3655.2782 1 ArII 0 3656.0498 1 ArII @@ -529,13 +529,13 @@ 0 3673.2645 1 ArII 0 3673.7935 1 ThII 0 3674.0147 1 ThI -0 3674.8910 1 ThI +0 3674.8910 1 ThI 0 3675.1372 1 ThI 0 3675.5675 1 ThII 0 3675.7893 1 ThI 0 3675.9592 1 ThI 0 3676.1424 1 Th -0 3676.6897 1 ThII +0 3676.6897 1 ThII 0 3677.9139 1 ThII 0 3678.0483 1 ThII 0 3678.2701 1 ArII @@ -551,11 +551,11 @@ 0 3682.4863 1 ThI 0 3683.4931 1 ThI 0 3684.9329 1 ThI -0 3685.5870 1 ThI +0 3685.5870 1 ThI 0 3686.9812 1 ThII 0 3687.1943 1 ThI 0 3687.4936 1 Th -0 3687.6700 1 ThII +0 3687.6700 1 ThII 0 3687.9841 1 ThI 0 3688.7604 1 ThII 0 3690.1158 1 Th @@ -568,7 +568,7 @@ 0 3693.2473 1 ThI 0 3693.5238 1 Th 0 3693.9946 1 ThI -0 3694.1785 1 Th +0 3694.1785 1 Th 0 3694.3651 1 ThI 0 3694.7854 1 ThII 0 3695.2889 1 ThI @@ -593,8 +593,8 @@ 0 3706.7672 1 ThI 0 3707.0036 1 Th 0 3707.4282 1 ThII -0 3708.7530 1 ThII -0 3709.8620 1 ThI +0 3708.7530 1 ThII +0 3709.8620 1 ThI 0 3711.3041 1 ThII 0 3711.6229 1 ThI 0 3711.8332 1 ThI @@ -621,7 +621,7 @@ 0 3724.5165 1 ArII 0 3725.3932 1 Th 0 3726.7246 1 ThII -0 3727.6120 1 ThI +0 3727.6120 1 ThI 0 3727.9027 1 ThI 0 3729.3087 1 ArII 0 3729.8361 1 Th @@ -634,10 +634,10 @@ 0 3735.5109 1 ThII 0 3736.9026 1 Th 0 3737.5125 1 ThI -0 3737.8890 1 ArII +0 3737.8890 1 ArII 0 3738.8439 1 ThII 0 3740.8551 1 ThII -0 3741.1830 1 ThII +0 3741.1830 1 ThII 0 3742.2773 1 Th 0 3742.9234 1 ThI 0 3743.5083 1 Th @@ -648,19 +648,19 @@ 0 3745.6591 1 Th 0 3745.9706 1 ThI 0 3746.9133 1 ArII -0 3747.5390 1 ThII +0 3747.5390 1 ThII 0 3748.2838 1 ThII 0 3749.0843 1 ThI 0 3749.6183 1 ThI 0 3750.4939 1 Th 0 3750.6602 1 ThII 0 3751.0219 1 ThI -0 3752.5689 1 ThII -0 3753.2421 1 ThI +0 3752.5689 1 ThII +0 3753.2421 1 ThI 0 3753.5177 1 ArII 0 3754.0308 1 ThI 0 3754.2884 1 Th -0 3754.5930 1 ThII +0 3754.5930 1 ThII 0 3755.2121 1 ThI 0 3755.9869 1 Th 0 3756.2941 1 ThI @@ -674,16 +674,16 @@ 0 3761.7044 1 ThI 0 3762.4166 1 ThII 0 3763.5053 1 ArII -0 3765.2700 1 ArII +0 3765.2700 1 ArII 0 3766.1186 1 ArII -0 3766.4473 1 ThI +0 3766.4473 1 ThI 0 3767.0819 1 Th 0 3767.9007 1 Th 0 3768.4359 1 ThII 0 3769.5854 1 Th -0 3770.0560 1 ThI +0 3770.0560 1 ThI 0 3770.3687 1 ArI -0 3770.5200 1 ArII +0 3770.5200 1 ArII 0 3771.3708 1 ThI 0 3771.6150 1 ThI 0 3772.2369 1 ThII @@ -696,7 +696,7 @@ 0 3775.9028 1 ThII 0 3776.2711 1 ThI 0 3776.6239 1 ThI -0 3777.4167 1 ThI +0 3777.4167 1 ThI 0 3777.7473 1 ThI 0 3779.5624 1 Th 0 3780.8398 1 ArII @@ -710,30 +710,30 @@ 0 3785.2804 1 Th 0 3785.6002 1 ThII 0 3786.3824 1 ArII -0 3786.883 1 Th +0 3786.883 1 Th 0 3789.168 1 Th 0 3790.356 1 Th 0 3790.795 1 Th 0 3792.374 1 Th -0 3792.730 1 Th +0 3792.730 1 Th 0 3794.151 1 Th 0 3794.318 1 Th -0 3795.3800 1 +0 3795.3800 1 0 3798.103 1 Th -0 3799.3820 1 ArII +0 3799.3820 1 ArII 0 3800.198 1 Th 0 3801.443 1 Th -0 3803.0750 1 ThI +0 3803.0750 1 ThI 0 3803.984 1 Th 0 3805.314 1 Th -0 3805.820 1 Th +0 3805.820 1 Th 0 3807.874 1 Th 0 3808.129 1 Th 0 3808.5748 1 ArII 0 3809.4561 1 ArII 0 3809.835 1 Th 0 3813.0678 1 ThII -0 3816.1666 1 Th +0 3816.1666 1 Th 0 3817.4767 1 Th 0 3818.6855 1 ThI 0 3820.7926 1 ThI @@ -752,9 +752,9 @@ 0 3830.0606 1 ThI 0 3830.5100 1 ThII 0 3830.7736 1 ThI -0 3831.6398 1 ThI +0 3831.6398 1 ThI 0 3832.3035 1 Th -0 3833.0860 1 Th +0 3833.0860 1 Th 0 3834.6787 1 ArI 0 3835.7111 1 ThI 0 3836.5851 1 ThI @@ -776,7 +776,7 @@ 0 3847.6199 1 ThI 0 3849.1832 1 Th 0 3849.9114 1 ThI -0 3850.1340 1 ThII +0 3850.1340 1 ThII 0 3850.5813 1 ArII 0 3851.1583 1 ThI 0 3852.1353 1 ThI @@ -1011,7 +1011,7 @@ 0 4032.5951 1 ThI 0 4034.2461 1 ThII 0 4034.9218 1 ThII -0 4035.4600 1 ArII +0 4035.4600 1 ArII 0 4036.0479 1 ThI 0 4036.5652 1 ThII 0 4037.5614 1 ThI @@ -1058,7 +1058,7 @@ 0 4070.2383 1 ThI 0 4070.7835 1 ArII 0 4071.7513 1 ThI -0 4072.0047 1 ArII +0 4072.0047 1 ArII 0 4072.3849 1 ArII 0 4072.6284 1 Th 0 4073.8563 1 ThI @@ -1352,7 +1352,7 @@ 0 4345.1680 1 ArI 0 4346.4367 1 ThI 0 4347.6385 1 ThI -0 4348.0640 1 ArII +0 4348.0640 1 ArII 0 4348.5982 1 ThI 0 4349.0722 1 ThI 0 4350.2717 1 ThI @@ -1540,7 +1540,7 @@ 0 4519.2592 1 ThI 0 4521.1939 1 ThI 0 4521.7407 1 Th -0 4522.3230 1 ArI +0 4522.3230 1 ArI 0 4522.7839 1 ThII 0 4524.1289 1 ThI 0 4524.8379 1 ThII diff --git a/geminidr/ghost/lookups/keyword_comments.py b/geminidr/ghost/lookups/keyword_comments.py index 668bc430a9..d7c65186db 100644 --- a/geminidr/ghost/lookups/keyword_comments.py +++ b/geminidr/ghost/lookups/keyword_comments.py @@ -13,4 +13,4 @@ "ARCIM_A": "'After' arc image used", "ARCWT_B": "Weight factor of before arc (0 <= WT_B <= 1)", "ARCWT_A": "Weight factor of after arc (0 <= WT_A <= 1)", -} \ No newline at end of file +} diff --git a/geminidr/ghost/lookups/targetn_dict.py b/geminidr/ghost/lookups/targetn_dict.py index 88ced6ba5e..4191a1b075 100644 --- a/geminidr/ghost/lookups/targetn_dict.py +++ b/geminidr/ghost/lookups/targetn_dict.py @@ -3,4 +3,4 @@ 'unknown': 0, 'sky': 1, 'object': 2, -} \ No newline at end of file +} diff --git a/geminidr/ghost/polyfit/__init__.py b/geminidr/ghost/polyfit/__init__.py index f694db6232..4d7e69d8b4 100644 --- a/geminidr/ghost/polyfit/__init__.py +++ b/geminidr/ghost/polyfit/__init__.py @@ -12,5 +12,3 @@ from .ghost import GhostArm from .slitview import SlitView from .extract import Extractor - - diff --git a/geminidr/ghost/polyfit/extract.py b/geminidr/ghost/polyfit/extract.py index 3aa0af0ee2..c1247de297 100644 --- a/geminidr/ghost/polyfit/extract.py +++ b/geminidr/ghost/polyfit/extract.py @@ -100,10 +100,10 @@ def bin_models(self): Bin the models to match data binning. Function used to artificially bin the models so that they apply to - whatever binning mode the data are. This requires knowledge of the + whatever binning mode the data are. This requires knowledge of the x and y binning from the arm class, which is assumed this class - inherits. - + inherits. + The binning is done as a running average, in which the values for each binned pixel are assumed to be equivalent to the average value of all physical pixels that are part of the binned pixel. @@ -159,7 +159,7 @@ def bin_models(self): # Now, naturally, the actualy x values must change according to the # xbin x_map = (x_map + 0.5) / self.arm.xbin - 0.5 - # The w_map and blaze remain unchanged by this. + # The w_map and blaze remain unchanged by this. # Now we must modify the values of the [0,0] and [1,1] elements of # each matrix according to the binning to reflect the now size of @@ -183,11 +183,11 @@ def bin_models(self): def make_pixel_model(self, input_image=None): """ - Based on the xmod and the slit viewer image, create a complete model image, - where flux versus wavelength pixel is constant. As this is designed for + Based on the xmod and the slit viewer image, create a complete model image, + where flux versus wavelength pixel is constant. As this is designed for comparing to flats, normalisation is to the median of the non-zero pixels in the profile. - + Parameters ---------- input_iage: :obj:`numpy.ndarray`, optional @@ -195,7 +195,7 @@ def make_pixel_model(self, input_image=None): If this is given, then the pixel model is scaled according to the input flux for every order and wavelength. Note that this isn't designed to reproduce dual-object or object+sky data. - + Returns ------- model: :obj:`numpy.ndarray` @@ -212,19 +212,19 @@ def make_pixel_model(self, input_image=None): ny = x_map.shape[1] nm = x_map.shape[0] nx = int(self.arm.szx / self.arm.xbin) - + profiles = [self.slitview.slit_profile(arm=self.arm.arm)] - + n_slitpix = profiles[0].shape[0] profile_y_microns = (np.arange(n_slitpix) - n_slitpix / 2 + 0.5) * self.slitview.microns_pix - + if self.transpose: pixel_model = np.zeros((ny, nx)) else: pixel_model = np.zeros((nx, ny)) - - # Loop through all orders then through all y pixels. + + # Loop through all orders then through all y pixels. print(" Creating order ", end="") for i in range(nm): print(f"{self.arm.m_min+i}...", end="") @@ -246,7 +246,7 @@ def make_pixel_model(self, input_image=None): pixel_model[j, np.minimum(x_ix, nx-1)] = phi[0] else: pixel_model[np.minimum(x_ix, nx-1), j] = phi[0] - + return pixel_model def new_extract(self, data=None, correct_for_sky=True, use_sky=True, @@ -631,7 +631,7 @@ def find_lines(self, flux, arclines, hw=12, THIS FUNCTION IS NO LONGER USED! Find lines near the locations of input arc lines. - + This is done with Gaussian fits near the location of where lines are expected to be. An initial decent model must be present, likely the result of a manual adjustment. @@ -653,7 +653,7 @@ def find_lines(self, flux, arclines, hw=12, If true, show display of lines and where they are predicted to fall plots: bool, optional - If true, plot every gaussian fit along the way for visual inspection + If true, plot every gaussian fit along the way for visual inspection Returns ------- @@ -756,7 +756,7 @@ def find_lines(self, flux, arclines, hw=12, plt.show() # This part allows the user to inspect the global fit and - # position finding. + # position finding. if inspect: plt.plot(xpos, ix, 'bx') plt.plot(xpos, ypos, 'rx') diff --git a/geminidr/ghost/polyfit/ghost.py b/geminidr/ghost/polyfit/ghost.py index c66b304725..c5f7f9e08f 100644 --- a/geminidr/ghost/polyfit/ghost.py +++ b/geminidr/ghost/polyfit/ghost.py @@ -27,8 +27,8 @@ import numpy as np from .polyspect import Polyspect -GHOST_BLUE_SZX = 4112 # 4096 # -GHOST_BLUE_SZY = 4096 # 4112 # +GHOST_BLUE_SZX = 4112 # 4096 # +GHOST_BLUE_SZY = 4096 # 4112 # GHOST_RED_SZX = 6160 GHOST_RED_SZY = 6144 @@ -78,7 +78,7 @@ def __init__(self, arm='blue', mode='std', | ``lenslet_high_size`` and | Unused | | ``lenslet_std_size`` | | +------------------------------+---------------------------------------+ - + Attributes ---------- arm: str @@ -160,7 +160,7 @@ def bin_data(self, data): ---------- data: :obj:`numpy.ndarray` The (unbinned) data to be binned - + Raises ------ UserWarning @@ -212,9 +212,9 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, a different slit magnification corresponding to each order stored in the list orders. - For each of these orders, a convolution is done in 2D by interpolating - the magnified slit profile with the slit coordinates, normalising it and - inverse Fourier transforming the product between the flat transform and the + For each of these orders, a convolution is done in 2D by interpolating + the magnified slit profile with the slit coordinates, normalising it and + inverse Fourier transforming the product between the flat transform and the shifted slit profile:: # Create the slit model. @@ -244,25 +244,25 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, ---------- flat: :obj:`numpy.ndarray` A flat field image from the spectrograph - + slit_profile: :obj:`numpy.ndarray`, optional A slit profile as a 1D array with the slit profile fiber amplitudes. If none is supplied this function will assume identical fibers and create one to be used in the convolution based on default parameters specified in the ghost class. - + spatpars: :obj:`numpy.ndarray`, optional - The 2D polynomial parameters for the slit spatial scale. + The 2D polynomial parameters for the slit spatial scale. Required if slit_profile is not None. - + microns_pix: float, optional The slit scale in microns per pixel. Required if slit_profile is not None. - + xpars: :obj:`numpy.ndarray`, optional The 2D polynomial parameters for the x (along-slit) coordinate. Required if slit_profile is not None. - + num_conv: int, optional, optional The number of different convolution functions to use for different orders. @@ -308,7 +308,7 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, # Fourier transform the flat for convolution im_fft = np.fft.rfft(flat, axis=0) - # Create a x baseline for convolution + # Create a x baseline for convolution xbase = flat.shape[0] profilex = np.arange(xbase) - xbase // 2 @@ -343,7 +343,7 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, # If a profile is given, do this instead. else: slit_profile_cor = slit_profile.copy() - + flat_conv = np.zeros_like(flat) flat_conv_cube = np.zeros((num_conv, flat.shape[0], flat.shape[1])) @@ -365,7 +365,7 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, # The x pixel values, just for this order x_map[j] = self.evaluate_poly(xpars)[orders[j] - self.m_min] - + for i in range(im_fft.shape[1]): #CRH 20220901 Old Create the slit model. #mod_slit = np.interp(profilex * spat_scale[i], slit_coord, @@ -388,8 +388,8 @@ def slit_flat_convolve(self, flat, slit_profile=None, spatpars=None, #mod_slit2_ft = (np.fft.rfft(np.fft.fftshift(mod_slit2), n=flat.shape[0])) # Normalise the slit model and Fourier transform for - # convolution. This has to be an l2 norm, in order to - # work with variable slit lengths and mean that + # convolution. This has to be an l2 norm, in order to + # work with variable slit lengths and mean that # the correlation peak is the least squares fit. #mod_slit /= np.sum(mod_slit) #mod_slit /= np.sqrt(np.sum(mod_slit ** 2)) diff --git a/geminidr/ghost/polyfit/polyspect.py b/geminidr/ghost/polyfit/polyspect.py index 77c147f2e6..283a6ce197 100644 --- a/geminidr/ghost/polyfit/polyspect.py +++ b/geminidr/ghost/polyfit/polyspect.py @@ -138,14 +138,14 @@ def evaluate_poly(self, params, data=None): ------ TypeError If required input ``params`` is not provided. - + Returns ------- evaluation: :obj:`numpy.ndarray` This is a (orders,yvalues) array containing the polynomial evaluation at every point. If data is provided, the returned - array has the same shape. + array has the same shape. """ # params needs to be a np.array @@ -160,7 +160,7 @@ def evaluate_poly(self, params, data=None): # Create the y_values and orders. # This is essentially the purpose of creating this function. These # parameters can be easily derived from class properties and should - # not have to be provided as inputs. + # not have to be provided as inputs. y_values, orders = np.meshgrid(np.arange(self.szy), np.arange(self.m_max - self.m_min + 1) + @@ -221,8 +221,8 @@ def fit_resid(self, params, orders, y_values, data, ydeg=3, xdeg=3, xdeg: int Polynomial degree as a function of y sigma: :obj:`numpy.ndarray` array - Array containing uncertainties for each point. Must have the same - format as data. + Array containing uncertainties for each point. Must have the same + format as data. Returns ------- @@ -451,7 +451,7 @@ def adjust_x(self, old_x, image, num_xcorr=21): usefulness of this function can be debated, but ultimately it won't create any problems. - + Parameters ---------- old_x: :obj:`numpy.ndarray` @@ -554,7 +554,7 @@ def fit_x_to_image(self, data, xparams, decrease_dim=8, sampling=1, UserWarning If the decreased dimension is not possible due to rounding off errors - + Returns ------- fitted_parameters: :obj:`numpy.ndarray` @@ -696,9 +696,9 @@ def fit_to_x(self, x_to_fit, init_mod, y_values=None, sigma=None, Initial model parameters y_values: :obj:`numpy.ndarray`, optional Y positions on the CCD. If none given, defaults to the spectral - direction pixel indices. + direction pixel indices. sigma: :obj:`numpy.ndarray`, optional - Uncertainties in the y_values, for weighted fit purposes. + Uncertainties in the y_values, for weighted fit purposes. decrease_dim: int, optional The factor of decreased dimentionality for the fit. This needs to be an exact factor of the y size. @@ -797,7 +797,7 @@ def spectral_format_with_matrix(self, xmod, wavemod, spatmod=None, return_arrays=False): """ Create a spectral format, including a detector-to-slit matrix, at - every point. + every point. The input parameters represent the polynomial coefficients for second order descriptions of how the spectral and spatial scales vary as a @@ -1003,7 +1003,7 @@ def manual_model_adjust(self, data, xparams, model='position', wparams=None, overlaid on top of the result of convolving the flat with a slit profile in 2D which just reveals the location of the middle of the orders. - + It uses :any:`matplotlib` slider widgets to adjust a polynomial model representation overlaid on top of an image. A ``data`` array is provided containing an image, and the model parameters needed to determine the @@ -1027,7 +1027,7 @@ def manual_model_adjust(self, data, xparams, model='position', wparams=None, documented in the :any:`matplotlib` documentation. The function returns the changed model parameters. - + Parameters ---------- data: :obj:`numpy.ndarray` @@ -1069,24 +1069,24 @@ def manual_model_adjust(self, data, xparams, model='position', wparams=None, # Grab the model to be plotted x_int, wave_int, blaze_int = self.spectral_format(wparams=wparams, xparams=xparams) - + # define what is to be plotted def plot_data(model, xparams, wparams, nxbase, ygrid, thar_spectrum=None): """ Function used for working out and defining - the data to be plotted as a function of purpose + the data to be plotted as a function of purpose Parameters ---------- model: string - What model is being adjusted. This is the input to the main + What model is being adjusted. This is the input to the main function xparams: :obj:`numpy.ndarray` array The (adjusted) position model parameters wparams: :obj:`numpy.ndarray` array - The (adjusted) wavelength model parameters + The (adjusted) wavelength model parameters nxbase: :obj:`numpy.ndarray` array The amount to add to the xbase after the spectral format ygrid: :obj:`numpy.ndarray` array @@ -1095,7 +1095,7 @@ def plot_data(model, xparams, wparams, nxbase, ygrid, Returns ------- - + plot_vals: :obj:`numpy.ndarray` array The values to be plotted """ @@ -1147,8 +1147,8 @@ def plot_data(model, xparams, wparams, nxbase, ygrid, # slider change though *** #if len(to_plot)>2: # plt.scatter(to_plot[0], to_plot[1], c=to_plot[2]) - # plt.colorbar() - + # plt.colorbar() + # Now over plot the image and add a contrast adjustment slider. image_min = np.percentile(data,10) #!!! MJI Hack image_max = data.max() @@ -1344,4 +1344,4 @@ def plotit(self, x, y, waves, mask=None, filename='wavecal.pdf'): ax.set_title(self.name) ax.set_xlabel("Column number") ax.set_ylabel("Order number") - fig.savefig(filename, bbox_inches='tight') \ No newline at end of file + fig.savefig(filename, bbox_inches='tight') diff --git a/geminidr/ghost/polyfit/test/testdata/Polyfit/README b/geminidr/ghost/polyfit/test/testdata/Polyfit/README index f124ab77a9..baadd411ea 100644 --- a/geminidr/ghost/polyfit/test/testdata/Polyfit/README +++ b/geminidr/ghost/polyfit/test/testdata/Polyfit/README @@ -1 +1 @@ -Any Polyfit aperture models should be stored here as binary FITS tables \ No newline at end of file +Any Polyfit aperture models should be stored here as binary FITS tables diff --git a/geminidr/ghost/primitives_calibdb_ghost.py b/geminidr/ghost/primitives_calibdb_ghost.py index 121ae92de5..c877e8b11f 100644 --- a/geminidr/ghost/primitives_calibdb_ghost.py +++ b/geminidr/ghost/primitives_calibdb_ghost.py @@ -68,4 +68,3 @@ def storeProcessedStandard(self, adinputs=None, suffix=None): adinputs, suffix=suffix, primname=self.myself(), keyword="PROCSTND") self.storeCalibration(adinputs, caltype=caltype) return adinputs - diff --git a/geminidr/ghost/primitives_ghost_bundle.py b/geminidr/ghost/primitives_ghost_bundle.py index ccfaa64abb..a7fa8ce726 100644 --- a/geminidr/ghost/primitives_ghost_bundle.py +++ b/geminidr/ghost/primitives_ghost_bundle.py @@ -134,7 +134,7 @@ def _get_common_hdr_value(base, extns, key): extns : iterable of :any:`astrodata.Astrodata` AstroData extensions to be examined key : str - The FITS header key to find in each extension + The FITS header key to find in each extension Raises ------ @@ -278,4 +278,3 @@ def _write_newfile(extns, suffix, base, log): #n.phu['GHOSTDR'] = (ghost_instruments.__version__, "GHOSTDR version") return n - diff --git a/geminidr/ghost/primitives_ghost_slit.py b/geminidr/ghost/primitives_ghost_slit.py index 64d8e2f568..a51aff62f9 100644 --- a/geminidr/ghost/primitives_ghost_slit.py +++ b/geminidr/ghost/primitives_ghost_slit.py @@ -656,4 +656,3 @@ def _total_obj_flux(log, res, ut_date, filename, data, flat_data=None, binning=2 blues = blues[:1] reds = reds[:1] return reduce(lambda x, y: x + y, [np.sum(z) for z in reds + blues]) - diff --git a/geminidr/ghost/primitives_ghost_spect.py b/geminidr/ghost/primitives_ghost_spect.py index 8c89dd1ff1..f7d54a9550 100644 --- a/geminidr/ghost/primitives_ghost_spect.py +++ b/geminidr/ghost/primitives_ghost_spect.py @@ -1144,7 +1144,7 @@ def extractSpectra(self, adinputs=None, **params): objects for the input - Extract the spectra from the input AstroData, using calls to :meth:`polyfit.Extractor.new_extract`. - + Parameters ---------- suffix: str @@ -1410,7 +1410,7 @@ def extractSpectra(self, adinputs=None, **params): extractor = Extractor(arm, sview, badpixmask=ad[0].mask, vararray=ad[0].variance) - + # FIXME: This really could be done as part of flat processing! correction = None if flat_correct: @@ -2148,7 +2148,7 @@ def standardizeStructure(self, adinputs=None, **params): will try to attach an MDF because a GHOST image is tagged as SPECT. Rather than set parameters for that primitive to stop it from doing so, just override with a no-op primitive. - + .. note:: This could go in primitives_ghost.py if the SLITV version also no-ops. diff --git a/geminidr/ghost/recipes/sq/tests/test_reduce_ghost.py b/geminidr/ghost/recipes/sq/tests/test_reduce_ghost.py index c5c6b431b0..0bcf47e408 100644 --- a/geminidr/ghost/recipes/sq/tests/test_reduce_ghost.py +++ b/geminidr/ghost/recipes/sq/tests/test_reduce_ghost.py @@ -204,4 +204,4 @@ def reduce(file_list, label, caldb, recipe_name=None, # check that we are not leaking objects assert len(objgraph.by_type('NDAstroData')) == 0 - return r.output_filenames \ No newline at end of file + return r.output_filenames diff --git a/geminidr/ghost/tests/__init__.py b/geminidr/ghost/tests/__init__.py index c27e9d00ad..ceb4f0bdf5 100644 --- a/geminidr/ghost/tests/__init__.py +++ b/geminidr/ghost/tests/__init__.py @@ -6,4 +6,4 @@ primitives are tested during the full reduction tests (:any:`geminidr.ghost.recipes.test`). -""" \ No newline at end of file +""" diff --git a/geminidr/ghost/tests/slit/test_fix_cosmic_rays.py b/geminidr/ghost/tests/slit/test_fix_cosmic_rays.py index e7a8255d39..e66def9a0f 100644 --- a/geminidr/ghost/tests/slit/test_fix_cosmic_rays.py +++ b/geminidr/ghost/tests/slit/test_fix_cosmic_rays.py @@ -48,5 +48,3 @@ def test_fix_cosmic_rays(ad_slit): 'Incorrect number of rejected pixels recorded in CRPIXREJ' np.testing.assert_array_equal(ad_slit.shape, shapes), \ 'fixCosmicRays has mangled data shapes' - - diff --git a/geminidr/ghost/tests/slit/test_stack_frames.py b/geminidr/ghost/tests/slit/test_stack_frames.py index 71c2c74c39..0255425310 100644 --- a/geminidr/ghost/tests/slit/test_stack_frames.py +++ b/geminidr/ghost/tests/slit/test_stack_frames.py @@ -23,4 +23,3 @@ def test_stackFrames_outputs(ad_slit): assert np.all([output[0][0].data.shape == _.data.shape for _ in ad_slit]), "Stacked frame shape " \ "does not match inputs" - diff --git a/geminidr/ghost/tests/slit/test_total_obj_flux.py b/geminidr/ghost/tests/slit/test_total_obj_flux.py index ec30ab800f..457a001a73 100644 --- a/geminidr/ghost/tests/slit/test_total_obj_flux.py +++ b/geminidr/ghost/tests/slit/test_total_obj_flux.py @@ -24,5 +24,3 @@ def test__total_obj_flux(ad_slit): for ext in ad_slit]) for actual, measured in zip(sums, fluxes): assert 0.98 < measured / actual < 1.01 - - diff --git a/geminidr/ghost/tests/spect/__init__.py b/geminidr/ghost/tests/spect/__init__.py index 79887c7463..ee2670f48e 100644 --- a/geminidr/ghost/tests/spect/__init__.py +++ b/geminidr/ghost/tests/spect/__init__.py @@ -26,4 +26,3 @@ def ad_min(): ad = astrodata.create(phu, [sci, ]) ad.filename = rawfilename return ad - diff --git a/geminidr/ghost/tests/spect/test_barycentric_correct.py b/geminidr/ghost/tests/spect/test_barycentric_correct.py index 206676cc39..8cb6398d08 100644 --- a/geminidr/ghost/tests/spect/test_barycentric_correct.py +++ b/geminidr/ghost/tests/spect/test_barycentric_correct.py @@ -67,4 +67,3 @@ def test_barycentricCorrect(ad_min, ra, dec, dt, known_corr): gs.timestamp_keys['barycentricCorrect']), "barycentricCorrect did not " \ "timestamp-mark the " \ "output file" - diff --git a/geminidr/ghost/tests/spect/test_dark_correct.py b/geminidr/ghost/tests/spect/test_dark_correct.py index aada002d21..afde7b2e47 100644 --- a/geminidr/ghost/tests/spect/test_dark_correct.py +++ b/geminidr/ghost/tests/spect/test_dark_correct.py @@ -82,4 +82,3 @@ def test_darkCorrect(ad_min): gs.timestamp_keys['darkCorrect']), "darkCorrect did not " \ "timestamp-mark the " \ "output file" - diff --git a/geminidr/ghost/tests/spect/test_get_polyfit_filename.py b/geminidr/ghost/tests/spect/test_get_polyfit_filename.py index 29760124ab..ad6d281040 100644 --- a/geminidr/ghost/tests/spect/test_get_polyfit_filename.py +++ b/geminidr/ghost/tests/spect/test_get_polyfit_filename.py @@ -51,4 +51,3 @@ def test__get_polyfit_filename_errors(ad_min): assert polyfit_file is None, "_get_polyfit_filename didn't return " \ "None when asked for a bogus " \ "model type" - diff --git a/geminidr/ghost/tests/spect/test_standardize_structure.py b/geminidr/ghost/tests/spect/test_standardize_structure.py index 4b6fb575aa..fa0f59229e 100644 --- a/geminidr/ghost/tests/spect/test_standardize_structure.py +++ b/geminidr/ghost/tests/spect/test_standardize_structure.py @@ -27,4 +27,3 @@ def test_standardizeStructure(ad_min): ad_orig[0].hdr == ad_out[0].hdr, len(ad_orig) == len(ad_out), ]), "standardizeStructure is no longer a no-op primitive" - diff --git a/geminidr/ghost/utils/diagnostics.py b/geminidr/ghost/utils/diagnostics.py index f16b8089d2..0be98ef08d 100644 --- a/geminidr/ghost/utils/diagnostics.py +++ b/geminidr/ghost/utils/diagnostics.py @@ -29,7 +29,7 @@ def plot_arcs(arc_data, thar_spec, w_map, title): Parameters ---------- - arc_data: + arc_data: """ pl.rc('axes', prop_cycle=(cycler('color', ['b', 'r']))) f, axes = pl.subplots(3, 1, sharex='all') diff --git a/geminidr/ghost/utils/mkspatmod.py b/geminidr/ghost/utils/mkspatmod.py index b393984462..27ed41ddae 100644 --- a/geminidr/ghost/utils/mkspatmod.py +++ b/geminidr/ghost/utils/mkspatmod.py @@ -236,6 +236,5 @@ def main(ad, ad_slitflat, flat_bin=8): assert flat.res_mode() == "std", "Must be run on SR data" assert {'FLAT', 'PROCESSED', 'SLIT'}.issubset(slitflat.tags), \ f"{slitflat.filename} is not a SLITFLAT" - + main(flat, slitflat) - diff --git a/geminidr/gmos/lookups/CuAr_GMOS_mixord.dat b/geminidr/gmos/lookups/CuAr_GMOS_mixord.dat index d328e09408..caf664ddb5 100644 --- a/geminidr/gmos/lookups/CuAr_GMOS_mixord.dat +++ b/geminidr/gmos/lookups/CuAr_GMOS_mixord.dat @@ -462,63 +462,63 @@ 9784.5028 10470.0535 # 2nd order ... -#6956.465 -#6982.488 +#6956.465 +#6982.488 ##7122.061 2nd order poor fit -7436.413 2nd order -#7458.617 +7436.413 2nd order +#7458.617 ##7475.778 2nd order poor fit -#7530.54 +#7530.54 ## 7701.163 2nd order poor fit -#7737.057 -#7783.958 +#7737.057 +#7783.958 7892.194 strong 2nd order -#7989.583 -#8027.713 -#8067.619 -8088.836 2nd order -#8105.842 +#7989.583 +#8027.713 +#8067.619 +8088.836 2nd order +#8105.842 ## 8144.77 clear 2nd order poor fit -#8159.147 +#8159.147 ## 8207.824 clear 2nd order poor fit -#8263.447 +#8263.447 8317.181 strong 2nd order -8363.768 2nd order -#8382.059 -#8399.778 -#8456.316 -8474.439 2nd order -#8518.724 +8363.768 2nd order +#8382.059 +#8399.778 +#8456.316 +8474.439 2nd order +#8518.724 8555.057 strong 2nd order ## 8600.201 strong 2nd order poor fit -## 8618.479 strong 2nd order poor fit -#8667.122 -#8696.128 +## 8618.479 strong 2nd order poor fit +#8667.122 +#8696.128 8741.507 strong 2nd order ## 8801.973 strong 2nd order poor fit -8897.759 2nd order +8897.759 2nd order 8949.519 clear 2nd order 8963.621 strong 2nd order 9021.467 strong 2nd order 9090.104 strong 2nd order -#9127.485 +#9127.485 9158.699 strong 2nd order 9179.796 clear 2nd order -#9192.193 +#9192.193 ## 9197.525 strong 2nd order poor fit -#9219.135 -#9256.882 -#9274.466 +#9219.135 +#9256.882 +#9274.466 9315.803 strong 2nd order 9404.632 clear 2nd order ## 9453.736 strong 2nd order poor fit 9529.729 strong 2nd order 9612.041 strong 2nd order 9695.619 clear 2nd order -#9731.821 +#9731.821 9759.727 strong 2nd order -#9778.084 -#9809.503 +#9778.084 +#9809.503 9866.418 2nd order 9930.159 clear 2nd order 10018.67 2nd order @@ -530,5 +530,5 @@ 10375.49 2nd order 10470.0535 #10842.7 -#10903.3 -#10991.75 +#10903.3 +#10991.75 diff --git a/geminidr/gmos/lookups/bpmtab.py b/geminidr/gmos/lookups/bpmtab.py index 3d5393ad93..54fcbc0d6f 100644 --- a/geminidr/gmos/lookups/bpmtab.py +++ b/geminidr/gmos/lookups/bpmtab.py @@ -1,11 +1,11 @@ """ -This module provides some functions to regularize BPM files for DRAGONS +This module provides some functions to regularize BPM files for DRAGONS comsumption. bpmify(ad) - Fixes certain keywords for DRAGONS BPM files. - dragons_bpm(ad) - + dragons_bpm(ad) - creates a nominal DRAGONS BPM file name and writes this new filename. tabl() - @@ -19,7 +19,7 @@ >>> bpmtab.tabl(bpmfiles) DIRECTORY /Users/kanderso/Gemini/GitHub/DRAGONS/geminidr/gmos/lookups/BPM/ - + File OBJ BININNG BITPIX Shape 0 Det Name Camera ====================== gmos-n_bpm_HAM_11_full_12amp_v1.fits BPM (1 1) 16 (4224, 544) Hamamatsu-N GMOS-N @@ -105,7 +105,7 @@ def dragons_bpm(ad, prefix=None): namps = '12amp' else: raise TypeError("Unrecognized detector name") - + new_bpm_name = nbuffer.format( ad.camera().lower(), ad.object().lower(), @@ -161,4 +161,4 @@ def tabl(ffiles): ad.camera()) ) print("="*22) - return + return diff --git a/geminidr/gmos/lookups/fringe_control_pairs.py b/geminidr/gmos/lookups/fringe_control_pairs.py index e65f364b5c..97a658ce24 100644 --- a/geminidr/gmos/lookups/fringe_control_pairs.py +++ b/geminidr/gmos/lookups/fringe_control_pairs.py @@ -117,4 +117,4 @@ ((4382, 1800), (4434, 1782)), ((4763, 1578), (4766, 1539)), ((4868, 1914), (4928, 1908))), -} \ No newline at end of file +} diff --git a/geminidr/gmos/recipes/ql/recipes_FLAT_LS_SPECT.py b/geminidr/gmos/recipes/ql/recipes_FLAT_LS_SPECT.py index f31598e9d2..f1659adb40 100644 --- a/geminidr/gmos/recipes/ql/recipes_FLAT_LS_SPECT.py +++ b/geminidr/gmos/recipes/ql/recipes_FLAT_LS_SPECT.py @@ -9,4 +9,3 @@ makeProcessedFlatNoStack) _default = makeProcessedFlatNoStack - diff --git a/geminidr/gmos/recipes/ql/recipes_LS_SPECT.py b/geminidr/gmos/recipes/ql/recipes_LS_SPECT.py index dd868c9bf8..a5042be251 100644 --- a/geminidr/gmos/recipes/ql/recipes_LS_SPECT.py +++ b/geminidr/gmos/recipes/ql/recipes_LS_SPECT.py @@ -74,4 +74,3 @@ def reduceStandard(p): p.writeOutputs() _default = reduceScience - diff --git a/geminidr/gmos/recipes/ql/recipes_STANDARD_LS_SPECT.py b/geminidr/gmos/recipes/ql/recipes_STANDARD_LS_SPECT.py index 49b11e79f0..f21781ea18 100644 --- a/geminidr/gmos/recipes/ql/recipes_STANDARD_LS_SPECT.py +++ b/geminidr/gmos/recipes/ql/recipes_STANDARD_LS_SPECT.py @@ -9,4 +9,3 @@ from geminidr.gmos.recipes.ql.recipes_common import makeIRAFCompatible _default = reduceStandard - diff --git a/geminidr/gmos/recipes/ql/tests/test_flat_ls_spect.py b/geminidr/gmos/recipes/ql/tests/test_flat_ls_spect.py index 99afd2561a..a69bb730c9 100644 --- a/geminidr/gmos/recipes/ql/tests/test_flat_ls_spect.py +++ b/geminidr/gmos/recipes/ql/tests/test_flat_ls_spect.py @@ -271,7 +271,7 @@ def create_master_bias_for_tests(): bias_reduce = Reduce() bias_reduce.files.extend(bias_paths) bias_reduce.runr() - + shutil.rmtree("calibrations/") diff --git a/geminidr/gmos/recipes/sq/recipes_IMAGE.py b/geminidr/gmos/recipes/sq/recipes_IMAGE.py index ebf5b5ebf3..23068eda99 100644 --- a/geminidr/gmos/recipes/sq/recipes_IMAGE.py +++ b/geminidr/gmos/recipes/sq/recipes_IMAGE.py @@ -184,4 +184,3 @@ def alignAndStack(p): # p.makeIRAFCompatible() # p.writeOutputs() # return - diff --git a/geminidr/gmos/tests/image/test_apply_wcs_adjustment.py b/geminidr/gmos/tests/image/test_apply_wcs_adjustment.py index 0eaa458cc9..cbdfa8a129 100644 --- a/geminidr/gmos/tests/image/test_apply_wcs_adjustment.py +++ b/geminidr/gmos/tests/image/test_apply_wcs_adjustment.py @@ -119,4 +119,4 @@ def gmos_tiled_images(astrofaker): adinputs.append(ad) p = GMOSImage(adinputs) p.tileArrays(tile_all=False) - return p.streams['main'] \ No newline at end of file + return p.streams['main'] diff --git a/geminidr/gmos/tests/longslit/__init__.py b/geminidr/gmos/tests/longslit/__init__.py index 2f19568e32..748cbc1ae3 100644 --- a/geminidr/gmos/tests/longslit/__init__.py +++ b/geminidr/gmos/tests/longslit/__init__.py @@ -1 +1 @@ -INPUTS_ROOT_PATH = "./dragons_test_inputs/geminidr/gmos/longslit/" \ No newline at end of file +INPUTS_ROOT_PATH = "./dragons_test_inputs/geminidr/gmos/longslit/" diff --git a/geminidr/gmos/tests/spect/test_adjust_wcs_to_reference.py b/geminidr/gmos/tests/spect/test_adjust_wcs_to_reference.py index bb917cb172..4d663d2262 100644 --- a/geminidr/gmos/tests/spect/test_adjust_wcs_to_reference.py +++ b/geminidr/gmos/tests/spect/test_adjust_wcs_to_reference.py @@ -58,4 +58,4 @@ def test_adjust_wcs_with_correlation(files, path_to_inputs, caplog): assert c0.separation(c).arcsecond < 0.5 * pixel_scale -# Todo: Implement recipe to create input files \ No newline at end of file +# Todo: Implement recipe to create input files diff --git a/geminidr/gmos/tests/spect/test_attach_wavelength_solution.py b/geminidr/gmos/tests/spect/test_attach_wavelength_solution.py index 2cc272dfff..db55ed5673 100644 --- a/geminidr/gmos/tests/spect/test_attach_wavelength_solution.py +++ b/geminidr/gmos/tests/spect/test_attach_wavelength_solution.py @@ -211,7 +211,7 @@ def create_inputs_recipe(): from astrodata.testing import download_from_archive from geminidr.gmos.tests.spect import CREATED_INPUTS_PATH_FOR_TESTS from recipe_system.reduction.coreReduce import Reduce - from recipe_system.utils.reduce_utils import normalize_ucals + from recipe_system.utils.reduce_utils import normalize_ucals module_name, _ = os.path.splitext(os.path.basename(__file__)) path = os.path.join(CREATED_INPUTS_PATH_FOR_TESTS, module_name) diff --git a/geminidr/gmos/tests/spect/test_determine_distortion.py b/geminidr/gmos/tests/spect/test_determine_distortion.py index bfe150111d..de9bb068ef 100644 --- a/geminidr/gmos/tests/spect/test_determine_distortion.py +++ b/geminidr/gmos/tests/spect/test_determine_distortion.py @@ -158,7 +158,7 @@ def test_regression_for_determine_distortion_using_models_coefficients( ref_ad = ref_ad_factory(distortion_determined_ad.filename) assert_have_same_distortion(distortion_determined_ad, ref_ad, atol=1) - + if request.config.getoption("--do-plots"): do_plots(distortion_determined_ad, ref_ad) diff --git a/geminidr/gmos/tests/spect/test_distortion_correct.py b/geminidr/gmos/tests/spect/test_distortion_correct.py index 9994f91d0b..f24e17fe8b 100644 --- a/geminidr/gmos/tests/spect/test_distortion_correct.py +++ b/geminidr/gmos/tests/spect/test_distortion_correct.py @@ -220,7 +220,7 @@ def create_inputs_recipe(): from astrodata.testing import download_from_archive from geminidr.gmos.tests.spect import CREATED_INPUTS_PATH_FOR_TESTS from recipe_system.reduction.coreReduce import Reduce - from recipe_system.utils.reduce_utils import normalize_ucals + from recipe_system.utils.reduce_utils import normalize_ucals module_name, _ = os.path.splitext(os.path.basename(__file__)) path = os.path.join(CREATED_INPUTS_PATH_FOR_TESTS, module_name) diff --git a/geminidr/gmos/tests/spect/test_distortion_correct_with_wavelength_solution.py b/geminidr/gmos/tests/spect/test_distortion_correct_with_wavelength_solution.py index 5ac3b87544..ff91c9f021 100644 --- a/geminidr/gmos/tests/spect/test_distortion_correct_with_wavelength_solution.py +++ b/geminidr/gmos/tests/spect/test_distortion_correct_with_wavelength_solution.py @@ -231,7 +231,7 @@ def create_inputs_recipe(): from astrodata.testing import download_from_archive from geminidr.gmos.tests.spect import CREATED_INPUTS_PATH_FOR_TESTS from recipe_system.reduction.coreReduce import Reduce - from recipe_system.utils.reduce_utils import normalize_ucals + from recipe_system.utils.reduce_utils import normalize_ucals module_name, _ = os.path.splitext(os.path.basename(__file__)) path = os.path.join(CREATED_INPUTS_PATH_FOR_TESTS, module_name) diff --git a/geminidr/gmos/tests/spect/test_extract_1d_spectra.py b/geminidr/gmos/tests/spect/test_extract_1d_spectra.py index f3953e1351..b9d0f559f0 100644 --- a/geminidr/gmos/tests/spect/test_extract_1d_spectra.py +++ b/geminidr/gmos/tests/spect/test_extract_1d_spectra.py @@ -249,4 +249,3 @@ def create_inputs_recipe(): create_inputs_recipe() else: pytest.main() - diff --git a/geminidr/gnirs/lookups/MDF_XD.py b/geminidr/gnirs/lookups/MDF_XD.py index 3d308ff747..1987525e67 100755 --- a/geminidr/gnirs/lookups/MDF_XD.py +++ b/geminidr/gnirs/lookups/MDF_XD.py @@ -1,103 +1,101 @@ # gnirs/lookups/MDF_XD_GNIRS.py -# -# This file contains a look-up table for GNIRS cross-dispersed (XD) data, -# with information on the locations and widths of the various slits visible -# on the detector. It is added to files in prepare(), from -# GNIRSCrossDispersed.addMDF(). x_ccd refers to the middle of the slit at the -# row y_ccd, which is where tracing of the edges begins in determineSlitEdges() -# (this may need to be other than the center of the array for some configurations) +"""This file contains a look-up table for GNIRS cross-dispersed (XD) data, +with information on the locations and widths of the various slits visible +on the detector. It is added to files in prepare(), from +GNIRSCrossDispersed.addMDF(). x_ccd refers to the middle of the slit at the +row y_ccd, which is where tracing of the edges begins in determineSlitEdges() +(this may need to be other than the center of the array for some configurations) +""" # primitives_gnirs_crossdispersed imports this dictionary to find the slit # definitions based on a key generated from the 'telescope', '_prism', 'decker', # '_grating', and 'camera' attributes of a file. slit_info = { - -# Not all configurations have data present in the archive - some notes: -# * Long camera can be used with the SXD prism, but not the reverse. -# * There's no reason to use the 10 l/mm grating with the Short camera. -# * Using the Long camera is best with AO, so it was not used while GNIRS was -# at Gemini South. - -# ------------------------------- Gemini North -------------------------------- -# ------------------------------- Short camera -# North, Short, 10 l/mm, SXD -# North, Short, 10 l/mm, LXD -# North, Short, 32 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_ShortBlue_G5540': ( - (290, 400, 477, 550, 624, 707), # x_ccd - 512, # y_ccd - 47 # width_pixels + # Not all configurations have data present in the archive - some notes: + # * Long camera can be used with the SXD prism, but not the reverse. + # * There's no reason to use the 10 l/mm grating with the Short camera. + # * Using the Long camera is best with AO, so it was not used while GNIRS was + # at Gemini South. + # ------------------------------- Gemini North -------------------------------- + # ------------------------------- Short camera + # North, Short, 10 l/mm, SXD + # North, Short, 10 l/mm, LXD + # North, Short, 32 l/mm, SXD + "Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_ShortBlue_G5540": ( + (290, 400, 477, 550, 624, 707), # x_ccd + 512, # y_ccd + 47, # width_pixels ), -# North, Short, 32 l/mm, LXD -# North, Short, 111 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_111/mm_G5534_ShortBlue_G5540': ( - (275, 389, 466, 534, 607, 685), # x_ccd - 175, # y_ccd - 47 # width_pixels + # North, Short, 32 l/mm, LXD + # North, Short, 111 l/mm, SXD + "Gemini-North_SXD_G5536_SCXD_G5531_111/mm_G5534_ShortBlue_G5540": ( + (275, 389, 466, 534, 607, 685), # x_ccd + 175, # y_ccd + 47, # width_pixels ), -# North, Short, 111 l/mm, LXD -# --------------------------------- Long camera ------------------------------- -# North, Long, 10 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_10/mm_G5532_LongBlue_G5542': ( - (103, 455, 683, 884), # x_ccd - 300, # y_ccd - 140 # width_pixels + # North, Short, 111 l/mm, LXD + # --------------------------------- Long camera ------------------------------- + # North, Long, 10 l/mm, SXD + "Gemini-North_SXD_G5536_SCXD_G5531_10/mm_G5532_LongBlue_G5542": ( + (103, 455, 683, 884), # x_ccd + 300, # y_ccd + 140, # width_pixels ), -# North, Long, 10 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_10/mm_G5532_LongBlue_G5542': ( - (145, 381, 531, 657, 778, 916), # x_ccd - 175, # y_ccd - 105 # width_pixels + # North, Long, 10 l/mm, LXD + "Gemini-North_LXD_G5535_LCXD_G5531_10/mm_G5532_LongBlue_G5542": ( + (145, 381, 531, 657, 778, 916), # x_ccd + 175, # y_ccd + 105, # width_pixels ), -# North, Long, 32 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_LongBlue_G5542': ( - # There are only 3 slits in the IRAF MDF; the 4th is mostly off-detector - (208, 563, 792, 995), # x_ccd - 50, # y_ccd - 140 # width_pixels + # North, Long, 32 l/mm, SXD + "Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_LongBlue_G5542": ( + # There are only 3 slits in the IRAF MDF; the 4th is mostly off-detector + (208, 563, 792, 995), # x_ccd + 50, # y_ccd + 140, # width_pixels ), -# North, Long, 32 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_32/mm_G5533_LongBlue_G5542': ( - (220, 430, 580, 714, 857), # x_ccd - 512, # y_ccd - 100 # width_pixels + # North, Long, 32 l/mm, LXD + "Gemini-North_LXD_G5535_LCXD_G5531_32/mm_G5533_LongBlue_G5542": ( + (220, 430, 580, 714, 857), # x_ccd + 512, # y_ccd + 100, # width_pixels ), -# North, Long, 111 l/mm, SXD -# North, Long, 111 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_111/mm_G5534_LongBlue_G5542': ( - (198, 410, 560, 699, 850), # x_ccd - 512, # y_ccd - 100 # width_pixels + # North, Long, 111 l/mm, SXD + # North, Long, 111 l/mm, LXD + "Gemini-North_LXD_G5535_LCXD_G5531_111/mm_G5534_LongBlue_G5542": ( + (198, 410, 560, 699, 850), # x_ccd + 512, # y_ccd + 100, # width_pixels ), - -# ------------------------------- Gemini South -------------------------------- -# ------------------------------- Short camera -# South, Short, 10 l/mm, SXD -# South, Short, 10 l/mm, LXD -# South, Short, 32 l/mm, SXD -'Gemini-South_SXD_G5509_SC_XD_32/mm_G5506_ShortBlue_G5521': ( - (325, 435, 512, 584, 659, 742.5), # x_ccd - 512, # y_ccd - 43 # width_pixels + # ------------------------------- Gemini South -------------------------------- + # ------------------------------- Short camera + # South, Short, 10 l/mm, SXD + # South, Short, 10 l/mm, LXD + # South, Short, 32 l/mm, SXD + "Gemini-South_SXD_G5509_SC_XD_32/mm_G5506_ShortBlue_G5521": ( + (325, 435, 512, 584, 659, 742.5), # x_ccd + 512, # y_ccd + 43, # width_pixels ), -# South, Short, 32 l/mm, LXD -# South, Short, 111 l/mm, SXD -'Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513': ( - (326, 436, 512, 586, 667, 756), # x_ccd - 512, # y_ccd - 48 # width_pixels + # South, Short, 32 l/mm, LXD + # South, Short, 111 l/mm, SXD + "Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513": ( + (326, 436, 512, 586, 667, 756), # x_ccd + 512, # y_ccd + 48, # width_pixels ), -# South, Short, 111 l/mm, LXD -# --------------------------------- Long camera ------------------------------- -# South, Long, 10 l/mm, SXD -# South, Long, 10 l/mm, LXD -# South, Long, 32 l/mm, SXD -# South, Long, 32 l/mm, LXD -# South, Long, 111 l/mm, SXD -# South, Long, 111 l/mm, LXD + # South, Short, 111 l/mm, LXD + # --------------------------------- Long camera ------------------------------- + # South, Long, 10 l/mm, SXD + # South, Long, 10 l/mm, LXD + # South, Long, 32 l/mm, SXD + # South, Long, 32 l/mm, LXD + # South, Long, 111 l/mm, SXD + # South, Long, 111 l/mm, LXD } # In some cases changes of components mean the generated keys will be different, # but the configuration isn't meaningfully affected. Define such cases here. -slit_info['Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5521'] =\ - slit_info['Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513'] +slit_info["Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5521"] = slit_info[ + "Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513" +] diff --git a/geminidr/gnirs/lookups/nearIRsky.dat b/geminidr/gnirs/lookups/nearIRsky.dat index 736a576bea..7e2f3ff701 100644 --- a/geminidr/gnirs/lookups/nearIRsky.dat +++ b/geminidr/gnirs/lookups/nearIRsky.dat @@ -10,7 +10,7 @@ # # Because of the very high resolution OH line list from Rousselot et al, # the list was then modified removing lines that could not be identified -# with the medium resolution mode on ISAAC. Because of the lower +# with the medium resolution mode on ISAAC. Because of the lower # resolution R=2000 mode of GNIRS, the blended lines will be identified # by the strongest line in the blend. # diff --git a/geminidr/gnirs/lookups/orders_XD.py b/geminidr/gnirs/lookups/orders_XD.py index 76c5cea47d..585b43c89b 100644 --- a/geminidr/gnirs/lookups/orders_XD.py +++ b/geminidr/gnirs/lookups/orders_XD.py @@ -1,83 +1,83 @@ # gnirs/lookups/orders_XD_GNIRS.py -# -# This file contains a look-up table for GNRIS cross-dispersed (XD) data with -# initial guesses for the central wavelength and dispersion of the various -# orders in the data. These numbers were taken from nsappwave.fits from G-IRAF, -# except for the Long camera, 111 l/mm, LXD configuration, which were calculated -# using the table on the GNIRS webpage at -# https://www.gemini.edu/instrumentation/gnirs/capability#Spectroscopy +"""This file contains a look-up table for GNRIS cross-dispersed (XD) data with +initial guesses for the central wavelength and dispersion of the various +orders in the data. These numbers were taken from nsappwave.fits from G-IRAF, +except for the Long camera, 111 l/mm, LXD configuration, which were calculated +using the table on the GNIRS webpage at +https://www.gemini.edu/instrumentation/gnirs/capability#Spectroscopy -# primitives_gnirs_crossdispersed imports this dictionary to find the order -# information based on a key generated from the 'telescope', '_prism', 'decker', -# '_grating', and 'camera' attributes of a file. +primitives_gnirs_crossdispersed imports this dictionary to find the order +information based on a key generated from the 'telescope', '_prism', 'decker', +'_grating', and 'camera' attributes of a file. +""" order_info= { -# ------------------------------- Gemini North -------------------------------- -# ------------------------------- Short camera -# North, Short, 10 l/mm, SXD -# North, Short, 10 l/mm, LXD -# North, Short, 32 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_ShortBlue_G5540': ( - (2210, 1660, 1330, 1110, 950, 830), - (-0.645, -0.479, -0.381, -0.322, -0.273, -0.244), - ), -# North, Short, 32 l/mm, LXD -# North, Short, 111 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_111/mm_G5534_ShortBlue_G5540': ( - (2210, 1660, 1330, 1110, 950, 830), # nm - (-0.1853, -0.13882, -0.11117, -0.09242, -0.08, -0.0694), # nm/pixel - ), -# North, Short, 111 l/mm, LXD -# --------------------------------- Long camera ------------------------------- -# North, Long, 10 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_10/mm_G5532_LongBlue_G5542': ( - (2210, 1660, 1330, 1110), - (-0.645, -0.4847, -0.3895, -0.324), - ), -# North, Long, 10 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_10/mm_G5532_LongBlue_G5542': ( - (2210, 1660, 1330, 1110, 950, 830), - (-0.64504, -0.4847, -0.3895, -0.322, -0.273, -0.244), - ), -# North, Long, 32 l/mm, SXD -'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_LongBlue_G5542': ( - (2210, 1660, 1330, 1110), - (-0.1853, -0.13882, -0.11117, -0.09242), - ), -# North, Long, 32 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_32/mm_G5533_LongBlue_G5542': ( - (2210, 1660, 1330, 1110), - (-0.1853, -0.13882, -0.11117, -0.09242), - ), -# North, Long, 111 l/mm, SXD -# North, Long, 111 l/mm, LXD -'Gemini-North_LXD_G5535_LCXD_G5531_111/mm_G5534_LongBlue_G5542': ( - (2210, 1660, 1330, 1110, 950, 830), - (-0.0619, -0.0455, -0.0372, -0.0309, -0.0265, -0.0232), - ), -# ------------------------------- Gemini South -------------------------------- -# ------------------------------- Short camera -# South, Short, 10 l/mm, SXD -# South, Short, 10 l/mm, LXD -# South, Short, 32 l/mm, SXD -'Gemini-South_SXD_G5509_SC_XD_32/mm_G5506_ShortBlue_G5521': ( - (2210, 1660, 1330, 1110, 950, 830), - (-0.645, -0.479, -0.381, -0.322, -0.273, -0.244), - ), -# South, Short, 32 l/mm, LXD -# South, Short, 111 l/mm, SXD -'Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513': ( - (2210, 1660, 1330, 1110, 950), - (-0.1854, -0.139, -0.1112, -0.0927, -0.08, -0.0694), - ), -# South, Short, 111 l/mm, LXD -# --------------------------------- Long camera ------------------------------- -# South, Long, 10 l/mm, SXD -# South, Long, 10 l/mm, LXD -# South, Long, 32 l/mm, SXD -# South, Long, 32 l/mm, LXD -# South, Long, 111 l/mm, SXD -# South, Long, 111 l/mm, LXD + # ------------------------------- Gemini North ---------------------------- + # ------------------------------- Short camera + # North, Short, 10 l/mm, SXD + # North, Short, 10 l/mm, LXD + # North, Short, 32 l/mm, SXD + 'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_ShortBlue_G5540': ( + (2210, 1660, 1330, 1110, 950, 830), + (-0.645, -0.479, -0.381, -0.322, -0.273, -0.244), + ), + # North, Short, 32 l/mm, LXD + # North, Short, 111 l/mm, SXD + 'Gemini-North_SXD_G5536_SCXD_G5531_111/mm_G5534_ShortBlue_G5540': ( + (2210, 1660, 1330, 1110, 950, 830), # nm + (-0.1853, -0.13882, -0.11117, -0.09242, -0.08, -0.0694), # nm/pixel + ), + # North, Short, 111 l/mm, LXD + # --------------------------------- Long camera --------------------------- + # North, Long, 10 l/mm, SXD + 'Gemini-North_SXD_G5536_SCXD_G5531_10/mm_G5532_LongBlue_G5542': ( + (2210, 1660, 1330, 1110), + (-0.645, -0.4847, -0.3895, -0.324), + ), + # North, Long, 10 l/mm, LXD + 'Gemini-North_LXD_G5535_LCXD_G5531_10/mm_G5532_LongBlue_G5542': ( + (2210, 1660, 1330, 1110, 950, 830), + (-0.64504, -0.4847, -0.3895, -0.322, -0.273, -0.244), + ), + # North, Long, 32 l/mm, SXD + 'Gemini-North_SXD_G5536_SCXD_G5531_32/mm_G5533_LongBlue_G5542': ( + (2210, 1660, 1330, 1110), + (-0.1853, -0.13882, -0.11117, -0.09242), + ), + # North, Long, 32 l/mm, LXD + 'Gemini-North_LXD_G5535_LCXD_G5531_32/mm_G5533_LongBlue_G5542': ( + (2210, 1660, 1330, 1110), + (-0.1853, -0.13882, -0.11117, -0.09242), + ), + # North, Long, 111 l/mm, SXD + # North, Long, 111 l/mm, LXD + 'Gemini-North_LXD_G5535_LCXD_G5531_111/mm_G5534_LongBlue_G5542': ( + (2210, 1660, 1330, 1110, 950, 830), + (-0.0619, -0.0455, -0.0372, -0.0309, -0.0265, -0.0232), + ), + # ------------------------------- Gemini South ---------------------------- + # ------------------------------- Short camera + # South, Short, 10 l/mm, SXD + # South, Short, 10 l/mm, LXD + # South, Short, 32 l/mm, SXD + 'Gemini-South_SXD_G5509_SC_XD_32/mm_G5506_ShortBlue_G5521': ( + (2210, 1660, 1330, 1110, 950, 830), + (-0.645, -0.479, -0.381, -0.322, -0.273, -0.244), + ), + # South, Short, 32 l/mm, LXD + # South, Short, 111 l/mm, SXD + 'Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5513': ( + (2210, 1660, 1330, 1110, 950), + (-0.1854, -0.139, -0.1112, -0.0927, -0.08, -0.0694), + ), + # South, Short, 111 l/mm, LXD + # --------------------------------- Long camera --------------------------- + # South, Long, 10 l/mm, SXD + # South, Long, 10 l/mm, LXD + # South, Long, 32 l/mm, SXD + # South, Long, 32 l/mm, LXD + # South, Long, 111 l/mm, SXD + # South, Long, 111 l/mm, LXD } order_info['Gemini-South_SXD_G5509_SC_XD_111/mm_G5505_ShortBlue_G5521'] =\ diff --git a/geminidr/gnirs/parameters_gnirs_image.py b/geminidr/gnirs/parameters_gnirs_image.py index 8160aa6a7e..7d8aa67738 100644 --- a/geminidr/gnirs/parameters_gnirs_image.py +++ b/geminidr/gnirs/parameters_gnirs_image.py @@ -27,7 +27,7 @@ def setDefaults(self): self.first_pass = 2. self.min_sources = 1 self.rotate = True - + class cleanFFTReadoutConfig(parameters_nearIR.cleanFFTReadoutConfig): # Need a larger extent to cope with a bright spectrum down the middle diff --git a/geminidr/gnirs/recipes/qa/recipes_LS_SPECT.py b/geminidr/gnirs/recipes/qa/recipes_LS_SPECT.py index 7c2e7f35f0..b0da2e5b32 100644 --- a/geminidr/gnirs/recipes/qa/recipes_LS_SPECT.py +++ b/geminidr/gnirs/recipes/qa/recipes_LS_SPECT.py @@ -7,7 +7,7 @@ def reduceScience(p): """ - To be updated as development continues: This recipe processes GNIRS longslit + To be updated as development continues: This recipe processes GNIRS longslit spectroscopic data, currently up to basic spectral extraction without telluric correction. Parameters @@ -17,7 +17,7 @@ def reduceScience(p): """ p.prepare() p.addDQ() - # p.nonlinearityCorrect() # non-linearity correction tbd + # p.nonlinearityCorrect() # non-linearity correction tbd p.ADUToElectrons() p.addVAR(poisson_noise=True, read_noise=True) p.measureIQ(display=True) @@ -51,6 +51,6 @@ def reduceScience(p): p.traceApertures() p.extractSpectra() p.plotSpectraForQA() - - + + _default = reduceScience diff --git a/geminidr/gsaoi/lookups/gsaoi_static_distortion_info.py b/geminidr/gsaoi/lookups/gsaoi_static_distortion_info.py index f17f745d17..fc817d527a 100644 --- a/geminidr/gsaoi/lookups/gsaoi_static_distortion_info.py +++ b/geminidr/gsaoi/lookups/gsaoi_static_distortion_info.py @@ -6,18 +6,17 @@ # In degrees; these are the RA and DEC for the LMC field __STATIC_REFERENCE_COORDS__ = {"x": 80.45476667, "y": -69.4999333} -""" -forward: A dictionary specifiying the information related to the default static -transformation of pixel coordinates to projection plane coordinates. -Containing the *linear* and *non-linear* surface fits information -including model definition and coefficients per array per axis. -backward: A dictionary specifying the information related to the inverse of the -default static transformation. Containing only one model type which maps -projection plane coordinates to pixel coordinates. The information includes -model definition (type, domain, degree) and coefficients per array per -axis. Recomputed by CJS 07/13/2016 -""" +# forward: A dictionary specifiying the information related to the default static +# transformation of pixel coordinates to projection plane coordinates. +# Containing the *linear* and *non-linear* surface fits information +# including model definition and coefficients per array per axis. +# +# backward: A dictionary specifying the information related to the inverse of the +# default static transformation. Containing only one model type which maps +# projection plane coordinates to pixel coordinates. The information includes +# model definition (type, domain, degree) and coefficients per array per +# axis. Recomputed by CJS 07/13/2016 STATIC_CORRECTIONS = { "forward": [ # Linear model @@ -226,22 +225,20 @@ # Static centre of rotation # Relative to array A4 reference point CENTER_OF_ROTATION = (-65.44, -75.154) -""" -Dictionary keyed by X, Y stating the relative offset in pixels for the given -key. -""" +# Dictionary keyed by X, Y stating the relative offset in pixels for the given +# key. # Dictionary mapping date ranges to static corrections #STATIC_CORRECTIONS_DATE_MAPPING = {(None, None): # {"model": STATIC_CORRECTIONS, # "cor_offset": CENTER_OF_ROTATION}} -""" -A dictionary mapping a date range, the key (a tuple of dates, default -currently is None, None) to the appropriate static correction information, -the value, a dictionary keyed by MODEL, INVERSE, -CENTRE_OF_ROTATION_OFFSET. The MODEL and INVERSE values are dictionaries -that contain the coefficients for the defined models for each of the defined -arrays. The CENTRE_OF_ROTATION_OFFSET is a dictionary keyed by X, Y that -refer to the relative offsets to apply to translate everything to the centre -of rotation. -""" +# +# A dictionary mapping a date range, the key (a tuple of dates, default +# currently is None, None) to the appropriate static correction information, +# the value, a dictionary keyed by MODEL, INVERSE, +# CENTRE_OF_ROTATION_OFFSET. The MODEL and INVERSE values are dictionaries +# that contain the coefficients for the defined models for each of the defined +# arrays. The CENTRE_OF_ROTATION_OFFSET is a dictionary keyed by X, Y that +# refer to the relative offsets to apply to translate everything to the centre +# of rotation. +# diff --git a/geminidr/gsaoi/lookups/maskdb.py b/geminidr/gsaoi/lookups/maskdb.py index 2b3811a9c3..4390cc1b65 100644 --- a/geminidr/gsaoi/lookups/maskdb.py +++ b/geminidr/gsaoi/lookups/maskdb.py @@ -6,4 +6,4 @@ bpm_dict = { "GSAOI_11": "gsaoibpm_high_full_extra.fits", # "GSAOI_1_1": "gsaoibpm_high_full.fits" -} \ No newline at end of file +} diff --git a/geminidr/gsaoi/primitives_gsaoi.py b/geminidr/gsaoi/primitives_gsaoi.py index c5d301d750..6242d27720 100644 --- a/geminidr/gsaoi/primitives_gsaoi.py +++ b/geminidr/gsaoi/primitives_gsaoi.py @@ -225,4 +225,3 @@ def _nonlinearity_coeffs(self, ad): def _has_valid_extensions(ad): """Check the AD has a valid number of extensions""" return len(ad) == 4 - diff --git a/geminidr/gsaoi/recipes/tests/reduce_img.sh b/geminidr/gsaoi/recipes/tests/reduce_img.sh index 8c97c9c521..19c0f72547 100755 --- a/geminidr/gsaoi/recipes/tests/reduce_img.sh +++ b/geminidr/gsaoi/recipes/tests/reduce_img.sh @@ -72,4 +72,3 @@ reduce @sciset.lis -p addDQ:user_bpm=${bpm} # Check the final result & return status. Since there's no stack here, just # spot check the last file: compare_file $(last_result_filename skySubtracted) - diff --git a/geminidr/gsaoi/recipes/tests/reduce_img_every_n.sh b/geminidr/gsaoi/recipes/tests/reduce_img_every_n.sh index 46f807bb6f..5e7f62280c 100755 --- a/geminidr/gsaoi/recipes/tests/reduce_img_every_n.sh +++ b/geminidr/gsaoi/recipes/tests/reduce_img_every_n.sh @@ -56,4 +56,3 @@ reduce @sciset.lis -p addDQ:user_bpm=${bpm} # Check the final result & return status. Since there's no stack here, just # spot check the last file: compare_file $(last_result_filename skySubtracted) - diff --git a/geminidr/gsaoi/recipes/tests/reduce_img_not_bpm.sh b/geminidr/gsaoi/recipes/tests/reduce_img_not_bpm.sh index 11294c6abe..f62f2e772e 100755 --- a/geminidr/gsaoi/recipes/tests/reduce_img_not_bpm.sh +++ b/geminidr/gsaoi/recipes/tests/reduce_img_not_bpm.sh @@ -56,4 +56,3 @@ reduce @sciset.lis -p addDQ:user_bpm=${bpm} # Check the final result & return status. Since there's no stack here, just # spot check the last file: compare_file $(last_result_filename skySubtracted) - diff --git a/geminidr/gsaoi/recipes/tests/test_H_img.sh b/geminidr/gsaoi/recipes/tests/test_H_img.sh index b2ffc8b3e4..93bf03197a 100755 --- a/geminidr/gsaoi/recipes/tests/test_H_img.sh +++ b/geminidr/gsaoi/recipes/tests/test_H_img.sh @@ -11,4 +11,3 @@ start_test_set "$name" "$script_dir/reduce_img.sh" "$name" "S20160219S01" AT2018ec 9146 20 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/gsaoi/recipes/tests/test_J_img.sh b/geminidr/gsaoi/recipes/tests/test_J_img.sh index 91c15157ab..22db93130c 100755 --- a/geminidr/gsaoi/recipes/tests/test_J_img.sh +++ b/geminidr/gsaoi/recipes/tests/test_J_img.sh @@ -11,4 +11,3 @@ start_test_set "$name" "$script_dir/reduce_img_not_bpm.sh" "$name" "WISE0833+0052" 9146 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/gsaoi/recipes/tests/test_Ksc_img.sh b/geminidr/gsaoi/recipes/tests/test_Ksc_img.sh index b3d2a067ee..f2309d2ef1 100755 --- a/geminidr/gsaoi/recipes/tests/test_Ksc_img.sh +++ b/geminidr/gsaoi/recipes/tests/test_Ksc_img.sh @@ -12,4 +12,3 @@ start_test_set "$name" "$script_dir/reduce_img_every_n.sh" "$name" "Sgr A* - off-centered" 9182 1 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/interactive/INTERACTIVE.md b/geminidr/interactive/INTERACTIVE.md index 1efc1e05ca..301e8a79ed 100644 --- a/geminidr/interactive/INTERACTIVE.md +++ b/geminidr/interactive/INTERACTIVE.md @@ -1,44 +1,37 @@ # Interactive Tools -This is a guide to the interactive APIs and how to use them -in the primitives in the recipe system. These tools depend -on bokeh and spin up an embedded webserver to provide the -user interface. +This is a guide to the interactive APIs and how to use them in the primitives in +the recipe system. These tools depend on bokeh and spin up an embedded webserver +to provide the user interface. ## Quick Start -The visualization is done in bokeh with an embedded web server. -In the primitive, the code will call out to the visualization -API with the input values/parameters. From there, the user will -be interacting with the data in bokeh. Once the user hits a -submit button, the code will return to the calling primitive and -it can extract the final fit/parameters from the visualization. -There is also a pre-done 1-D Visualizer provided to use the -fit_1D fitter. +The visualization is done in bokeh with an embedded web server. In the +primitive, the code will call out to the visualization API with the input +values/parameters. From there, the user will be interacting with the data in +bokeh. Once the user hits a submit button, the code will return to the calling +primitive and it can extract the final fit/parameters from the visualization. +There is also a pre-done 1-D Visualizer provided to use the fit_1D fitter. ## Fit1DVisualizer -This first section will outline the `Fit1DVisualizer`. For -many primitives, this will be sufficient. Using this -`Visualizer` implementation will save time and lead to a -consistent interface with other interactive fits. +This first section will outline the `Fit1DVisualizer`. For many primitives, this +will be sufficient. Using this `Visualizer` implementation will save time and +lead to a consistent interface with other interactive fits. ![Fit1DVisualizer for standard 1-D fits](docs/Fit1DVisualizer.png) ### Identify Coordinate inputs, Fit inputs -Look over the primitive and see what inputs are used to -generate the initial set of coordinates to be fit. This -may be an expensive operation and we want to -separate out the needed inputs accordingly in the UI. -These inputs will be UI widgets on the far left used -to generate the full set of coordinates/weights. +Look over the primitive and see what inputs are used to generate the initial set +of coordinates to be fit. This may be an expensive operation and we want to +separate out the needed inputs accordingly in the UI. These inputs will be UI +widgets on the far left used to generate the full set of coordinates/weights. -The logic to generate the coordinates from those -inputs may be placed in a method. Changes in these left -side inputs affect all tabs and will call this provided -function from the primitive to regenerate all input -coordinates and weights. +The logic to generate the coordinates from those inputs may be placed in a +method. Changes in these left side inputs affect all tabs and will call this +provided function from the primitive to regenerate all input coordinates and +weights. ### Noteable Parameters @@ -46,17 +39,17 @@ Some of the more noteable parameters to the `Fit1DVisualizer` are: #### data_source -This will either be actual input coordinates or a function that -returns the input coordinates. If you have no parameters other -than the ones being passed to the `fit_1D` fitters (`order`, etc) -then you can just pass a list of (x, y, weights) tuples +This will either be actual input coordinates or a function that returns the +input coordinates. If you have no parameters other than the ones being passed to +the `fit_1D` fitters (`order`, etc) then you can just pass a list of (x, y, +weights) tuples #### fitting_parameters -This should be a list of dictionaries that will -be sent to each `fit_1D` when doing the fits. Essentially, this will -have the initial `order`, etc that will be used for each tab. This -can be easily generated from the primitive parameters using: +This should be a list of dictionaries that will be sent to each `fit_1D` when +doing the fits. Essentially, this will have the initial `order`, etc that will +be used for each tab. This can be easily generated from the primitive parameters +using: ```python fit_1D.translate_params(params) @@ -64,22 +57,20 @@ fit_1D.translate_params(params) ### Create/Start the Fit1DVisualizer -This is the same approach you will take with a custom -`Visualizer` if one is needed. +This is the same approach you will take with a custom `Visualizer` if one is +needed. -First you instantiate the `Fit1DVisualizer` with the -coordinates or coordinate function and other parameters. -Then you start the bokeh UI by calling +First you instantiate the `Fit1DVisualizer` with the coordinates or coordinate +function and other parameters. Then you start the bokeh UI by calling ```python geminidr.interactive.server.interactive_fitter(visualizer) ``` -The call will block until the user hits the *Submit* button or -closes the tab. Then the function will return and resulting -fits are available from the `visualizer`. You can get the list -of final `fit_1D` fits by calling the `results()` method like -this: +The call will block until the user hits the *Submit* button or closes the tab. +Then the function will return and resulting fits are available from the +`visualizer`. You can get the list of final `fit_1D` fits by calling the +`results()` method like this: ```python all_m_final = visualizer.results() @@ -87,8 +78,8 @@ all_m_final = visualizer.results() ### calculateSensitivity -The `calculateSensitivty` primitive is a good example of the common case and -how to use the pre-done `Fit1DVisualizer` UI. The code ends up like this: +The `calculateSensitivty` primitive is a good example of the common case and how +to use the pre-done `Fit1DVisualizer` UI. The code ends up like this: ```python if interactive: @@ -101,7 +92,7 @@ if interactive: all_shapes.append(ext.shape[0]) all_pixels.append(wave.value) all_masked_data.append(zpt.value) - all_weights.append(1./zpt_err.value) + all_weights.append(1.0 / zpt_err.value) # Do NOT reuse the fit_1D.translate_params output for all values as the # UI will update the dictionary and that would affect all extensions all_fp_init.append(fit_1D.translate_params(params)) @@ -113,88 +104,95 @@ if interactive: # Create the 1-D Fitter. The first argument is either a tuple of x, y, weight arrays # or a function that returns a tuple of x, y, weight arrays. Each array has 1 array # per extension. So x[0], y[0], weights[0] all belong to the first extension, etc. - visualizer = fit1d.Fit1DVisualizer((all_pixels, all_masked_data, all_weights), - fitting_parameters=all_fp_init, - config=config, - tab_name_fmt="CCD {}", - xlabel='x', ylabel='y', - reinit_live=True, - domains=all_shapes, - title="Calculate Sensitivity") + visualizer = fit1d.Fit1DVisualizer( + (all_pixels, all_masked_data, all_weights), + fitting_parameters=all_fp_init, + config=config, + tab_name_fmt="CCD {}", + xlabel="x", + ylabel="y", + reinit_live=True, + domains=all_shapes, + title="Calculate Sensitivity", + ) # This bit spins up bokeh and waits for the user to click 'Submit' or close the window geminidr.interactive.server.interactive_fitter(visualizer) - + # Grab the fit_1D outputs and do something all_m_final = visualizer.results() for ext, fit in zip(all_exts, all_m_final): # Do something # ... + ... else: # non-interactive variant + ... ``` ### normalizeFlat -The `normalizeFlat` primitive is quite expensive, so we modify the basic UI a bit. This -primitive passes a function to access the x, y, weights. What this will do is create extra -UI controls on the left side of the UI, outside the per-extension tabs. These controls can -be modified to alter values of the `config`. You can also add additional parameters via the -`reinit_extras` dictionary of name, Field pairs. The config and the values of the extras are -then passed into the function you provided to recalculate the x, y, weights for all -extensions. +The `normalizeFlat` primitive is quite expensive, so we modify the basic UI a +bit. This primitive passes a function to access the x, y, weights. What this +will do is create extra UI controls on the left side of the UI, outside the +per-extension tabs. These controls can be modified to alter values of the +`config`. You can also add additional parameters via the `reinit_extras` +dictionary of name, Field pairs. The config and the values of the extras are +then passed into the function you provided to recalculate the x, y, weights for +all extensions. -In the case of normalizeFlat, this capability was used to pull out a single row from each -extension to be fit. When the user selects a row, say `100`, the UI will call back into the -supplied function from `normalizeFlat`. It will then extract x, y, weights for all extensions -by pulling that row out. +In the case of normalizeFlat, this capability was used to pull out a single row +from each extension to be fit. When the user selects a row, say `100`, the UI +will call back into the supplied function from `normalizeFlat`. It will then +extract x, y, weights for all extensions by pulling that row out. -Once the user hits Submit, the fits are not useable as-is. Instead, this primitive pulls the -`fit_1D` parameters out of the returned fits and does a new fit with the full data using the -same parameters. +Once the user hits Submit, the fits are not useable as-is. Instead, this +primitive pulls the `fit_1D` parameters out of the returned fits and does a new +fit with the full data using the same parameters. -It's probably best to examine this primitive as a reference should you need to do something -similar. +It's probably best to examine this primitive as a reference should you need to +do something similar. ## Custom Approach -If the fit can't be done with `fit_1D`, you can subclass -`PrimitiveVisualizer` to do something custom. +If the fit can't be done with `fit_1D`, you can subclass `PrimitiveVisualizer` +to do something custom. An example of this is the `findSourceApertures` primitive which uses `geminidr.interactive.fit.aperture` to provide an interactive interface. ## PrimitiveVisualizer -The `PrimitiveVisualizer` constructor expects the primitive `config` and a `title`. -The `title` is used in the top of the HTML template shown to the user. The `config` -will be available to your primitive as a field on the visualizer. +The `PrimitiveVisualizer` constructor expects the primitive `config` and a +`title`. The `title` is used in the top of the HTML template shown to the user. +The `config` will be available to your primitive as a field on the visualizer. -It also creates a `submit_button` field that is a bokeh `Button` to submit the results. -You will want to add this `Button` in your custom UI for the user to submit their final -fit. +It also creates a `submit_button` field that is a bokeh `Button` to submit the +results. You will want to add this `Button` in your custom UI for the user to +submit their final fit. ### do_later -If you are performing work outside of the bokeh event loop but you want to affect -the UI in some way, use the `do_later` method on the `PrimitiveVisualizer`. This will -post your function onto the bokeh event loop to be executed in that context. +If you are performing work outside of the bokeh event loop but you want to +affect the UI in some way, use the `do_later` method on the +`PrimitiveVisualizer`. This will post your function onto the bokeh event loop to +be executed in that context. ### visualize(doc) -The method you need to implement to provide a custom UI is `visualize`. It will take -a bokeh `Document` as it's argument and should add whatever widgets and figures you -need. Don't forget to add the `submit_button` from the base class. +The method you need to implement to provide a custom UI is `visualize`. It will +take a bokeh `Document` as it's argument and should add whatever widgets and +figures you need. Don't forget to add the `submit_button` from the base class. ### results -The only standard method is `visualize`. You should provide a method/fields for your -primitive to access the results of your custom fit. In the case of the `Fit1DVisualizer1`, -this call is `results()` +The only standard method is `visualize`. You should provide a method/fields for +your primitive to access the results of your custom fit. In the case of the +`Fit1DVisualizer1`, this call is `results()` ### show_user_message -There is a helper method called `show_user_message` that will pop up a message dialog -for the user. As an example: +There is a helper method called `show_user_message` that will pop up a message +dialog for the user. As an example: ```python self.vis.show_user_message(f"Sigma slider changed to {val}") @@ -202,18 +200,19 @@ self.vis.show_user_message(f"Sigma slider changed to {val}") ### make_modal -There is a helper method called `make_modal` that will pop up a message in the webpage -and block access to the UI. It takes two parameters, a `widget` and a `message`. The -`message` will be the text displayed to the user. The `widget` is used to drive display -of the popup. When this `widget` is disabled, the message will be shown. When the `widget` -is re-enabled, the message will be hidden and the user will have access to the UI again. +There is a helper method called `make_modal` that will pop up a message in the +webpage and block access to the UI. It takes two parameters, a `widget` and a +`message`. The `message` will be the text displayed to the user. The `widget` is +used to drive display of the popup. When this `widget` is disabled, the message +will be shown. When the `widget` is re-enabled, the message will be hidden and +the user will have access to the UI again. -This roundabout way of showing the popup is necessary due to the design of bokeh. -Typically, you would tie it to a button that kicks off an operation that you expect to be -slow. +This roundabout way of showing the popup is necessary due to the design of +bokeh. Typically, you would tie it to a button that kicks off an operation that +you expect to be slow. -For this to work properly, the long-running work should be queued up via -the `do_later` method mentioned previously. The pattern works like this: +For this to work properly, the long-running work should be queued up via the +`do_later` method mentioned previously. The pattern works like this: ```python self.make_modal(self.button, "This may take 20 seconds") @@ -223,35 +222,41 @@ self.make_modal(self.button, "This may take 20 seconds") # ... somewhere else with lots of work to do self.button.disabled = True + def fn(): # do something expensive self.button.disabled = False + + self.do_later(fn) ``` ### show_ok_cancel -There is a helper method called `show_ok_cancel`. This is an updated way to make the -bokeh show a standard javascript ok/cancel dialog and route the response, as a boolean, -to some python code. The python callback supplied will execute on the UI thread, so -it can safely access bokeh components. +There is a helper method called `show_ok_cancel`. This is an updated way to make +the bokeh show a standard javascript ok/cancel dialog and route the response, as +a boolean, to some python code. The python callback supplied will execute on the +UI thread, so it can safely access bokeh components. Here is an example ```python def im_a_callback(arg): print(f"Callback made with {arg}") + + self.show_ok_cancel("Click OK or Cancel", im_a_callback) ``` ### make_ok_cancel_dialog -There is a helper method called `make_ok_cancel_dialog`. This is called on a bokeh -`Button`, typically right after creating it. The helper method also takes the message -to display in the ok/cancel dialog and a callback function. The callback function should -take a single boolean argument, which will be `True` if the user chose "OK" and `False` -if they chose "Cancel". The helper calls the callback from inside the UI thread, so you -don't have to add a `do_later` layer of your own. +There is a helper method called `make_ok_cancel_dialog`. This is called on a +bokeh `Button`, typically right after creating it. The helper method also takes +the message to display in the ok/cancel dialog and a callback function. The +callback function should take a single boolean argument, which will be `True` if +the user chose "OK" and `False` if they chose "Cancel". The helper calls the +callback from inside the UI thread, so you don't have to add a `do_later` layer +of your own. Here is an example from the 1-D fitter: @@ -259,20 +264,24 @@ Here is an example from the 1-D fitter: def reset_dialog_handler(result): if result: self.fitting_parameters_ui.reset_ui() -self.reset_dialog = self.visualizer.make_ok_cancel_dialog(reset_button, - 'Reset will change all inputs for this tab back ' - 'to their original values. Proceed?', - reset_dialog_handler) + + +self.reset_dialog = self.visualizer.make_ok_cancel_dialog( + reset_button, + "Reset will change all inputs for this tab back " + "to their original values. Proceed?", + reset_dialog_handler, +) ``` ### make_widgets_from_parameters -The `PrimitiveVisualizer` has a `make_widgets_from_parameters` helper method. For the -passed parameters, defined in a `UIParameters`, this will build a panel of widgets -to update the corresponding parameters. This provides a quick and easy way to make -a UI for the inputs to a primitive. For this to work, the `PrimitiveVisualizer` must -be told about the parameters when it is constructed. This is done with a few lines of -code in the primitive like so: +The `PrimitiveVisualizer` has a `make_widgets_from_parameters` helper method. +For the passed parameters, defined in a `UIParameters`, this will build a panel +of widgets to update the corresponding parameters. This provides a quick and +easy way to make a UI for the inputs to a primitive. For this to work, the +`PrimitiveVisualizer` must be told about the parameters when it is constructed. +This is done with a few lines of code in the primitive like so: ```python config = self.params[self.myself()] @@ -281,33 +290,35 @@ ui_params = UIParams(config) # pass this config to the visualizer constructor ``` -The `UIParams` can also take a few extra arguments to fine tune it's behavior. +The `UIParams` can also take a few extra arguments to fine tune it's behavior. `params` is a list of all the parameters you want captured from the `Config`. -`hidden_params` are the parameters to not automatically add in the -`make_widgets_from_parameters`, if you want to place them elsewhere. You can add +`hidden_params` are the parameters to not automatically add in the +`make_widgets_from_parameters`, if you want to place them elsewhere. You can add `title_overrides` to give a dictionary mapping of parameters to text to use in -the UI instead of inferring them from the `Config`. +the UI instead of inferring them from the `Config`. ## Tornado Handlers -The embedded bokeh server uses Tornado for the web engine. It is possible to add -additional Tornado-based handlers to the server. This can be useful, for instance, -to create custom web service calls that the HTML UI could access. As an example, I -have wired up a ‘version’ web service that will report back the DRAGONS version -number. This is used in the HTML UI to set the text/link to DRAGONS in the lower -right corner. +The embedded bokeh server uses Tornado for the web engine. It is possible to add +additional Tornado-based handlers to the server. This can be useful, for +instance, to create custom web service calls that the HTML UI could access. As +an example, I have wired up a ‘version’ web service that will report back the +DRAGONS version number. This is used in the HTML UI to set the text/link to +DRAGONS in the lower right corner. -The logic that adds this handler is the extra_patterns parameter to the bokeh +The logic that adds this handler is the extra_patterns parameter to the bokeh Server constructor. ```python -extra_patterns=[('/version', VersionHandler),] +extra_patterns = [ + ("/version", VersionHandler), +] ``` ## Custom Callbacks -There is a dedicated web endpoint setup to handle custom web calls as a convenience. -You can register a method for access via web callbacks by using +There is a dedicated web endpoint setup to handle custom web calls as a +convenience. You can register a method for access via web callbacks by using ```python callback_id = register_callback(fn) @@ -319,162 +330,174 @@ Later in some javascript code, such as a `CustomJS`: $.ajax('/handle_callback?callback=' + cbid + '&...more_args...'); ``` -The function will be passed the incoming arguments to the web endpoint. This -is generally a dictionary where the values are arrays of bytes. +The function will be passed the incoming arguments to the web endpoint. This is +generally a dictionary where the values are arrays of bytes. ## Key Passing -Bokeh provides no way to pass key presses naturally to the python. As a workaround, -I added a custom bokeh endpoint that takes key presses as URL parameters. This is -wired up to the `handle_key` URL endpoint in the bokeh Server. Supported keys must -be intercepted in the javascript in `index.html`. Then they will come in through -`handle_key`. +Bokeh provides no way to pass key presses naturally to the python. As a +workaround, I added a custom bokeh endpoint that takes key presses as URL +parameters. This is wired up to the `handle_key` URL endpoint in the bokeh +Server. Supported keys must be intercepted in the javascript in `index.html`. +Then they will come in through `handle_key`. -Note that this code path is outside the bokeh event loop, so if you -need to change the UI in response to a key press, you will want to use the -`do_later` function provided in `PrimitiveVisualizer` +Note that this code path is outside the bokeh event loop, so if you need to +change the UI in response to a key press, you will want to use the `do_later` +function provided in `PrimitiveVisualizer` ## Controller/Tasks/Handlers -The key passing is currently used for working with selection bands and apertures. -The bands interface is built into the Fit1DVisualizer, but may be useful in building -more custom visualizers as well. +The key passing is currently used for working with selection bands and +apertures. The bands interface is built into the Fit1DVisualizer, but may be +useful in building more custom visualizers as well. -There are two places this interface is visible. The first is in the plot itself, -where bands are seen here as shaded bluish stripes. The second is below the -mask/unmask where some help text is displayed with the currently available key -commands. Let’s take a look at the code. Note that we will show bands here, -but Apertures work similarly. +There are two places this interface is visible. The first is in the plot itself, +where bands are seen here as shaded bluish stripes. The second is below the +mask/unmask where some help text is displayed with the currently available key +commands. Let’s take a look at the code. Note that we will show bands here, but +Apertures work similarly. ![Controller/Task UI](docs/ControllerAndTask.png) -First, in the visualizer for each tab a region model is created. This is a data -structure that keeps track of all the regions, can check if a given coordinate is -‘selected’ by the regions, and notifies registered listeners whenever the bands -change. This last is used by Fit1DVisualizer to recalculate the masked points -and redo the fit, for instance. +First, in the visualizer for each tab a region model is created. This is a data +structure that keeps track of all the regions, can check if a given coordinate +is ‘selected’ by the regions, and notifies registered listeners whenever the +bands change. This last is used by Fit1DVisualizer to recalculate the masked +points and redo the fit, for instance. ```python self.region_model = GIRegionModel() ``` -Next, in the UI below the mask/unmask buttons we add a bokeh `Div`. This `Div` is -going to be updated with help text for the active task. +Next, in the UI below the mask/unmask buttons we add a bokeh `Div`. This `Div` +is going to be updated with help text for the active task. ```python controller_div = Div() controls = column(..., controller_div) ``` -Then we create a visualization of the bands on the bokeh `Figure`. This can be -done with a simple utility function. The None here refers to an optional -`GIApertureModel`. Note that we can call this multiple times to connect the -`GIRegionModel` to multiple `Figure`s (and indeed in this example there are two). +Then we create a visualization of the bands on the bokeh `Figure`. This can be +done with a simple utility function. The None here refers to an optional +`GIApertureModel`. Note that we can call this multiple times to connect the +`GIRegionModel` to multiple `Figure`s (and indeed in this example there are +two). ```python connect_figure_extras(figure, None, self.region_model) ``` -To get updates on the bands so we know to recalculate the masked points, we add -a listener to the `GIRegionModel`. Note there is a lot of custom code for -`Fit1DVisualizer` behind this and we would need to do something custom for any +To get updates on the bands so we know to recalculate the masked points, we add +a listener to the `GIRegionModel`. Note there is a lot of custom code for +`Fit1DVisualizer` behind this and we would need to do something custom for any new interfaces. ```python self.region_model.add_listener(some_listener) ``` -Lastly, we setup a `Controller`. There is one for the top figure in each of the -tabs in this example UI. The `Controller` detects when the mouse enters a -figure and routes mouse coordinates and key presses to a `RegionTask` to modify the -bands as directed. We don’t need to do anything additional for that, we just +Lastly, we setup a `Controller`. There is one for the top figure in each of the +tabs in this example UI. The `Controller` detects when the mouse enters a figure +and routes mouse coordinates and key presses to a `RegionTask` to modify the +bands as directed. We don’t need to do anything additional for that, we just create the `Controller` and let it manage everything. ```python Controller(figure, None, self.band_model, controller_div) ``` -There is also a helper class called `RegionEditor`. If you create an instance of -this, it will make a text input that is linked to the `GIRegionModel`. Just call -`get_widget()` on the `RegionEditor` after you make it to get a widget you can add -to a bokeh layout. +There is also a helper class called `RegionEditor`. If you create an instance of +this, it will make a text input that is linked to the `GIRegionModel`. Just call +`get_widget()` on the `RegionEditor` after you make it to get a widget you can +add to a bokeh layout. ### Handlers -You can also define custom key handlers for the controller. These allow you to +You can also define custom key handlers for the controller. These allow you to map a key press over the figure to a function, along with some help text you -want shown in the small help text in `controller_div`. The function in your +want shown in the small help text in `controller_div`. The function in your `Handler` should have a signature like `fn(key, x, y)`. ```python def fn(key, x, y): print(f"{key}: ({x}, {y})") -h = Handler('q', 'Do something', fn) -Controller(figure, None, None, controller_div, handlers=[h,]) -``` +h = Handler("q", "Do something", fn) +Controller( + figure, + None, + None, + controller_div, + handlers=[ + h, + ], +) +``` ## TabsTurboInjector -The `Tabs` in `bokeh` do a poor job of managing the DOM. If you have many tabs -with content, it can drastically impair the performance. As a workaround, you -can initialize your tabs using the provided `TabsTurboInjector` in the `interactive` -module. First, you instantiate one of these helpers passing an empty bokeh `Tabs` -to it to be managed. Then, instead of adding child tab `Panel`s to your `Tabs`, -you call the injector's helper method to add the child with a passed title. +The `Tabs` in `bokeh` do a poor job of managing the DOM. If you have many tabs +with content, it can drastically impair the performance. As a workaround, you +can initialize your tabs using the provided `TabsTurboInjector` in the +`interactive` module. First, you instantiate one of these helpers passing an +empty bokeh `Tabs` to it to be managed. Then, instead of adding child tab +`Panel`s to your `Tabs`, you call the injector's helper method to add the child +with a passed title. -A side effect of the injector is that, on tab changes, you'll get a momentary blank tab. +A side effect of the injector is that, on tab changes, you'll get a momentary +blank tab. ## Modules -The top-level module is for the bokeh server and for custom UI elements and helpers. It -has the base PrimitiveVisualizer class that you should subclass if you need a -custom UI. +The top-level module is for the bokeh server and for custom UI elements and +helpers. It has the base PrimitiveVisualizer class that you should subclass if +you need a custom UI. -The `fit` module holds the custom `PrimitiveVisualizer` implementations. This keeps -them from cluttering up the top level as we add more. +The `fit` module holds the custom `PrimitiveVisualizer` implementations. This +keeps them from cluttering up the top level as we add more. The `templates` folder holds HTML and styling information. The `deprecated` folder holds code that is being retired as a result of a large -refactor. I have kept it around for now in case it is useful for reference. +refactor. I have kept it around for now in case it is useful for reference. ### Top Level #### server -The server has two calls, `interactive_fitter` and `stop_server`. The `interactive_fitter` -is called with a `PrimitiveVisualizer` instance and will run the UI interaction -in a browser until the UI is stopped. `stop_server` is generally called by the -user clicking the Submit button or closing the browser tab. +The server has two calls, `interactive_fitter` and `stop_server`. The +`interactive_fitter` is called with a `PrimitiveVisualizer` instance and will +run the UI interaction in a browser until the UI is stopped. `stop_server` is +generally called by the user clicking the Submit button or closing the browser +tab. ### interactive -`interactive` has the abstract base class, `PrimitiveVisualizer`. It also has some -helper methods for building slider/text box widgets and some code for displaying and -managing bands (range-selections with plot shading) and apertures (also with plot -shading). +`interactive` has the abstract base class, `PrimitiveVisualizer`. It also has +some helper methods for building slider/text box widgets and some code for +displaying and managing bands (range-selections with plot shading) and apertures +(also with plot shading). ### controls -`controls` has code that is wired up to key presses in the browser. This includes -a `Controller` that listens for key presses and passes control to various `Task` -managers. For instance, one such `Task` is for bands and it allows a user to -use the mouse to add, resize, or delete the band selections. +`controls` has code that is wired up to key presses in the browser. This +includes a `Controller` that listens for key presses and passes control to +various `Task` managers. For instance, one such `Task` is for bands and it +allows a user to use the mouse to add, resize, or delete the band selections. The easiest way to make use of this logic is to use the helper function to -connect a `GIRegionModel` and/or `GIApertureModel` to a bokeh `Figure` and `Div`. -The connected `Figure` will show the selected areas and the `Div` will show -help text for the currently active task (such as `RegionTask`). +connect a `GIRegionModel` and/or `GIApertureModel` to a bokeh `Figure` and +`Div`. The connected `Figure` will show the selected areas and the `Div` will +show help text for the currently active task (such as `RegionTask`). -Connecting the models to a `Figure` is done with +Connecting the models to a `Figure` is done with `connect_figure_extras(fig, aperture_model, band_model)` -To cause a figure to respond to key presses and connect a help `Div` area, -you build a `Controller` like: `Controller(fig, aperture_model, band_model, helptext)`. -Note that `aperture_model` or `band_model` may be passed as None if it -is not relevant. +To cause a figure to respond to key presses and connect a help `Div` area, you +build a `Controller` like: +`Controller(fig, aperture_model, band_model, helptext)`. Note that +`aperture_model` or `band_model` may be passed as None if it is not relevant. ## fit diff --git a/geminidr/interactive/README.md b/geminidr/interactive/README.md index 89323da428..8b0333c419 100644 --- a/geminidr/interactive/README.md +++ b/geminidr/interactive/README.md @@ -1,19 +1,19 @@ # Interactive Tools -This is a guide to using the interactive tools for data reduction. -For information on developing new interactive interfaces, see +This is a guide to using the interactive tools for data reduction. For +information on developing new interactive interfaces, see [INTERACTIVE.md](INTERACTIVE.md) ## Normalize Flat -The step to normalize flats can be done interactively. This happens -as part of the `makeProcessedFlat` recipe. To turn on interactive mode, -pass the `interactive` parameter. Here is an example. +The step to normalize flats can be done interactively. This happens as part of +the `makeProcessedFlat` recipe. To turn on interactive mode, pass the +`interactive` parameter. Here is an example. ### Step 1: Get Data -For this example, you will need to download `N20200520S0141.fits`. You -can do this in your browser by browsing to: +For this example, you will need to download `N20200520S0141.fits`. You can do +this in your browser by browsing to: @@ -29,26 +29,26 @@ curl -O https://archive.gemini.edu/file/N20200520S0141.fits reduce -p interactive=True -p do_bias=False N20200520S0141.fits ``` -This should select the `makeProcessedFlat` recipe. The `do_bias` parameter -just drops that step so we can focus on the `normalizeFlat` interactivity. -The user interface should automatically start in your web browser and will -look as follows: +This should select the `makeProcessedFlat` recipe. The `do_bias` parameter just +drops that step so we can focus on the `normalizeFlat` interactivity. The user +interface should automatically start in your web browser and will look as +follows: ### Step 3a: Alter Inputs As Desired ![Normalize Flat Input Descriptions](docs/NormalizeFlatInputCallouts.png) -There are two sets of inputs. The left-most are applied across all of the -CCDs. This is the fit function (i.e. spline) to perform and a row of data to sample. -The fit is too expensive to preview on all of the data, so this allows for -a responsive interface. The inputs to the fit are available per-extension -and on each tab. +There are two sets of inputs. The left-most are applied across all of the CCDs. +This is the fit function (i.e. spline) to perform and a row of data to sample. +The fit is too expensive to preview on all of the data, so this allows for a +responsive interface. The inputs to the fit are available per-extension and on +each tab. ### Step 3b: Alter Regions As Desired -The regions can be specified as well. This narrows the points used as input -to the fit. This can be done interactively, or via the text input below -each plot. Regions are also set per-CCD. +The regions can be specified as well. This narrows the points used as input to +the fit. This can be done interactively, or via the text input below each plot. +Regions are also set per-CCD. ### Step 4: Submit Parameters @@ -57,56 +57,54 @@ continue, using the inputs and fit function you specified. ### Step 5: Check Output -After finishing, the result of the reduction will be available as +After finishing, the result of the reduction will be available as `N20200520S0141_flat.fits` ## Calculate Sensitivity -The `calculateSensitivity` primitive has also been set up for interactive -use. Here are steps to test it out. +The `calculateSensitivity` primitive has also been set up for interactive use. +Here are steps to test it out. ### Step 1: Get Data -For this example, we are going to run the primitive explicitly. To do this, -I have pulled out a file from just before this step during reduce. You can -get the file at this URL (Google Drive). You must be logged in to your -Gemini account, so a browser is recommended. +For this example, we are going to run the primitive explicitly. To do this, I +have pulled out a file from just before this step during reduce. You can get the +file at this URL (Google Drive). You must be logged in to your Gemini account, +so a browser is recommended. - ### Step 2: Call `reduce` With `interactive` And Specify Primitive ```bash reduce -p interactive=True -r calculateSensitivity N20201022S0006_align.fits ``` -This should directly call the `calculateSensitivity` primitive. -The user interface should automatically start in your web browser and will -look as follows: +This should directly call the `calculateSensitivity` primitive. The user +interface should automatically start in your web browser and will look as +follows: ### Step 3a: Alter Inputs As Desired ![Calculate Sensitivity Visualizer](docs/CalculateSensitivityCallouts.png) -There are two sets of inputs. The left-most are applied across all of the -CCDs. This is the fit function (i.e. spline) to perform on the data. -The inputs to the fit are available per-extension -and on each tab. +There are two sets of inputs. The left-most are applied across all of the CCDs. +This is the fit function (i.e. spline) to perform on the data. The inputs to the +fit are available per-extension and on each tab. ### Step 3b: Alter Regions As Desired -The regions can be specified as well. This narrows the points used as input -to the fit. This can be done interactively, or via the text input below -each plot. Regions are also set per-CCD. +The regions can be specified as well. This narrows the points used as input to +the fit. This can be done interactively, or via the text input below each plot. +Regions are also set per-CCD. ### Step 3c: Mask Arbitrary Points As Desired -This primitive allows the selection of arbitrary points. This can be done -by clicking directly on a point, by using the box select tool, or by using the -lasso free select tool. Then you either use the 'M' and 'U' keys or the -buttons to mask or unmask those points. This was not feasable for the -normalize flat UI since it can only show one row at a time. +This primitive allows the selection of arbitrary points. This can be done by +clicking directly on a point, by using the box select tool, or by using the +lasso free select tool. Then you either use the 'M' and 'U' keys or the buttons +to mask or unmask those points. This was not feasable for the normalize flat UI +since it can only show one row at a time. ### Step 4: Submit Parameters @@ -115,42 +113,41 @@ continue, using the inputs and fit function you specified. ### Step 5: Check Output -After finishing, the result of the reduction will be available as +After finishing, the result of the reduction will be available as `N20201022S0006_sensitivityCalculated.fits` ## Find Source Apertures -The `findSourceApertures` primitive has also been set up for interactive -use. Here are steps to test it out. +The `findSourceApertures` primitive has also been set up for interactive use. +Here are steps to test it out. ### Step 1: Get Data -For this example, we are going to run the primitive explicitly. To do this, -I have pulled out a file from just before this step during reduce. You can -get the file at this URL (Google Drive). You must be logged in to your -Gemini account, so a browser is recommended. +For this example, we are going to run the primitive explicitly. To do this, I +have pulled out a file from just before this step during reduce. You can get the +file at this URL (Google Drive). You must be logged in to your Gemini account, +so a browser is recommended. - ### Step 2: Call `reduce` With `interactive` And Specify Primitive ```bash reduce -p interactive=True -r findSourceApertures S20200201S0031_aperturesTraced.fits ``` -This should directly call the `findSourceApertures` primitive. -The user interface should automatically start in your web browser and will -look as follows: +This should directly call the `findSourceApertures` primitive. The user +interface should automatically start in your web browser and will look as +follows: ### Step 3: Alter Inputs As Desired ![Find Source Apertures Visualizer](docs/FindSourceAperturesCallouts.png) -The inputs to the primitive are in the top left. Altering these will cause the -apertures to be regenerated. Then, you can modify, add, or delete apertures using -the controls below. You can also edit the apertures by hovering the mouse over -the plot and using the key commands as described on the bottom left. +The inputs to the primitive are in the top left. Altering these will cause the +apertures to be regenerated. Then, you can modify, add, or delete apertures +using the controls below. You can also edit the apertures by hovering the mouse +over the plot and using the key commands as described on the bottom left. ### Step 4: Submit Parameters @@ -159,5 +156,5 @@ continue, using the currently defined apertures. ### Step 5: Check Output -After finishing, the result of the reduction will be available as +After finishing, the result of the reduction will be available as `S20200201S0031_aperturesFound.fits` diff --git a/geminidr/interactive/__init__.py b/geminidr/interactive/__init__.py index e976cd3ba5..25e890e4a4 100644 --- a/geminidr/interactive/__init__.py +++ b/geminidr/interactive/__init__.py @@ -1 +1 @@ -# __all__ = ["interactive", "controls", "server"] \ No newline at end of file +# __all__ = ["interactive", "controls", "server"] diff --git a/geminidr/interactive/docs/index.rst b/geminidr/interactive/docs/index.rst index 1fdecb155d..b60a4fd800 100644 --- a/geminidr/interactive/docs/index.rst +++ b/geminidr/interactive/docs/index.rst @@ -137,10 +137,10 @@ it. This is not always consistent throughout models, for example, This means you will need to check the bokeh documentation for the component you are adding to see if it accepts a `stylesheet` attribute, or you need to -test it yourself should it not be specified. Generally, err on the side of +test it yourself should it not be specified. Generally, err on the side of assuming it does accept a stylesheet and debugging as needed. -Bokeh does have a `GlobalImportedStyleSheet` class that does not work with the +Bokeh does have a `GlobalImportedStyleSheet` class that does not work with the current version of bokeh and DRAGONS. Instead, this method links the shadow elements within a component to the stylesheet. This means that the stylesheet is applied to the component, but it is not applied globally. This is a @@ -181,7 +181,7 @@ strings that specify how the component should be sized. The strings are +-----------------+---------------------------------------------------------+ Bokeh models also often have `width_policy` and `height_policy` attributes, -but these should be avoided in the interactive module. See +but these should be avoided in the interactive module. See [bokeh's reference](https://docs.bokeh.org/en/latest/docs/reference/models/layouts.html#bokeh.models.Column) for more details on what these attributes do and when to use them. @@ -197,7 +197,7 @@ The `margin` attribute is used to specify the margins around a component. The `margin` attribute accepts a tuple of four integers that specify the margins in the order (top, right, bottom, left). The margins are specified in pixels. Margins can be used to change where a component is positioned within its own -'box' on the page. +'box' on the page. If you are creating a widget, it is best practice to use margin to add a static margin around the widget, and `Spacer` to add a dynamic margin between @@ -273,4 +273,4 @@ base class that defines the interface for all visualizers, including some :members: :undoc-members: :show-inheritance: - :exclude-members: __init__ \ No newline at end of file + :exclude-members: __init__ diff --git a/geminidr/interactive/fit/help.py b/geminidr/interactive/fit/help.py index ec7f1343ed..e4a52f2c0b 100644 --- a/geminidr/interactive/fit/help.py +++ b/geminidr/interactive/fit/help.py @@ -1,29 +1,61 @@ - - -__all__ = ["PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT", "PLOT_TOOLS_HELP_SUBTEXT", "REGION_EDITING_HELP_SUBTEXT", - "CALCULATE_SENSITIVITY_HELP_TEXT", "DETERMINE_WAVELENGTH_SOLUTION_HELP_TEXT", - "NORMALIZE_FLAT_HELP_TEXT", "DEFAULT_HELP", "TRACE_APERTURES", "SKY_CORRECT_FROM_SLIT_HELP_TEXT"] +__all__ = [ + "PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT", + "PLOT_TOOLS_HELP_SUBTEXT", + "REGION_EDITING_HELP_SUBTEXT", + "CALCULATE_SENSITIVITY_HELP_TEXT", + "DETERMINE_WAVELENGTH_SOLUTION_HELP_TEXT", + "NORMALIZE_FLAT_HELP_TEXT", + "DEFAULT_HELP", + "TRACE_APERTURES", + "SKY_CORRECT_FROM_SLIT_HELP_TEXT", +] def _plot_tool(name, icon): - return '' + name + '
' + return ( + '' + + name + + "
" + ) tools_with_select = ( - ("Move", 'move', 'drag the plot around to reposition it'), - ("Free-Select", 'lasso_select', 'draw an arbitrary area to select points for masking/unmasking
also works with shift'), - ('Box Zoom', 'box_zoom', 'drag a rectangle to zoom into that area of the plot'), - ('Box Select', 'box_select', 'drag a rectangle to select points for masking/unmasking
also works with shift'), - ('Scroll Wheel Zoom', 'wheel_zoom', 'enable the scroll wheel to zoom the plot in or out'), - ('Point Select', 'tap_select', 'click on individual points to select or unselect for masking/unmasking.
also works with shift'), - ('Reset', 'reset', 'Reset the view, clearing any zoom or moves') + ("Move", "move", "drag the plot around to reposition it"), + ( + "Free-Select", + "lasso_select", + "draw an arbitrary area to select points for masking/unmasking
also works with shift", + ), + ("Box Zoom", "box_zoom", "drag a rectangle to zoom into that area of the plot"), + ( + "Box Select", + "box_select", + "drag a rectangle to select points for masking/unmasking
also works with shift", + ), + ( + "Scroll Wheel Zoom", + "wheel_zoom", + "enable the scroll wheel to zoom the plot in or out", + ), + ( + "Point Select", + "tap_select", + "click on individual points to select or unselect for masking/unmasking.
also works with shift", + ), + ("Reset", "reset", "Reset the view, clearing any zoom or moves"), ) tools_without_select = ( - ("Move", 'move', 'drag the plot around to reposition it'), - ('Box Zoom', 'box_zoom', 'drag a rectangle to zoom into that area of the plot'), - ('Scroll Wheel Zoom', 'wheel_zoom', 'enable the scroll wheel to zoom the plot in or out'), - ('Reset', 'reset', 'Reset the view, clearing any zoom or moves') + ("Move", "move", "drag the plot around to reposition it"), + ("Box Zoom", "box_zoom", "drag a rectangle to zoom into that area of the plot"), + ( + "Scroll Wheel Zoom", + "wheel_zoom", + "enable the scroll wheel to zoom the plot in or out", + ), + ("Reset", "reset", "Reset the view, clearing any zoom or moves"), ) @@ -49,50 +81,59 @@ def _plot_tool(name, icon): """ -FIT1D_PARAMETERS_HELP_WITH_GROW = FIT1D_PARAMETERS_HELP_WITHOUT_GROW + """ +FIT1D_PARAMETERS_HELP_WITH_GROW = ( + FIT1D_PARAMETERS_HELP_WITHOUT_GROW + + """
Grow
Radius within which reject pixels adjacent to sigma-clipped pixels
""" +) -PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT = """ +PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT = ( + """

Plot Tools

-

""" + \ - '\n'.join(_plot_tool(t[0], t[1]) for t in tools_with_select) + \ -""" +
""" + + "\n".join(_plot_tool(t[0], t[1]) for t in tools_with_select) + + """
Data points in the upper plot may be selected in order to mask or unmask them from consideration. To select, choose the Box Select, -Point Select, or Free-Select tool to the right of the figure. +Point Select, or Free-Select tool to the right of the figure. Selections may be additive if you hold down the shift key. Once you have a selection, you may mask or unmask the selection by hitting the M or U key respectively.

-
""" + \ - '\n'.join('
' + t[0] + '
' + t[2] + '
' for t in tools_with_select) + \ - """ +
""" + + "\n".join("
" + t[0] + "
" + t[2] + "
" for t in tools_with_select) + + """

""" +) -PLOT_TOOLS_HELP_SUBTEXT = """ +PLOT_TOOLS_HELP_SUBTEXT = ( + """

Plot Tools

-

""" + \ - '\n'.join(_plot_tool(t[0], t[1]) for t in tools_without_select) + \ -""" +
""" + + "\n".join(_plot_tool(t[0], t[1]) for t in tools_without_select) + + """

-
""" + \ - '\n'.join('
' + t[0] + '
' + t[2] + '
' for t in tools_without_select) + \ - """ +
""" + + "\n".join( + "
" + t[0] + "
" + t[2] + "
" for t in tools_without_select + ) + + """

""" +) REGION_EDITING_HELP_SUBTEXT = """ @@ -111,7 +152,8 @@ def _plot_tool(name, icon): """ -CALCULATE_SENSITIVITY_HELP_TEXT = """ +CALCULATE_SENSITIVITY_HELP_TEXT = ( + """

Help

This primitive calculates the overall sensitivity of the system @@ -124,7 +166,9 @@ def _plot_tool(name, icon): a value for each wavelength when the fluxCalibrate primitive is run.

Fitting parameters

-
""" + FIT1D_PARAMETERS_HELP_WITHOUT_GROW + """ +
""" + + FIT1D_PARAMETERS_HELP_WITHOUT_GROW + + """
Regions
Comma-separated list of colon-separated wavelength (not pixel) pairs @@ -133,10 +177,14 @@ def _plot_tool(name, icon): continue to the end of the data.
-""" + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT + REGION_EDITING_HELP_SUBTEXT +""" + + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT + + REGION_EDITING_HELP_SUBTEXT +) -DETERMINE_WAVELENGTH_SOLUTION_HELP_TEXT = """ +DETERMINE_WAVELENGTH_SOLUTION_HELP_TEXT = ( + """

Help

This primitive provides wavelength calibration from a reference @@ -212,11 +260,16 @@ def _plot_tool(name, icon):

Fitting parameters

-""" + FIT1D_PARAMETERS_HELP_WITHOUT_GROW + """ -
""" + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT.replace("upper", "central") +""" + + FIT1D_PARAMETERS_HELP_WITHOUT_GROW + + """ +
""" + + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT.replace("upper", "central") +) -NORMALIZE_FLAT_HELP_TEXT = """ +NORMALIZE_FLAT_HELP_TEXT = ( + """

Help

This primitive normalizes a GMOS Longslit spectroscopic flatfield @@ -228,7 +281,9 @@ def _plot_tool(name, icon): masked out.

Fitting parameters

-
""" + FIT1D_PARAMETERS_HELP_WITH_GROW + """ +
""" + + FIT1D_PARAMETERS_HELP_WITH_GROW + + """
Regions
Comma-separated list of colon-separated pixel coordinate pairs @@ -237,7 +292,10 @@ def _plot_tool(name, icon): continue to the end of the data.
-""" + PLOT_TOOLS_HELP_SUBTEXT + REGION_EDITING_HELP_SUBTEXT +""" + + PLOT_TOOLS_HELP_SUBTEXT + + REGION_EDITING_HELP_SUBTEXT +) DEFAULT_HELP = """ @@ -250,7 +308,8 @@ def _plot_tool(name, icon): """ -TRACE_APERTURES = """ +TRACE_APERTURES = ( + """

Help

Traces the spectrum in 2D spectral images for each aperture center @@ -278,7 +337,7 @@ def _plot_tool(name, icon):

The red line in the top plot shows the function that better represents how our target's spatial position varies continuously along the dispersion direction, following the traced data using a Chebyshev - function.

+ function.

You can change the parameters in the rightmost column within each tab, which contains the Fitting Parameters for each APERTURE. If you change @@ -287,7 +346,7 @@ def _plot_tool(name, icon):

For both Tracing Parameters and Fitting Parameters, you will find a reset button. Each reset button only resets the parameters in the same - column it belongs.

+ column it belongs.

Once you are satisfied with the tracing and the fit, press the Accept button at the top right to continue your data reduction using the @@ -309,7 +368,9 @@ def _plot_tool(name, icon):

Fitting Parameters

-
""" + FIT1D_PARAMETERS_HELP_WITH_GROW + """ +
""" + + FIT1D_PARAMETERS_HELP_WITH_GROW + + """
Regions
Comma-separated list of colon-separated pixel coordinate pairs @@ -319,9 +380,11 @@ def _plot_tool(name, icon):
""" +) -SKY_CORRECT_FROM_SLIT_HELP_TEXT = """ +SKY_CORRECT_FROM_SLIT_HELP_TEXT = ( + """

Help

This primitive removes the background sky level on a line-by-line basis @@ -340,7 +403,9 @@ def _plot_tool(name, icon): is used.

Fitting parameters

-
""" + FIT1D_PARAMETERS_HELP_WITH_GROW + """ +
""" + + FIT1D_PARAMETERS_HELP_WITH_GROW + + """
Regions
Comma-separated list of colon-separated pixel coordinate pairs @@ -349,10 +414,14 @@ def _plot_tool(name, icon): continue to the end of the data.
-""" + PLOT_TOOLS_HELP_SUBTEXT + REGION_EDITING_HELP_SUBTEXT +""" + + PLOT_TOOLS_HELP_SUBTEXT + + REGION_EDITING_HELP_SUBTEXT +) -TELLURIC_CORRECT_HELP_TEXT = """ +TELLURIC_CORRECT_HELP_TEXT = ( + """

Help

This primitive calculates the sensitivity of the instrument and the @@ -362,7 +431,9 @@ def _plot_tool(name, icon): independently, but a single absorption model applies to all the data.

Fitting parameters

-
""" + FIT1D_PARAMETERS_HELP_WITH_GROW + """ +
""" + + FIT1D_PARAMETERS_HELP_WITH_GROW + + """
Regions
Comma-separated list of colon-separated wavelength (not pixel) pairs @@ -371,4 +442,7 @@ def _plot_tool(name, icon): continue to the end of the data.
-""" + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT + REGION_EDITING_HELP_SUBTEXT +""" + + PLOT_TOOLS_WITH_SELECT_HELP_SUBTEXT + + REGION_EDITING_HELP_SUBTEXT +) diff --git a/geminidr/interactive/server.py b/geminidr/interactive/server.py index 8cdbadb35e..254c3133d6 100644 --- a/geminidr/interactive/server.py +++ b/geminidr/interactive/server.py @@ -210,7 +210,7 @@ def _shutdown(doc): falsey_responses = ("0", "n", "f", "no", "false") if ( - user_satisfied is not None + user_satisfied is not None and user_satisfied.lower() in falsey_responses ): user_satisfied = False diff --git a/geminidr/interactive/static/README.md b/geminidr/interactive/static/README.md index 83dbb9d3d8..2c1cf21667 100644 --- a/geminidr/interactive/static/README.md +++ b/geminidr/interactive/static/README.md @@ -4,5 +4,4 @@ https://www.iconfinder.com/icons/134216/hamburger_lines_menu_icon This icon was received under the Creative Commons license. -This icon was designed by Timothy Miller: -https://www.iconfinder.com/tmthymllr +This icon was designed by Timothy Miller: https://www.iconfinder.com/tmthymllr diff --git a/geminidr/interactive/static/css/template_dark_minimal.css b/geminidr/interactive/static/css/template_dark_minimal.css index f5f1b781e7..10a976cc9a 100644 --- a/geminidr/interactive/static/css/template_dark_minimal.css +++ b/geminidr/interactive/static/css/template_dark_minimal.css @@ -70,4 +70,4 @@ div.container { */ .bk-root .bk-tabs-header.bk-above .bk-headers-wrapper { border-bottom: 1px solid #333333; -} \ No newline at end of file +} diff --git a/geminidr/interactive/static/dragons.css b/geminidr/interactive/static/dragons.css index 503324aed0..c1f7429405 100644 --- a/geminidr/interactive/static/dragons.css +++ b/geminidr/interactive/static/dragons.css @@ -365,4 +365,4 @@ div.info_text { #top .logo img { height: 72px; -} \ No newline at end of file +} diff --git a/geminidr/interactive/static/favicon/browserconfig.xml b/geminidr/interactive/static/favicon/browserconfig.xml index c554148223..7d453d3bb1 100644 --- a/geminidr/interactive/static/favicon/browserconfig.xml +++ b/geminidr/interactive/static/favicon/browserconfig.xml @@ -1,2 +1,2 @@ -#ffffff \ No newline at end of file +#ffffff diff --git a/geminidr/interactive/static/favicon/manifest.json b/geminidr/interactive/static/favicon/manifest.json index 013d4a6a53..758f8d2a60 100644 --- a/geminidr/interactive/static/favicon/manifest.json +++ b/geminidr/interactive/static/favicon/manifest.json @@ -38,4 +38,4 @@ "density": "4.0" } ] -} \ No newline at end of file +} diff --git a/geminidr/interactive/static/hamburger.svg b/geminidr/interactive/static/hamburger.svg index 233bf2175b..e458e15ea1 100644 --- a/geminidr/interactive/static/hamburger.svg +++ b/geminidr/interactive/static/hamburger.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/geminidr/interactive/static/js/loading.js b/geminidr/interactive/static/js/loading.js index c95f928a0a..8fe0ec319e 100644 --- a/geminidr/interactive/static/js/loading.js +++ b/geminidr/interactive/static/js/loading.js @@ -20,4 +20,4 @@ function closeModal() { for(var i = 0; i < modalOverlay.length; i++) { modalOverlay[i].style.visibility = "hidden"; } -} \ No newline at end of file +} diff --git a/geminidr/interactive/static/js/openHelpPopup.js b/geminidr/interactive/static/js/openHelpPopup.js index ba7ff935bc..cd73f75e2f 100644 --- a/geminidr/interactive/static/js/openHelpPopup.js +++ b/geminidr/interactive/static/js/openHelpPopup.js @@ -22,4 +22,4 @@ function openHelpPopup(help_title) { */ window.onbeforeunload = function() { help_popup.close(); -}; \ No newline at end of file +}; diff --git a/geminidr/interactive/static/modal.js b/geminidr/interactive/static/modal.js index f9ba7fcc8a..ce2f8825aa 100644 --- a/geminidr/interactive/static/modal.js +++ b/geminidr/interactive/static/modal.js @@ -15,4 +15,4 @@ function closeModal() { for(var i = 0; i < modalTrigger.length; i++) { modalTrigger[i].style.visibility = "hidden"; } -} \ No newline at end of file +} diff --git a/geminidr/interactive/static/version.js b/geminidr/interactive/static/version.js index b40ba5fbd1..dbd2532451 100644 --- a/geminidr/interactive/static/version.js +++ b/geminidr/interactive/static/version.js @@ -13,4 +13,4 @@ window.onload = function(){ }).done(function(ver) { setVersion(ver); }); -} \ No newline at end of file +} diff --git a/geminidr/niri/__init__.py b/geminidr/niri/__init__.py index d70f77d99f..5b37a9c370 100644 --- a/geminidr/niri/__init__.py +++ b/geminidr/niri/__init__.py @@ -3,4 +3,3 @@ from . import primitives_niri from . import primitives_niri_image - diff --git a/geminidr/niri/lookups/maskdb.py b/geminidr/niri/lookups/maskdb.py index add733d859..29a0eaf3de 100644 --- a/geminidr/niri/lookups/maskdb.py +++ b/geminidr/niri/lookups/maskdb.py @@ -5,4 +5,4 @@ bpm_dict = { "NIRI_11": "NIRI_bpm.fits", -} \ No newline at end of file +} diff --git a/geminidr/niri/primitives_niri.py b/geminidr/niri/primitives_niri.py index fddf14440f..4361213129 100644 --- a/geminidr/niri/primitives_niri.py +++ b/geminidr/niri/primitives_niri.py @@ -205,4 +205,3 @@ def _nonlinearity_coeffs(self, ad): naxis2 = ad.hdr.get('NAXIS2') return [self.inst_adlookup.nonlin_coeffs.get((read_mode, size, well_depth)) for size in naxis2] - diff --git a/geminidr/niri/recipes/qa/recipes_IMAGE.py b/geminidr/niri/recipes/qa/recipes_IMAGE.py index 45318732f5..730e5a41aa 100644 --- a/geminidr/niri/recipes/qa/recipes_IMAGE.py +++ b/geminidr/niri/recipes/qa/recipes_IMAGE.py @@ -85,4 +85,4 @@ def makeSkyFlat(p): p.storeProcessedFlat() return -_default = reduce \ No newline at end of file +_default = reduce diff --git a/geminidr/niri/recipes/sq/recipes_ARC_LS_SPECT.py b/geminidr/niri/recipes/sq/recipes_ARC_LS_SPECT.py index 51afdeb592..778b1f7c61 100644 --- a/geminidr/niri/recipes/sq/recipes_ARC_LS_SPECT.py +++ b/geminidr/niri/recipes/sq/recipes_ARC_LS_SPECT.py @@ -1,7 +1,7 @@ """ MS: this is just an MVP, copying the corresponding GNIRS recipe. -Expect Olesja will improve this after she finds some bandwidth. - +Expect Olesja will improve this after she finds some bandwidth. + Recipes available to data with tags ['NIRI', 'SPECT', 'LS'], excluding data with tags ['FLAT', 'DARK', 'BIAS']. These are NIRI longslit arc-lamp or sky-line calibrations. diff --git a/geminidr/niri/tests/reduce_img.sh b/geminidr/niri/tests/reduce_img.sh index 3578c152c0..2c8108092b 100755 --- a/geminidr/niri/tests/reduce_img.sh +++ b/geminidr/niri/tests/reduce_img.sh @@ -61,4 +61,3 @@ reduce @sciset.lis -p addDQ:user_bpm=${bpm} -p skyCorrect:nhigh=3 -p alignAndSta # Check the final result & return status: compare_file $(last_result_filename stack) - diff --git a/geminidr/niri/tests/test_J_img.sh b/geminidr/niri/tests/test_J_img.sh index 6d28e99958..0f696bbcf9 100755 --- a/geminidr/niri/tests/test_J_img.sh +++ b/geminidr/niri/tests/test_J_img.sh @@ -10,4 +10,3 @@ start_test_set "$name" "$script_dir/reduce_img.sh" "$name" N20180113S N20171001S || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/geminidr/niri/tests/test_K_img.sh b/geminidr/niri/tests/test_K_img.sh index f6cb11d8d3..a6e6bf9640 100755 --- a/geminidr/niri/tests/test_K_img.sh +++ b/geminidr/niri/tests/test_K_img.sh @@ -10,4 +10,3 @@ start_test_set "$name" "$script_dir/reduce_img.sh" "$name" N20180105 N20180107 || nerr=${nerr}1 end_test_set "$name" $nerr - diff --git a/gempy/__init__.py b/gempy/__init__.py index 604399ec05..4b12e39214 100644 --- a/gempy/__init__.py +++ b/gempy/__init__.py @@ -1,2 +1,2 @@ from astrodata import version -__version__ = version() \ No newline at end of file +__version__ = version() diff --git a/gempy/adlibrary/plotting.py b/gempy/adlibrary/plotting.py index c65f76190a..2c9cba4c8d 100644 --- a/gempy/adlibrary/plotting.py +++ b/gempy/adlibrary/plotting.py @@ -70,4 +70,4 @@ def _setup_dgsplots(ad, aperture): setup_plot['xaxis'] = f'Wavelength ({setup_plot["wave_units"]})' setup_plot['yaxis'] = f'Signal ({setup_plot["signal_units"]})' - return setup_plot \ No newline at end of file + return setup_plot diff --git a/gempy/display/__init__.py b/gempy/display/__init__.py index b6d0d6bd22..71bcaaf57c 100644 --- a/gempy/display/__init__.py +++ b/gempy/display/__init__.py @@ -2,4 +2,4 @@ # Intended to interface as much like imexam as possible from . import connection -connect = connection.Connect \ No newline at end of file +connect = connection.Connect diff --git a/gempy/doc/mosaic/source/conf.py b/gempy/doc/mosaic/source/conf.py index 311ac17fc4..d5f646e2fe 100644 --- a/gempy/doc/mosaic/source/conf.py +++ b/gempy/doc/mosaic/source/conf.py @@ -195,7 +195,7 @@ # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ - ('index-latex', 'MosaicADReferenceGuide.tex', + ('index-latex', 'MosaicADReferenceGuide.tex', 'DRAGONS - Mosaic and MosaicAD Programming and Reference Guide', 'Kenneth Anderson', 'manual'), ] diff --git a/gempy/doc/mosaic/source/examples.rst b/gempy/doc/mosaic/source/examples.rst index 1008e01ec0..a995f0f665 100644 --- a/gempy/doc/mosaic/source/examples.rst +++ b/gempy/doc/mosaic/source/examples.rst @@ -5,7 +5,7 @@ Examples ======== -This section provides working examples to exercise Mosaic and MosaicAD class and +This section provides working examples to exercise Mosaic and MosaicAD class and their functions. .. _mosad_array: @@ -34,18 +34,18 @@ Example 1: Create a mosaic using MosaicAD class. ad = astrodata.open('S20170427S0064.fits') -- With :ref:`MosaicAD ` we instantiate an object using a user - written function *gemini_mosaic_function*. The default image extension name - is 'SCI'. Click :ref:`here ` to see an example of a +- With :ref:`MosaicAD ` we instantiate an object using a user + written function *gemini_mosaic_function*. The default image extension name + is 'SCI'. Click :ref:`here ` to see an example of a *user_function*. :: mo = MosaicAD(ad, mosaic_ad_function=gemini_mosaic_function) - + - Use :ref:`mosaic_image_data ` method. - The output *mosaic_array* is a numpy array of the same datatype as the - input image array in the *ad* object. The blocks array are corrected - (transformed) for shift, rotation and magnification with respect to the + The output *mosaic_array* is a numpy array of the same datatype as the + input image array in the *ad* object. The blocks array are corrected + (transformed) for shift, rotation and magnification with respect to the reference block. :: @@ -57,8 +57,8 @@ Example 2: Create AstroData output of mosaicked images ------------------------------------------------------ This example uses the ``as_astrodata()`` method to create mosaics of image -extensions. The default action is to act on all the extensions in the input -AstroData object. :ref:`See ` the documentation for the +extensions. The default action is to act on all the extensions in the input +AstroData object. :ref:`See ` the documentation for the available parameters in this method. - Imports @@ -119,7 +119,7 @@ True. ad = astrodata.open(file) -- Create a mosaicAD object using the input ad and the imported mosaic function +- Create a mosaicAD object using the input ad and the imported mosaic function :: mo = MosaicAD(ad, mosaic_ad_function=gemini_mosaic_function) @@ -145,9 +145,9 @@ True. Example 4: Create a block from a given extension name ----------------------------------------------------- -A mosaic consists of one or more blocks, e.g. for GMOS 3-amp mode a mosaic has 3 +A mosaic consists of one or more blocks, e.g. for GMOS 3-amp mode a mosaic has 3 blocks; for a 12 amp mode still the mosaic has 3 blocks but each block has 2-amps. -The blocks' layout is represented with a tuple of the form (column, row) +The blocks' layout is represented with a tuple of the form (column, row) (zero-based). Here, we extract and mosaic the variance (VAR) data arrays. :: @@ -163,9 +163,9 @@ The blocks' layout is represented with a tuple of the form (column, row) mo = MosaicAD(ad, mosaic_ad_function=gemini_mosaic_function) -- Set the instance attribute, data_list, to the VAR or variance data and use the - ``mosaic_image_data`` method to generate an output ndarray using the parameter - block and its value set to a tuple (col,row) (0-based) of the block you want +- Set the instance attribute, data_list, to the VAR or variance data and use the + ``mosaic_image_data`` method to generate an output ndarray using the parameter + block and its value set to a tuple (col,row) (0-based) of the block you want returned. For GMOS the block values are (0,0), (1,0), (2,0): :: @@ -185,8 +185,8 @@ The blocks' layout is represented with a tuple of the form (column, row) Example 5: Write a *user_function* using Astrodata -------------------------------------------------- -A user function is necessary to instantiate a MosaicAD object. If you have an -arbitrary FITS file then this one would probably work depending whether the input +A user function is necessary to instantiate a MosaicAD object. If you have an +arbitrary FITS file then this one would probably work depending whether the input FITS file have the keywords DETSEC, CCDSEC and DATASEC. :: @@ -200,29 +200,29 @@ FITS file have the keywords DETSEC, CCDSEC and DATASEC. file: Input filename. SUMMARY: - 1) Read image data (SCI) of all in the 'ad'. Append each extension to a + 1) Read image data (SCI) of all in the 'ad'. Append each extension to a *data_list* list. - 2) Read header keywords DETSEC and CCDSEC from the same extension as in - 1 and form two lists with the keyword values. Turn these values to - zero-based tuples of the form (x1,x2,y1,y2). The DETSEC list is named + 2) Read header keywords DETSEC and CCDSEC from the same extension as in + 1 and form two lists with the keyword values. Turn these values to + zero-based tuples of the form (x1,x2,y1,y2). The DETSEC list is named 'amp_mosaic_coord' and the CCDSEC list is named 'amp_block_coord'. - If you don't have these keywords use other means to determine - 'amp_mosaic_coord' and 'amp_block_coord'. Make a 'coords' dictionary + If you don't have these keywords use other means to determine + 'amp_mosaic_coord' and 'amp_block_coord'. Make a 'coords' dictionary with 'amp_mosaic_coord' and 'amp_block_coord' keys. So we would have: - + coords = {'amp_mosaic_coord':detsec_list,'amp_block_coord':ccdsec_list} 3) Instantiate a MosaicData object with the above lists. - 4) Set 'blocksize' to (nx,ny). nx is width and ny is theheight -in pixels + 4) Set 'blocksize' to (nx,ny). nx is width and ny is theheight -in pixels of the block containing the data_list elements. - 5) Set 'mosaic_grid'. (nblocks_x,nblocks_y), where nblocks_x + 5) Set 'mosaic_grid'. (nblocks_x,nblocks_y), where nblocks_x is the number of blocks in the x_direction and nblockcs_y - is the number of rows. This is the mosaic layout. + is the number of rows. This is the mosaic layout. RETURN: (mosaic_data, mosaic_geometry) @@ -231,7 +231,7 @@ FITS file have the keywords DETSEC, CCDSEC and DATASEC. data_list = [ext.data for ext in ad] amps_mosaic_coord = ad.detector_section() amps_block_coord = ad.array_section() - + coords = { 'amps_mosaic_coord': amps_mosaic_coord, 'amps_block_coord' : amps_block_coord @@ -239,7 +239,7 @@ FITS file have the keywords DETSEC, CCDSEC and DATASEC. md = MosaicData(data_list, coords) - # Blocksize tuple is (blocksize_x, blocksize_y). Just to keep the external + # Blocksize tuple is (blocksize_x, blocksize_y). Just to keep the external # representation in (x,y) order rather than python's (y,x). # For simplicity make the blocksize the same as the input data shape @@ -247,7 +247,7 @@ FITS file have the keywords DETSEC, CCDSEC and DATASEC. blocksize = (sz_y, sz_x) mosaic_grid = (2, 2) - # MosaicGeometry. We have a 'transformation' dictionary which allows us + # MosaicGeometry. We have a 'transformation' dictionary which allows us # to correct for rotation in this case. geo_dict = { @@ -269,8 +269,8 @@ FITS file have the keywords DETSEC, CCDSEC and DATASEC. Example 6: Write a *user_function* with astopy.io.fits ------------------------------------------------------ -A user function is necessary to instantiate a MosaicAD object. If you have an -arbitrary FITS file then this one would probably work depending whether the +A user function is necessary to instantiate a MosaicAD object. If you have an +arbitrary FITS file then this one would probably work depending whether the input FITS file have the keywords DETSEC, CCDSEC and DATASEC. :: @@ -282,29 +282,29 @@ input FITS file have the keywords DETSEC, CCDSEC and DATASEC. def my_input_function(file): """ SUMMARY: - 1) Read image extensions 'SCI' from the hdulist. Append each extension to - a *data_list* list. If the FITS file already have extension names other + 1) Read image extensions 'SCI' from the hdulist. Append each extension to + a *data_list* list. If the FITS file already have extension names other than 'SCI' will try something else. - 2) Read header keywords DETSEC and CCDSEC from the same extension as in - 1 and form two lists with the keyword values. Turn these values to - zero-based tuples of the form (x1, x2, y1, y2). The DETSEC list is named + 2) Read header keywords DETSEC and CCDSEC from the same extension as in + 1 and form two lists with the keyword values. Turn these values to + zero-based tuples of the form (x1, x2, y1, y2). The DETSEC list is named 'amp_mosaic_coord' and the CCDSEC list is named 'amp_block_coord'. - If you don't have these keywords use other means to determine - 'amp_mosaic_coord' and 'amp_block_coord'. Make a 'coords' dictionary with + If you don't have these keywords use other means to determine + 'amp_mosaic_coord' and 'amp_block_coord'. Make a 'coords' dictionary with 'amp_mosaic_coord' and 'amp_block_coord' keys. So we would have: - + coords = {'amp_mosaic_coord': detsec_list, 'amp_block_coord': ccdsec_list} 3) Instantiate a MosaicData object with the above lists. - 4) Set 'blocksize' to (nx,ny). nx is width and ny is the height -in pixels + 4) Set 'blocksize' to (nx,ny). nx is width and ny is the height -in pixels of the block containing the data_list elements. - 5) Set 'mosaic_grid'. (nblocks_x,nblocks_y), where nblocks_x is the number - of blocks in the x_direction and nblockcs_y is the number of rows. This - is the mosaic layout. + 5) Set 'mosaic_grid'. (nblocks_x,nblocks_y), where nblocks_x is the number + of blocks in the x_direction and nblockcs_y is the number of rows. This + is the mosaic layout. RETURN: (mosaic_data, mosaic_geometry) @@ -321,7 +321,7 @@ input FITS file have the keywords DETSEC, CCDSEC and DATASEC. [sectionStrToIntList(hdu.header['CCDSEC']) for hdu in fitsfile[1:]] ) - # Form the coords dictionary + # Form the coords dictionary coords = {'amps_mosaic_coord': amps_mosaic_coord, 'amps_block_coord' : amps_block_coord } @@ -329,15 +329,15 @@ input FITS file have the keywords DETSEC, CCDSEC and DATASEC. # Mosaic Data object md = MosaicData(data_list, coords) - # Important: blocksize tuple is (blocksize_x, blocksize_y). Just to keep the + # Important: blocksize tuple is (blocksize_x, blocksize_y). Just to keep the # external representation in (x,y) order rather than python's (y,x). # For simplicity make the blocksize the same as the input data shape. - + (sz_y, sz_x) = data_list[0].shape blocksize = (sz_y, sz_x) mosaic_grid = (2,2) - # MosaicGeometry. We have a 'transformation' dictionary which allows us to + # MosaicGeometry. We have a 'transformation' dictionary which allows us to # correct for rotation in this case. geo_dict = { @@ -359,18 +359,18 @@ input FITS file have the keywords DETSEC, CCDSEC and DATASEC. Example 7: Ingest a list of numpy arrays using MosaicData ------------------------------------------------------------ -In order to create a mosaic we need at least a MosaicData object to be used as -input to the Mosaic class initialize function. Let's make a list of numpy arrays +In order to create a mosaic we need at least a MosaicData object to be used as +input to the Mosaic class initialize function. Let's make a list of numpy arrays and a dictionary of the arrays locations in the mosaic. -The location of the data arrays is set with a dictionary of the corner coordinates -containing 'amp_mosaic_coord' and 'amp_block_coord' keys, where 'amp_mosaic_coord' -is a list tuples (x1,x2,y1,y2). (x1,y1) is the lower left, (x2,y2) is the right -top corner with respect to the origin (0,0) at the lower left corner of the mosaic -to be created. The 'amp_block_coord' is a list of tuples (x1,x2,y1,y2) describing -the corners of each data array element but with origin as the lower left corner -of each *block*. A *block* is defined as a subsection of the mosaic containing -one or more data arrays; e.g. a detector array data having two readouts +The location of the data arrays is set with a dictionary of the corner coordinates +containing 'amp_mosaic_coord' and 'amp_block_coord' keys, where 'amp_mosaic_coord' +is a list tuples (x1,x2,y1,y2). (x1,y1) is the lower left, (x2,y2) is the right +top corner with respect to the origin (0,0) at the lower left corner of the mosaic +to be created. The 'amp_block_coord' is a list of tuples (x1,x2,y1,y2) describing +the corners of each data array element but with origin as the lower left corner +of each *block*. A *block* is defined as a subsection of the mosaic containing +one or more data arrays; e.g. a detector array data having two readouts (amplifiers). :: @@ -399,13 +399,13 @@ one or more data arrays; e.g. a detector array data having two readouts Example 8: Create a MosaicGeometry class object. ------------------------------------------------------------ -Each data block might need to be corrected for shift, rotation and magnification. -In this example we have four data blocks and the 'geo_dict' contains values for +Each data block might need to be corrected for shift, rotation and magnification. +In this example we have four data blocks and the 'geo_dict' contains values for these parameters . There are 4 tuples for shift, one for each data block. -The first tuple correspond to the values for the reference block *ref_block* with -values shift = (0, 0) to not shift, rotation = 0.0 to not rotate and -magnification = 1.0 to not magnify. All the rest of the list are values with +The first tuple correspond to the values for the reference block *ref_block* with +values shift = (0, 0) to not shift, rotation = 0.0 to not rotate and +magnification = 1.0 to not magnify. All the rest of the list are values with respect to the reference block. :: @@ -414,19 +414,19 @@ respect to the reference block. geo_dict = { 'transformation': { - 'shift':[(0., 0.), (43.60, -1.24), + 'shift':[(0., 0.), (43.60, -1.24), (0.02, 41.10), (43.42, 41.72)], # (x,y) shifts (pixels) 'rotation': (0.0, -1.033606, 0.582767, 0.769542), # Degrees rotation, counterwise # wrt x_axis - 'magnification': (1., 1.0013, + 'magnification': (1., 1.0013, 1.0052, 1.0159), # Magnifications }, 'gaps' : {(0,0):(0,0), (1,0):(36,0), (2,0):(36,0), (3,0):(36,0)}, 'blocksize' : (1024,2048), # (npix_x, npix_y) - 'mosaic_grid' : (4,1), # N of blocks in x; number of rows. + 'mosaic_grid' : (4,1), # N of blocks in x; number of rows. 'ref_block' : (0,0), # Reference block (column,row) 0-based. 'interpolator': 'linear', # Interpolant } @@ -439,16 +439,16 @@ respect to the reference block. Example 9: Create a mosaic using base class Mosaic --------------------------------------------------- -Use the *data_object* from Example 6 and *geometry_object* from Example 7 to -instantiate a Mosaic object. We print the shape of the output mosaic and +Use the *data_object* from Example 6 and *geometry_object* from Example 7 to +instantiate a Mosaic object. We print the shape of the output mosaic and display it -using ds9. Make sure you have ds9 up and running. :: - + from gempy.numdisplay import display from gempy.mosaic import Mosaic - # See Example 6 and create the data_object; see example 7 and create the + # See Example 6 and create the data_object; see example 7 and create the # geometry_object. mo = Mosaic(data_object, geometry_object) @@ -464,17 +464,17 @@ display it -using ds9. Make sure you have ds9 up and running. .. _exam9: -Example 10: Display the mask +Example 10: Display the mask ---------------------------- -The Mosaic class method *mosaic_image_data* generates mask of the same shape as +The Mosaic class method *mosaic_image_data* generates mask of the same shape as the output mosaic and with pixel value 0 for image data and 1 for no-data values -in the output mosaic. No-data values are gaps areas and those produced by +in the output mosaic. No-data values are gaps areas and those produced by transformation when the image is shifted and/or rotated. :: - # + # # display the mask for the mosaic in the previous example. display(mo.mask, frame=2, z1=0, z2=1.5) @@ -483,8 +483,8 @@ transformation when the image is shifted and/or rotated. Example 11: Transform a block ----------------------------- -Using the data_object and geometry_object from Examples 6 and 7 create a -Mosaic object, then transform the block (0,1) (the top left block). The purpose +Using the data_object and geometry_object from Examples 6 and 7 create a +Mosaic object, then transform the block (0,1) (the top left block). The purpose of this example is to show the usage of the Mosaic method ``transform()``. :: @@ -514,20 +514,20 @@ of this example is to show the usage of the Mosaic method ``transform()``. data = np.ones((300,200),dtype=np.float32) data = data*20 # set background to 20 - # Make a four elements data_list (mosaic_grid).The blocks layout in the mosaic + # Make a four elements data_list (mosaic_grid).The blocks layout in the mosaic # is: (0,0), (1,0), (0,1), (1,1) - data_list = [data,data,data,data] + data_list = [data,data,data,data] # Inside each block, make a small box 50x50 starting at (50,50) with value 100 - for k in range(4): - data_list[k][50:101,50:101] = 100. + for k in range(4): + data_list[k][50:101,50:101] = 100. # Mark the block borders with value 400 - data_list[k][:,0] =400 - data_list[k][:,199]=400 - data_list[k][0,:] =400 - data_list[k][299,:]=400 + data_list[k][:,0] =400 + data_list[k][:,199]=400 + data_list[k][0,:] =400 + data_list[k][299,:]=400 # Create the MosaicData object mosaic_data = MosaicData(data_list) @@ -535,13 +535,13 @@ of this example is to show the usage of the Mosaic method ``transform()``. # With these two objects we instantiate a Mosaic object mo = Mosaic(mosaic_data, mosaic_geometry) - # Let take the block corresponding to the location (0,1) within the mosaic and - # transform. The values used are: shift: (-10,-20) in (x,y), rotation: 45 degrees + # Let take the block corresponding to the location (0,1) within the mosaic and + # transform. The values used are: shift: (-10,-20) in (x,y), rotation: 45 degrees # about the center and magnification: 1.0 (no magnification) trans_data = mo.transform(mo.data_list[2],(0,1)) - # ---- Now display both blocks to visually see the difference between original + # ---- Now display both blocks to visually see the difference between original # and transformed blocks. # display input data display(mo.data_list[2], frame=1) @@ -554,24 +554,24 @@ of this example is to show the usage of the Mosaic method ``transform()``. Example 12: Use set_transformation() ------------------------------------ -When transforming a block, a default interpolation function is used (linear). -The available functions are: 'nearest', 'linear', and 'spline' with order (0-5). +When transforming a block, a default interpolation function is used (linear). +The available functions are: 'nearest', 'linear', and 'spline' with order (0-5). -The purpose of this example is to illustrate the effects on a transformed block -when resetting the interpolator function. The method to reset the interpolation +The purpose of this example is to illustrate the effects on a transformed block +when resetting the interpolator function. The method to reset the interpolation function is: :: mo.set_transformation_function(function_name, order) -Create 2 ndarrays list and mark a strip of the 2nd ndarray with a higher value. -Set the Geometry dictionary with 'rotate' this ndarray by 5 degrees. Now we -create the mosaic with default interpolation function and again with the +Create 2 ndarrays list and mark a strip of the 2nd ndarray with a higher value. +Set the Geometry dictionary with 'rotate' this ndarray by 5 degrees. Now we +create the mosaic with default interpolation function and again with the 'spline' function of order 5. We plot a column from each image. :: - + import numpy as np from gempy.mosaic import Mosaic, MosaicGeometry, MosaicData from matplotlib import pyplot as pl @@ -595,7 +595,7 @@ create the mosaic with default interpolation function and again with the data[45:50,:] = 5 # Make an 2x1 array with this rectangle. - data_list = [data,data] + data_list = [data,data] # Create a MosaicData object data_object = MosaicData(data_list) @@ -609,7 +609,7 @@ create the mosaic with default interpolation function and again with the # Now reset the interpolator function the spline or order 5. mo.set_interpolator('spline',spline_order=5) - # Create the mosaic + # Create the mosaic mosaic_spline = mo.mosaic_image_data() # Now plot across the stripes @@ -618,4 +618,3 @@ create the mosaic with default interpolation function and again with the # The difference between the 2 plots is the edge effect at the # low and high stripe corners plot due to interpolation. - diff --git a/gempy/doc/mosaic/source/glossary.rst b/gempy/doc/mosaic/source/glossary.rst index f0463885c4..41ac1ed9df 100644 --- a/gempy/doc/mosaic/source/glossary.rst +++ b/gempy/doc/mosaic/source/glossary.rst @@ -9,13 +9,13 @@ Glossary data formats, such as HDF5. **amplifier** - In the context of the Mosaic class, amplifier is the ndarray containing the - data from any element in the input data list. From the MosaicAD class is the - amount of data from one FITS IMAGE extension limited by the image section + In the context of the Mosaic class, amplifier is the ndarray containing the + data from any element in the input data list. From the MosaicAD class is the + amount of data from one FITS IMAGE extension limited by the image section from the header keyword DATASEC. **array** - An array describes the individual component that detect photons within an + An array describes the individual component that detect photons within an instrument; eg, a CCD or an infrared array. .. _block_def: @@ -27,51 +27,51 @@ Glossary blocks. For GSAOI, four blocks represent the four chips. **mask** - Ndarray of the same shape (ny, nx); i.e. number of pixels in y and x, as the - output mosaic with zero as the pixel value for image data and 16 as - non-image data ("no data") in the output mosaic. Example of non-image data - are the gaps between the blocks and the areas of no data resulting from + Ndarray of the same shape (ny, nx); i.e. number of pixels in y and x, as the + output mosaic with zero as the pixel value for image data and 16 as + non-image data ("no data") in the output mosaic. Example of non-image data + are the gaps between the blocks and the areas of no data resulting from transformation. **MosaicData** - A class providing functions to verify input data lists. The object created - with this class is required as input to create a Mosaic object. For more + A class providing functions to verify input data lists. The object created + with this class is required as input to create a Mosaic object. For more details see :ref:`MosaicData example `. **MosaicGeometry** - A class providing functions to verify the input data ndarrays geometry - properties values and the geometry of the output mosaic. Some of these - values are rotation, shifting and magnification, and are used to transform - the blocks to match the reference block geometry. For more details see - :ref:`MosaicGeometry example `. + A class providing functions to verify the input data ndarrays geometry + properties values and the geometry of the output mosaic. Some of these + values are rotation, shifting and magnification, and are used to transform + the blocks to match the reference block geometry. For more details see + :ref:`MosaicGeometry example `. **Mosaic** - The base class with low level functionality to generate a mosaic from - MosaicData and MosaicGeometry object inputs. Depending on the amount of - input geometry values supplied when creating the MosaicGeometry, the user - can generate a mosaic with or without transforming blocks. This class object + The base class with low level functionality to generate a mosaic from + MosaicData and MosaicGeometry object inputs. Depending on the amount of + input geometry values supplied when creating the MosaicGeometry, the user + can generate a mosaic with or without transforming blocks. This class object also contains a mask as an attribute. **MosaicAD** - Python derived class of Mosaic. Together with the Astrodata input object, - this class offers functionality to output an Astrodata object containing - one or more mosaics and/or merged catalogs in binary tables which are + Python derived class of Mosaic. Together with the Astrodata input object, + this class offers functionality to output an Astrodata object containing + one or more mosaics and/or merged catalogs in binary tables which are :ref:`associated ` with the mosaics. .. _why_ndarray: **ndarray** - An "N-dimensional array" is a `numpy` array of values. The term is used here + An "N-dimensional array" is a `numpy` array of values. The term is used here to differentiate it from a CCD or other detector array. **reference block** - Is a tuple (column_number, row_number) with respect to the lower - left origin (0, 0). It notes the reference block to which the transformation - values are given. These values are given in the geometry dictionary with key + Is a tuple (column_number, row_number) with respect to the lower + left origin (0, 0). It notes the reference block to which the transformation + values are given. These values are given in the geometry dictionary with key *transformation*. .. _mos_transf: **transformation** - The act of applying interpolation to a block to correct for rotation, shifting + The act of applying interpolation to a block to correct for rotation, shifting and magnification with respect to the reference block. diff --git a/gempy/doc/mosaic/source/introduction.rst b/gempy/doc/mosaic/source/introduction.rst index 253edf89e4..ed587ea4e9 100644 --- a/gempy/doc/mosaic/source/introduction.rst +++ b/gempy/doc/mosaic/source/introduction.rst @@ -33,20 +33,20 @@ Throughout this document the term *mosaic* will have the following meanings: **What is the Mosaic class** -- The Mosaic class provides functionality to create a mosaic by pasting a set of +- The Mosaic class provides functionality to create a mosaic by pasting a set of individual ndarrays of the same size and data type. -- Layout description of the ndarrays on the output mosaic is done via the +- Layout description of the ndarrays on the output mosaic is done via the MosaicData class. -- Information about geometric transformation of the ndarrays is carried using +- Information about geometric transformation of the ndarrays is carried using the MosaicGeometry class. What is the MosaicAD class -------------------------- - MosaicAD extends the generic Mosaic class to supoort AstroData objects. Both - MosaicAD and Mosaic provide support for tiling and transformation of multiple + MosaicAD and Mosaic provide support for tiling and transformation of multiple image arrays onto a single image plane. - MosaicAD provides support of Gemini astronomical data by working with @@ -59,7 +59,7 @@ Getting Help ------------ If you experience problems running Mosaic please contact the -Gemini `Helpdesk `_ +Gemini `Helpdesk `_ (under gemini IRAF/Python). Quick Example @@ -83,17 +83,17 @@ Create a mosaic with MosaicAD class. ad = astrodata.open('S20170427S0064.fits') - Create a *MosaicAD* Class object. - The user function *gemini_mosaic_function* currently supports only GMOS and + The user function *gemini_mosaic_function* currently supports only GMOS and GSAOI data at this time. :: mos = MosaicAD(ad, mosaic_ad_function=gemini_mosaic_function) - -- Use *mosaic_image_data* method to generate a mosaic with all the 'SCI' - extensions in the input Astrodata data list. The output *mosaic_array* is a + +- Use *mosaic_image_data* method to generate a mosaic with all the 'SCI' + extensions in the input Astrodata data list. The output *mosaic_array* is a numpy ** of the same datatype as the input image array in the *ad* object. - The input data pieces (blocks) are corrected (transformed) for shift, rotation - and magnification with respect to the reference block. This information is + The input data pieces (blocks) are corrected (transformed) for shift, rotation + and magnification with respect to the reference block. This information is available in the 'geometry' configuration file for each supported instrument. :: mosaic_array = mos.mosaic_image_data() @@ -110,11 +110,11 @@ Create a mosaic with MosaicAD class. Mosaic in Primitives -------------------- -The primitive **mosaicDetectors** in the module *primitives_visualize.py* handles +The primitive **mosaicDetectors** in the module *primitives_visualize.py* handles GMOS and GSAOI images and can be called directly from the reduce command line. Example :: - + # Using reduce to mosaic a GMOS raw in tile mode. reduce -r mosaicDetectors S20170427S0064.fits diff --git a/gempy/doc/mosaic/source/mosaic.rst b/gempy/doc/mosaic/source/mosaic.rst index 30d37d48be..3a09a1be9c 100644 --- a/gempy/doc/mosaic/source/mosaic.rst +++ b/gempy/doc/mosaic/source/mosaic.rst @@ -4,23 +4,23 @@ Mosaic ###### **Mosaic** - is the base class that provides functionality to layout a list of data - :ref:`ndarrays ` of the same size into an output mosaic. The main + is the base class that provides functionality to layout a list of data + :ref:`ndarrays ` of the same size into an output mosaic. The main characteristics are: -- Input data and their location in the output mosaic is done via +- Input data and their location in the output mosaic is done via :ref:`MosaicData ` objects -- Information about gaps between the :ref:`blocks ` and - :ref:`transformation ` is given by the +- Information about gaps between the :ref:`blocks ` and + :ref:`transformation ` is given by the :ref:`MosaicGeometry ` object -- The interpolator used in the transformation can be reset via a +- The interpolator used in the transformation can be reset via a Mosaic class function - Preserve flux when transforming a block -To instantiate a Mosaic object you need to have at least a list of ndarrays +To instantiate a Mosaic object you need to have at least a list of ndarrays of the same same size contained in a MosaicData object. :: @@ -31,12 +31,12 @@ of the same same size contained in a MosaicData object. **Input parameters** - mosaic_data - MosaicData class object containing the data_list and list of coordinates. - The members of this class are: data_list, coords. + MosaicData class object containing the data_list and list of coordinates. + The members of this class are: data_list, coords. (see :ref:`example ` for details). - mosaic_geometry - MosaicGeometry class object (optional). + MosaicGeometry class object (optional). See :ref:`example ` on how to set it up. **Mosaic Class Attributes** @@ -51,7 +51,7 @@ of the same same size contained in a MosaicData object. MosaicGeometry object - data_index_per_block: - Dictionary containing the list indices of each data_list element that falls + Dictionary containing the list indices of each data_list element that falls in one block. The dictionary key is the block tuple. - return_ROI: @@ -69,10 +69,10 @@ Mosaic Methods mosaic_image_data() =================== -Method to layout the blocks of data in the output mosaic grid. Correction for -rotation, shifting and magnification is performed with respect to the reference -block. A :ref: `mask ` is also created containing value zero for -positions were there are pixel data and one for everywhere else -like gaps and +Method to layout the blocks of data in the output mosaic grid. Correction for +rotation, shifting and magnification is performed with respect to the reference +block. A :ref: `mask ` is also created containing value zero for +positions were there are pixel data and one for everywhere else -like gaps and areas of no-data due to shifting when transforming the data. Usage: @@ -100,7 +100,7 @@ areas of no-data due to shifting when transforming the data. Flag to use the minimum frame enclosing all the block_data elements. - tile: - Layout the block in the mosaic grid with no correction for rotation + Layout the block in the mosaic grid with no correction for rotation nor shift. Gaps are included. Tiles all extensions into one output extension. @@ -117,7 +117,7 @@ the output mosaic frame. This must be done before any transformation operation. get_blocks() ============ -Return a dictionary of block data arrays using their mosaic grid (column,row) +Return a dictionary of block data arrays using their mosaic grid (column,row) position as keys. Data blocks are necessary when applying transformation. .. _mos_transform: @@ -135,7 +135,7 @@ correction for rotation, shift and/or magnification. Set a dictionary with set_interpolator() ================== -Set the interpolator to use when correcting the blocks for rotation, +Set the interpolator to use when correcting the blocks for rotation, translation, and magnification. Usage @@ -151,8 +151,8 @@ translation, and magnification. - spline_order: Used when tfunction is 'spline' and is the order of the spline interpolant - (default is 2). Allowed values are in the range [0-5], where order 0 is - equivalent to a 'linear' interpolator, 1 is equivalent to a 'nearest' + (default is 2). Allowed values are in the range [0-5], where order 0 is + equivalent to a 'linear' interpolator, 1 is equivalent to a 'nearest' interpolator. Here is an :ref:`Example ` on how to use *set_interpolator*. @@ -163,13 +163,13 @@ Here is an :ref:`Example ` on how to use *set_interpolator*. How to use the Mosaic class =========================== -The basic steps to generate a mosaic using the Mosaic class are: +The basic steps to generate a mosaic using the Mosaic class are: 1) Handle input data. 2) Describe coordinates of each of the input data elements. 3) Characterize block geometry. -The input data list is the only requirement which will result in a horizontal +The input data list is the only requirement which will result in a horizontal tiling of each of the input data elements. @@ -177,8 +177,8 @@ tiling of each of the input data elements. Possible ways to obtain a list of ndarrays (data_list) suitable for Mosaic: - - Create a data_list from a FITS file. For example: read a FITS file with - three image extensions using pyfits to create the list of numpy arrays + - Create a data_list from a FITS file. For example: read a FITS file with + three image extensions using pyfits to create the list of numpy arrays (aka ndarrays) :: import astrodata @@ -197,30 +197,30 @@ Possible ways to obtain a list of ndarrays (data_list) suitable for Mosaic: data = numpy.linspace(0.,1000.,1024*2048).reshape(2048,1024) data_list = [data*(-1)**k for k in numpy.arange(4)] - - Make use of the gemMosaicFunction function to generate a MosaicData and a + - Make use of the gemMosaicFunction function to generate a MosaicData and a MosaicGeometry objects from GMOS/GSAOI data. See :ref:`Example `. .. _desc_coords: **2) Describe the coordinates of each data list element (amplifier)** -Each data element coordinate description contains two sets of coordinates given -by (x1,x2,y1,y2) where x1 and x2 are the start and end column pixel location: -y1 and y2 are the start and end row location of the data piece with respect to -a given origin. One tuple origin is with respect to the lower left corner of -the block containing the data, the other tuple origin is with respect to the -lower left corner of the mosaic. The coordinates values are zero-based and the +Each data element coordinate description contains two sets of coordinates given +by (x1,x2,y1,y2) where x1 and x2 are the start and end column pixel location: +y1 and y2 are the start and end row location of the data piece with respect to +a given origin. One tuple origin is with respect to the lower left corner of +the block containing the data, the other tuple origin is with respect to the +lower left corner of the mosaic. The coordinates values are zero-based and the end values x2,y2 are none inclusive. -These two tuple lists are given as a dictionary callied coords, with keys: -*amp_mosaic_coord* with origin the lower left corner of the mosaic and -*amp_block_coord* with origin the lower left corner of the block. Here is an -example of the dictionary. The order on these lists is the same as the input +These two tuple lists are given as a dictionary callied coords, with keys: +*amp_mosaic_coord* with origin the lower left corner of the mosaic and +*amp_block_coord* with origin the lower left corner of the block. Here is an +example of the dictionary. The order on these lists is the same as the input list of ndarrays (data_list) order: :: - # Coordinate description of a data list with four amplifier + # Coordinate description of a data list with four amplifier # ndarrays of size 1024 columns by 2048 rows. # Image sections are: (x1, x2, y1, y2) @@ -237,9 +237,9 @@ list of ndarrays (data_list) order: **3) Geometry description of input data and output mosaic** -Use a geometry dictionary to list block properties such as block separation -(gaps) in the mosaic and transformation values for each block with respect to -a reference block, etc. :ref:`Here ` is the list of all the geometry +Use a geometry dictionary to list block properties such as block separation +(gaps) in the mosaic and transformation values for each block with respect to +a reference block, etc. :ref:`Here ` is the list of all the geometry keys. This is an example of a typical geometry dictionary: :: @@ -257,11 +257,11 @@ keys. This is an example of a typical geometry dictionary: 'rotation': (0.0, -1.033606, 0.582767, 0.769542), - # List of magnification + # List of magnification 'magnification': (1., 1.0013, 1.0052, 1.0159), } - # (x_gap,y_gap) in pixels. Key values are block location + # (x_gap,y_gap) in pixels. Key values are block location # (0-based) (column,row) w.r.t. lower left block in the mosaic. 'gap_dict': { @@ -270,14 +270,14 @@ keys. This is an example of a typical geometry dictionary: 'transform_gaps': {(0,0):(14,23.4), (1,0):(14.0,23.4), (0,1):(14,20.4), (1,1):(12.6,23.4)}, - }, + }, 'blocksize': (1024,2048), # (npix_x, npix_y) 'mosaic_grid': (4,1), # N of blocks in x and N of rows. 'ref_block': (0,0), # Ref block (column,row) 0-based. 'interpolator': 'linear', # Interpolator } -.. note:: If the gaps values are the same for tile_gaps and transform_gaps then +.. note:: If the gaps values are the same for tile_gaps and transform_gaps then instead of the 'gap_dict' use the 'gaps' key. E.g. :: 'gaps': { (0,0): (15,25), @@ -357,38 +357,38 @@ To create a MosaicData object: (npixels_x, npixels_y). I.e., the size of the block. mosaic_grid - (ncols, nrows). Number of blocks per row and number of rows in the output + (ncols, nrows). Number of blocks per row and number of rows in the output mosaic array. transformation with the following keys 'shift' - List of tuples (x_shift, y_shift). N pixels (as floats) to shift to + List of tuples (x_shift, y_shift). N pixels (as floats) to shift to align with the ref_block. There are as many tuples as number of blocks. 'rotation' - (Degrees). List of floats. Amount to rotate each block to align with - the ref_block. There are as many numbers as number of blocks. The angle + (Degrees). List of floats. Amount to rotate each block to align with + the ref_block. There are as many numbers as number of blocks. The angle is counter clockwise from the x-axis. 'magnification' - List of real numbers. Amount to magnify each block to align with the - ref_block. There are as many numbers as number of blocks. The + List of real numbers. Amount to magnify each block to align with the + ref_block. There are as many numbers as number of blocks. The magnification is about the block center. ref_block - Reference block tuple. The block location (x,y) coordinate in the - mosaic_grid. This is a 0-based tuple. 'x' increases to the right, 'y' + Reference block tuple. The block location (x,y) coordinate in the + mosaic_grid. This is a 0-based tuple. 'x' increases to the right, 'y' increases in the upwards direction. interpolator - . Default is 'linear'. Name of the transformation function used for - translation,rotation, magnification of the blocks to be aligned with the + . Default is 'linear'. Name of the transformation function used for + translation,rotation, magnification of the blocks to be aligned with the reference block. The possible values are: 'linear', 'nearest', 'spline'. spline_order - . Default 3. Is the 'spline' interpolator order. Allow values are in + . Default 3. Is the 'spline' interpolator order. Allow values are in the range [0-5]. - gap_dict + gap_dict A dictionary of dictionaries of the form:: gap_dict = { @@ -403,7 +403,7 @@ To create a MosaicData object: the block (x_gap) and at the bottom of the block (y_gap); hence the (0,0) block will have values (0,0) for gaps. - For some instruments the gaps are different depending whether we + For some instruments the gaps are different depending whether we produce a mosaic in 'tile' or 'transform' mode. gaps @@ -413,7 +413,7 @@ To create a MosaicData object: gaps = {(col,row): (x_gap,y_gap),...}, - + **Class Attributes** - blocksize: Same as input diff --git a/gempy/doc/mosaic/source/mosaicAD.rst b/gempy/doc/mosaic/source/mosaicAD.rst index 96f759b681..86e9064543 100644 --- a/gempy/doc/mosaic/source/mosaicAD.rst +++ b/gempy/doc/mosaic/source/mosaicAD.rst @@ -17,7 +17,7 @@ providing support for: - Updating the WCS information in the output AstroData object mosaic header -- A user_function as a parameter to input data and geometric values of the +- A user_function as a parameter to input data and geometric values of the individual data elements. - A user_function (already written) to support GMOS and GSAOI data @@ -33,7 +33,7 @@ How to use MosaicAD class 2) Instantiate a MosaicAD class object with the user supplied :ref:`mosaic function ` name as input parameter. -3) Now generate :ref:`mosaics ndarrays ` or +3) Now generate :ref:`mosaics ndarrays ` or :ref:`AstroData objects `. To instantiate a MosaicAd object: @@ -60,12 +60,12 @@ To instantiate a MosaicAd object: a user function available 'gemini_mosaic_function' in a module *gemMosaicFunction.py*. If you have other data, see the Example section for :ref:`'Write a user_function ` - + :ref:`MosaicAD example ` **MosaicAD class Attributes** -These attributes are in addition to the Mosaic class. +These attributes are in addition to the Mosaic class. - .log DRAGONS logger object. - .ad AstroData object. @@ -91,14 +91,14 @@ image extensions. This will also process any provided mask of name, OBJMASK. Usage: :: - + import astroData import gemini_instruments - + # gemini_mosaic_function is a user function ready made for use with GMOS # and GSAOI datasets. You may use this function for all Gemini/GMOS or # Gemini/GSAOI data. - + from gempy.mosaic.mosaicAD import MosaicAD from gempy.mosaic.gemMosaicFunction import gemini_mosaic_function @@ -123,21 +123,21 @@ Usage: as_astrodata(block=None, doimg=False, tile=False, return_ROI=True) - block: <2-tuple>. Default is None. - Allows a specific block to be returned as the output mosaic. The tuple - notation is (col,row) (zero-based) where (0,0) is the lower left block. + Allows a specific block to be returned as the output mosaic. The tuple + notation is (col,row) (zero-based) where (0,0) is the lower left block. The blocks layout is given by the attribute mosaic_grid. - doimg: . Default is False. - Specifies that *only* the SCI image data are tiled or transformed (see - parameter, ``tile``). False indicates all image extensions are processed, + Specifies that *only* the SCI image data are tiled or transformed (see + parameter, ``tile``). False indicates all image extensions are processed, i.e. all SCI, VAR, DQ extensions. - tile: . Default is False - If True, the mosaics returned are not corrected for shifting, rotation or + If True, the mosaics returned are not corrected for shifting, rotation or magnification. - return_ROI: . Default is True - Returns the minimum frame size calculated from the location of the + Returns the minimum frame size calculated from the location of the amplifiers in a given block. If False uses the blocksize value. **Output** @@ -147,7 +147,7 @@ Usage: E.g.:: adout.write('newfile.fits') - + See Examples for an example of `as_astrodata()` :ref:`as_astrodata example ` @@ -163,14 +163,14 @@ function. An astrodata object is returned to the caller. Usage: :: - + import astroData import gemini_instruments - + # gemini_mosaic_function is a user function ready made for use with GMOS # and GSAOI datasets. You may use this function for all Gemini/GMOS or # Gemini/GSAOI data. - + from gempy.mosaic.mosaicAD import MosaicAD from gempy.mosaic.gemMosaicFunction import gemini_mosaic_function @@ -201,12 +201,12 @@ Usage: detector chip. Default is False. - doimg: . Default is False. - Specifies that *only* the SCI image data are tiled or transformed (see - parameter, ``tile``). False indicates all image extensions are processed, + Specifies that *only* the SCI image data are tiled or transformed (see + parameter, ``tile``). False indicates all image extensions are processed, i.e. all SCI, VAR, DQ extensions. - return_ROI: . Default is True - Returns the minimum frame size calculated from the location of the + Returns the minimum frame size calculated from the location of the amplifiers in a given block. If False uses the blocksize value. **Output** @@ -222,12 +222,12 @@ Usage: mosaic_image_data() ******************* -Method to layout the blocks of data in the output mosaic grid. Correction for -rotation, shifting and magnification is performed with respect to the reference -block. A Mask is also created containing value zero for positions where there -are pixel data and one for everywhere else, like gaps and areas of no-data due +Method to layout the blocks of data in the output mosaic grid. Correction for +rotation, shifting and magnification is performed with respect to the reference +block. A Mask is also created containing value zero for positions where there +are pixel data and one for everywhere else, like gaps and areas of no-data due to shifting when transforming the data. - + Usage: :: @@ -238,19 +238,19 @@ Usage: **Input parameters** - block: <2-tuple>. Default is None. - Allows a specific block to be returned as the output mosaic. The tuple - notation is (col,row) (zero-based) where (0,0) is the lower left block. + Allows a specific block to be returned as the output mosaic. The tuple + notation is (col,row) (zero-based) where (0,0) is the lower left block. The blocks layout is given by the attribute mosaic_grid. - dq_data: Handle data in self.data_list as bit-planes. - tile: - If True, the mosaics returned are not corrected for shifting, rotation or + If True, the mosaics returned are not corrected for shifting, rotation or magnification. Default is False. - return_ROI: (default is True). - Returns the minimum frame size calculated from the location of the + Returns the minimum frame size calculated from the location of the amplifiers in a given block. If False uses the blocksize value. **Output** @@ -265,11 +265,11 @@ See Examples for an example of `mosaic_image_data()` calculate_jfactor() ******************* -Calculate the ratio of reference input pixel size to output pixel size for each -reference extension in the AstroData object. In practice this ratio is formulated +Calculate the ratio of reference input pixel size to output pixel size for each +reference extension in the AstroData object. In practice this ratio is formulated as the determinant of the WCS transformation matrix. This ratio is applied to each -pixel to conserve flux in an image after magnification in the transformation. - +pixel to conserve flux in an image after magnification in the transformation. + Usage: :: @@ -278,14 +278,14 @@ pixel to conserve flux in an image after magnification in the transformation. **Justification** -In general CD matrix element is the ratio between partial derivative of the -world coordinate (ra,dec) with respect to the pixel coordinate (x,y). We have 4 +In general CD matrix element is the ratio between partial derivative of the +world coordinate (ra,dec) with respect to the pixel coordinate (x,y). We have 4 elements in the FITS header CD1_1, CD1_2, CD2_1 and CD2_2 that defines a CD matrix. -For an adjacent image in the sky (GMOS detectors 1,2,3 for example), the +For an adjacent image in the sky (GMOS detectors 1,2,3 for example), the cd matrix elements will have slightly different values. -Given the CD matrices from adjacent fields, the jfactor is calculated as the +Given the CD matrices from adjacent fields, the jfactor is calculated as the dot product of the inverse of one of the matrices times the other matrix. **Output** @@ -298,8 +298,8 @@ dot product of the inverse of one of the matrices times the other matrix. get_data_list(attr) ******************* -Returns a list of image data for all the ad. It assumes that the input -AstroData Descriptor *data_section* has been defined for this astrodata type, +Returns a list of image data for all the ad. It assumes that the input +AstroData Descriptor *data_section* has been defined for this astrodata type, i.e. GMOS or GSAOI. The data list returned by this function should be used to set the instance attribute, *self.data_list*, which is what is worked on by subsequent calls to *.mosaic_image_data()*. @@ -339,7 +339,7 @@ info() 'amp_block_coord': of tuples (x1,x2,y1,y2)) The list of amplifier indices within a block. 'amp_mosaic_coord': of tuples (x1, x2, y1, y2)). - The list of amplifier location within the mosaic. + The list of amplifier location within the mosaic. These values do not include the gaps between the blocks. 'amps_per_block': Number of amplifiers per block. diff --git a/gempy/doc/mosaic/source/supptools.rst b/gempy/doc/mosaic/source/supptools.rst index 781494454d..b10cb16320 100644 --- a/gempy/doc/mosaic/source/supptools.rst +++ b/gempy/doc/mosaic/source/supptools.rst @@ -28,7 +28,7 @@ Example :: $ reduce -r mosaicDetectors N20170913S0209_prepared.fits - + --- reduce, vv2.0.8 --- All submitted files appear valid Found 'mosaicDetectors' as a primitive. @@ -44,20 +44,20 @@ Example Working on DQ arrays ... Working on OBJMASK arrays ... Keeping REFCAT ... - Updated filename: N20170913S0209_mosaic.fits + Updated filename: N20170913S0209_mosaic.fits . Wrote N20170913S0209_mosaic.fits in output directory reduce completed successfully. - + 2) Run tiling on a full dataset, i.e., SCI, VAR, DQ arrays, plus any OBJMASK and reference catalog. :: $ reduce -r tileArrays N20170913S0209_prepared.fits - + --- reduce, vv2.0.8 --- All submitted files appear valid Found 'tileArrays' as a primitive. @@ -66,7 +66,7 @@ Example =========================================================== PRIMITIVE: tileArrays --------------------- - Tile arrays parameter, tile_all is False + Tile arrays parameter, tile_all is False PRIMITIVE: mosaicDetectors -------------------------- MosaicAD Working on GMOS IMAGE @@ -77,7 +77,7 @@ Example Working on OBJMASK arrays ... Tiling OBJCATS ... Keeping REFCAT ... - Updated filename: N20170913S0209_tiled.fits + Updated filename: N20170913S0209_tiled.fits . . Wrote N20170913S0209_tiled.fits in output directory @@ -90,7 +90,7 @@ the ``tile_all`` parameter, which can be passed on the command line as well. :: $ reduce -p tile_all=True -r tileArrays N20170913S0209_prepared.fits - + --- reduce, vv2.0.8 --- All submitted files appear valid Found 'tileArrays' as a primitive. @@ -110,7 +110,7 @@ the ``tile_all`` parameter, which can be passed on the command line as well. Working on OBJMASK arrays ... Tiling OBJCATS ... Keeping REFCAT ... - Updated filename: N20170913S0209_tiled.fits + Updated filename: N20170913S0209_tiled.fits . . Wrote N20170913S0209_tiled.fits in output directory diff --git a/gempy/eti_core/etiparam.py b/gempy/eti_core/etiparam.py index 8ff4ab6f1d..6a8da42d22 100644 --- a/gempy/eti_core/etiparam.py +++ b/gempy/eti_core/etiparam.py @@ -18,5 +18,3 @@ def recover(self): def clean(self): log.debug("ETIParam clean(): pass") - - diff --git a/gempy/eti_core/pyrafeti.py b/gempy/eti_core/pyrafeti.py index 4e3e01b172..81623c93d2 100644 --- a/gempy/eti_core/pyrafeti.py +++ b/gempy/eti_core/pyrafeti.py @@ -18,5 +18,3 @@ def execute(self): def recover(self): log.debug("PyrafETI.recover()") - - diff --git a/gempy/eti_core/pyrafetifile.py b/gempy/eti_core/pyrafetifile.py index eb752511d0..ba666c2819 100644 --- a/gempy/eti_core/pyrafetifile.py +++ b/gempy/eti_core/pyrafetifile.py @@ -34,4 +34,3 @@ def recover(self): def clean(self): log.debug("PyrafETIFile clean(): pass") - diff --git a/gempy/eti_core/pyrafetiparam.py b/gempy/eti_core/pyrafetiparam.py index e8296c7604..7a84ea9859 100644 --- a/gempy/eti_core/pyrafetiparam.py +++ b/gempy/eti_core/pyrafetiparam.py @@ -34,5 +34,3 @@ def flush(self): def write(self, out): if len(out) > 1: self.log.fullinfo(out) - - diff --git a/gempy/gemini/eti/__init__.py b/gempy/gemini/eti/__init__.py index 821c3207e8..8a1d72615d 100644 --- a/gempy/gemini/eti/__init__.py +++ b/gempy/gemini/eti/__init__.py @@ -1,4 +1,3 @@ # __init__.py for gempy.eti module __version__ = '0.1.0 (May 2010)' - diff --git a/gempy/gemini/eti/gemcombineeti.py b/gempy/gemini/eti/gemcombineeti.py index 10c9334e00..fc27b5a971 100644 --- a/gempy/gemini/eti/gemcombineeti.py +++ b/gempy/gemini/eti/gemcombineeti.py @@ -97,5 +97,3 @@ def recover(self): else: fil.recover() return ad - - diff --git a/gempy/gemini/eti/gemcombinefile.py b/gempy/gemini/eti/gemcombinefile.py index 686168e141..0252497da5 100644 --- a/gempy/gemini/eti/gemcombinefile.py +++ b/gempy/gemini/eti/gemcombinefile.py @@ -141,4 +141,3 @@ def prepare(self): log.debug("LogFile prepare()") tmplog = tempfile.NamedTemporaryFile() self.filedict.update({"logfile": tmplog.name}) - diff --git a/gempy/gemini/eti/gemcombineparam.py b/gempy/gemini/eti/gemcombineparam.py index 7b0e4ce10a..a9b0aca5a4 100644 --- a/gempy/gemini/eti/gemcombineparam.py +++ b/gempy/gemini/eti/gemcombineparam.py @@ -150,4 +150,3 @@ def prepare(self): hardcoded_params = {'title':'DEFAULT', 'Stdout':IrafStdout(), 'Stderr':IrafStdout()} - diff --git a/gempy/gemini/eti/gmosaiceti.py b/gempy/gemini/eti/gmosaiceti.py index 25d0c80841..39766c29d5 100644 --- a/gempy/gemini/eti/gmosaiceti.py +++ b/gempy/gemini/eti/gmosaiceti.py @@ -105,5 +105,3 @@ def recover(self): return adlist[0] else: return adlist - - diff --git a/gempy/gemini/eti/gmosaicfile.py b/gempy/gemini/eti/gmosaicfile.py index d37cc32eed..2dd98dbff5 100644 --- a/gempy/gemini/eti/gmosaicfile.py +++ b/gempy/gemini/eti/gmosaicfile.py @@ -158,4 +158,3 @@ def prepare(self): log.debug("LogFile prepare()") tmplog = tempfile.NamedTemporaryFile() self.filedict.update({"logfile": tmplog.name}) - diff --git a/gempy/gemini/eti/gmosaicparam.py b/gempy/gemini/eti/gmosaicparam.py index f0b91bbea4..6d9934f340 100644 --- a/gempy/gemini/eti/gmosaicparam.py +++ b/gempy/gemini/eti/gmosaicparam.py @@ -135,4 +135,3 @@ def prepare(self): mosaic_detectors_hardcoded_params = {"Stdout" : IrafStdout(), "Stderr" : IrafStdout()} - diff --git a/gempy/gemini/hdr_fixing.py b/gempy/gemini/hdr_fixing.py index 867048c7e5..0a8dcece60 100644 --- a/gempy/gemini/hdr_fixing.py +++ b/gempy/gemini/hdr_fixing.py @@ -42,4 +42,4 @@ def gmosn_ham_dateobs(hdulist, verbose=False): if verbose: print('DATE-OBS update the value of DATE, {}'.format(date)) - return updated \ No newline at end of file + return updated diff --git a/gempy/gemini/irafcompat.py b/gempy/gemini/irafcompat.py index eeff163629..64e598aa14 100755 --- a/gempy/gemini/irafcompat.py +++ b/gempy/gemini/irafcompat.py @@ -1,5 +1,5 @@ """ -Collection of functions to make pipeline-processed and +Collection of functions to make pipeline-processed and IRAF-processed files compatible with the other system. """ @@ -8,7 +8,7 @@ import re def pipeline2iraf(ad, verbose=False): - + if "GMOS" in ad.tags: compat_with_iraf_GMOS(ad, verbose) elif "F2" in ad.tags: @@ -16,7 +16,7 @@ def pipeline2iraf(ad, verbose=False): else: if verbose: print("Data type not supported, {}".format(ad.filename)) - + return def compat_with_iraf_GMOS(ad, verbose): @@ -26,7 +26,7 @@ def compat_with_iraf_GMOS(ad, verbose): if verbose: print("Add OBSMODE {} to PHU.".format(obsmode)) ad.phu.set('OBSMODE', obsmode, "Observing mode (IMAGE|IFU|MOS|LONGSLIT)") - + # The other keywords required by the Gemini IRAF tasks. if "PREPARED" in ad.tags: if verbose: @@ -105,7 +105,7 @@ def _get_gmos_obsmode(ad): masktype = ad.phu['MASKTYP'] maskname = ad.phu['MASKNAME'] grating = ad.phu['GRATING'] - + if obstype == "BIAS" or obstype == "DARK" or masktype == 0: obsmode = "IMAGE" elif masktype == -1: @@ -131,7 +131,7 @@ def _get_gmos_obsmode(ad): else: print("WARNING: Headers not standard, assuming OBSMODE=IMAGE.") obsmode = "IMAGE" - + if grating == "MIRROR" and obsmode != "IMAGE": print("WARNING: Mask or IFU used without grating, setting OBSMODE to IMAGE.") obsmode = "IMAGE" diff --git a/gempy/gemini/tests/test_gemini_tools_grouping.py b/gempy/gemini/tests/test_gemini_tools_grouping.py index 8005e4ae8c..f342a2f724 100644 --- a/gempy/gemini/tests/test_gemini_tools_grouping.py +++ b/gempy/gemini/tests/test_gemini_tools_grouping.py @@ -219,4 +219,4 @@ def test_abcde_dith(p_f2): @pytest.fixture(scope='module') def p_f2(): - return F2Image([]) \ No newline at end of file + return F2Image([]) diff --git a/gempy/library/config/README b/gempy/library/config/README index 73440c9cd7..8567044f00 100644 --- a/gempy/library/config/README +++ b/gempy/library/config/README @@ -5,4 +5,3 @@ license (as an alternative option to their existing GNU General Public License, mentioned in the source files); see extern_licenses/pex_config. We are hoping to converge with LSST's upstream version once we no longer need support for Python 2. - diff --git a/gempy/library/config/config.py b/gempy/library/config/config.py index 2062b29459..0768ff820c 100644 --- a/gempy/library/config/config.py +++ b/gempy/library/config/config.py @@ -464,9 +464,9 @@ class Config(with_metaclass(ConfigMeta, object)): attributes. Config also emulates a dict of field name: field value - + CJS: Edited these so only the _fields are exposed. _storage retains - items that have been deleted + items that have been deleted """ def __iter__(self): diff --git a/gempy/library/convolution.py b/gempy/library/convolution.py index e03f870ce7..5031a5fb3e 100644 --- a/gempy/library/convolution.py +++ b/gempy/library/convolution.py @@ -1,9 +1,3 @@ -import numpy as np - -from scipy.interpolate import make_interp_spline - -from gempy.library import astrotools as at - """ Various convolution functions should go here. They can have as many parameters as you like, but the "line_spread_function" that is passed must be compatible @@ -11,6 +5,12 @@ wavelength and an array of wavelength offsets """ +import numpy as np + +from scipy.interpolate import make_interp_spline + +from gempy.library import astrotools as at + def gaussian_constant_r(w0, dw, r): """A Gaussian with FWHM = w0 / r""" @@ -53,7 +53,7 @@ def convolve(w, y, func, dw, sampling=1): ------- array: the convolved array, of the same size as x """ - #start = datetime.now() + # start = datetime.now() # Calculate size of kernel in pixels diffs = np.diff(w) if any(diffs <= 0): @@ -65,20 +65,21 @@ def convolve(w, y, func, dw, sampling=1): nw = y.shape[-1] if sampling == 1: # this is a bit quicker for j in range(0, nw): - start = max(j-i, 0) - yout[..., start:j+i+1] = (yout[..., start:j+i+1] + - np.outer(y.T[j], func(w[j], w[start:j+i+1] - w[j]))) + start = max(j - i, 0) + yout[..., start : j + i + 1] = yout[..., start : j + i + 1] + np.outer( + y.T[j], func(w[j], w[start : j + i + 1] - w[j]) + ) else: ww = w[:nw:sampling] yconv = np.zeros((ww.size, kernel_size)) for jj, j in enumerate(range(0, nw, sampling)): - start = max(j-i, 0) - yconv[jj, start-j+i:] = func(w[j], w[start:j+i+1]-w[j]) + start = max(j - i, 0) + yconv[jj, start - j + i :] = func(w[j], w[start : j + i + 1] - w[j]) for j in range(kernel_size): z = y * np.interp(w, ww, yconv[:, j]) - yout[..., j:j+nw-i] += z[..., i:nw+i-j] + yout[..., j : j + nw - i] += z[..., i : nw + i - j] - #print(datetime.now() - start) + # print(datetime.now() - start) return yout diff --git a/gempy/library/fitsverify.py b/gempy/library/fitsverify.py index d8e09d62f7..42dece2c68 100644 --- a/gempy/library/fitsverify.py +++ b/gempy/library/fitsverify.py @@ -40,7 +40,7 @@ def fitsverify(filename): subproc = subprocess.Popen([FITSVERIFY_BIN, filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdoutstring, stderrstring) = subproc.communicate() - + stdoutstring += stderrstring # Check to see if we got a not a fits file situation diff --git a/gempy/library/spectral.py b/gempy/library/spectral.py index 5d6afb0c30..7cab222f37 100644 --- a/gempy/library/spectral.py +++ b/gempy/library/spectral.py @@ -270,4 +270,4 @@ def asSpectrum1D(self): if self.wcs is None: kwargs['spectral_axis'] = self.spectral_axis return Spectrum1D(flux=self.flux, mask=self.mask, uncertainty=self.uncertainty, - wcs=self.wcs, **kwargs) \ No newline at end of file + wcs=self.wcs, **kwargs) diff --git a/gempy/library/telluric_models.py b/gempy/library/telluric_models.py index b597dbb7cc..486748f383 100644 --- a/gempy/library/telluric_models.py +++ b/gempy/library/telluric_models.py @@ -455,4 +455,3 @@ def Planck(w, temperature=10000., scale=1.): return scale * (2 * h * c**2 / (w * u.nm) ** 5 / (np.exp(h * c/(w * u.nm * k_B * temperature * u.K)) - 1)).to(u.W / (u.m ** 2 * u.nm)).value - diff --git a/gempy/library/tests/test_astromodels.py b/gempy/library/tests/test_astromodels.py index 95d8cb746b..8263dada46 100644 --- a/gempy/library/tests/test_astromodels.py +++ b/gempy/library/tests/test_astromodels.py @@ -50,4 +50,3 @@ def test_spline_table_recovery(k): assert m.k == m2.k assert m2.meta["xunit"] is u.nm assert m2.meta["yunit"] is u.electron - diff --git a/gempy/numdisplay/README b/gempy/numdisplay/README index 8516634f1f..0f7f11b094 100644 --- a/gempy/numdisplay/README +++ b/gempy/numdisplay/README @@ -16,4 +16,3 @@ For numpy DS9 display functionality please see the Imexam package: Documentation: http://imexam.readthedocs.io/en/latest/index.html Github: https://github.com/spacetelescope/imexam - diff --git a/gempy/numdisplay/displaydev.py b/gempy/numdisplay/displaydev.py index 60d9c137c5..0beda1c5e9 100644 --- a/gempy/numdisplay/displaydev.py +++ b/gempy/numdisplay/displaydev.py @@ -584,7 +584,7 @@ def _write(self, s): # Python 3 compat # It used to be that in Py2 is wasn't type str, we found cases - # where it is, so now, there's a try block too. Py2 and Py3 + # where it is, so now, there's a try block too. Py2 and Py3 # compat. if isinstance(s, str): try: diff --git a/gempy/numdisplay/ichar.dat b/gempy/numdisplay/ichar.dat index b16cc86c6c..404dac3ee6 100644 --- a/gempy/numdisplay/ichar.dat +++ b/gempy/numdisplay/ichar.dat @@ -1,111 +1,111 @@ -{'C': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 5, 5, 6, 6, 6]), +{'C': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 0, 0, 0, 4, 1, 2, 3])), '(space)': (np.array([], dtype=np.int32), np.array([], dtype=np.int32)), - '#': (np.array([0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6]), + '#': (np.array([0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6]), np.array([1, 3, 1, 3, 0, 1, 2, 3, 4, 1, 3, 0, 1, 2, 3, 4, 1, 3, 1, 3])), '"': (np.array([4, 4, 5, 5, 6, 6]), np.array([1, 3, 1, 3, 1, 3])), - '%': (np.array([0, 0, 1, 1, 1, 2, 3, 4, 5, 5, 5, 6, 6]), + '%': (np.array([0, 0, 1, 1, 1, 2, 3, 4, 5, 5, 5, 6, 6]), np.array([3, 4, 0, 3, 4, 1, 2, 3, 0, 1, 4, 0, 1])), - '$': (np.array([0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6]), + '$': (np.array([0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6]), np.array([2, 0, 1, 2, 3, 2, 4, 1, 2, 3, 0, 2, 1, 2, 3, 4, 2])), "'": (np.array([4, 5, 6]), np.array([2, 2, 2])), - '&': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 6]), + '&': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 6]), np.array([1, 2, 4, 0, 3, 0, 2, 4, 1, 0, 2, 0, 2, 1])), ')': (np.array([0, 1, 2, 3, 4, 5, 6]), np.array([2, 3, 4, 4, 4, 3, 2])), '(': (np.array([0, 1, 2, 3, 4, 5, 6]), np.array([2, 1, 0, 0, 0, 1, 2])), '+': (np.array([1, 2, 3, 3, 3, 3, 3, 4, 5]), np.array([2, 2, 0, 1, 2, 3, 4, 2, 2])), - '*': (np.array([0, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 6]), + '*': (np.array([0, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 6]), np.array([2, 0, 2, 4, 1, 2, 3, 2, 1, 2, 3, 0, 2, 4, 2])), '-': (np.array([3, 3, 3, 3, 3]), np.array([0, 1, 2, 3, 4])), ',': (np.array([0, 1, 2]), np.array([1, 2, 2])), '/': (np.array([1, 2, 3, 4, 5]), np.array([0, 1, 2, 3, 4])), '.': (np.array([0]), np.array([2])), - '1': (np.array([0, 0, 0, 1, 2, 3, 4, 5, 5, 6]), + '1': (np.array([0, 0, 0, 1, 2, 3, 4, 5, 5, 6]), np.array([1, 2, 3, 2, 2, 2, 2, 1, 2, 2])), - '0': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6]), + '0': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 1, 4, 0, 2, 4, 0, 3, 4, 0, 4, 1, 2, 3])), - '3': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 6, 6, 6]), + '3': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 4, 4, 2, 3, 3, 4, 0, 1, 2, 3, 4])), - '2': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6]), + '2': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 4, 1, 2, 3])), - '5': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6]), + '5': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 4, 4, 0, 1, 2, 3, 0, 0, 1, 2, 3, 4])), - '4': (np.array([0, 1, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6]), + '4': (np.array([0, 1, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6]), np.array([3, 3, 3, 0, 1, 2, 3, 4, 1, 3, 2, 3, 3])), - '7': (np.array([0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), + '7': (np.array([0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([1, 1, 1, 2, 3, 4, 0, 1, 2, 3, 4])), - '6': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6]), + '6': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3, 0, 1, 2, 3, 4])), - '9': (np.array([0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6]), + '9': (np.array([0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 1, 2, 3, 4, 0, 4, 0, 4, 1, 2, 3])), - '8': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6]), + '8': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 4, 1, 2, 3, 0, 4, 0, 4, 1, 2, 3])), ';': (np.array([0, 1, 2, 4]), np.array([1, 2, 2, 2])), ':': (np.array([2, 4]), np.array([2, 2])), - '=': (np.array([2, 2, 2, 2, 2, 4, 4, 4, 4, 4]), + '=': (np.array([2, 2, 2, 2, 2, 4, 4, 4, 4, 4]), np.array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4])), '<': (np.array([0, 1, 2, 3, 4, 5, 6]), np.array([3, 2, 1, 0, 1, 2, 3])), '?': (np.array([0, 2, 3, 4, 5, 5, 6, 6, 6]), np.array([2, 2, 2, 3, 0, 4, 1, 2, 3])), '>': (np.array([0, 1, 2, 3, 4, 5, 6]), np.array([1, 2, 3, 4, 3, 2, 1])), - 'A': (np.array([0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6]), + 'A': (np.array([0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6]), np.array([0, 4, 0, 4, 0, 1, 2, 3, 4, 0, 4, 0, 4, 1, 3, 2])), - '@': (np.array([0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6]), + '@': (np.array([0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 4, 0, 0, 2, 3, 0, 2, 3, 4, 0, 2, 4, 0, 4, 1, 2, 3])), - '(unknown)': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6]), + '(unknown)': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 4, 0, 1, 3, 4, 0, 2, 4, 0, 1, 3, 4, 0, 4, 0, 1, 2, 3, 4])), - 'B': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), + 'B': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3])), - 'E': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6, 6, 6]), + 'E': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 0, 0, 1, 2, 3, 0, 0, 0, 1, 2, 3, 4])), - 'D': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), + 'D': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 1, 2, 3])), - 'G': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 6]), + 'G': (np.array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 6]), np.array([1, 2, 3, 4, 0, 4, 0, 3, 4, 0, 0, 0, 1, 2, 3, 4])), - 'F': (np.array([0, 1, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6, 6, 6]), + 'F': (np.array([0, 1, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 1, 2, 3, 4])), - 'I': (np.array([0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 6]), + 'I': (np.array([0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 6]), np.array([1, 2, 3, 2, 2, 2, 2, 2, 1, 2, 3])), - 'H': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6]), + 'H': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6]), np.array([0, 4, 0, 4, 0, 4, 0, 1, 2, 3, 4, 0, 4, 0, 4, 0, 4])), - 'K': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), + 'K': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), np.array([0, 4, 0, 3, 0, 2, 0, 1, 0, 2, 0, 3, 0, 4])), - 'J': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 5, 6]), + 'J': (np.array([0, 0, 0, 1, 1, 2, 3, 4, 5, 6]), np.array([1, 2, 3, 0, 4, 4, 4, 4, 4, 4])), - 'M': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6]), + 'M': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6]), np.array([0, 4, 0, 4, 0, 4, 0, 2, 4, 0, 2, 4, 0, 1, 3, 4, 0, 4])), - 'L': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6]), + 'L': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6]), np.array([0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0])), - 'O': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6]), + 'O': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 1, 2, 3])), - 'N': (np.array([0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6]), + 'N': (np.array([0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6]), np.array([0, 4, 0, 4, 0, 3, 4, 0, 2, 4, 0, 1, 4, 0, 4, 0, 4])), - 'Q': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6]), + 'Q': (np.array([0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 4, 0, 3, 0, 2, 4, 0, 4, 0, 4, 0, 4, 1, 2, 3])), - 'P': (np.array([0, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), + 'P': (np.array([0, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), np.array([0, 0, 0, 0, 1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3])), - 'S': (np.array([0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6]), + 'S': (np.array([0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6]), np.array([1, 2, 3, 0, 4, 4, 1, 2, 3, 0, 0, 4, 1, 2, 3])), '!': (np.array([0, 2, 3, 4, 5, 6]), np.array([2, 2, 2, 2, 2, 2])), - 'U': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), + 'U': (np.array([0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), np.array([1, 2, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4])), - 'T': (np.array([0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), + 'T': (np.array([0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([2, 2, 2, 2, 2, 2, 0, 1, 2, 3, 4])), - 'W': (np.array([0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6]), + 'W': (np.array([0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6]), np.array([0, 4, 0, 1, 3, 4, 0, 2, 4, 0, 2, 4, 0, 4, 0, 4, 0, 4])), - 'V': (np.array([0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), + 'V': (np.array([0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]), np.array([2, 1, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4])), - 'Y': (np.array([0, 1, 2, 3, 4, 4, 5, 5, 6, 6]), + 'Y': (np.array([0, 1, 2, 3, 4, 4, 5, 5, 6, 6]), np.array([2, 2, 2, 2, 1, 3, 0, 4, 0, 4])), - 'X': (np.array([0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6]), + 'X': (np.array([0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6]), np.array([0, 4, 0, 4, 1, 3, 2, 1, 3, 0, 4, 0, 4])), - '[': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6]), + '[': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 4])), - 'Z': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), + 'Z': (np.array([0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4])), - ']': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6]), + ']': (np.array([0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6]), np.array([0, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 1, 2, 3, 4])), '\\': (np.array([1, 2, 3, 4, 5]), np.array([4, 3, 2, 1, 0])), '_': (np.array([0, 0, 0, 0, 0]), np.array([0, 1, 2, 3, 4])), '^': (np.array([2, 2, 3, 3, 4]), np.array([0, 4, 1, 3, 2])), - 'R': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), - np.array([0, 4, 0, 3, 0, 2, 0, 1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3]))} \ No newline at end of file + 'R': (np.array([0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6]), + np.array([0, 4, 0, 3, 0, 2, 0, 1, 2, 3, 0, 4, 0, 4, 0, 1, 2, 3]))} diff --git a/gempy/numdisplay/ichar.py b/gempy/numdisplay/ichar.py index 802c3908c3..1db7fc3f12 100644 --- a/gempy/numdisplay/ichar.py +++ b/gempy/numdisplay/ichar.py @@ -11,7 +11,7 @@ def read_inc(): ic, bits, lines = nextchar(lines) cdict[ic] = bits return cdict - + def nextchar(lines): """read next character data in file, and return numeric array 5x7 pixels""" if not lines[0].startswith('data'): @@ -23,7 +23,7 @@ def nextchar(lines): ic = lines[6][lines[6].find('#')+1:].strip() carr return ic, clist, lines[8:] - + def initichar_old(): '''read the data file (old form) and generate the dict for numdisplay to use''' f = open('ichar_old.dat') @@ -35,9 +35,9 @@ def initichar_old(): for item in clist: alist.append([int(c) for c in item]) alist.reverse() - cdict[key] = np.where(np.array(alist, dtype=np.bool_)) - return cdict - + cdict[key] = np.where(np.array(alist, dtype=np.bool_)) + return cdict + def initichar(): '''read the data file (old form) and generate the dict for numdisplay to use''' filepath = os.path.split(__file__)[0] @@ -45,12 +45,12 @@ def initichar(): fstr = f.read() cdict = eval(fstr) return cdict - + def expandchar(indices, size): '''block replicate a character. This implementation is inefficient but probably won't matter unless many large characters are used''' iy, ix = indices - ox = np.zeros((size, size, len(indices[0]))) + ox = np.zeros((size, size, len(indices[0]))) oy = ox.copy() for i in range(size): for j in range(size): diff --git a/gempy/numdisplay/imconfig.py b/gempy/numdisplay/imconfig.py index 659c645c1f..4daba54598 100644 --- a/gempy/numdisplay/imconfig.py +++ b/gempy/numdisplay/imconfig.py @@ -3,8 +3,8 @@ loadImtoolrc (imtoolrc=None): Locates, then reads in IMTOOLRC configuration file from - system or user-specified location, and returns the - dictionary for reference. + system or user-specified location, and returns the + dictionary for reference. The table gets loaded into a dictionary of the form: {configno:{'nframes':n,'width':nx,'height':ny},...} @@ -15,7 +15,7 @@ print fbtab[34]['width'] 1056 1024 -""" +""" import os,string,sys @@ -26,10 +26,10 @@ def loadImtoolrc(imtoolrc=None): """ Locates, then reads in IMTOOLRC configuration file from - system or user-specified location, and returns the - dictionary for reference. - - """ + system or user-specified location, and returns the + dictionary for reference. + + """ # Find the IMTOOLRC file. Except as noted below, this order # matches what ximtool and ds9 use. _home = os.getenv("HOME") @@ -59,10 +59,10 @@ def loadImtoolrc(imtoolrc=None): # /usr/local/lib/imtoolrc _name_list.append(_default_system_imtoolrc) - + # $iraf/dev/imtoolrc - this is not in ds9 or NOAO's ximtool, # but it is in the AURA Unified Release ximtool. This is the - # one place on your system where you can be certain that + # one place on your system where you can be certain that # imtoolrc is really there. Eventually, we will make a patch # to add this to ds9 and to IRAF. if 'iraf' in os.environ : @@ -82,7 +82,7 @@ def loadImtoolrc(imtoolrc=None): break except OSError as error: pass - + #Parse the file, line by line and populate the dictionary _lines = _fdin.readlines() _fdin.close() @@ -90,7 +90,7 @@ def loadImtoolrc(imtoolrc=None): # Build a dictionary for the entire IMTOOL table # It will be indexed by configno. fbdict = {} - + for line in _lines: # Strip out any blanks/tabs, Python 3 compat line = line.strip() @@ -102,7 +102,7 @@ def loadImtoolrc(imtoolrc=None): configno = int(_lsp[0]) _dict = {'nframes':int(_lsp[1]),'width':int(_lsp[2]),'height':int(_lsp[3]),'name':_lsp[5]} fbdict[configno] = _dict - return fbdict + return fbdict def help(): print(__doc__) diff --git a/gempy/numdisplay/imtoolrc b/gempy/numdisplay/imtoolrc index e3b3faf754..5783927ad1 100644 --- a/gempy/numdisplay/imtoolrc +++ b/gempy/numdisplay/imtoolrc @@ -36,7 +36,7 @@ 25 1 960 1520 # imt25|imt2df9 2D-Frutti 26 1 1232 800 # imt26|imtcryo Cryogenic Camera 27 1 3104 512 # imt27|imtgcam Gold Camera with Ford chip -28 1 976 3040 # imt28|imt2df9x3 2D-Frutti +28 1 976 3040 # imt28|imt2df9x3 2D-Frutti 29 1 800 256 # imt29|imtgong Gong Cache Monitor 30 1 256 800 # imt30|imtgong Gong Cache Monitor 31 1 1240 400 # imt31|imtret Reticon CCD detector format @@ -49,7 +49,7 @@ 38 1 3104 1024 # imt38|imtf3ka|imtf3kb|imtfo3k 39 1 1232 800 # imt39|imtf1ka 40 4 1200 600 # imt40|imtweather - + # Mosaic formats. 41 1 8800 8800 # imt41|imt8800 42 1 4400 4400 # imt42|imt4400 @@ -67,4 +67,3 @@ # (add here) 64 1 3200 3200 # imt64|imt3200 65 1 5000 5000 # imt65|imt5000 - diff --git a/gempy/numdisplay/overlay.py b/gempy/numdisplay/overlay.py index 10b99ed0df..96c62488b4 100644 --- a/gempy/numdisplay/overlay.py +++ b/gempy/numdisplay/overlay.py @@ -1,9 +1,3 @@ -import math -import struct - -import numpy as N -from . import ichar - """The public functions are the following. For point, rectangle, circle and polyline, arguments shown on separate lines are alternate ways to specify the location and size of the figure to be drawn. @@ -30,53 +24,65 @@ C_CORAL, C_MAROON, C_ORANGE, C_KHAKI, C_ORCHID, C_TURQUOISE, C_VIOLET, C_WHEAT """ -C_BLACK = 202 -C_WHITE = 203 -C_RED = 204 -C_GREEN = 205 -C_BLUE = 206 -C_YELLOW = 207 -C_CYAN = 208 -C_MAGENTA = 209 +import math +import struct + +import numpy as N +from . import ichar + + +C_BLACK = 202 +C_WHITE = 203 +C_RED = 204 +C_GREEN = 205 +C_BLUE = 206 +C_YELLOW = 207 +C_CYAN = 208 +C_MAGENTA = 209 # the following all seem to display as magenta when using ds9 -C_CORAL = 210 -C_MAROON = 211 -C_ORANGE = 212 -C_KHAKI = 213 -C_ORCHID = 214 +C_CORAL = 210 +C_MAROON = 211 +C_ORANGE = 212 +C_KHAKI = 213 +C_ORCHID = 214 C_TURQUOISE = 215 -C_VIOLET = 216 -C_WHEAT = 217 +C_VIOLET = 216 +C_WHEAT = 217 # These two are used for saving the displayed values before drawing # an overlay, to allow restoring the display (via undo). global_save = [] -global_byte_buf = N.zeros (1, dtype=N.uint8) +global_byte_buf = N.zeros(1, dtype=N.uint8) # These two are for convenience, so they can take default values rather # than having to be specified for each function call. The radius is # only relevant for circles. Either or both of these can be set via # the set() function. -global_color = N.array ((C_CYAN,), dtype=N.uint8) +global_color = N.array((C_CYAN,), dtype=N.uint8) global_radius = 3 + def _open_display(frame=1): """Open the device.""" from . import getHandle + fd = getHandle() fd.setFrame(frame_num=frame) (tx, ty, fbwidth, fbheight) = fd.readInfo() return (fd, tx, ty, fbwidth, fbheight) + def close_display(frame=1): """Close the device.""" from . import getHandle, close + fd = getHandle() fd.close() close() -def set (color=None, radius=None): + +def set(color=None, radius=None): """Specify the color or the radius. Parameters @@ -96,14 +102,14 @@ def set (color=None, radius=None): global global_color, global_radius if color is not None: - global_color = _checkColor (color) + global_color = _checkColor(color) if radius is not None: if radius < 0: raise ValueError("radius must be non-negative") global_radius = radius -def _transformPoint (x, y, tx, ty): +def _transformPoint(x, y, tx, ty): """Convert image pixel coords to frame buffer coords (IIS convention). Parameters @@ -123,7 +129,8 @@ def _transformPoint (x, y, tx, ty): y = ty - y return (x, y) -def _checkColor (color=None): + +def _checkColor(color=None): """Return a valid color. Parameters @@ -140,10 +147,11 @@ def _checkColor (color=None): elif color < C_BLACK or color > C_WHEAT: raise ValueError("%d is not a valid color" % color) else: - color = N.array ((color,), dtype=N.uint8) + color = N.array((color,), dtype=N.uint8) return color -def _update_save (fd, x, y, list_of_points, last_overlay, undo=True): + +def _update_save(fd, x, y, list_of_points, last_overlay, undo=True): """Save info in local lists list_of_points and last_overlay. @param fd: for reading from image display @@ -163,12 +171,13 @@ def _update_save (fd, x, y, list_of_points, last_overlay, undo=True): global global_byte_buf if undo: if (x, y) not in list_of_points: - value = fd.readData (x, y, global_byte_buf) - value = struct.unpack ('B', value) - list_of_points.append ((x, y)) - last_overlay.append ((x, y, value[0])) + value = fd.readData(x, y, global_byte_buf) + value = struct.unpack("B", value) + list_of_points.append((x, y)) + last_overlay.append((x, y, value[0])) + -def point (**kwargs): +def point(**kwargs): """Draw a point. Parameters @@ -201,7 +210,12 @@ def point (**kwargs): list_of_points = [] allowed_arguments = ["x", "y", "center", "color", "frame", "undo"] - x = None; y = None; center = None; color = None; frame = None; undo = True + x = None + y = None + center = None + color = None + frame = None + undo = True keys = list(kwargs.keys()) if "center" in keys and ("x" in keys or "y" in keys): raise ValueError("Specify either 'center' or 'x' and 'y', but not both.") @@ -220,27 +234,30 @@ def point (**kwargs): elif key == "undo": undo = kwargs["undo"] else: - raise ValueError("Invalid argument to 'point'; use 'x', 'y', 'center', 'color', 'frame' or 'undo'.") + raise ValueError( + "Invalid argument to 'point'; use 'x', 'y', 'center', 'color', 'frame' or 'undo'." + ) if x is None or y is None: raise ValueError("You must specify either 'x' and 'y' or 'center'.") - color = _checkColor (color) + color = _checkColor(color) (fd, tx, ty, fbwidth, fbheight) = _open_display(frame=frame) - (x, y) = _transformPoint (x, y, tx, ty) + (x, y) = _transformPoint(x, y, tx, ty) if x >= 0 and y >= 0 and x < fbwidth and y < fbheight: # save the value that is currently at (x,y) - _update_save (fd, x, y, list_of_points, last_overlay,undo=undo) + _update_save(fd, x, y, list_of_points, last_overlay, undo=undo) # write a new value at (x,y) - fd.writeData (x, y, color) + fd.writeData(x, y, color) - global_save.append (last_overlay) + global_save.append(last_overlay) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() + -def marker (**kwargs): +def marker(**kwargs): """Draw a character. Parameters @@ -274,7 +291,12 @@ def marker (**kwargs): list_of_points = [] allowed_arguments = ["x", "y", "mark", "color", "frame", "size", "undo"] - x = None; y = None; center = None; color = None; frame = None; undo=True + x = None + y = None + center = None + color = None + frame = None + undo = True keys = list(kwargs.keys()) for key in keys: @@ -294,41 +316,44 @@ def marker (**kwargs): elif key == "undo": undo = kwargs["undo"] else: - raise ValueError("Invalid argument to 'point'; use 'x', 'y', 'mark', 'size', 'color', 'frame' or 'undo'.") + raise ValueError( + "Invalid argument to 'point'; use 'x', 'y', 'mark', 'size', 'color', 'frame' or 'undo'." + ) if x is None or y is None: raise ValueError("You must specify 'x' and 'y'.") - color = _checkColor (color) + color = _checkColor(color) (fd, tx, ty, fbwidth, fbheight) = _open_display(frame=frame) - (x, y) = _transformPoint (x, y, tx, ty) + (x, y) = _transformPoint(x, y, tx, ty) idict = ichar.initichar() sprite = idict[mark] # Should have the '+' for center of image sprite = ichar.expandchar(sprite, txsize) - ixsize = 5*txsize - iysize = 7*txsize + ixsize = 5 * txsize + iysize = 7 * txsize # Simple version: just use overlay with a thickness of 1 points = sprite npts = len(points[0]) for i in range(npts): - iy = y - iysize//2 + points[0][i] - ix = x - ixsize//2 + points[1][i] + iy = y - iysize // 2 + points[0][i] + ix = x - ixsize // 2 + points[1][i] if ix >= 0 and iy >= 0 and ix < fbwidth and iy < fbheight: # save the value that is currently at (x,y) - _update_save (fd, ix, iy, list_of_points, last_overlay,undo=undo) + _update_save(fd, ix, iy, list_of_points, last_overlay, undo=undo) # write a new value at (x,y) - fd.writeData (ix, iy, color) + fd.writeData(ix, iy, color) - global_save.append (last_overlay) + global_save.append(last_overlay) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() -def rectangle (**kwargs): + +def rectangle(**kwargs): """Draw a rectangle. Parameters @@ -372,17 +397,35 @@ def rectangle (**kwargs): last_overlay = [] list_of_points = [] - allowed_arguments = ["left", "right", "lower", "upper", - "center", "width", "height", "color", "undo"] - x1 = None; x2 = None; y1 = None; y2 = None - center = None; width = None; height = None; color = None; undo = True - - error_message = "Invalid argument(s) to 'rectangle'; use one of:\n" \ -" left=x1, right=x2, lower=y1, upper=y2, or\n" \ -" center=(x0,y0), width=w, height=h, or\n" \ -" left=x1, lower=y1, width=w, height=h, or\n" \ -" right=x2, upper=y2, width=w, height=h\n" \ -" color and undo may also be specified." + allowed_arguments = [ + "left", + "right", + "lower", + "upper", + "center", + "width", + "height", + "color", + "undo", + ] + x1 = None + x2 = None + y1 = None + y2 = None + center = None + width = None + height = None + color = None + undo = True + + error_message = ( + "Invalid argument(s) to 'rectangle'; use one of:\n" + " left=x1, right=x2, lower=y1, upper=y2, or\n" + " center=(x0,y0), width=w, height=h, or\n" + " left=x1, lower=y1, width=w, height=h, or\n" + " right=x2, upper=y2, width=w, height=h\n" + " color and undo may also be specified." + ) keys = list(kwargs.keys()) if "center" in keys: @@ -405,7 +448,7 @@ def rectangle (**kwargs): if key in allowed_arguments: if key == "center": center = kwargs["center"] - if not isinstance (center, (list, tuple)): + if not isinstance(center, (list, tuple)): raise ValueError(error_message) (x0, y0) = center elif key == "left": @@ -429,68 +472,69 @@ def rectangle (**kwargs): if x1 is None: if center is not None and width is not None: - x1 = int (round (x0 - width/2.)) + x1 = int(round(x0 - width / 2.0)) elif x2 is not None and width is not None: x1 = x2 - width if x2 is None: if center is not None and width is not None: - x2 = int (round (x0 + width/2.)) + x2 = int(round(x0 + width / 2.0)) elif x1 is not None and width is not None: x2 = x1 + width if y1 is None: if center is not None and height is not None: - y1 = int (round (y0 - height/2.)) + y1 = int(round(y0 - height / 2.0)) elif y2 is not None and height is not None: y1 = y2 - height if y2 is None: if center is not None and height is not None: - y2 = int (round (y0 + height/2.)) + y2 = int(round(y0 + height / 2.0)) elif y1 is not None and height is not None: y2 = y1 + height if x1 is None or x2 is None or y1 is None or y2 is None: raise ValueError(error_message) - color = _checkColor (color) + color = _checkColor(color) (fd, tx, ty, fbwidth, fbheight) = _open_display() - (x1, y1) = _transformPoint (x1, y1, tx, ty) - (x2, y2) = _transformPoint (x2, y2, tx, ty) + (x1, y1) = _transformPoint(x1, y1, tx, ty) + (x2, y2) = _transformPoint(x2, y2, tx, ty) if x2 < x1: (x1, x2) = (x2, x1) if y2 < y1: (y1, y2) = (y2, y1) - imin = max (0, x1) - imax = min (x2+1, fbwidth) + imin = max(0, x1) + imax = min(x2 + 1, fbwidth) if y1 >= 0 and y1 < fbheight: - for i in range (imin, imax): - _update_save (fd, i, y1, list_of_points, last_overlay, undo=undo) - fd.writeData (i, y1, color) + for i in range(imin, imax): + _update_save(fd, i, y1, list_of_points, last_overlay, undo=undo) + fd.writeData(i, y1, color) if y2 >= 0 and y2 < fbheight: - for i in range (imin, imax): - _update_save (fd, i, y2, list_of_points, last_overlay, undo=undo) - fd.writeData (i, y2, color) + for i in range(imin, imax): + _update_save(fd, i, y2, list_of_points, last_overlay, undo=undo) + fd.writeData(i, y2, color) - jmin = max (0, y1) - jmax = min (y2+1, fbheight) + jmin = max(0, y1) + jmax = min(y2 + 1, fbheight) if x1 >= 0 and x1 < fbwidth: - for j in range (jmin, jmax): - _update_save (fd, x1, j, list_of_points, last_overlay, undo=undo) - fd.writeData (x1, j, color) + for j in range(jmin, jmax): + _update_save(fd, x1, j, list_of_points, last_overlay, undo=undo) + fd.writeData(x1, j, color) if x2 >= 0 and x2 < fbwidth: - for j in range (jmin, jmax): - _update_save (fd, x2, j, list_of_points, last_overlay, undo=undo) - fd.writeData (x2, j, color) + for j in range(jmin, jmax): + _update_save(fd, x2, j, list_of_points, last_overlay, undo=undo) + fd.writeData(x2, j, color) - global_save.append (last_overlay) + global_save.append(last_overlay) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() -def circle (**kwargs): + +def circle(**kwargs): """Draw a circle. Parameters @@ -525,13 +569,20 @@ def circle (**kwargs): list_of_points = [] allowed_arguments = ["x", "y", "center", "radius", "color", "frame", "undo"] - x0 = None; y0 = None; center = None; - radius = global_radius; color = None; frame = None; undo = True - - error_message = "Invalid argument(s) to 'circle'; use either:\n" \ -" x=x0, y=x0, radius=r, or\n" \ -" center=(x0,y0), radius=r\n" \ -" color, frame and undo may also be specified." + x0 = None + y0 = None + center = None + radius = global_radius + color = None + frame = None + undo = True + + error_message = ( + "Invalid argument(s) to 'circle'; use either:\n" + " x=x0, y=x0, radius=r, or\n" + " center=(x0,y0), radius=r\n" + " color, frame and undo may also be specified." + ) keys = list(kwargs.keys()) if "center" in keys and ("x" in keys or "y" in keys): @@ -540,7 +591,7 @@ def circle (**kwargs): if key in allowed_arguments: if key == "center": center = kwargs["center"] - if not isinstance (center, (list, tuple)): + if not isinstance(center, (list, tuple)): raise ValueError(error_message) (x0, y0) = center elif key == "x": @@ -560,44 +611,45 @@ def circle (**kwargs): if x0 is None or y0 is None or radius is None: raise ValueError(error_message) - color = _checkColor (color) + color = _checkColor(color) (fd, tx, ty, fbwidth, fbheight) = _open_display(frame=frame) - (x0, y0) = _transformPoint (x0, y0, tx, ty) - quarter = int (math.ceil (radius * math.sqrt (0.5))) + (x0, y0) = _transformPoint(x0, y0, tx, ty) + quarter = int(math.ceil(radius * math.sqrt(0.5))) r2 = radius**2 - for dy in range (-quarter, quarter+1): - dx = math.sqrt (r2 - dy**2) - j = int (round (dy + y0)) - i = int (round (x0 - dx)) # left arc + for dy in range(-quarter, quarter + 1): + dx = math.sqrt(r2 - dy**2) + j = int(round(dy + y0)) + i = int(round(x0 - dx)) # left arc if i >= 0 and j >= 0 and i < fbwidth and j < fbheight: - _update_save (fd, i, j, list_of_points, last_overlay, undo = undo) - fd.writeData (i, j, color) - i = int (round (x0 + dx)) # right arc + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) + i = int(round(x0 + dx)) # right arc if i >= 0 and j >= 0 and i < fbwidth and j < fbheight: - _update_save (fd, i, j, list_of_points, last_overlay, undo = undo) - fd.writeData (i, j, color) + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) - for dx in range (-quarter, quarter+1): - dy = math.sqrt (r2 - dx**2) - i = int (round (dx + x0)) - j = int (round (y0 - dy)) # bottom arc + for dx in range(-quarter, quarter + 1): + dy = math.sqrt(r2 - dx**2) + i = int(round(dx + x0)) + j = int(round(y0 - dy)) # bottom arc if i >= 0 and j >= 0 and i < fbwidth and j < fbheight: - _update_save (fd, i, j, list_of_points, last_overlay, undo=undo) - fd.writeData (i, j, color) - j = int (round (y0 + dy)) # top arc + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) + j = int(round(y0 + dy)) # top arc if i >= 0 and j >= 0 and i < fbwidth and j < fbheight: - _update_save (fd, i, j, list_of_points, last_overlay, undo=undo) - fd.writeData (i, j, color) + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) - global_save.append (last_overlay) + global_save.append(last_overlay) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() -def polyline (**kwargs): + +def polyline(**kwargs): """Draw a series of connected line segments. Parameters @@ -629,12 +681,18 @@ def polyline (**kwargs): list_of_points = [] allowed_arguments = ["points", "vertices", "color", "frame", "undo"] - points = None; vertices = None; color = None; frame = None; undo=True - - error_message = "Invalid argument(s) to 'polyline'; use either:\n" \ -" points=[(x1,y1), (x2,y2), (x3,y3), <...>] or\n" \ -" vertices=[(x1,y1), (x2,y2), (x3,y3), <...>]\n" \ -" color, frame, or undo may also be specified." + points = None + vertices = None + color = None + frame = None + undo = True + + error_message = ( + "Invalid argument(s) to 'polyline'; use either:\n" + " points=[(x1,y1), (x2,y2), (x3,y3), <...>] or\n" + " vertices=[(x1,y1), (x2,y2), (x3,y3), <...>]\n" + " color, frame, or undo may also be specified." + ) keys = list(kwargs.keys()) if "points" not in keys and "vertices" not in keys: @@ -643,11 +701,11 @@ def polyline (**kwargs): if key in allowed_arguments: if key == "points": points = kwargs["points"] - if not isinstance (points, (list, tuple)): + if not isinstance(points, (list, tuple)): raise ValueError(error_message) elif key == "vertices": vertices = kwargs["vertices"] - if not isinstance (vertices, (list, tuple)): + if not isinstance(vertices, (list, tuple)): raise ValueError(error_message) elif key == "color": color = kwargs["color"] @@ -666,20 +724,21 @@ def polyline (**kwargs): else: keyword = "points" - color = _checkColor (color) + color = _checkColor(color) (fd, tx, ty, fbwidth, fbheight) = _open_display(frame=frame) - expected_a_tuple = \ - "Each point in %s for polyline must be a two-element list or tuple,\n" \ - "giving the X and Y image pixel coordinates of a vertex." + expected_a_tuple = ( + "Each point in %s for polyline must be a two-element list or tuple,\n" + "giving the X and Y image pixel coordinates of a vertex." + ) first = True for point in points: - if not isinstance (point, (list, tuple)): + if not isinstance(point, (list, tuple)): raise ValueError(expected_a_tuple) (x, y) = point - (x, y) = _transformPoint (x, y, tx, ty) + (x, y) = _transformPoint(x, y, tx, ty) if first: (xlast, ylast) = (x, y) first = False @@ -689,24 +748,24 @@ def polyline (**kwargs): dx = x - xlast dy = y - ylast (x1, x2, y1, y2) = (xlast, x, ylast, y) - if abs (dy) <= abs (dx): + if abs(dy) <= abs(dx): if x >= xlast: step = 1 else: step = -1 slope = float(dy) / float(dx) if step > 0: - imin = max (0, x1) - imax = min (x2+1, fbwidth) + imin = max(0, x1) + imax = min(x2 + 1, fbwidth) else: - imin = min (x1, fbwidth-1) - imax = max (x2-1, -1) - for i in range (imin, imax, step): + imin = min(x1, fbwidth - 1) + imax = max(x2 - 1, -1) + for i in range(imin, imax, step): j = slope * (i - x1) + y1 - j = int (round (j)) + j = int(round(j)) if j >= 0 and j < fbheight: - _update_save (fd, i, j, list_of_points, last_overlay, undo=undo) - fd.writeData (i, j, color) + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) else: if y >= ylast: step = 1 @@ -714,39 +773,40 @@ def polyline (**kwargs): step = -1 slope = float(dx) / float(dy) if step > 0: - jmin = max (0, y1) - jmax = min (y2+1, fbheight) + jmin = max(0, y1) + jmax = min(y2 + 1, fbheight) else: - jmin = min (y1, fbheight-1) - jmax = max (y2-1, -1) - for j in range (jmin, jmax, step): + jmin = min(y1, fbheight - 1) + jmax = max(y2 - 1, -1) + for j in range(jmin, jmax, step): i = slope * (j - y1) + x1 - i = int (round (i)) + i = int(round(i)) if i >= 0 and i < fbwidth: - _update_save (fd, i, j, list_of_points, last_overlay, undo=undo) - fd.writeData (i, j, color) + _update_save(fd, i, j, list_of_points, last_overlay, undo=undo) + fd.writeData(i, j, color) xlast = x ylast = y - global_save.append (last_overlay) + global_save.append(last_overlay) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() + def undo(): """Restore the values before the last overlay was written.""" global global_save, global_byte_buf - if len (global_save) == 0: + if len(global_save) == 0: return (fd, tx, ty, fbwidth, fbheight) = _open_display() last_overlay = global_save.pop() - for (x, y, value) in last_overlay: + for x, y, value in last_overlay: global_byte_buf[0] = value - fd.writeData (x, y, global_byte_buf) + fd.writeData(x, y, global_byte_buf) # The close() method needs to be called by the calling routine. - #fd.close() + # fd.close() diff --git a/gempy/share/man/man1/dataselect.1 b/gempy/share/man/man1/dataselect.1 index 58dcfd07bf..064cc0a084 100644 --- a/gempy/share/man/man1/dataselect.1 +++ b/gempy/share/man/man1/dataselect.1 @@ -15,16 +15,16 @@ inputs [inputs ...] .SH DESCRIPTION .B dataselect -helps users find files matching certain criteria defined by astrodata tags and -expressions involving descriptors. Descriptors are specified to fine tune +helps users find files matching certain criteria defined by astrodata tags and +expressions involving descriptors. Descriptors are specified to fine tune dataselect matches. -As the \fB--tags\fR option indicates, \fBdataselect\fR can find and report data -that match specific tag criteria. For example, a user might want to find all -GMOS image flats under a certain directory. \fBdataselect\fR will locate and +As the \fB--tags\fR option indicates, \fBdataselect\fR can find and report data +that match specific tag criteria. For example, a user might want to find all +GMOS image flats under a certain directory. \fBdataselect\fR will locate and report all datasets that would match the tag set (GMOS, IMAGE, FLAT). -A user may request that a file be written containing all datasets matching +A user may request that a file be written containing all datasets matching the data selection. An output file is specified through the \fB\-o\fR, \fB\-\-output\fR option. Output files are formatted so they may be passed directly to the reduce command line via that applications 'at-file' (@file) @@ -96,5 +96,5 @@ Recommend Anaconda 4.2.0, Astropy 1.2.1. .SH BUGS None known. -.SH SEE ALSO +.SH SEE ALSO .I reduce(1), typewalk(1) diff --git a/gempy/share/man/man1/typewalk.1 b/gempy/share/man/man1/typewalk.1 index daa62ee309..cdc1db6f59 100644 --- a/gempy/share/man/man1/typewalk.1 +++ b/gempy/share/man/man1/typewalk.1 @@ -15,34 +15,34 @@ typewalk .SH DESCRIPTION .B typewalk -examines files in a directory or directory tree and reports the tag set through the -astrodata classification scheme. Running \fBtypewalk\fR on a directory containing +examines files in a directory or directory tree and reports the tag set through the +astrodata classification scheme. Running \fBtypewalk\fR on a directory containing some Gemini datasets will demonstrate what users can expect to see. -By default, \fBtypewalk\fR will recurse all subdirectories under the current -directory. Users may specify an explicit directory with the \fB-d\fR or +By default, \fBtypewalk\fR will recurse all subdirectories under the current +directory. Users may specify an explicit directory with the \fB-d\fR or \fB\-\-dir\fR option; the behavior remains recursive. -Files are selected and reported through a regular expression mask which, -by default, finds all ".fits" and ".FITS" files. Users can change this mask +Files are selected and reported through a regular expression mask which, +by default, finds all ".fits" and ".FITS" files. Users can change this mask with the \fB\-f\fR, \fB\-\-filemask\fR option. -As the \fB--tags\fR option indicates, \fBtypewalk\fR can find and report data -that match specific tag criteria. For example, a user might want to find all -GMOS image flats under a certain directory. \fBtypewalk\fR will locate and +As the \fB--tags\fR option indicates, \fBtypewalk\fR can find and report data +that match specific tag criteria. For example, a user might want to find all +GMOS image flats under a certain directory. \fBtypewalk\fR will locate and report all datasets that would match the tag set (GMOS, IMAGE, FLAT). -A user may request that a file be written containing all datasets matching -astrodata tags qualifiers passed by the \fB--tags\fR option. An output file is +A user may request that a file be written containing all datasets matching +astrodata tags qualifiers passed by the \fB--tags\fR option. An output file is specified through the \fB\-o\fR, \fB\-\-out\fR -option. Output files are formatted so they may be passed directly to the -reduce command line via that applications 'at-file' (@file) facility. +option. Output files are formatted so they may be passed directly to the +reduce command line via that applications 'at-file' (@file) facility. (See the \fIRecipe System Users Manual\fR for further detail.) -Users may select tag matching logic with the \fB\-\-or switch\fR. By default, -qualifying logic is \fBAND\fR, i.e. the logic specifies that `all` tags must be -present (x AND y); \fB\-\-or\fR specifies that ANY tags, enumerated with -\fB\-\-tags\fR, may be present (x OR y). \fB\-\-or\fR is only effective when the +Users may select tag matching logic with the \fB\-\-or switch\fR. By default, +qualifying logic is \fBAND\fR, i.e. the logic specifies that `all` tags must be +present (x AND y); \fB\-\-or\fR specifies that ANY tags, enumerated with +\fB\-\-tags\fR, may be present (x OR y). \fB\-\-or\fR is only effective when the \fB\-\-tags\fR option is specified with more than one tag. .SH OPTIONS @@ -51,7 +51,7 @@ present (x AND y); \fB\-\-or\fR specifies that ANY tags, enumerated with show the \fBtypewalk\fR help message and exit .TP \fB\-b\fR BATCHNUM, \fB\-\-batch\fR BATCHNUM -In shallow walk mode, number of files to process at a time in the current +In shallow walk mode, number of files to process at a time in the current directory. Controls behavior in large data directories. Default is \fB100\fR. .TP \fB\-d\fR TWDIR, \fB\-\-dir\fR TWDIR @@ -64,16 +64,16 @@ Show files matching regex . Default is all .fits and .FITS files. Do not recurse subdirectories. .TP \fB\-\-or\fR -Use OR logic on 'tags' criteria. If not specified, matching logic is AND +Use OR logic on 'tags' criteria. If not specified, matching logic is AND (See \fB\-\-tags\fR). Eg., \fB\-\-or \-\-tags\fR -SOUTH GMOS IMAGE will report datasets that are one of SOUTH \fBOR\fR GMOS +SOUTH GMOS IMAGE will report datasets that are one of SOUTH \fBOR\fR GMOS \fBOR\fR IMAGE. .TP \fB\-o\fR OUTFILE, \fB\-\-out\fR OUTFILE Write reported files to this file. Effective only with \fB\-\-tags\fR option. .TP \fB\-\-tags\fR TAGS [TAGS ...] -Find datasets that match only these tag criteria. Eg., \fB\-\-tags\fR SOUTH +Find datasets that match only these tag criteria. Eg., \fB\-\-tags\fR SOUTH GMOS IMAGE will report datasets that are all tagged \fBSOUTH\fR and \fBGMOS\fR and \fBIMAGE\fR. .TP @@ -86,5 +86,5 @@ Recommend Anaconda 4.2.0, Astropy 1.2.1., astrodata.__version__ '9999' .SH BUGS None known. -.SH SEE ALSO +.SH SEE ALSO .I reduce(1) diff --git a/gempy/utils/errors.py b/gempy/utils/errors.py index 53324da624..b5b0cfbef1 100644 --- a/gempy/utils/errors.py +++ b/gempy/utils/errors.py @@ -1,2 +1,2 @@ class ConvergenceError(RuntimeError): - pass \ No newline at end of file + pass diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000000..3ae6178df7 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,219 @@ +"""Automations that run in isolated python environments. + +To see a list of available commands, run:: + + nox -l + +It is expected that you have ``nox`` installed on your machine. Other than +that, all other installation for dependencies is covered by the automations in +this file. + +Modifying or adding to the noxfile +================================== + +If you find a good use case for automation, great! Before adding it to this +already large file, please consider the following questions about the scope of +this file: + +1. Is your automation meant to perform setup or teardown for a test? If so, try to do it in pytest. + + + If you are working with something like ``devpi``, where it's important that + some packages be isolated, then this is the appropriate place for a change. + +2. Are you trying to provision a resource, such as asking for more workers to + split up automation tasks? If so, use something else. + + + ``nox`` is meant for automations at the scope of a single Python binary. + This means that if you want more computing power, you need to go above + ``nox``. + +3. Are you planning to generate test files, or run test scripts? If so, use + ``pytest`` and in one of the relevant ``./*/tests/`` directories. + +4. Is this code that will not need to be modified often? The main reason this + file is allowed to be this big is that, ideally, one should not be modifying + nox sessions regularly. If the behavior you require will need manual + editing, rethink it or put it elsewhere as a script, please. + +For more information, see the DRAGONS developer documentation. +""" + +import tomllib +from pathlib import Path +import re + +import nox + + +def create_venv(session: nox.Session) -> Path: + """Create a new virtual environment using a running session.""" + default_venv_path = Path("venv/") + default_venv_prompt = "dragons_venv" + + venv_args = ["--prompt", default_venv_prompt, "--clear", "--upgrade-deps"] + + session.run("python", "-m", "venv", default_venv_path, *venv_args) + + assert default_venv_path.exists() + + return default_venv_path + + +def assert_python_version( + session: nox.Session, + target_python: Path, + version: tuple[int, ...], + *, + lowest_version: bool = True, +): + """Assert that the python version of the target python matches a given version. + + The tuple should be te major, minor, and patch version. Any omitted values + or values set to < 0 will act as wildcard. + """ + + python_version_str = session.run( + str(target_python), "--version", silent=True, external=True + ) + + version_match = re.match( + r"Python\s* ([0-9]+)\.([0-9]+)\.([0-9]+)", python_version_str + ) + + assert version_match, f"Didn't get version: {python_version_str}." + + major, minor, patch = (int(version_match.group(n)) for n in (1, 2, 3)) + + for expected, found in zip([major, minor, patch], version): + if found < 0: + continue + + valid_version = expected == found if not lowest_version else expected >= found + assert ( + valid_version + ), f"Mismatched versions: {(major, minor, patch)} != {version}" + + +def install_dependencies( + session: nox.Session, + *, + target_python: Path | None = None, +): + """Install dependencies using a running session.""" + if target_python is None: + target_python = Path(session.virtualenv.bin) / "python" + + assert_python_version(session, target_python, (3, 12)) + + # Install development dependencies from pyproject.toml + # TODO: This must be changed when the dependency manager is changed. + pyproject_toml_path = Path("pyproject.toml") + with pyproject_toml_path.open("rb") as infile: + pyproject_toml_contents = tomllib.load(infile) + + dev_dependencies = pyproject_toml_contents["development"]["dependencies"] + + session.run( + str(target_python), + "-m", + "pip", + "install", + "-e", + ".", + external=True, + ) + + session.run( + str(target_python), + "-m", + "pip", + "install", + *dev_dependencies, + external=True, + ) + + +@nox.session(venv_backend="venv") +def devenv(session: nox.Session): + """Generate a new venv development environment.""" + venv_path = create_venv(session) + venv_python = venv_path / "bin" / "python" + install_dependencies(session, target_python=venv_python) + session.notify("install_pre_commit_hooks") + + +@nox.session(venv_backend="none") +def devconda(session: nox.Session): + """Generate a new conda development environment.""" + extra_args = ["--force", "-y"] + channels = ["--channel", "conda-forge"] + + if all(name_flag not in session.posargs for name_flag in ["-n", "--name"]): + env_name = "dragons_dev" + extra_args.extend(["--name", env_name]) + + else: + name_flag_index = [c in ["-n", "--name"] for c in session.posargs].index(True) + env_name = session.posargs[name_flag_index + 1] + + if any(channel_arg in session.posargs for channel_arg in ["-c", "--channel"]): + channels = [] + + if all("python" not in arg for arg in session.posargs): + extra_args.extend(["python=3.12"]) + + session.run( + "conda", "create", *extra_args, *channels, *session.posargs, external=True + ) + + result = session.run("conda", "env", "list", silent=True, external=True) + + env_re = re.compile(r"^({env})\s+(.*)$".format(env=env_name), re.MULTILINE) + + python_path = Path(env_re.search(result).group(2)) / "bin" / "python" + + install_dependencies(session, target_python=python_path) + + session.notify("install_pre_commit_hooks") + + +@nox.session(venv_backend="none") +def remove_devconda_environment(session: nox.Session): + """Remove existing dragons_dev environment generated by devconda session.""" + session.run( + "conda", "remove", "--name", "dragons_dev", "--all", "-y", external=True + ) + + +@nox.session +def install_pre_commit_hooks(session: nox.Session): + """Install pre-commit hooks; happens after devshell/devconda runs.""" + session.install("pre-commit") + + session.run("pre-commit", "install") + + +@nox.session +def run_dev_tests(session: nox.Session): + """Run the tests for this file, developer environments, etc.""" + session.install("pytest") + + session.run("pytest", "tests/", *session.posargs) + + +@nox.session +def lint(session: nox.Session): + """Runs formattiing/linting, using pre-commit. + + Note: these will already be run before a commit is accepted. + + Positional arguments that pre-commit accepts will be passed to pre-commit. + For example, to run over all files, use + + .. code-block:: terminal + + nox -s lint -- --all + """ + session.install("pre-commit") + + session.run("pre-commit", "run", *session.posargs) diff --git a/ops_versions.txt b/ops_versions.txt index e38e450597..5a193b0d4f 100644 --- a/ops_versions.txt +++ b/ops_versions.txt @@ -8,4 +8,3 @@ gsops v2.0.11 # more reliably using the same package that was generated when those revisions # were originally installed as gnops / gsops -- or one can look at this file's # history and check out the corresponding commit directly, if done manually. - diff --git a/pyproject.toml b/pyproject.toml index d8684fb157..2dbe3f30f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,10 @@ [build-system] requires = ["setuptools", "wheel", "cython"] build-backend = 'setuptools.build_meta' + +[development] +dependencies = [ + "pytest", + "git+https://github.com/GeminiDRSoftware/GeminiObsDB.git@release/1.0.x", + "git+https://github.com/GeminiDRSoftware/GeminiCalMgr.git@release/1.1.x", +] diff --git a/recipe_system/adcc/client/adcc_faceplate/adktool.html b/recipe_system/adcc/client/adcc_faceplate/adktool.html index 37f5797096..0ff9b15be4 100644 --- a/recipe_system/adcc/client/adcc_faceplate/adktool.html +++ b/recipe_system/adcc/client/adcc_faceplate/adktool.html @@ -32,7 +32,7 @@ filename: link } }); - + } function aceditFile(link,lnum) @@ -41,7 +41,7 @@ { lnum = 0; } - + var ddict = { lnum:lnum, filename:link }; @@ -55,7 +55,7 @@ acewin.moveTo(200,200); //acewin.resizeTo(600,500); } - + else { $.ajax({url:"/acedit", @@ -73,7 +73,7 @@ acewin.focus(); } }); - } + } } editFile = aceditFile; @@ -83,7 +83,7 @@ $($(".pdk_focus")[0]).empty(); }); } - + function getKeys(obj) { var keys = [] @@ -95,10 +95,10 @@ return keys; } localClient = %(local_client)s; - + - +
Astrodata 0.2 Manual: @@ -115,7 +115,7 @@ ) ( Concepts ) -
+
%(accordian_div)s %(select_options)s @@ -188,7 +188,7 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write("
"); }document.write("
");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/changes-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/changes-txt.html index b7bc13c03a..03c619ff91 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/changes-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/changes-txt.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write("
"); }document.write("
");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/gpl-2-0-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/gpl-2-0-txt.html index b6d79c039a..20d02d9665 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/gpl-2-0-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/gpl-2-0-txt.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotCssStyling-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotCssStyling-txt.html index f4e082b920..ff86e5db06 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotCssStyling-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotCssStyling-txt.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotOptions-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotOptions-txt.html index a80dadb50e..354e6cb790 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotOptions-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqPlotOptions-txt.html @@ -289,4 +289,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisLabelRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisLabelRenderer-js.html index 878070045d..790729c465 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisLabelRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisLabelRenderer-js.html @@ -44,4 +44,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisTickRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisTickRenderer-js.html index 0867294575..cba6b94315 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisTickRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-axisTickRenderer-js.html @@ -68,4 +68,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-canvasGridRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-canvasGridRenderer-js.html index 64640cce8e..ef9997b71a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-canvasGridRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-canvasGridRenderer-js.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-core-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-core-js.html index cf1c4b9f2a..616c619017 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-core-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-core-js.html @@ -382,4 +382,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-divTitleRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-divTitleRenderer-js.html index bda0f4cd4f..f23edb7686 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-divTitleRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-divTitleRenderer-js.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-lineRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-lineRenderer-js.html index f52d7aba94..a9ff4312fd 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-lineRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-lineRenderer-js.html @@ -66,4 +66,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-linearAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-linearAxisRenderer-js.html index 3b492541a9..a72b086253 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-linearAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-linearAxisRenderer-js.html @@ -58,4 +58,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-markerRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-markerRenderer-js.html index 2d14926bc2..fd7b7a30a1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-markerRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-markerRenderer-js.html @@ -62,4 +62,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shadowRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shadowRenderer-js.html index fedf0037bd..e045740395 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shadowRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shadowRenderer-js.html @@ -58,4 +58,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shapeRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shapeRenderer-js.html index d913b1a7f0..ad2d06dc3c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shapeRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-shapeRenderer-js.html @@ -62,4 +62,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-themeEngine-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-themeEngine-js.html index a614510567..2ec1af0f81 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-themeEngine-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-themeEngine-js.html @@ -188,4 +188,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-toImage-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-toImage-js.html index eb1db2d938..2e14859751 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-toImage-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/jqplot-toImage-js.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/optionsTutorial-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/optionsTutorial-txt.html index 3be8b56065..4da8b9bb6b 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/optionsTutorial-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/optionsTutorial-txt.html @@ -117,4 +117,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html index 3ece1db9a9..15be4b2efe 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html @@ -42,4 +42,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-barRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-barRenderer-js.html index a0828dd126..6938ad1c89 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-barRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-barRenderer-js.html @@ -66,4 +66,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html index 0af8dec62f..9001b2a67f 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html @@ -50,4 +50,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html index d69711b4e6..82bb4a4bc0 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html @@ -68,4 +68,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html index 27d4846c65..99f839d5ef 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html @@ -60,4 +60,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html index f21c49186d..1438506e43 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html @@ -76,4 +76,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasOverlay-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasOverlay-js.html index e77c4c81c6..e08c13c588 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasOverlay-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-canvasOverlay-js.html @@ -110,4 +110,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html index 1076a7a1dd..4b3d74acc9 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html @@ -43,4 +43,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ciParser-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ciParser-js.html index 0e08b3b6bc..f7a1cc0918 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ciParser-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ciParser-js.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-cursor-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-cursor-js.html index e118c3d36f..1e36f36f43 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-cursor-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-cursor-js.html @@ -90,4 +90,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html index 814f125aa2..002d94f2a9 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html @@ -98,4 +98,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html index 32969db745..5bbfff0c3c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html @@ -95,4 +95,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dragable-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dragable-js.html index eda7682281..3b16e7593e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dragable-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-dragable-js.html @@ -42,4 +42,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html index 0e61933f31..7f86f55624 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html @@ -46,4 +46,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html index 05c55d4ba1..16337731e8 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html @@ -84,4 +84,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-highlighter-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-highlighter-js.html index d2da937d3f..2867640bfe 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-highlighter-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-highlighter-js.html @@ -77,4 +77,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html index 8a5348f98a..25c57f752f 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html @@ -44,4 +44,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html index 3084d4a463..7b0766e9dd 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html @@ -46,4 +46,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html index e2705f59ab..bd22f6f12a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html @@ -59,4 +59,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html index 9d3aa68f7b..37aa878e9d 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html @@ -100,4 +100,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html index e129b96378..75167f05b5 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html @@ -62,4 +62,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html index aeae10e448..013d8feb47 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html @@ -90,4 +90,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pointLabels-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pointLabels-js.html index 97fbe79758..e0214c4e86 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pointLabels-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pointLabels-js.html @@ -69,4 +69,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidAxisRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidAxisRenderer-js.html index d0ad8a95f8..8e41c05090 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidAxisRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidAxisRenderer-js.html @@ -46,4 +46,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidGridRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidGridRenderer-js.html index 9b14c5ef97..2bad5fe1ec 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidGridRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidGridRenderer-js.html @@ -36,4 +36,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidRenderer-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidRenderer-js.html index e5b9bad93b..2064bd6f07 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidRenderer-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-pyramidRenderer-js.html @@ -50,4 +50,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-trendline-js.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-trendline-js.html index 4ef698c4ec..c261b8711c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-trendline-js.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/plugins/jqplot-trendline-js.html @@ -64,4 +64,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/usage-txt.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/usage-txt.html index 85e724b3ff..ee5f0c4395 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/usage-txt.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/files/usage-txt.html @@ -55,4 +55,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index.html index 295fd4a6fa..41b75c3b9a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index.html @@ -1 +1 @@ - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Classes.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Classes.html index adb55b1d21..f1bb034efd 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Classes.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Classes.html @@ -67,4 +67,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Files.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Files.html index 93258a017d..4b916b9cc1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Files.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Files.html @@ -31,4 +31,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Functions.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Functions.html index e55ee282eb..c8eddbf341 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Functions.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Functions.html @@ -63,4 +63,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General.html index b689ef3a7f..6c0ba60234 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General.html @@ -39,4 +39,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General2.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General2.html index 9c3162131f..05954020b6 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General2.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General2.html @@ -39,4 +39,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General3.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General3.html index 1f929be03d..b56841d52b 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General3.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General3.html @@ -39,4 +39,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General4.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General4.html index 88b3caed4e..4253ba8f20 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General4.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General4.html @@ -43,4 +43,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General5.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General5.html index 4fc52cc00d..5071e7d275 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General5.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General5.html @@ -43,4 +43,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General6.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General6.html index 0589a43ef6..cb4916ed6b 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General6.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General6.html @@ -31,4 +31,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General7.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General7.html index 576b7a09d7..a80e4c9372 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General7.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/General7.html @@ -55,4 +55,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Hooks.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Hooks.html index 59ccfc8d4b..746d15a9a0 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Hooks.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Hooks.html @@ -43,4 +43,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties.html index d4f4dde54a..8cd5efbb45 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties.html @@ -39,4 +39,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties2.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties2.html index a8780d1064..5ccc4a3297 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties2.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties2.html @@ -39,4 +39,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties3.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties3.html index c5efc4c476..369b4ead16 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties3.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties3.html @@ -43,4 +43,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties4.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties4.html index e5e1d4eccf..ec528967e4 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties4.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties4.html @@ -47,4 +47,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties5.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties5.html index ae419f32b2..b15142d1f6 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties5.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties5.html @@ -31,4 +31,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties6.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties6.html index e2e7e92074..71ea34fa3e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties6.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/index/Properties6.html @@ -55,4 +55,4 @@ \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/main.js b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/main.js index efcdca9669..e057a0322a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/main.js +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/main.js @@ -833,4 +833,3 @@ function SearchResults(name, mode) return true; }; }; - diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/searchdata.js b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/searchdata.js index 691a4e6c3b..ccd7490bd4 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/searchdata.js +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/javascript/searchdata.js @@ -179,4 +179,4 @@ var indexSectionsWithContent = { "Y": true, "Z": true } - } \ No newline at end of file + } diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesA.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesA.html index 2f4dab5779..8beeb3b554 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesA.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesA.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesD.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesD.html index 135eeb6a24..79f33fc96a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesD.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesD.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesG.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesG.html index 36f121b0ac..394436d7e8 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesG.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesG.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesH.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesH.html index c411b320f9..c3f39d3abb 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesH.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesH.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesJ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesJ.html index b22500983c..43ed9d63c1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesJ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesJ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesL.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesL.html index 6a93b819d9..85ae2174fc 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesL.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesL.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesS.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesS.html index 53823e7dc0..995e533199 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesS.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesS.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesSymbols.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesSymbols.html index 53396614d8..4cc894248a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesSymbols.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesSymbols.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesT.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesT.html index 782f11db17..f30002cf47 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesT.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesT.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesV.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesV.html index 62d2e7cb2f..e469be7aa1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesV.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/ClassesV.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FilesJ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FilesJ.html index 3c66afa021..2dc047d74d 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FilesJ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FilesJ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsC.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsC.html index 40135d3a6c..f0a81ebd9e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsC.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsC.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsD.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsD.html index 2c2bed5db5..e5d8de8c0b 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsD.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsD.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsG.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsG.html index 561eabc01b..e8ffea2652 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsG.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsG.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsI.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsI.html index 4509098359..6ba8d7fa87 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsI.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsI.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsM.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsM.html index 0b6446cb9f..39def9e5ff 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsM.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsM.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsN.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsN.html index 7cc60bfeca..3027771073 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsN.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsN.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsR.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsR.html index fac0dbcc8c..216aeb0a07 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsR.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsR.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsS.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsS.html index bab767cf10..25883b0346 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsS.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsS.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsZ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsZ.html index 4b364e9830..44d73ca344 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsZ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/FunctionsZ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralA.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralA.html index f62a230b93..2664f5588c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralA.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralA.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralB.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralB.html index 06a97030ea..b4d1265efa 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralB.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralB.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralC.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralC.html index 20bb76ec9f..e147693332 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralC.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralC.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralD.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralD.html index 3c759ce2d4..4537ad26b7 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralD.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralD.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralE.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralE.html index 5f3a9205ad..21080c9e8d 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralE.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralE.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralF.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralF.html index c1af77c88d..31b1618361 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralF.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralF.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralG.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralG.html index 092df15051..1cd87feef7 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralG.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralG.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralH.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralH.html index ff6d0676d1..7f97502f7a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralH.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralH.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralI.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralI.html index 7873ee4089..9d9e88960e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralI.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralI.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralJ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralJ.html index fe560304aa..7598394595 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralJ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralJ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralL.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralL.html index 0fc1289688..bdfc4d983e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralL.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralL.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralM.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralM.html index 53789facf5..71ebbea693 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralM.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralM.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralN.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralN.html index d282c7883a..a2d5b63589 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralN.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralN.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralO.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralO.html index bac068d9c6..49de45f500 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralO.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralO.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralP.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralP.html index 25e44059dd..0e84f2fefc 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralP.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralP.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralR.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralR.html index 830dac937b..dce6a4e6b1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralR.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralR.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralS.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralS.html index 1980bbeeed..bb2a7b8064 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralS.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralS.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralSymbols.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralSymbols.html index 53396614d8..4cc894248a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralSymbols.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralSymbols.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralT.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralT.html index 20f4ead982..a43a2bebe8 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralT.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralT.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralU.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralU.html index 31bcbf1227..f44a979e58 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralU.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralU.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralV.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralV.html index 51af427ec9..8c0dead4c4 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralV.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralV.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralW.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralW.html index ce589762e5..08b3147e97 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralW.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralW.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralX.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralX.html index 443e98c483..aa307c5167 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralX.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralX.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralY.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralY.html index 8f6ea7a621..efaea4e8c1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralY.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralY.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralZ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralZ.html index 1e8baa0808..ebeefaa479 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralZ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/GeneralZ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksA.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksA.html index 82b17cda67..765d7510d1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksA.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksA.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksE.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksE.html index fe464932ec..6fe4d7fe31 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksE.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksE.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksJ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksJ.html index f94e003683..8bff601349 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksJ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksJ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksP.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksP.html index eb28c716c0..577ca7107f 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksP.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/HooksP.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/NoResults.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/NoResults.html index d2459c05e1..680edd8e50 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/NoResults.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/NoResults.html @@ -12,4 +12,4 @@
No Matches
\ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesA.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesA.html index 386d9e8994..4cc52e2d3e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesA.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesA.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesB.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesB.html index a6cef468db..2d54a3de61 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesB.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesB.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesC.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesC.html index a30bf3da31..7c75a247d8 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesC.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesC.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesD.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesD.html index e0380eae7d..99426a8d8e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesD.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesD.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesE.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesE.html index 5bb760ff99..dbd3735215 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesE.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesE.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesF.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesF.html index cf90670b88..9dd3fbdf2e 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesF.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesF.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesG.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesG.html index 3a7573d17c..8e36c9d076 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesG.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesG.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesH.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesH.html index ca8f802e41..e09366475d 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesH.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesH.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesI.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesI.html index 289adc8d81..6e945642d5 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesI.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesI.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesL.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesL.html index 2465230d84..095d96059a 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesL.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesL.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesM.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesM.html index 80a53cbf18..a79645b829 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesM.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesM.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesN.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesN.html index c601883027..5e476529c6 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesN.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesN.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesO.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesO.html index e3e5f594af..49419e8422 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesO.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesO.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesP.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesP.html index f1a4b167ab..7dbd99844b 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesP.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesP.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesR.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesR.html index a462e09912..8e7d7f75c1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesR.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesR.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesS.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesS.html index e347d720ef..e3be25bd67 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesS.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesS.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesT.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesT.html index bc107de456..e0683c2a97 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesT.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesT.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesU.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesU.html index df97c192a6..3eb9c1b32f 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesU.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesU.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesV.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesV.html index ebd8349ebc..d4312ab80f 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesV.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesV.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesW.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesW.html index ce589762e5..08b3147e97 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesW.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesW.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesX.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesX.html index 443e98c483..aa307c5167 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesX.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesX.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesY.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesY.html index 8f6ea7a621..efaea4e8c1 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesY.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesY.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesZ.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesZ.html index 9da6ccfc7d..672bc2897c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesZ.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/search/PropertiesZ.html @@ -17,4 +17,4 @@ var searchResults = new SearchResults("searchResults", "HTML"); searchResults.Search(); --> \ No newline at end of file +if (browserType) {if (browserVer) {document.write(""); }document.write("");}// --> diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/1.css b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/1.css index 17e9cbc30f..df2a88d4f3 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/1.css +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/1.css @@ -764,4 +764,3 @@ blockquote { #Footer a:hover, #Footer a:visited { color: #989898 } #Footer a:active { color: #A00000 } - diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/2.css b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/2.css index 12117d4e6c..18f6c45726 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/2.css +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/docs/styles/2.css @@ -155,7 +155,7 @@ a.nav, a.nav:link { text-decoration: none; font-family: Tahoma, "Helvetica Neue", "Trebuchet MS", Verdana, Arial, sans-serif; font-size: 16px; - color: #aaaaaa; + color: #aaaaaa; margin-right: 11px; } @@ -170,5 +170,3 @@ a.nav:active { border: 0px; color: #E0771C; } - - diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/area.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/area.html index 139ed5319b..9c5d014f84 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/area.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/area.html @@ -2,18 +2,18 @@ - + Filled (Area) Charts - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bezierCurve.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bezierCurve.html index 2c5a61409c..7ae1875160 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bezierCurve.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bezierCurve.html @@ -2,18 +2,18 @@ - + Bezier Curve Plots - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bubble-plots.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bubble-plots.html index 7733804dac..6ed96ae6b4 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bubble-plots.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/bubble-plots.html @@ -2,18 +2,18 @@ - + Bubble Plots - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick-charts.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick-charts.html index 00475f6a08..67c5648a26 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick-charts.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick-charts.html @@ -2,18 +2,18 @@ - + Open Hi Low Close and Candlestick Charts - + - - + + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick.html index d2da3dd72a..8ad421e2e8 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/candlestick.html @@ -2,18 +2,18 @@ - + Candlestick and Open Hi Low Close charts - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/dashedLines.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/dashedLines.html index 13aca5a5e2..5ff82c55f2 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/dashedLines.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/dashedLines.html @@ -2,18 +2,18 @@ - + Dashed Lines with Smoothing - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/index.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/index.html index 7d47fb7696..65a9b1393c 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/index.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/index.html @@ -2,14 +2,14 @@ - + jqPlot Sample Charts - + diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css index cd66d53778..09249cf385 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css @@ -66,7 +66,7 @@ * * http://docs.jquery.com/UI/Autocomplete#theming */ -.ui-autocomplete { position: absolute; cursor: default; } +.ui-autocomplete { position: absolute; cursor: default; } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ @@ -82,8 +82,8 @@ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; } @@ -129,7 +129,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } @@ -186,7 +186,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad */ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } @@ -609,4 +609,4 @@ body .ui-tooltip { border-width:2px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file +.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css index 56a9be11a8..f5fae11066 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css @@ -7,4 +7,4 @@ * * http://docs.jquery.com/UI/Theming/API */ -.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-heading{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-heading{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none;}.ui-menu .ui-menu{margin-top:-3px;position:absolute;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal;}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-menu li.ui-state-disabled{font-weight:normal;padding:.0em .4em;margin:.4em 0 .2em;line-height:1.5;}.ui-menu-icons{position:relative;}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em;}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em;}.ui-menu .ui-menu-icon{position:static;float:right;}.ui-menubar{list-style:none;margin:0;padding-left:0;}.ui-menubar-item{float:left;}.ui-menubar .ui-button{float:left;font-weight:normal;border-top-width:0!important;border-bottom-width:0!important;margin:0;outline:none;}.ui-menubar .ui-menubar-link{border-right:1px dashed transparent;border-left:1px dashed transparent;}.ui-menubar .ui-menu{width:200px;position:absolute;z-index:9999;}.ui-progressbar{height:2em;text-align:left;overflow:hidden;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle;}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px;}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;z-index:100;text-align:center;vertical-align:middle;position:absolute;cursor:default;display:block;overflow:hidden;right:0;}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none;}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0;}.ui-spinner-up{top:0;}.ui-spinner-down{bottom:0;}span.ui-spinner{background:none;}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tooltip{padding:8px;position:absolute;z-index:9999;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}* html .ui-tooltip{background-image:none;}body .ui-tooltip{border-width:2px;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} \ No newline at end of file +.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-heading{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-heading{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none;}.ui-menu .ui-menu{margin-top:-3px;position:absolute;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal;}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-menu li.ui-state-disabled{font-weight:normal;padding:.0em .4em;margin:.4em 0 .2em;line-height:1.5;}.ui-menu-icons{position:relative;}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em;}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em;}.ui-menu .ui-menu-icon{position:static;float:right;}.ui-menubar{list-style:none;margin:0;padding-left:0;}.ui-menubar-item{float:left;}.ui-menubar .ui-button{float:left;font-weight:normal;border-top-width:0!important;border-bottom-width:0!important;margin:0;outline:none;}.ui-menubar .ui-menubar-link{border-right:1px dashed transparent;border-left:1px dashed transparent;}.ui-menubar .ui-menu{width:200px;position:absolute;z-index:9999;}.ui-progressbar{height:2em;text-align:left;overflow:hidden;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle;}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px;}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;z-index:100;text-align:center;vertical-align:middle;position:absolute;cursor:default;display:block;overflow:hidden;right:0;}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none;}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0;}.ui-spinner-up{top:0;}.ui-spinner-down{bottom:0;}span.ui-spinner{background:none;}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tooltip{padding:8px;position:absolute;z-index:9999;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}* html .ui-tooltip{background-image:none;}body .ui-tooltip{border-width:2px;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jsondata.txt b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jsondata.txt index b6a0cffac9..5b7bff7a86 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jsondata.txt +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/jsondata.txt @@ -1 +1 @@ -[[1, 3, 2, 4, 6, 9]] \ No newline at end of file +[[1, 3, 2, 4, 6, 9]] diff --git a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/kcp_area.html b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/kcp_area.html index da43d47e78..f9853ef8a6 100644 --- a/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/kcp_area.html +++ b/recipe_system/adcc/client/adcc_faceplate/js/jqplot/examples/kcp_area.html @@ -2,18 +2,18 @@ - + Area Chart - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/candlestick.html b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/candlestick.html index d2da3dd72a..8ad421e2e8 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/candlestick.html +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/candlestick.html @@ -2,18 +2,18 @@ - + Candlestick and Open Hi Low Close charts - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/dashedLines.html b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/dashedLines.html index 13aca5a5e2..5ff82c55f2 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/dashedLines.html +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/dashedLines.html @@ -2,18 +2,18 @@ - + Dashed Lines with Smoothing - + - - + + - \ No newline at end of file + diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/index.html b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/index.html index 7d47fb7696..65a9b1393c 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/index.html +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/index.html @@ -2,14 +2,14 @@ - + jqPlot Sample Charts - + diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css index cd66d53778..09249cf385 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.css @@ -66,7 +66,7 @@ * * http://docs.jquery.com/UI/Autocomplete#theming */ -.ui-autocomplete { position: absolute; cursor: default; } +.ui-autocomplete { position: absolute; cursor: default; } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ @@ -82,8 +82,8 @@ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; } @@ -129,7 +129,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } @@ -186,7 +186,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad */ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } @@ -609,4 +609,4 @@ body .ui-tooltip { border-width:2px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file +.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css index 56a9be11a8..f5fae11066 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css @@ -7,4 +7,4 @@ * * http://docs.jquery.com/UI/Theming/API */ -.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-heading{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-heading{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none;}.ui-menu .ui-menu{margin-top:-3px;position:absolute;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal;}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-menu li.ui-state-disabled{font-weight:normal;padding:.0em .4em;margin:.4em 0 .2em;line-height:1.5;}.ui-menu-icons{position:relative;}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em;}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em;}.ui-menu .ui-menu-icon{position:static;float:right;}.ui-menubar{list-style:none;margin:0;padding-left:0;}.ui-menubar-item{float:left;}.ui-menubar .ui-button{float:left;font-weight:normal;border-top-width:0!important;border-bottom-width:0!important;margin:0;outline:none;}.ui-menubar .ui-menubar-link{border-right:1px dashed transparent;border-left:1px dashed transparent;}.ui-menubar .ui-menu{width:200px;position:absolute;z-index:9999;}.ui-progressbar{height:2em;text-align:left;overflow:hidden;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle;}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px;}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;z-index:100;text-align:center;vertical-align:middle;position:absolute;cursor:default;display:block;overflow:hidden;right:0;}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none;}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0;}.ui-spinner-up{top:0;}.ui-spinner-down{bottom:0;}span.ui-spinner{background:none;}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tooltip{padding:8px;position:absolute;z-index:9999;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}* html .ui-tooltip{background-image:none;}body .ui-tooltip{border-width:2px;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} \ No newline at end of file +.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-heading{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-heading{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none;}.ui-menu .ui-menu{margin-top:-3px;position:absolute;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal;}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-menu li.ui-state-disabled{font-weight:normal;padding:.0em .4em;margin:.4em 0 .2em;line-height:1.5;}.ui-menu-icons{position:relative;}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em;}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em;}.ui-menu .ui-menu-icon{position:static;float:right;}.ui-menubar{list-style:none;margin:0;padding-left:0;}.ui-menubar-item{float:left;}.ui-menubar .ui-button{float:left;font-weight:normal;border-top-width:0!important;border-bottom-width:0!important;margin:0;outline:none;}.ui-menubar .ui-menubar-link{border-right:1px dashed transparent;border-left:1px dashed transparent;}.ui-menubar .ui-menu{width:200px;position:absolute;z-index:9999;}.ui-progressbar{height:2em;text-align:left;overflow:hidden;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle;}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px;}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;z-index:100;text-align:center;vertical-align:middle;position:absolute;cursor:default;display:block;overflow:hidden;right:0;}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none;}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0;}.ui-spinner-up{top:0;}.ui-spinner-down{bottom:0;}span.ui-spinner{background:none;}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tooltip{padding:8px;position:absolute;z-index:9999;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}* html .ui-tooltip{background-image:none;}body .ui-tooltip{border-width:2px;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jsondata.txt b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jsondata.txt index b6a0cffac9..5b7bff7a86 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jsondata.txt +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/jsondata.txt @@ -1 +1 @@ -[[1, 3, 2, 4, 6, 9]] \ No newline at end of file +[[1, 3, 2, 4, 6, 9]] diff --git a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/kcp_area.html b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/kcp_area.html index da43d47e78..f9853ef8a6 100644 --- a/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/kcp_area.html +++ b/recipe_system/adcc/client/adcc_faceplate_dark/js/jqplot/examples/kcp_area.html @@ -2,18 +2,18 @@ - + Area Chart - + - - + +