From 6980c94407537bbd5843621a89857f6ed37d2060 Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 15:41:46 -0800 Subject: [PATCH 01/54] ci(nox): Initial noxfile. --- noxfile.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 noxfile.py diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 000000000..d6443deb6 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,47 @@ +"""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 nox + + +@nox.session +def devenv(session: nox.Session): + """Generate a new development environment.""" From c14bc33489862faebd7b08e030f81e43019ec6ea Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 15:55:24 -0800 Subject: [PATCH 02/54] ci(nox): Add venv command to session --- noxfile.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index d6443deb6..6c63685f6 100644 --- a/noxfile.py +++ b/noxfile.py @@ -42,6 +42,7 @@ import nox -@nox.session +@nox.session(venv_backend="venv") def devenv(session: nox.Session): """Generate a new development environment.""" + session.run("python", "-m", "venv", *session.posargs) From 83d0f78db23f59d27c3dd8520152f6470c7266d5 Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:01:19 -0800 Subject: [PATCH 03/54] ci(nox): Pass positional arguments to venv if given. --- noxfile.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 6c63685f6..223dca16b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -45,4 +45,8 @@ @nox.session(venv_backend="venv") def devenv(session: nox.Session): """Generate a new development environment.""" - session.run("python", "-m", "venv", *session.posargs) + if session.posargs: + session.run("python", "-m", "venv", *session.posargs) + return + + session.run("python", "-m", "venv", "venv/") From c3b6e1e28c7d10e317e2dcb7db91ab2c6f72f899 Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:10:58 -0800 Subject: [PATCH 04/54] ci(nox): Add catch for venv prompt w/o venv path --- noxfile.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/noxfile.py b/noxfile.py index 223dca16b..b70bf62ed 100644 --- a/noxfile.py +++ b/noxfile.py @@ -46,7 +46,14 @@ def devenv(session: nox.Session): """Generate a new development environment.""" if session.posargs: + if "--prompt" in session.posargs and len(session.posargs) == 2: + # Assume no path given in positional args. + session.run("python", "-m", "venv", "venv/", *session.posargs) + return + + # Assume user has it right and fail if they don't. session.run("python", "-m", "venv", *session.posargs) return + # Default behavior session.run("python", "-m", "venv", "venv/") From 5f73521a87e93cb0a9ed049d7ef195bb61d07bca Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:12:30 -0800 Subject: [PATCH 05/54] ci(nox): Extract venv's path into variable. --- noxfile.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/noxfile.py b/noxfile.py index b70bf62ed..beb7260ca 100644 --- a/noxfile.py +++ b/noxfile.py @@ -45,10 +45,12 @@ @nox.session(venv_backend="venv") def devenv(session: nox.Session): """Generate a new development environment.""" + default_venv_path = "venv/" + if session.posargs: if "--prompt" in session.posargs and len(session.posargs) == 2: # Assume no path given in positional args. - session.run("python", "-m", "venv", "venv/", *session.posargs) + session.run("python", "-m", "venv", default_venv_path, *session.posargs) return # Assume user has it right and fail if they don't. @@ -56,4 +58,4 @@ def devenv(session: nox.Session): return # Default behavior - session.run("python", "-m", "venv", "venv/") + session.run("python", "-m", "venv", default_venv_path) From a715a6f50d35618121bcae43aa73554b8b65c5e3 Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:31:15 -0800 Subject: [PATCH 06/54] ci(nox): Extract venv creation to helper function. --- noxfile.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/noxfile.py b/noxfile.py index beb7260ca..4eb443405 100644 --- a/noxfile.py +++ b/noxfile.py @@ -42,11 +42,11 @@ import nox -@nox.session(venv_backend="venv") -def devenv(session: nox.Session): - """Generate a new development environment.""" +def create_venv(session: nox.Session): + """Create a new virtual environment using a running session.""" default_venv_path = "venv/" + # Create the virtual environment if session.posargs: if "--prompt" in session.posargs and len(session.posargs) == 2: # Assume no path given in positional args. @@ -59,3 +59,9 @@ def devenv(session: nox.Session): # Default behavior session.run("python", "-m", "venv", default_venv_path) + + +@nox.session(venv_backend="venv") +def devenv(session: nox.Session): + """Generate a new development environment.""" + create_venv(session) From 8a7b92c0a416bb797980032369935e7e798ba154 Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:39:02 -0800 Subject: [PATCH 07/54] ci(nox): Remove fluff for custom dirs/prompts Taking this out, since it seems more of a liability than anything that needs to be supported right now. Plus, it's probably better to have `nox -s devenv` the same for everyone who uses it. --- noxfile.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/noxfile.py b/noxfile.py index 4eb443405..fd995d3e5 100644 --- a/noxfile.py +++ b/noxfile.py @@ -39,29 +39,31 @@ For more information, see the DRAGONS developer documentation. """ +from pathlib import Path + import nox def create_venv(session: nox.Session): """Create a new virtual environment using a running session.""" default_venv_path = "venv/" + default_venv_prompt = "dragons_venv" - # Create the virtual environment - if session.posargs: - if "--prompt" in session.posargs and len(session.posargs) == 2: - # Assume no path given in positional args. - session.run("python", "-m", "venv", default_venv_path, *session.posargs) - return + session.run( + "python", "-m", "venv", default_venv_path, "--prompt", default_venv_prompt + ) - # Assume user has it right and fail if they don't. - session.run("python", "-m", "venv", *session.posargs) - return - # Default behavior - session.run("python", "-m", "venv", default_venv_path) +def install_dependencies( + session: nox.Session, + *, + target_python: Path | None = None, +): + """Install dependencies using a running session.""" @nox.session(venv_backend="venv") def devenv(session: nox.Session): """Generate a new development environment.""" create_venv(session) + install_dependencies(session) From b6c4a68bf307c535c030277bee0aefb1dc96363d Mon Sep 17 00:00:00 2001 From: teald Date: Mon, 2 Dec 2024 16:53:52 -0800 Subject: [PATCH 08/54] ci(nox): Add arguments to venv, install package --- noxfile.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/noxfile.py b/noxfile.py index fd995d3e5..a3b937aa8 100644 --- a/noxfile.py +++ b/noxfile.py @@ -15,8 +15,7 @@ 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. +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. @@ -44,14 +43,18 @@ import nox -def create_venv(session: nox.Session): +def create_venv(session: nox.Session) -> Path: """Create a new virtual environment using a running session.""" - default_venv_path = "venv/" + default_venv_path = Path("venv/") default_venv_prompt = "dragons_venv" - session.run( - "python", "-m", "venv", default_venv_path, "--prompt", default_venv_prompt - ) + 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 install_dependencies( @@ -60,10 +63,15 @@ def install_dependencies( target_python: Path | None = None, ): """Install dependencies using a running session.""" + if target_python is None: + target_python = Path(session.virtualenv.bin) / "python" + + session.run(str(target_python), "-m", "pip", "install", "-e", ".", external=True) @nox.session(venv_backend="venv") def devenv(session: nox.Session): """Generate a new development environment.""" - create_venv(session) - install_dependencies(session) + venv_path = create_venv(session) + venv_python = venv_path / "bin" / "python" + install_dependencies(session, target_python=venv_python) From fb5607e7bb5a8a5f3bdd178c7ff26eceb5e04d2f Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 12:38:34 -0800 Subject: [PATCH 09/54] ci(nox): Add dep to pyproject.toml, read in nox This adds a placeholder entry in the pyproject.toml, which will be replaced with the dependency manager before merging. --- noxfile.py | 11 +++++++++++ pyproject.toml | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/noxfile.py b/noxfile.py index a3b937aa8..61bfe84e6 100644 --- a/noxfile.py +++ b/noxfile.py @@ -38,6 +38,7 @@ For more information, see the DRAGONS developer documentation. """ +import tomllib from pathlib import Path import nox @@ -68,6 +69,16 @@ def install_dependencies( session.run(str(target_python), "-m", "pip", "install", "-e", ".", external=True) + # 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("r") as infile: + pyproject_toml_contents = tomllib.load(infile) + + dev_dependencies = pyproject_toml_contents["development"]["dependencies"] + + session.install(*dev_dependencies) + @nox.session(venv_backend="venv") def devenv(session: nox.Session): diff --git a/pyproject.toml b/pyproject.toml index d8684fb15..9ce4928cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,8 @@ [build-system] requires = ["setuptools", "wheel", "cython"] build-backend = 'setuptools.build_meta' + +[development] +dependencies = [ + "pytest", +] From deef281f867e2c3fcff83eadf5bbd691dd95081a Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 12:57:37 -0800 Subject: [PATCH 10/54] doc(nox): Initial developer documentation --- .../development/development_environments.rst | 116 ++++++++++++++++++ doc/DRAGONS/development/index.rst | 17 +++ 2 files changed, 133 insertions(+) create mode 100644 doc/DRAGONS/development/development_environments.rst create mode 100644 doc/DRAGONS/development/index.rst diff --git a/doc/DRAGONS/development/development_environments.rst b/doc/DRAGONS/development/development_environments.rst new file mode 100644 index 000000000..cbf4b1581 --- /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 ``devshell`` session: + +.. code-block:: console + + nox -s devshell + +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 000000000..04da6be9b --- /dev/null +++ b/doc/DRAGONS/development/index.rst @@ -0,0 +1,17 @@ + +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 From 316e0efdcc0db0303d4668ae556ae3108dc1f53d Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 13:11:28 -0800 Subject: [PATCH 11/54] fix(nox): Open pyproject.toml in binary read mode --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 61bfe84e6..98e009260 100644 --- a/noxfile.py +++ b/noxfile.py @@ -72,7 +72,7 @@ def install_dependencies( # 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("r") as infile: + with pyproject_toml_path.open("rb") as infile: pyproject_toml_contents = tomllib.load(infile) dev_dependencies = pyproject_toml_contents["development"]["dependencies"] From 09b7ff49a747649555899aeac85bd34345cdbc97 Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 13:39:52 -0800 Subject: [PATCH 12/54] fix(nox): Use correct install method for venvs --- noxfile.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/noxfile.py b/noxfile.py index 98e009260..88f42315c 100644 --- a/noxfile.py +++ b/noxfile.py @@ -67,8 +67,6 @@ def install_dependencies( if target_python is None: target_python = Path(session.virtualenv.bin) / "python" - session.run(str(target_python), "-m", "pip", "install", "-e", ".", external=True) - # Install development dependencies from pyproject.toml # TODO: This must be changed when the dependency manager is changed. pyproject_toml_path = Path("pyproject.toml") @@ -77,7 +75,24 @@ def install_dependencies( dev_dependencies = pyproject_toml_contents["development"]["dependencies"] - session.install(*dev_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") From 93a1d51d5e31c385c0f6a84bf810f446f2354b5e Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 15:59:47 -0800 Subject: [PATCH 13/54] test(nox): Add tests for dev envs --- tests/conftest.py | 125 +++++++++++++++++++++++++++++++++++++++++ tests/test_devconda.py | 27 +++++++++ tests/test_devenv.py | 116 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 268 insertions(+) create mode 100644 tests/conftest.py create mode 100644 tests/test_devconda.py create mode 100644 tests/test_devenv.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 000000000..28ea91a17 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,125 @@ +"""Configurations and fixtures for package-level testing. + +Most of this is for development testing. Be aware that using some of these +fixtures can add significant time to test runs, as they are hefty (but +necessary) operations. +""" + +import os +from contextlib import chdir +from pathlib import Path +import shutil +import subprocess + +import pytest + + +class Helpers: + @staticmethod + def validate_result( + result: subprocess.CompletedProcess, + expected_returncode: int = 0, + ): + """Raises an exception if the returncode is not as expected.""" + if not result.returncode == 0: + divider = 80 * "-" + stdout = result.stdout.decode("utf-8") + stderr = result.stderr.decode("utf-8") + message = ( + f" Command: {result.args}\n" + f" stdout:\n{divider}\n{stdout}" + f" stderr:\n{divider}\n{stderr}" + ) + + raise Exception(message) + + +@pytest.fixture(scope="session") +def helpers() -> Helpers: + return Helpers() + + +@pytest.fixture(scope="session") +def session_DRAGONS(tmp_path_factory, helpers) -> Path: + """Create a clean copy of the repo. + + The steps for this fixture are: + 1. Creates a new directory caching a clean DRAGONS version, if + it doesn't exist. + 2. Clones the repository into the temporary dir. + 3. Checks out the same branch that this repo is running on, if available. + 4. Return path to the session DRAGONS. + + WARNING: Do not modify the sssion DRAGONS. If you need a clean dragons + dir, use the ``fresh_dragons_dir`` fixture. + """ + tmp_path = tmp_path_factory.mktemp("cached_DRAGONS") + + dragons_path = tmp_path / "DRAGONS" + local_repo_path = Path(__file__).parent.parent + + # Cloning the local repo + clone_command = [ + "git", + "clone", + str(local_repo_path.absolute()), + str(dragons_path.absolute()), + ] + + branch_command = ["git", "branch", "--show-current"] + + with chdir(tmp_path): + result = subprocess.run(clone_command, capture_output=True) + + try: + helpers.validate_result(result) + + except Exception as err: + message = "Could not clone dragons repo." + raise Exception(message) from err + + with chdir(dragons_path): + branch_result = subprocess.run( + branch_command, + capture_output=True, + ) + + helpers.validate_result(branch_result) + + return dragons_path + + +@pytest.fixture(scope="function") +def fresh_dragons_dir( + tmp_path, + monkeypatch, + session_DRAGONS, + helpers, +) -> Path: + """Copy a new unmodified DRAGONS dir to a tempoary directory. + + This is meant to be used with development environment tests, not + other DRAGONS tests (without good reason). + + This will be periodically cleaned up by pytest, but may store <~10 clones + during normal execution. + """ + dragons_dir = tmp_path / "DRAGONS" + + assert not dragons_dir.exists() + + shutil.copytree(session_DRAGONS, dragons_dir) + + monkeypatch.chdir(dragons_dir) + + return dragons_dir + + +@pytest.fixture() +def clear_devconda_environment(helpers) -> bool: + """Clear the conda development environment, if it exists.""" + conda_remove_command = ["conda", "remove", "--name", "dragons_dev", "--all", "-y"] + + result = subprocess.run(conda_remove_command, capture_output=True) + + helpers.validate_result(result) diff --git a/tests/test_devconda.py b/tests/test_devconda.py new file mode 100644 index 000000000..818f8d6ca --- /dev/null +++ b/tests/test_devconda.py @@ -0,0 +1,27 @@ +import subprocess + + +def test_create_developer_conda( + fresh_dragons_dir, + clear_devconda_environment, + helpers, +): + """Test generating a develoment environment with venv.""" + command = ["nox", "-s", "devconda"] + + devenv_result = subprocess.run(command, capture_output=True) + + helpers.validate_result(devenv_result) + + # Specified in create_venv() in noxfile.py + expected_conda_env_name = "dragons_dev" + + conda_info_result = subprocess.run(["conda", "info", "-e"], capture_output=True) + + helpers.validate_result(conda_info_result) + + stdout = conda_info_result.stdout.decode("utf-8") + + assert any( + expected_conda_env_name in line for line in stdout.splitlines() + ), "Env not found!" diff --git a/tests/test_devenv.py b/tests/test_devenv.py new file mode 100644 index 000000000..95bd9241a --- /dev/null +++ b/tests/test_devenv.py @@ -0,0 +1,116 @@ +"""Tests for the development environment and its setup.""" + +from pathlib import Path +import subprocess + + +def test_generating_test_environment( + tmp_path, + monkeypatch, + fresh_dragons_dir, + helpers, +): + """Test developer venv environment generation.""" + assert Path("noxfile.py").exists() + + # Generate the developer environment. + command = ["nox", "-s", "devenv"] + + result = subprocess.run(command, capture_output=True) + + helpers.validate_result(result) + + stdout, stderr = (out.decode("utf-8") for out in (result.stdout, result.stderr)) + + assert "warning" not in stdout.casefold(), "Warning appeared in stdout" + assert "warning" not in stderr.casefold(), "Warning appeared in stderr" + + +def test_create_developer_venv( + fresh_dragons_dir, + helpers, +): + """Test generating a develoment environment with venv.""" + command = ["nox", "-s", "devenv"] + + devenv_result = subprocess.run(command, capture_output=True) + + helpers.validate_result(devenv_result) + + # Specified in create_venv() in noxfile.py + expected_venv_path = Path("venv/") + expected_prompt = "dragons_venv" + + assert expected_venv_path.exists() + assert (expected_venv_path / "bin" / "python").exists() + assert (expected_venv_path / "bin" / "pip").exists() + + # Check the venv's prompt. + venv_activate_path = expected_venv_path / "bin" / "activate" + assert f"{expected_prompt}" in venv_activate_path.read_text() + + +def test_recreate_developer_venv( + fresh_dragons_dir, + helpers, +): + """Test re-generating a develoment environment with venv.""" + command = ["nox", "-s", "devenv"] + + for _ in range(2): + devenv_result = subprocess.run(command, capture_output=True) + + helpers.validate_result(devenv_result) + + # Specified in create_venv() in noxfile.py + expected_venv_path = Path("venv/") + expected_prompt = "dragons_venv" + + assert expected_venv_path.exists() + assert (expected_venv_path / "bin" / "python").exists() + assert (expected_venv_path / "bin" / "pip").exists() + + # Check the venv's prompt. + venv_activate_path = expected_venv_path / "bin" / "activate" + assert f"{expected_prompt}" in venv_activate_path.read_text() + + +def test_installed_packages(fresh_dragons_dir, helpers): + """Test that dependencies are installed as expected. + + Since we assume here that the dependencies are installed via other + channels (pip installing dragons), this only tests the existence of + specific, expected packages. + """ + + command = ["nox", "-s", "devenv"] + + venv_python_path = Path("venv") / "bin" / "python" + + devenv_result = subprocess.run(command, capture_output=True) + + helpers.validate_result(devenv_result) + + # Try running a script that just contains imports for packages that + # should now be in the environment. + expected_packages = ( + "astrodata", + "geminidr", + "gempy", + "gemini_instruments", + "recipe_system", + "numpy", + "astropy", + "scipy", + "pytest", + ) + + python_imports_command = [ + str(venv_python_path), + "-c", + "\n".join(f"import {name}" for name in expected_packages), + ] + + python_imports_result = subprocess.run(python_imports_command, capture_output=True) + + helpers.validate_result(python_imports_result) From 04c6d0aa0e74148099209ec20002f6fc7e257e58 Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 16:00:20 -0800 Subject: [PATCH 14/54] ci(nox): Add devconda session --- noxfile.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 88f42315c..7d63a13b2 100644 --- a/noxfile.py +++ b/noxfile.py @@ -97,7 +97,12 @@ def install_dependencies( @nox.session(venv_backend="venv") def devenv(session: nox.Session): - """Generate a new development environment.""" + """Generate a new venv development environment.""" venv_path = create_venv(session) venv_python = venv_path / "bin" / "python" install_dependencies(session, target_python=venv_python) + + +@nox.session(venv_backend="conda") +def devconda(session: nox.Session): + """Generate a new conda development environment.""" From df62a11a7ed0e8d9540be1bdde3ed9585ad6c4bf Mon Sep 17 00:00:00 2001 From: teald Date: Tue, 3 Dec 2024 16:34:37 -0800 Subject: [PATCH 15/54] ci(nox): Add initial devconda session impl --- noxfile.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/noxfile.py b/noxfile.py index 7d63a13b2..24d427f49 100644 --- a/noxfile.py +++ b/noxfile.py @@ -106,3 +106,9 @@ def devenv(session: nox.Session): @nox.session(venv_backend="conda") def devconda(session: nox.Session): """Generate a new conda development environment.""" + extra_args = ["--force", "-y"] + + if all(name_flag not in session.posargs for name_flag in ["-n", "--name"]): + extra_args.extend(["--name", "dragons_dev"]) + + session.run("conda", "create", *extra_args, *session.posargs) From db9804cbb4bc08220194bf815b8cd0105530a5f2 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 4 Dec 2024 10:15:16 -0800 Subject: [PATCH 16/54] test(nox): Testing for devconda environment --- tests/conftest.py | 45 +++++++++++++++++++++++++++++++++++++----- tests/test_devconda.py | 38 +++++++++++++++++++++++++++-------- 2 files changed, 70 insertions(+), 13 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 28ea91a17..7ce7171b1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,6 +8,7 @@ import os from contextlib import chdir from pathlib import Path +import re import shutil import subprocess @@ -33,6 +34,44 @@ def validate_result( raise Exception(message) + @staticmethod + def clear_conda_environment(env_name: str = "dragons_dev", *, strict: bool = False): + """Clear a conda environment, raise exception if it exists after.""" + conda_remove_command = [ + "conda", + "remove", + "--name", + env_name, + "--all", + "-y", + ] + + if strict and Helpers.check_for_conda_environment(env_name): + raise Exception(f"Could not find env with name: {env_name}") + + result = subprocess.run(conda_remove_command, capture_output=True) + + if Helpers.check_for_conda_environment(env_name): + raise Exception(f"Could not remove env: {env_name}") + + Helpers.validate_result(result) + + @staticmethod + def check_for_conda_environment(env_name: str) -> bool: + """Return True if conda environment is found locally.""" + fetch_conda_envs_command = ["conda", "info", "-e"] + fetch_envs_result = subprocess.run( + fetch_conda_envs_command, capture_output=True + ) + + env_match_re = re.compile(r"^\b({env})\b.*$".format(env=env_name), re.MULTILINE) + + Helpers.validate_result(fetch_envs_result) + + stdout = fetch_envs_result.stdout.decode("utf-8") + + return bool([match for match in env_match_re.finditer(stdout)]) + @pytest.fixture(scope="session") def helpers() -> Helpers: @@ -118,8 +157,4 @@ def fresh_dragons_dir( @pytest.fixture() def clear_devconda_environment(helpers) -> bool: """Clear the conda development environment, if it exists.""" - conda_remove_command = ["conda", "remove", "--name", "dragons_dev", "--all", "-y"] - - result = subprocess.run(conda_remove_command, capture_output=True) - - helpers.validate_result(result) + helpers.clear_conda_environment() diff --git a/tests/test_devconda.py b/tests/test_devconda.py index 818f8d6ca..e22c35d17 100644 --- a/tests/test_devconda.py +++ b/tests/test_devconda.py @@ -1,5 +1,7 @@ import subprocess +import pytest + def test_create_developer_conda( fresh_dragons_dir, @@ -9,19 +11,39 @@ def test_create_developer_conda( """Test generating a develoment environment with venv.""" command = ["nox", "-s", "devconda"] - devenv_result = subprocess.run(command, capture_output=True) + devconda_result = subprocess.run(command, capture_output=True) - helpers.validate_result(devenv_result) + helpers.validate_result(devconda_result) # Specified in create_venv() in noxfile.py expected_conda_env_name = "dragons_dev" - conda_info_result = subprocess.run(["conda", "info", "-e"], capture_output=True) + assert helpers.check_for_conda_environment( + expected_conda_env_name + ), f"Conda env {expected_conda_env_name} not found." + + +@pytest.mark.parametrize("name_flag", ["-n", "--name"]) +def test_create_developer_conda_with_custom_name( + name_flag, + fresh_dragons_dir, + helpers, +): + """Test creating conda dev env with custom name.""" + env_name = "custom_name" + + command = ["nox", "-s", "devconda", "--", name_flag, env_name] + + devconda_result = subprocess.run(command, capture_output=True) - helpers.validate_result(conda_info_result) + helpers.validate_result(devconda_result) + + # Specified in create_venv() in noxfile.py + expected_conda_env_name = env_name - stdout = conda_info_result.stdout.decode("utf-8") + assert helpers.check_for_conda_environment( + expected_conda_env_name + ), f"Conda env {expected_conda_env_name} not found." - assert any( - expected_conda_env_name in line for line in stdout.splitlines() - ), "Env not found!" + # Cleanup! + helpers.clear_conda_environment(env_name) From 396ced96039de25dc16377ffd0d07548ec71602e Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 4 Dec 2024 13:54:35 -0800 Subject: [PATCH 17/54] ci(nox): Add devconda removal session. --- noxfile.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/noxfile.py b/noxfile.py index 24d427f49..9dcc0d09e 100644 --- a/noxfile.py +++ b/noxfile.py @@ -103,7 +103,7 @@ def devenv(session: nox.Session): install_dependencies(session, target_python=venv_python) -@nox.session(venv_backend="conda") +@nox.session(venv_backend="none") def devconda(session: nox.Session): """Generate a new conda development environment.""" extra_args = ["--force", "-y"] @@ -111,4 +111,12 @@ def devconda(session: nox.Session): if all(name_flag not in session.posargs for name_flag in ["-n", "--name"]): extra_args.extend(["--name", "dragons_dev"]) - session.run("conda", "create", *extra_args, *session.posargs) + session.run("conda", "create", *extra_args, *session.posargs, external=True) + + +@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 + ) From efb416c3c8482ebed836233dc9a0b4874e51222d Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 4 Dec 2024 14:02:49 -0800 Subject: [PATCH 18/54] fix(nox): Add python specification to command if not an arg --- noxfile.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/noxfile.py b/noxfile.py index 9dcc0d09e..cfbf45122 100644 --- a/noxfile.py +++ b/noxfile.py @@ -111,6 +111,9 @@ def devconda(session: nox.Session): if all(name_flag not in session.posargs for name_flag in ["-n", "--name"]): extra_args.extend(["--name", "dragons_dev"]) + if all("python" not in arg for arg in session.posargs): + extra_args.extend(["python=3.12"]) + session.run("conda", "create", *extra_args, *session.posargs, external=True) From cb8c6186f199a41f98add54c1e2aebf4af41d030 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 4 Dec 2024 14:31:32 -0800 Subject: [PATCH 19/54] ci(nox): Add dependency installation for devconda. --- noxfile.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index cfbf45122..89b9160c0 100644 --- a/noxfile.py +++ b/noxfile.py @@ -40,6 +40,7 @@ import tomllib from pathlib import Path +import re import nox @@ -109,13 +110,26 @@ def devconda(session: nox.Session): extra_args = ["--force", "-y"] if all(name_flag not in session.posargs for name_flag in ["-n", "--name"]): - extra_args.extend(["--name", "dragons_dev"]) + 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 all("python" not in arg for arg in session.posargs): extra_args.extend(["python=3.12"]) session.run("conda", "create", *extra_args, *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) + @nox.session(venv_backend="none") def remove_devconda_environment(session: nox.Session): From 9e51c3babcc610488dd787e7bfc80a0781a7d203 Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 11:36:25 -0800 Subject: [PATCH 20/54] test(nox): Test devconda dependency install --- tests/conftest.py | 76 ++++++++++++++++++++++++++++++++++++++++-- tests/test_devconda.py | 36 +++++++++++++++++++- 2 files changed, 109 insertions(+), 3 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 7ce7171b1..754e59dc0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -37,6 +37,7 @@ def validate_result( @staticmethod def clear_conda_environment(env_name: str = "dragons_dev", *, strict: bool = False): """Clear a conda environment, raise exception if it exists after.""" + conda_remove_command = [ "conda", "remove", @@ -51,11 +52,11 @@ def clear_conda_environment(env_name: str = "dragons_dev", *, strict: bool = Fal result = subprocess.run(conda_remove_command, capture_output=True) + Helpers.validate_result(result) + if Helpers.check_for_conda_environment(env_name): raise Exception(f"Could not remove env: {env_name}") - Helpers.validate_result(result) - @staticmethod def check_for_conda_environment(env_name: str) -> bool: """Return True if conda environment is found locally.""" @@ -72,6 +73,39 @@ def check_for_conda_environment(env_name: str) -> bool: return bool([match for match in env_match_re.finditer(stdout)]) + @staticmethod + def get_conda_environments() -> list[str]: + """Determine the names of all conda environments current available.""" + return [k for k in Helpers.get_conda_python_paths()] + + @staticmethod + def get_conda_python_paths() -> dict[str, Path]: + """Get conda envs and their corresponding python paths.""" + command = ["conda", "env", "list"] + + result = subprocess.run(command, capture_output=True) + + Helpers.validate_result(result) + + stdout = result.stdout.decode("utf-8") + + paths = {} + + for line in (l.strip() for l in stdout.splitlines()): + if not line or line[0] == "#": + continue + + cols = line.split() + if len(cols) >= 2: + python_bin = Path(cols[1]) / "bin" / "python" + + if "envs" not in str(python_bin) or not python_bin.exists(): + continue + + paths[cols[0]] = python_bin + + return paths + @pytest.fixture(scope="session") def helpers() -> Helpers: @@ -158,3 +192,41 @@ def fresh_dragons_dir( def clear_devconda_environment(helpers) -> bool: """Clear the conda development environment, if it exists.""" helpers.clear_conda_environment() + + yield + + # Cleanup + helpers.clear_conda_environment() + + +@pytest.fixture() +def clean_conda_env(helpers, fresh_dragons_dir) -> tuple[str, Path]: + """Create a clean conda environment for the test, returns name and path to + the python binary. + """ + devconda_command = ["nox", "-s", "devconda"] + + helpers.clear_conda_environment() + + prev_conda_envs = helpers.get_conda_environments() + + result = subprocess.run(devconda_command, capture_output=True) + + helpers.validate_result(result) + + new_conda_envs = helpers.get_conda_environments() + + env_diffs = [k for k in new_conda_envs if k not in prev_conda_envs] + + assert len(env_diffs) > 0, "No new environments created." + + assert ( + len(env_diffs) == 1 + ), "Multiple new environments detected, This is not thread safe!" + + new_env = env_diffs[0] + env_pythons = helpers.get_conda_python_paths() + + yield [new_env, env_pythons[new_env]] + + helpers.clear_conda_environment() diff --git a/tests/test_devconda.py b/tests/test_devconda.py index e22c35d17..ad2f23fbb 100644 --- a/tests/test_devconda.py +++ b/tests/test_devconda.py @@ -45,5 +45,39 @@ def test_create_developer_conda_with_custom_name( expected_conda_env_name ), f"Conda env {expected_conda_env_name} not found." - # Cleanup! + # Cleanup! This line cleans up the conda environment generated during the + # test. The environment is automatically cleaned helpers.clear_conda_environment(env_name) + + +def test_installed_packages_conda(clean_conda_env, helpers): + """Test that dependencies are installed as expected in the conda + environment. + """ + _env_name, python_bin = clean_conda_env + + # Try running a script that just contains imports for packages that + # should now be in the environment. + # + # In the future, this should be a helper function or fixture. + expected_packages = ( + "astrodata", + "geminidr", + "gempy", + "gemini_instruments", + "recipe_system", + "numpy", + "astropy", + "scipy", + "pytest", + ) + + python_imports_command = [ + str(python_bin.absolute()), + "-c", + "\n".join(f"import {name}" for name in expected_packages), + ] + + python_script_result = subprocess.run(python_imports_command, capture_output=True) + + helpers.validate_result(python_script_result) From 29e7ca4045006bfe2d7acfc2c2ae526de2bcbaa1 Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 11:36:47 -0800 Subject: [PATCH 21/54] ci(nox): Add pre-commit installation. --- noxfile.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/noxfile.py b/noxfile.py index 89b9160c0..094e022d4 100644 --- a/noxfile.py +++ b/noxfile.py @@ -102,6 +102,7 @@ def devenv(session: nox.Session): 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") @@ -130,6 +131,8 @@ def devconda(session: nox.Session): 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): @@ -137,3 +140,11 @@ def remove_devconda_environment(session: nox.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") From b9aa1c6856a875133ac665e177f62bbf8d564057 Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 11:41:51 -0800 Subject: [PATCH 22/54] docs(dev): Add to dev docs. --- doc/DRAGONS/development/development_environments.rst | 4 ++-- doc/DRAGONS/development/index.rst | 1 + doc/DRAGONS/development/testing.rst | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 doc/DRAGONS/development/testing.rst diff --git a/doc/DRAGONS/development/development_environments.rst b/doc/DRAGONS/development/development_environments.rst index cbf4b1581..a713e91f8 100644 --- a/doc/DRAGONS/development/development_environments.rst +++ b/doc/DRAGONS/development/development_environments.rst @@ -55,11 +55,11 @@ the following in mind: path `venv/`. If you have anything there you want to keep, save it before proceeding. -New `venv`_ environments can be generated using the ``devshell`` session: +New `venv`_ environments can be generated using the ``devenv`` session: .. code-block:: console - nox -s devshell + 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 diff --git a/doc/DRAGONS/development/index.rst b/doc/DRAGONS/development/index.rst index 04da6be9b..fc6ff2add 100644 --- a/doc/DRAGONS/development/index.rst +++ b/doc/DRAGONS/development/index.rst @@ -15,3 +15,4 @@ This documentation covers specific components of the DRAGONS development process :maxdepth: 2 development_environments.rst + testing.rst diff --git a/doc/DRAGONS/development/testing.rst b/doc/DRAGONS/development/testing.rst new file mode 100644 index 000000000..82f255917 --- /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`_. From 482223b37803a356a229e57e205b8dad73c30bfc Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 12:03:04 -0800 Subject: [PATCH 23/54] ci(nox): Add python version validation. --- noxfile.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/noxfile.py b/noxfile.py index 094e022d4..dc6849b5b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -59,6 +59,37 @@ def create_venv(session: nox.Session) -> Path: 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) + + version_match = re.match(r"Python\s* ([0-9]+)\.([0-9]+)\.([0-9]+)") + + assert version_match, f"Didn't get version: {python_version_str}." + + major, minor, patch = (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, *, @@ -68,6 +99,8 @@ def install_dependencies( 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") From f850881d611cbd4c63390f17713828e001407151 Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 12:04:25 -0800 Subject: [PATCH 24/54] ci(nox): Fix missing str to match regex --- noxfile.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index dc6849b5b..23f1ae0ff 100644 --- a/noxfile.py +++ b/noxfile.py @@ -74,7 +74,9 @@ def assert_python_version( python_version_str = session.run(str(target_python), "--version", silent=True) - version_match = re.match(r"Python\s* ([0-9]+)\.([0-9]+)\.([0-9]+)") + 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}." From c9c0f2d1a27fc9958566465cb86d199f6eb1ed92 Mon Sep 17 00:00:00 2001 From: teald Date: Thu, 5 Dec 2024 12:06:39 -0800 Subject: [PATCH 25/54] fix(nox): Use tuple, not str for version arg --- noxfile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/noxfile.py b/noxfile.py index 23f1ae0ff..4793e239d 100644 --- a/noxfile.py +++ b/noxfile.py @@ -80,7 +80,7 @@ def assert_python_version( assert version_match, f"Didn't get version: {python_version_str}." - major, minor, patch = (version_match.group(n) for n in (1, 2, 3)) + 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: @@ -101,7 +101,7 @@ def install_dependencies( if target_python is None: target_python = Path(session.virtualenv.bin) / "python" - assert_python_version(session, target_python, "3.12") + 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. From 47ff7cc4d77f2938cefd1acbe451ce2b6d9e6e08 Mon Sep 17 00:00:00 2001 From: teald Date: Fri, 6 Dec 2024 13:43:22 -0800 Subject: [PATCH 26/54] ci(nox): Add external flag to python version call. --- noxfile.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 4793e239d..d7a972bab 100644 --- a/noxfile.py +++ b/noxfile.py @@ -72,7 +72,9 @@ def assert_python_version( or values set to < 0 will act as wildcard. """ - python_version_str = session.run(str(target_python), "--version", silent=True) + 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 From 0326049e8dc53c430da9e102aa70b697582ed902 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:02:51 -0800 Subject: [PATCH 27/54] ci(pre-commit): Add initial pre-commit hooks These are default hooks that come with pre-commit. --- .pre-commit-config.yaml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..fcb757c53 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,34 @@ +# 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: v4.6.0 + hooks: + - id: check-yaml + - id: check-json + - id: check-toml + - id: check-docstring-first + - id: check-case-conflict + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-symlinks + - id: check-vcs-permalinks + - id: forbid-submodules From 25781dfe7930f4f2902ba4cb06bf45ba604060f0 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:03:31 -0800 Subject: [PATCH 28/54] ci(nox): Add development tests to nox. --- noxfile.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index d7a972bab..908c32c86 100644 --- a/noxfile.py +++ b/noxfile.py @@ -146,6 +146,7 @@ def devenv(session: nox.Session): 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" @@ -155,10 +156,15 @@ def devconda(session: nox.Session): 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, *session.posargs, external=True) + session.run( + "conda", "create", *extra_args, *channels, *session.posargs, external=True + ) result = session.run("conda", "env", "list", silent=True, external=True) @@ -185,3 +191,11 @@ def install_pre_commit_hooks(session: nox.Session): 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) From 0162998c1249fa1726af28fd1de9bf706148bb4f Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:05:05 -0800 Subject: [PATCH 29/54] docs(ci): Add initial CI docs page. --- .../development/continuous_integration.rst | 145 ++++++++++++++++++ doc/DRAGONS/development/index.rst | 3 +- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 doc/DRAGONS/development/continuous_integration.rst diff --git a/doc/DRAGONS/development/continuous_integration.rst b/doc/DRAGONS/development/continuous_integration.rst new file mode 100644 index 000000000..f6158e132 --- /dev/null +++ b/doc/DRAGONS/development/continuous_integration.rst @@ -0,0 +1,145 @@ +.. _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 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 +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 + ++----------------------------------+--------------------------+ +| Tool | | ++----------------------------------+--------------------------+ +| ``black`` (`link `_) | Automated formatting | ++----------------------------------+--------------------------+ +| ``ruff`` (`link `_) | Linting | ++----------------------------------+--------------------------+ +| ``pre-commit-hooks`` | Miscellaneous validation | ++----------------------------------+--------------------------+ + +.. _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/index.rst b/doc/DRAGONS/development/index.rst index fc6ff2add..f0e365b2b 100644 --- a/doc/DRAGONS/development/index.rst +++ b/doc/DRAGONS/development/index.rst @@ -6,7 +6,7 @@ Development Documentation 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 +Manuals** and **User Manuals**, respectively. These can be found on the documentation home page. This documentation covers specific components of the DRAGONS development process. @@ -15,4 +15,5 @@ This documentation covers specific components of the DRAGONS development process :maxdepth: 2 development_environments.rst + continuous_integration.rst testing.rst From ab1d967c81c213564cff50bb433affd2f2ac1a9c Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:11:02 -0800 Subject: [PATCH 30/54] ci(actions): Add dev tests workflow. --- .github/workflows/dev_tests.yaml | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/dev_tests.yaml diff --git a/.github/workflows/dev_tests.yaml b/.github/workflows/dev_tests.yaml new file mode 100644 index 000000000..1227b9602 --- /dev/null +++ b/.github/workflows/dev_tests.yaml @@ -0,0 +1,37 @@ +name: Run development tests + +on: + pull_request: + push: + workflow_dispatch: + schedule: + # Run every Sunday at 03:53 UTC + - cron: 53 3 * * 0 + +jobs: + tests: + runs-on: "${{ matrix.os }}" + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13"] + os: + - ubuntu-latest + - macos-latest + + steps: + - uses: actions/checkout@v2 + + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + channels: conda-forge + python-version: ${{ matrix.python-version }} + + - name: Install packages + shell: bash -l {0} + run: python -m pip install nox + + - name: Run dev tests + shell: bash -l {0} + run: | + nox -s run_tests -- -vv From c8d84b58ccc944d81153ebd8be92cdd5021be4c1 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:41:37 -0800 Subject: [PATCH 31/54] chore: Archive old_ directories. --- .pre-commit-config.yaml | 1 + .../primitives/parameters_GEMINI.py | 22 ++-- .../primitives/primitives_GEMINI.py | 109 +++++++++--------- .../old_other}/astrodata/tests/__init__.py | 0 .../astrodata/tests/test_AstroDataAPI.py | 24 ++-- 5 files changed, 78 insertions(+), 78 deletions(-) rename {old_astrodata_Gemini => archived/old_astrodata_Gemini}/RECIPES_Gemini/primitives/parameters_GEMINI.py (99%) rename {old_astrodata_Gemini => archived/old_astrodata_Gemini}/RECIPES_Gemini/primitives/primitives_GEMINI.py (94%) rename {old_other => archived/old_other}/astrodata/tests/__init__.py (100%) rename {old_other => archived/old_other}/astrodata/tests/test_AstroDataAPI.py (98%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fcb757c53..1558c2331 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,6 +26,7 @@ repos: - id: check-json - id: check-toml - id: check-docstring-first + exclude: "archived/" - id: check-case-conflict - id: trailing-whitespace - id: end-of-file-fixer 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 ea26cec27..32bfe87dd 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 082329b29..f2b28cc78 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 894a38eb0..a34d73712 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() From 88e6730bc41fd4619a398b16fe5b9be6ff0916c8 Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 10:45:13 -0800 Subject: [PATCH 32/54] docs(ci): Rewording --- doc/DRAGONS/development/continuous_integration.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/DRAGONS/development/continuous_integration.rst b/doc/DRAGONS/development/continuous_integration.rst index f6158e132..f3a954bdb 100644 --- a/doc/DRAGONS/development/continuous_integration.rst +++ b/doc/DRAGONS/development/continuous_integration.rst @@ -36,14 +36,14 @@ Linting, formatting, and quick checks (``pre-commit``) -We perform quick operations---specifically, formatting, linting, and validating -changes---when you try to commit your changes. +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 -yourself*): +them yourself*): .. _ruff_docs: https://docs.astral.sh/ruff/ .. _black_docs: https://black.readthedocs.io/en/stable/ From 6b49b3dd1621011c514c5cbd3b6a3bd20586dfcb Mon Sep 17 00:00:00 2001 From: teald Date: Wed, 11 Dec 2024 16:11:30 -0800 Subject: [PATCH 33/54] chore(lint): Initial link with pre-commit hooks Most changes are trailing lines. There are some changes to docstrings to either add them (in cases where header comments were used) or rectify non-conformant python code (e.g., tabbing issues). REBASE: Deferred to master branch. --- .github/codecov.yml | 2 +- .github/dependabot.yml | 2 +- .jenkins/Jenkinsfile_conda | 1 - .jenkins/scripts/setup_dirs.sh | 1 - .jenkins/scripts/update_files_permissions.sh | 1 - .readthedocs.yaml | 2 +- LICENSE | 1 - README.md | 11 +- astrodata/.readthedocs.yaml | 2 +- astrodata/doc/.readthedocs.yaml | 2 +- astrodata/doc/_static/rtd_theme_overrides.css | 6 +- .../rtd_theme_overrides_references.css | 1 - astrodata/doc/conf.py | 1 - astrodata/doc/progmanual/tags.rst | 2 +- doc/DRAGONS/_static/css/custom_code.css | 1 - doc/DRAGONS/_static/fonts.css | 2 +- doc/DRAGONS/_static/rtd_theme_overrides.css | 6 +- doc/DRAGONS/_static/todo-styles.css | 1 - doc/DRAGONS/conf.py | 2 +- doc/DRAGONS/dragonsteam.rst | 2 +- doc/DRAGONS/index.rst | 1 - doc/DRAGONS/releasenotes.rst | 2 - doc/requirements.txt | 2 +- extern_licenses/jqplot | 28 +- extern_licenses/jqplot_excanvas | 2 +- extern_licenses/jquery.color | 1 - extern_licenses/numdisplay | 1 - gemini_instruments/cirpass/adclass.py | 4 +- gemini_instruments/flamingos/adclass.py | 4 +- gemini_instruments/gemini/lookup.py | 2 +- .../gemini/tests/test_descriptors.py | 2 +- gemini_instruments/hokupaa_quirc/adclass.py | 8 +- gemini_instruments/hrwfs/adclass.py | 4 +- gemini_instruments/igrins/adclass.py | 14 +- gemini_instruments/niri/tests/test_niri.py | 1 - geminidr/core/parameters_nearIR.py | 2 +- geminidr/core/primitives_nearIR.py | 114 +- geminidr/core/tests/test_nearIR.py | 4 +- geminidr/core/tests/test_resample.py | 2 +- .../tests/test_wcs_creation_and_stability.py | 2 +- .../_static/css/custom_code.css | 1 - .../GMOSDR_ProgManual/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../appendices/recipes/gmosqarecipes.rst | 1 - .../appendices/recipes/gmosqlrecipes.rst | 1 - .../progmanuals/GMOSDR_ProgManual/flows.rst | 2 - .../GMOSDR_ProgManual/gmosprimitives.rst | 2 +- .../GMOSDR_ProgManual/gmosrecipes.rst | 1 - .../GMOSDR_ProgManual/gmostests.rst | 1 - .../progmanuals/GMOSDR_ProgManual/index.rst | 1 - .../progmanuals/GMOSDR_ProgManual/tags.rst | 2 +- .../F2Img-DRTutorial/.readthedocs.yaml | 2 +- .../F2Img-DRTutorial/01_introduction.rst | 1 - .../05_issues_and_limitations.rst | 2 +- .../doc/tutorials/F2Img-DRTutorial/Makefile | 2 +- .../_static/css/code.xref-styles.css | 1 - .../appendices/01_goa_download.rst | 2 +- .../F2Img-DRTutorial/ex1_f2im_ontarget.rst | 2 - .../ex1_f2im_ontarget_cmdline.rst | 3 - .../F2Img-DRTutorial/ex2_f2im_ultradeep.rst | 2 - .../ex2_f2im_ultradeep_cmdline.rst | 2 - .../doc/tutorials/F2Img-DRTutorial/index.rst | 2 +- .../F2Img-DRTutorial/retired/DRAGONSlinks.txt | 2 +- .../GHOST-DRTutorial/.readthedocs.yaml | 2 +- .../_static/css/custom_code.css | 1 - .../GHOST-DRTutorial/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../ex1_ghost_stdonetarget_cmdline.rst | 2 +- .../ex1_ghost_stdonetarget_dataset.rst | 3 - .../doc/tutorials/GHOST-DRTutorial/index.rst | 2 +- .../GMOSImg-DRTutorial/.readthedocs.yaml | 2 +- .../GMOSImg-DRTutorial/01_introduction.rst | 1 - .../05_issues_and_limitations.rst | 2 +- .../doc/tutorials/GMOSImg-DRTutorial/Makefile | 2 +- .../_static/css/code.xref-styles.css | 1 - .../appendices/01_goa_download.rst | 2 +- .../02_fringe_correction_tables.rst | 6 +- .../ex1_gmosim_starfield.rst | 2 - .../ex1_gmosim_starfield_cmdline.rst | 1 - .../ex2_gmosim_separateCCDs.rst | 2 - .../tutorials/GMOSImg-DRTutorial/index.rst | 2 +- .../retired/DRAGONSlinks.txt | 2 +- .../GMOSLS-DRTutorial/.readthedocs.yaml | 2 +- .../GMOSLS-DRTutorial/01_overview.rst | 2 +- .../GMOSLS-DRTutorial/02_datasets.rst | 1 - .../GMOSLS-DRTutorial/05_tips_and_tricks.rst | 3 - .../GMOSLS-DRTutorial/07_interactive.rst | 2 +- .../_static/css/custom_code.css | 1 - .../GMOSLS-DRTutorial/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../GMOSLS-DRTutorial/ex1_gmosls_dithered.rst | 2 - .../ex1_gmosls_dithered_dataset.rst | 1 - .../ex2_gmosls_large_dither.rst | 2 - .../ex2_gmosls_large_dither_api.rst | 110 +- .../ex2_gmosls_large_dither_cmdline.rst | 110 +- .../ex2_gmosls_large_dither_dataset.rst | 9 +- .../GMOSLS-DRTutorial/ex3_gmosls_ns.rst | 2 - .../ex3_gmosls_ns_dataset.rst | 2 +- .../GMOSLS-DRTutorial/ex4_gmosls_nsred.rst | 1 - .../doc/tutorials/GMOSLS-DRTutorial/index.rst | 2 +- .../GNIRSImg-DRTutorial/.readthedocs.yaml | 2 +- .../GNIRSImg-DRTutorial/01_overview.rst | 1 - .../GNIRSImg-DRTutorial/02_datasets.rst | 1 - .../05_tips_and_tricks.rst | 1 - .../tutorials/GNIRSImg-DRTutorial/Makefile | 2 +- .../_static/css/custom_code.css | 1 - .../GNIRSImg-DRTutorial/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../ex1_gnirsim_twostars.rst | 2 - .../ex1_gnirsim_twostars_cmdline.rst | 1 - .../tutorials/GNIRSImg-DRTutorial/index.rst | 2 +- .../retired/DRAGONSlinks.txt | 2 +- .../GSAOIImg-DRTutorial/.readthedocs.yaml | 2 +- .../GSAOIImg-DRTutorial/01_introduction.rst | 1 - .../05_issues_and_limitations.rst | 2 +- .../tutorials/GSAOIImg-DRTutorial/Makefile | 2 +- .../doc/tutorials/GSAOIImg-DRTutorial/README | 25 +- .../_static/css/code.xref-styles.css | 1 - .../appendices/01_goa_download.rst | 2 +- .../ex1_gsaoiim_offsetsky.rst | 2 - .../ex1_gsaoiim_offsetsky_api.rst | 1 - .../ex1_gsaoiim_offsetsky_cmdline.rst | 1 - .../tutorials/GSAOIImg-DRTutorial/index.rst | 1 - .../retired/DRAGONSlinks.txt | 2 +- .../NIRIImg-DRTutorial/.readthedocs.yaml | 2 +- .../NIRIImg-DRTutorial/01_overview.rst | 2 +- .../NIRIImg-DRTutorial/02_datasets.rst | 1 - .../doc/tutorials/NIRIImg-DRTutorial/Makefile | 2 +- .../_static/css/custom_code.css | 1 - .../NIRIImg-DRTutorial/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../ex1_niriim_extended.rst | 2 - .../ex1_niriim_extended_cmdline.rst | 2 +- .../tutorials/NIRIImg-DRTutorial/index.rst | 4 +- geminidr/doc/usermanuals/README | 1 - .../_static/css/code.xref-styles.css | 1 - .../doc/usermanuals/_static/css/fonts.css | 2 +- .../_static/css/rtd_theme_overrides.css | 6 +- ...mitives_ccd.CCD.subtractOverscan_param.rst | 2 +- ...tives_gmos.GMOS.subtractOverscan_param.rst | 2 +- .../primitives/primitive_createExample.rst | 1 - .../examples/primitives/primitives_index.rst | 1 - ...ecipes_ARC_LS_SPECT.makeIRAFCompatible.rst | 1 - ....recipes_ARC_LS_SPECT.makeProcessedArc.rst | 1 - ...pes.sq.recipes_BIAS.makeIRAFCompatible.rst | 1 - ...ipes.sq.recipes_BIAS.makeProcessedBias.rst | 1 - ...pes.sq.recipes_DARK.makeIRAFCompatible.rst | 1 - ...ipes.sq.recipes_DARK.makeProcessedDark.rst | 1 - ....recipes_FLAT_IMAGE.makeIRAFCompatible.rst | 1 - ...q.recipes_FLAT_IMAGE.makeProcessedFlat.rst | 1 - ...cipes_FLAT_LS_SPECT.makeIRAFCompatible.rst | 1 - ...FLAT_LS_SPECT.makeProcessedFlatNoStack.rst | 1 - ...s_FLAT_LS_SPECT.makeProcessedFlatStack.rst | 1 - ...s_FLAT_LS_SPECT.makeProcessedSlitIllum.rst | 1 - ...recipes.sq.recipes_IMAGE.alignAndStack.rst | 1 - ...es.sq.recipes_IMAGE.makeIRAFCompatible.rst | 1 - ...s.sq.recipes_IMAGE.makeProcessedFringe.rst | 1 - ...r.gmos.recipes.sq.recipes_IMAGE.reduce.rst | 1 - ...es.sq.recipes_IMAGE.reduceSeparateCCDs.rst | 1 - ...ecipes_IMAGE.reduceSeparateCCDsCentral.rst | 1 - ...sq.recipes_LS_SPECT.makeIRAFCompatible.rst | 1 - ...ipes.sq.recipes_LS_SPECT.reduceScience.rst | 1 - ...pes.sq.recipes_LS_SPECT.reduceStandard.rst | 1 - ...s_LS_SPECT.reduceWithMultipleStandards.rst | 1 - ....recipes.sq.recipes_NS_LS_SPECT.reduce.rst | 1 - ...TILLUM_LS_SPECT.makeProcessedSlitIllum.rst | 1 - ...s_STANDARD_LS_SPECT.makeIRAFCompatible.rst | 1 - ...ecipes_STANDARD_LS_SPECT.reduceScience.rst | 1 - ...cipes_STANDARD_LS_SPECT.reduceStandard.rst | 1 - ...s.sq.recipes_common.makeIRAFCompatible.rst | 1 - .../examples/recipes/gmos_cal_sq_recipes.rst | 1 - .../gmos_cal_wavecal_ls_sq_recipes.rst | 1 - .../examples/recipes/gmos_img_sq_recipes.rst | 2 +- .../examples/recipes/gmos_sq_recipes.rst | 2 +- .../examples/recipes/recipes_index.rst | 1 - .../doc/usermanuals/recipes/recipes_index.rst | 2 - .../utility_scripts/generate_primdoc.py | 2 +- .../utility_scripts/generate_recipedoc.py | 2 - geminidr/f2/lookups/maskdb.py | 2 +- geminidr/f2/lookups/nearIRsky.dat | 2 +- .../f2/lookups/nearIRsky_with_2nd_order.dat | 2 +- geminidr/f2/parameters_f2_spect.py | 3 +- geminidr/f2/primitives_f2_spect.py | 2 +- geminidr/f2/recipes/qa/recipes_LS_SPECT.py | 6 +- geminidr/f2/recipes/sq/recipes_IMAGE.py | 2 +- geminidr/f2/recipes/tests/reduce_img.sh | 1 - .../f2/recipes/tests/reduce_img_nodarks.sh | 1 - geminidr/f2/recipes/tests/test_H_img.sh | 1 - geminidr/f2/recipes/tests/test_J_img.sh | 1 - geminidr/f2/recipes/tests/test_K-red_img.sh | 1 - .../atran_cp_850-6000nm_wv10000_za48_r0.dat | 2 +- .../atran_cp_850-6000nm_wv2300_za48_r0.dat | 2 +- .../atran_cp_850-6000nm_wv4300_za48_r0.dat | 2 +- .../atran_cp_850-6000nm_wv7600_za48_r0.dat | 2 +- .../atran_mk_850-6000nm_wv1000_za48_r0.dat | 2 +- .../atran_mk_850-6000nm_wv1600_za48_r0.dat | 2 +- .../atran_mk_850-6000nm_wv3000_za48_r0.dat | 2 +- .../atran_mk_850-6000nm_wv5000_za48_r0.dat | 2 +- geminidr/gemini/lookups/color_corrections.py | 55 +- geminidr/gemini/lookups/extinction_data.py | 2 +- .../oh_conv_10000_XJHK.dat | 2 +- .../oh_conv_1500_XJHK.dat | 2 +- .../oh_conv_20000_XJHK.dat | 2 +- .../oh_synthetic_spectra/oh_conv_500_XJHK.dat | 2 +- geminidr/gemini/lookups/qa_constraints.py | 76 +- .../lookups/source_detection/default.nnw | 5 +- .../lookups/source_detection/default.param | 1 - .../lookups/source_detection/default.sex | 42 +- .../source_detection/default_nodq.param | 1 - .../bd+284211.dat | 58 +- .../spectrophotometric_standards/feige110.dat | 58 +- .../spectrophotometric_standards/feige34.dat | 58 +- .../spectrophotometric_standards/feige66.dat | 58 +- .../spectrophotometric_standards/feige67.dat | 58 +- .../spectrophotometric_standards/g191b2b.dat | 58 +- .../spectrophotometric_standards/gd140.dat | 58 +- .../hiltner600.dat | 58 +- .../spectrophotometric_standards/hz44.dat | 58 +- .../pg0823546.dat | 58 +- .../spectrophotometric_standards/wolf1346.dat | 58 +- geminidr/gemini/tests/sh_functions | 1 - geminidr/gemini/tests/test_gemini.py | 2 +- geminidr/ghost/lookups/Polyfit/README | 2 +- .../Polyfit/ghost_thar_linelist_20220718.dat | 818 +++---- .../ghost/lookups/Polyfit/westinhouse.dat | 280 +-- geminidr/ghost/lookups/keyword_comments.py | 2 +- geminidr/ghost/lookups/targetn_dict.py | 2 +- geminidr/ghost/polyfit/__init__.py | 2 - geminidr/ghost/polyfit/extract.py | 34 +- geminidr/ghost/polyfit/ghost.py | 36 +- geminidr/ghost/polyfit/polyspect.py | 40 +- .../polyfit/test/testdata/Polyfit/README | 2 +- geminidr/ghost/primitives_calibdb_ghost.py | 1 - geminidr/ghost/primitives_ghost_bundle.py | 3 +- geminidr/ghost/primitives_ghost_slit.py | 1 - geminidr/ghost/primitives_ghost_spect.py | 6 +- .../recipes/sq/tests/test_reduce_ghost.py | 2 +- geminidr/ghost/tests/__init__.py | 2 +- .../ghost/tests/slit/test_fix_cosmic_rays.py | 2 - .../ghost/tests/slit/test_stack_frames.py | 1 - .../ghost/tests/slit/test_total_obj_flux.py | 2 - geminidr/ghost/tests/spect/__init__.py | 1 - .../tests/spect/test_barycentric_correct.py | 1 - .../ghost/tests/spect/test_dark_correct.py | 1 - .../tests/spect/test_get_polyfit_filename.py | 1 - .../tests/spect/test_standardize_structure.py | 1 - geminidr/ghost/utils/diagnostics.py | 2 +- geminidr/ghost/utils/mkspatmod.py | 3 +- geminidr/gmos/lookups/CuAr_GMOS_mixord.dat | 68 +- geminidr/gmos/lookups/bpmtab.py | 10 +- geminidr/gmos/lookups/fringe_control_pairs.py | 2 +- .../gmos/recipes/ql/recipes_FLAT_LS_SPECT.py | 1 - geminidr/gmos/recipes/ql/recipes_LS_SPECT.py | 1 - .../recipes/ql/recipes_STANDARD_LS_SPECT.py | 1 - .../recipes/ql/tests/test_flat_ls_spect.py | 2 +- geminidr/gmos/recipes/sq/recipes_IMAGE.py | 1 - .../tests/image/test_apply_wcs_adjustment.py | 2 +- geminidr/gmos/tests/longslit/__init__.py | 2 +- .../spect/test_adjust_wcs_to_reference.py | 2 +- .../spect/test_attach_wavelength_solution.py | 2 +- .../tests/spect/test_determine_distortion.py | 2 +- .../tests/spect/test_distortion_correct.py | 2 +- ...ortion_correct_with_wavelength_solution.py | 2 +- .../tests/spect/test_extract_1d_spectra.py | 1 - geminidr/gnirs/lookups/MDF_XD.py | 166 +- geminidr/gnirs/lookups/nearIRsky.dat | 2 +- geminidr/gnirs/lookups/orders_XD.py | 152 +- geminidr/gnirs/parameters_gnirs_image.py | 2 +- geminidr/gnirs/recipes/qa/recipes_LS_SPECT.py | 8 +- .../lookups/gsaoi_static_distortion_info.py | 47 +- geminidr/gsaoi/lookups/maskdb.py | 2 +- geminidr/gsaoi/primitives_gsaoi.py | 1 - geminidr/gsaoi/recipes/tests/reduce_img.sh | 1 - .../gsaoi/recipes/tests/reduce_img_every_n.sh | 1 - .../gsaoi/recipes/tests/reduce_img_not_bpm.sh | 1 - geminidr/gsaoi/recipes/tests/test_H_img.sh | 1 - geminidr/gsaoi/recipes/tests/test_J_img.sh | 1 - geminidr/gsaoi/recipes/tests/test_Ksc_img.sh | 1 - geminidr/interactive/INTERACTIVE.md | 138 +- geminidr/interactive/README.md | 20 +- geminidr/interactive/__init__.py | 2 +- geminidr/interactive/docs/index.rst | 10 +- geminidr/interactive/fit/help.py | 178 +- geminidr/interactive/server.py | 2 +- .../static/css/template_dark_minimal.css | 2 +- geminidr/interactive/static/dragons.css | 2 +- .../static/favicon/browserconfig.xml | 2 +- .../interactive/static/favicon/manifest.json | 2 +- geminidr/interactive/static/hamburger.svg | 2 +- geminidr/interactive/static/js/loading.js | 2 +- .../interactive/static/js/openHelpPopup.js | 2 +- geminidr/interactive/static/modal.js | 2 +- geminidr/interactive/static/version.js | 2 +- geminidr/niri/__init__.py | 1 - geminidr/niri/lookups/maskdb.py | 2 +- geminidr/niri/primitives_niri.py | 1 - geminidr/niri/recipes/qa/recipes_IMAGE.py | 2 +- .../niri/recipes/sq/recipes_ARC_LS_SPECT.py | 4 +- geminidr/niri/tests/reduce_img.sh | 1 - geminidr/niri/tests/test_J_img.sh | 1 - geminidr/niri/tests/test_K_img.sh | 1 - gempy/__init__.py | 2 +- gempy/adlibrary/plotting.py | 2 +- gempy/display/__init__.py | 2 +- gempy/doc/mosaic/source/conf.py | 2 +- gempy/doc/mosaic/source/examples.rst | 197 +- gempy/doc/mosaic/source/glossary.rst | 54 +- gempy/doc/mosaic/source/introduction.rst | 26 +- gempy/doc/mosaic/source/mosaic.rst | 114 +- gempy/doc/mosaic/source/mosaicAD.rst | 80 +- gempy/doc/mosaic/source/supptools.rst | 16 +- gempy/eti_core/etiparam.py | 2 - gempy/eti_core/pyrafeti.py | 2 - gempy/eti_core/pyrafetifile.py | 1 - gempy/eti_core/pyrafetiparam.py | 2 - gempy/gemini/eti/__init__.py | 1 - gempy/gemini/eti/gemcombineeti.py | 2 - gempy/gemini/eti/gemcombinefile.py | 1 - gempy/gemini/eti/gemcombineparam.py | 1 - gempy/gemini/eti/gmosaiceti.py | 2 - gempy/gemini/eti/gmosaicfile.py | 1 - gempy/gemini/eti/gmosaicparam.py | 1 - gempy/gemini/hdr_fixing.py | 2 +- gempy/gemini/irafcompat.py | 12 +- .../tests/test_gemini_tools_grouping.py | 2 +- gempy/library/config/README | 1 - gempy/library/config/config.py | 4 +- gempy/library/convolution.py | 29 +- gempy/library/fitsverify.py | 2 +- gempy/library/spectral.py | 2 +- gempy/library/telluric_models.py | 1 - gempy/library/tests/test_astromodels.py | 1 - gempy/numdisplay/README | 1 - gempy/numdisplay/displaydev.py | 2 +- gempy/numdisplay/ichar.dat | 94 +- gempy/numdisplay/ichar.py | 14 +- gempy/numdisplay/imconfig.py | 24 +- gempy/numdisplay/imtoolrc | 5 +- gempy/numdisplay/overlay.py | 386 ++-- gempy/share/man/man1/dataselect.1 | 14 +- gempy/share/man/man1/typewalk.1 | 44 +- gempy/utils/errors.py | 2 +- ops_versions.txt | 1 - .../adcc/client/adcc_faceplate/adktool.html | 26 +- .../adcc/client/adcc_faceplate/d3.v3.js | 30 +- .../adcc/client/adcc_faceplate/d3.v3.min.js | 2 +- .../client/adcc_faceplate/jquery-1.7.2.min.js | 2 +- .../adcc_faceplate/js/jqplot/MIT-LICENSE.txt | 2 +- .../adcc_faceplate/js/jqplot/README.txt | 22 +- .../adcc_faceplate/js/jqplot/changes.txt | 72 +- .../adcc_faceplate/js/jqplot/copyright.txt | 28 +- .../js/jqplot/docs/files/MIT-LICENSE-txt.html | 2 +- .../js/jqplot/docs/files/changes-txt.html | 2 +- .../js/jqplot/docs/files/gpl-2-0-txt.html | 2 +- .../docs/files/jqPlotCssStyling-txt.html | 2 +- .../jqplot/docs/files/jqPlotOptions-txt.html | 2 +- .../files/jqplot-axisLabelRenderer-js.html | 2 +- .../files/jqplot-axisTickRenderer-js.html | 2 +- .../files/jqplot-canvasGridRenderer-js.html | 2 +- .../js/jqplot/docs/files/jqplot-core-js.html | 2 +- .../files/jqplot-divTitleRenderer-js.html | 2 +- .../docs/files/jqplot-lineRenderer-js.html | 2 +- .../files/jqplot-linearAxisRenderer-js.html | 2 +- .../docs/files/jqplot-markerRenderer-js.html | 2 +- .../docs/files/jqplot-shadowRenderer-js.html | 2 +- .../docs/files/jqplot-shapeRenderer-js.html | 2 +- .../docs/files/jqplot-themeEngine-js.html | 2 +- .../jqplot/docs/files/jqplot-toImage-js.html | 2 +- .../docs/files/optionsTutorial-txt.html | 2 +- .../jqplot-BezierCurveRenderer-js.html | 2 +- .../files/plugins/jqplot-barRenderer-js.html | 2 +- .../plugins/jqplot-blockRenderer-js.html | 2 +- .../plugins/jqplot-bubbleRenderer-js.html | 2 +- .../jqplot-canvasAxisLabelRenderer-js.html | 2 +- .../jqplot-canvasAxisTickRenderer-js.html | 2 +- .../plugins/jqplot-canvasOverlay-js.html | 2 +- .../jqplot-categoryAxisRenderer-js.html | 2 +- .../files/plugins/jqplot-ciParser-js.html | 2 +- .../docs/files/plugins/jqplot-cursor-js.html | 2 +- .../plugins/jqplot-dateAxisRenderer-js.html | 2 +- .../plugins/jqplot-donutRenderer-js.html | 2 +- .../files/plugins/jqplot-dragable-js.html | 2 +- .../jqplot-enhancedLegendRenderer-js.html | 2 +- .../plugins/jqplot-funnelRenderer-js.html | 2 +- .../files/plugins/jqplot-highlighter-js.html | 2 +- .../plugins/jqplot-logAxisRenderer-js.html | 2 +- .../plugins/jqplot-mekkoAxisRenderer-js.html | 2 +- .../plugins/jqplot-mekkoRenderer-js.html | 2 +- .../plugins/jqplot-meterGaugeRenderer-js.html | 2 +- .../files/plugins/jqplot-ohlcRenderer-js.html | 2 +- .../files/plugins/jqplot-pieRenderer-js.html | 2 +- .../files/plugins/jqplot-pointLabels-js.html | 2 +- .../jqplot-pyramidAxisRenderer-js.html | 2 +- .../jqplot-pyramidGridRenderer-js.html | 2 +- .../plugins/jqplot-pyramidRenderer-js.html | 2 +- .../files/plugins/jqplot-trendline-js.html | 2 +- .../js/jqplot/docs/files/usage-txt.html | 2 +- .../adcc_faceplate/js/jqplot/docs/index.html | 2 +- .../js/jqplot/docs/index/Classes.html | 2 +- .../js/jqplot/docs/index/Files.html | 2 +- .../js/jqplot/docs/index/Functions.html | 2 +- .../js/jqplot/docs/index/General.html | 2 +- .../js/jqplot/docs/index/General2.html | 2 +- .../js/jqplot/docs/index/General3.html | 2 +- .../js/jqplot/docs/index/General4.html | 2 +- .../js/jqplot/docs/index/General5.html | 2 +- .../js/jqplot/docs/index/General6.html | 2 +- .../js/jqplot/docs/index/General7.html | 2 +- .../js/jqplot/docs/index/Hooks.html | 2 +- .../js/jqplot/docs/index/Properties.html | 2 +- .../js/jqplot/docs/index/Properties2.html | 2 +- .../js/jqplot/docs/index/Properties3.html | 2 +- .../js/jqplot/docs/index/Properties4.html | 2 +- .../js/jqplot/docs/index/Properties5.html | 2 +- .../js/jqplot/docs/index/Properties6.html | 2 +- .../js/jqplot/docs/javascript/main.js | 1 - .../js/jqplot/docs/javascript/searchdata.js | 2 +- .../js/jqplot/docs/search/ClassesA.html | 2 +- .../js/jqplot/docs/search/ClassesD.html | 2 +- .../js/jqplot/docs/search/ClassesG.html | 2 +- .../js/jqplot/docs/search/ClassesH.html | 2 +- .../js/jqplot/docs/search/ClassesJ.html | 2 +- .../js/jqplot/docs/search/ClassesL.html | 2 +- .../js/jqplot/docs/search/ClassesS.html | 2 +- .../js/jqplot/docs/search/ClassesSymbols.html | 2 +- .../js/jqplot/docs/search/ClassesT.html | 2 +- .../js/jqplot/docs/search/ClassesV.html | 2 +- .../js/jqplot/docs/search/FilesJ.html | 2 +- .../js/jqplot/docs/search/FunctionsC.html | 2 +- .../js/jqplot/docs/search/FunctionsD.html | 2 +- .../js/jqplot/docs/search/FunctionsG.html | 2 +- .../js/jqplot/docs/search/FunctionsI.html | 2 +- .../js/jqplot/docs/search/FunctionsM.html | 2 +- .../js/jqplot/docs/search/FunctionsN.html | 2 +- .../js/jqplot/docs/search/FunctionsR.html | 2 +- .../js/jqplot/docs/search/FunctionsS.html | 2 +- .../js/jqplot/docs/search/FunctionsZ.html | 2 +- .../js/jqplot/docs/search/GeneralA.html | 2 +- .../js/jqplot/docs/search/GeneralB.html | 2 +- .../js/jqplot/docs/search/GeneralC.html | 2 +- .../js/jqplot/docs/search/GeneralD.html | 2 +- .../js/jqplot/docs/search/GeneralE.html | 2 +- .../js/jqplot/docs/search/GeneralF.html | 2 +- .../js/jqplot/docs/search/GeneralG.html | 2 +- .../js/jqplot/docs/search/GeneralH.html | 2 +- .../js/jqplot/docs/search/GeneralI.html | 2 +- .../js/jqplot/docs/search/GeneralJ.html | 2 +- .../js/jqplot/docs/search/GeneralL.html | 2 +- .../js/jqplot/docs/search/GeneralM.html | 2 +- .../js/jqplot/docs/search/GeneralN.html | 2 +- .../js/jqplot/docs/search/GeneralO.html | 2 +- .../js/jqplot/docs/search/GeneralP.html | 2 +- .../js/jqplot/docs/search/GeneralR.html | 2 +- .../js/jqplot/docs/search/GeneralS.html | 2 +- .../js/jqplot/docs/search/GeneralSymbols.html | 2 +- .../js/jqplot/docs/search/GeneralT.html | 2 +- .../js/jqplot/docs/search/GeneralU.html | 2 +- .../js/jqplot/docs/search/GeneralV.html | 2 +- .../js/jqplot/docs/search/GeneralW.html | 2 +- .../js/jqplot/docs/search/GeneralX.html | 2 +- .../js/jqplot/docs/search/GeneralY.html | 2 +- .../js/jqplot/docs/search/GeneralZ.html | 2 +- .../js/jqplot/docs/search/HooksA.html | 2 +- .../js/jqplot/docs/search/HooksE.html | 2 +- .../js/jqplot/docs/search/HooksJ.html | 2 +- .../js/jqplot/docs/search/HooksP.html | 2 +- .../js/jqplot/docs/search/NoResults.html | 2 +- .../js/jqplot/docs/search/PropertiesA.html | 2 +- .../js/jqplot/docs/search/PropertiesB.html | 2 +- .../js/jqplot/docs/search/PropertiesC.html | 2 +- .../js/jqplot/docs/search/PropertiesD.html | 2 +- .../js/jqplot/docs/search/PropertiesE.html | 2 +- .../js/jqplot/docs/search/PropertiesF.html | 2 +- .../js/jqplot/docs/search/PropertiesG.html | 2 +- .../js/jqplot/docs/search/PropertiesH.html | 2 +- .../js/jqplot/docs/search/PropertiesI.html | 2 +- .../js/jqplot/docs/search/PropertiesL.html | 2 +- .../js/jqplot/docs/search/PropertiesM.html | 2 +- .../js/jqplot/docs/search/PropertiesN.html | 2 +- .../js/jqplot/docs/search/PropertiesO.html | 2 +- .../js/jqplot/docs/search/PropertiesP.html | 2 +- .../js/jqplot/docs/search/PropertiesR.html | 2 +- .../js/jqplot/docs/search/PropertiesS.html | 2 +- .../js/jqplot/docs/search/PropertiesT.html | 2 +- .../js/jqplot/docs/search/PropertiesU.html | 2 +- .../js/jqplot/docs/search/PropertiesV.html | 2 +- .../js/jqplot/docs/search/PropertiesW.html | 2 +- .../js/jqplot/docs/search/PropertiesX.html | 2 +- .../js/jqplot/docs/search/PropertiesY.html | 2 +- .../js/jqplot/docs/search/PropertiesZ.html | 2 +- .../js/jqplot/docs/styles/1.css | 1 - .../js/jqplot/docs/styles/2.css | 4 +- .../js/jqplot/examples/area.html | 38 +- .../js/jqplot/examples/axisLabelTests.html | 52 +- .../examples/axisLabelsRotatedText.html | 52 +- .../examples/axisScalingForceTickAt.html | 26 +- .../js/jqplot/examples/bandedLine.html | 26 +- .../js/jqplot/examples/bar-charts.html | 40 +- .../js/jqplot/examples/barLineAnimated.html | 32 +- .../js/jqplot/examples/barTest.html | 90 +- .../js/jqplot/examples/bezierCurve.html | 20 +- .../js/jqplot/examples/blockPlot.html | 46 +- .../js/jqplot/examples/bubble-plots.html | 66 +- .../js/jqplot/examples/bubbleChart.html | 104 +- .../jqplot/examples/candlestick-charts.html | 42 +- .../js/jqplot/examples/candlestick.html | 44 +- .../jqplot/examples/cursor-highlighter.html | 18 +- .../customHighlighterCursorTrendline.html | 16 +- .../js/jqplot/examples/dashboardWidget.html | 64 +- .../js/jqplot/examples/dashedLines.html | 46 +- .../js/jqplot/examples/data-renderers.html | 18 +- .../js/jqplot/examples/date-axes.html | 22 +- .../examples/dateAxisLogAxisZooming.html | 48 +- .../js/jqplot/examples/dateAxisRenderer.html | 38 +- .../js/jqplot/examples/example.js | 6 +- .../js/jqplot/examples/example.min.js | 2 +- .../js/jqplot/examples/examples.css | 12 +- .../js/jqplot/examples/examples.min.css | 2 +- .../js/jqplot/examples/fillBetweenLines.html | 18 +- .../js/jqplot/examples/hiddenPlotsInTabs.html | 56 +- .../js/jqplot/examples/index.html | 4 +- .../jquery-ui/css/ui-lightness/jquery-ui.css | 12 +- .../css/ui-lightness/jquery-ui.min.css | 2 +- .../js/jqplot/examples/jsondata.txt | 2 +- .../js/jqplot/examples/kcp_area.html | 30 +- .../js/jqplot/examples/kcp_cdf.html | 40 +- .../js/jqplot/examples/kcp_engel.html | 30 +- .../js/jqplot/examples/kcp_lorenz.html | 52 +- .../js/jqplot/examples/kcp_pdf.html | 108 +- .../js/jqplot/examples/kcp_pyramid.html | 42 +- .../js/jqplot/examples/kcp_pyramid2.html | 42 +- .../js/jqplot/examples/line-charts.html | 74 +- .../js/jqplot/examples/mekkoCharts.html | 78 +- .../js/jqplot/examples/meterGauge.html | 14 +- .../adcc_faceplate/js/jqplot/examples/nav.inc | 10 +- .../js/jqplot/examples/pie-donut-charts.html | 40 +- .../js/jqplot/examples/pieTest.html | 86 +- .../js/jqplot/examples/pieTest2.js | 34 +- .../js/jqplot/examples/pieTest4.html | 174 +- .../js/jqplot/examples/point-labels.html | 38 +- .../js/jqplot/examples/resizablePlot.html | 46 +- .../jqplot/examples/rotated-tick-labels.html | 38 +- .../examples/rotatedTickLabelsZoom.html | 36 +- .../js/jqplot/examples/smoothedLine.html | 24 +- .../examples/syntaxhighlighter/LGPL-LICENSE | 6 +- .../syntaxhighlighter/scripts/shAutoloader.js | 2 +- .../scripts/shAutoloader.min.js | 2 +- .../scripts/shBrushJScript.js | 6 +- .../scripts/shBrushJScript.min.js | 2 +- .../syntaxhighlighter/scripts/shBrushXml.js | 10 +- .../scripts/shBrushXml.min.js | 2 +- .../syntaxhighlighter/scripts/shCore.js | 2 +- .../syntaxhighlighter/scripts/shCore.min.js | 2 +- .../syntaxhighlighter/styles/shCore.css | 2 +- .../syntaxhighlighter/styles/shCore.min.css | 2 +- .../styles/shCoreDefault.css | 2 +- .../styles/shCoreDefault.min.css | 2 +- .../styles/shThemeDefault.css | 2 +- .../styles/shThemeDefault.min.css | 2 +- .../styles/shThemejqPlot.css | 2 +- .../styles/shThemejqPlot.min.css | 2 +- .../js/jqplot/examples/theming.html | 60 +- .../js/jqplot/examples/topbanner.inc | 2 +- .../js/jqplot/examples/waterfall.html | 24 +- .../js/jqplot/examples/waterfall2.html | 32 +- .../js/jqplot/examples/yahooData.js | 2 +- .../js/jqplot/examples/yahooData.min.js | 2 +- .../js/jqplot/examples/zoom1.html | 100 +- .../js/jqplot/examples/zoomOptions.html | 32 +- .../js/jqplot/examples/zoomProxy.html | 34 +- .../js/jqplot/examples/zooming.html | 64 +- .../adcc_faceplate/js/jqplot/excanvas.js | 2 +- .../adcc_faceplate/js/jqplot/excanvas.min.js | 30 +- .../adcc_faceplate/js/jqplot/gpl-2.0.txt | 2 +- .../js/jqplot/jqPlotCssStyling.txt | 10 +- .../js/jqplot/jqPlotOptions.txt | 106 +- .../js/jqplot/jquery.jqplot.css | 2 +- .../adcc_faceplate/js/jqplot/jquery.jqplot.js | 1904 ++++++++-------- .../js/jqplot/jquery.jqplot.min.css | 2 +- .../js/jqplot/jquery.jqplot.min.js | 30 +- .../client/adcc_faceplate/js/jqplot/jquery.js | 108 +- .../adcc_faceplate/js/jqplot/jquery.min.js | 4 +- .../js/jqplot/optionsTutorial.txt | 16 +- .../plugins/jqplot.BezierCurveRenderer.js | 126 +- .../plugins/jqplot.BezierCurveRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.barRenderer.js | 160 +- .../jqplot/plugins/jqplot.barRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.blockRenderer.js | 60 +- .../plugins/jqplot.blockRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.bubbleRenderer.js | 188 +- .../plugins/jqplot.bubbleRenderer.min.js | 30 +- .../plugins/jqplot.canvasAxisLabelRenderer.js | 66 +- .../jqplot.canvasAxisLabelRenderer.min.js | 30 +- .../plugins/jqplot.canvasAxisTickRenderer.js | 68 +- .../jqplot.canvasAxisTickRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.canvasOverlay.js | 100 +- .../plugins/jqplot.canvasOverlay.min.js | 30 +- .../plugins/jqplot.canvasTextRenderer.js | 76 +- .../plugins/jqplot.canvasTextRenderer.min.js | 30 +- .../plugins/jqplot.categoryAxisRenderer.js | 130 +- .../jqplot.categoryAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.ciParser.js | 40 +- .../js/jqplot/plugins/jqplot.ciParser.min.js | 30 +- .../js/jqplot/plugins/jqplot.cursor.js | 174 +- .../js/jqplot/plugins/jqplot.cursor.min.js | 30 +- .../jqplot/plugins/jqplot.dateAxisRenderer.js | 125 +- .../plugins/jqplot.dateAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.donutRenderer.js | 178 +- .../plugins/jqplot.donutRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.dragable.js | 52 +- .../js/jqplot/plugins/jqplot.dragable.min.js | 30 +- .../plugins/jqplot.enhancedLegendRenderer.js | 52 +- .../jqplot.enhancedLegendRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.funnelRenderer.js | 226 +- .../plugins/jqplot.funnelRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.highlighter.js | 98 +- .../jqplot/plugins/jqplot.highlighter.min.js | 30 +- .../js/jqplot/plugins/jqplot.json2.js | 10 +- .../js/jqplot/plugins/jqplot.json2.min.js | 30 +- .../jqplot/plugins/jqplot.logAxisRenderer.js | 78 +- .../plugins/jqplot.logAxisRenderer.min.js | 30 +- .../plugins/jqplot.mekkoAxisRenderer.js | 108 +- .../plugins/jqplot.mekkoAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.mekkoRenderer.js | 92 +- .../plugins/jqplot.mekkoRenderer.min.js | 30 +- .../plugins/jqplot.meterGaugeRenderer.js | 242 +- .../plugins/jqplot.meterGaugeRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.ohlcRenderer.js | 100 +- .../jqplot/plugins/jqplot.ohlcRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.pieRenderer.js | 206 +- .../jqplot/plugins/jqplot.pieRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.pointLabels.js | 92 +- .../jqplot/plugins/jqplot.pointLabels.min.js | 30 +- .../plugins/jqplot.pyramidAxisRenderer.js | 100 +- .../plugins/jqplot.pyramidAxisRenderer.min.js | 30 +- .../plugins/jqplot.pyramidGridRenderer.js | 36 +- .../plugins/jqplot.pyramidGridRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.pyramidRenderer.js | 88 +- .../plugins/jqplot.pyramidRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.trendline.js | 40 +- .../js/jqplot/plugins/jqplot.trendline.min.js | 30 +- .../client/adcc_faceplate/js/jqplot/usage.txt | 68 +- .../ui-lightness/jquery-ui-1.8.20.custom.css | 12 +- .../js/jquery-ui/js/jquery-1.7.2.min.js | 2 +- .../js/jquery-ui-1.8.20.custom.min.js | 2 +- .../adcc_faceplate/js/metricsdatabase.js | 6 +- .../client/adcc_faceplate/js/statusviewer.js | 34 +- .../client/adcc_faceplate/reduce_status.html | 2 +- .../client/adcc_faceplate_dark/adktool.html | 26 +- .../css/nighttime_metrics_light.css | 6 +- .../adcc/client/adcc_faceplate_dark/d3.v3.js | 30 +- .../client/adcc_faceplate_dark/d3.v3.min.js | 2 +- .../adcc_faceplate_dark/jquery-1.7.2.min.js | 2 +- .../adcc/client/adcc_faceplate_dark/jquery.js | 2 +- .../client/adcc_faceplate_dark/js/cmdpump.js | 4 +- .../js/jqplot/MIT-LICENSE.txt | 2 +- .../adcc_faceplate_dark/js/jqplot/README.txt | 22 +- .../adcc_faceplate_dark/js/jqplot/changes.txt | 72 +- .../js/jqplot/copyright.txt | 28 +- .../js/jqplot/docs/files/MIT-LICENSE-txt.html | 2 +- .../js/jqplot/docs/files/changes-txt.html | 2 +- .../js/jqplot/docs/files/gpl-2-0-txt.html | 2 +- .../docs/files/jqPlotCssStyling-txt.html | 2 +- .../jqplot/docs/files/jqPlotOptions-txt.html | 2 +- .../files/jqplot-axisLabelRenderer-js.html | 2 +- .../files/jqplot-axisTickRenderer-js.html | 2 +- .../files/jqplot-canvasGridRenderer-js.html | 2 +- .../js/jqplot/docs/files/jqplot-core-js.html | 2 +- .../files/jqplot-divTitleRenderer-js.html | 2 +- .../docs/files/jqplot-lineRenderer-js.html | 2 +- .../files/jqplot-linearAxisRenderer-js.html | 2 +- .../docs/files/jqplot-markerRenderer-js.html | 2 +- .../docs/files/jqplot-shadowRenderer-js.html | 2 +- .../docs/files/jqplot-shapeRenderer-js.html | 2 +- .../docs/files/jqplot-themeEngine-js.html | 2 +- .../jqplot/docs/files/jqplot-toImage-js.html | 2 +- .../docs/files/optionsTutorial-txt.html | 2 +- .../jqplot-BezierCurveRenderer-js.html | 2 +- .../files/plugins/jqplot-barRenderer-js.html | 2 +- .../plugins/jqplot-blockRenderer-js.html | 2 +- .../plugins/jqplot-bubbleRenderer-js.html | 2 +- .../jqplot-canvasAxisLabelRenderer-js.html | 2 +- .../jqplot-canvasAxisTickRenderer-js.html | 2 +- .../plugins/jqplot-canvasOverlay-js.html | 2 +- .../jqplot-categoryAxisRenderer-js.html | 2 +- .../files/plugins/jqplot-ciParser-js.html | 2 +- .../docs/files/plugins/jqplot-cursor-js.html | 2 +- .../plugins/jqplot-dateAxisRenderer-js.html | 2 +- .../plugins/jqplot-donutRenderer-js.html | 2 +- .../files/plugins/jqplot-dragable-js.html | 2 +- .../jqplot-enhancedLegendRenderer-js.html | 2 +- .../plugins/jqplot-funnelRenderer-js.html | 2 +- .../files/plugins/jqplot-highlighter-js.html | 2 +- .../plugins/jqplot-logAxisRenderer-js.html | 2 +- .../plugins/jqplot-mekkoAxisRenderer-js.html | 2 +- .../plugins/jqplot-mekkoRenderer-js.html | 2 +- .../plugins/jqplot-meterGaugeRenderer-js.html | 2 +- .../files/plugins/jqplot-ohlcRenderer-js.html | 2 +- .../files/plugins/jqplot-pieRenderer-js.html | 2 +- .../files/plugins/jqplot-pointLabels-js.html | 2 +- .../jqplot-pyramidAxisRenderer-js.html | 2 +- .../jqplot-pyramidGridRenderer-js.html | 2 +- .../plugins/jqplot-pyramidRenderer-js.html | 2 +- .../files/plugins/jqplot-trendline-js.html | 2 +- .../js/jqplot/docs/files/usage-txt.html | 2 +- .../js/jqplot/docs/index.html | 2 +- .../js/jqplot/docs/index/Classes.html | 2 +- .../js/jqplot/docs/index/Files.html | 2 +- .../js/jqplot/docs/index/Functions.html | 2 +- .../js/jqplot/docs/index/General.html | 2 +- .../js/jqplot/docs/index/General2.html | 2 +- .../js/jqplot/docs/index/General3.html | 2 +- .../js/jqplot/docs/index/General4.html | 2 +- .../js/jqplot/docs/index/General5.html | 2 +- .../js/jqplot/docs/index/General6.html | 2 +- .../js/jqplot/docs/index/General7.html | 2 +- .../js/jqplot/docs/index/Hooks.html | 2 +- .../js/jqplot/docs/index/Properties.html | 2 +- .../js/jqplot/docs/index/Properties2.html | 2 +- .../js/jqplot/docs/index/Properties3.html | 2 +- .../js/jqplot/docs/index/Properties4.html | 2 +- .../js/jqplot/docs/index/Properties5.html | 2 +- .../js/jqplot/docs/index/Properties6.html | 2 +- .../js/jqplot/docs/javascript/main.js | 1 - .../js/jqplot/docs/javascript/searchdata.js | 2 +- .../js/jqplot/docs/search/ClassesA.html | 2 +- .../js/jqplot/docs/search/ClassesD.html | 2 +- .../js/jqplot/docs/search/ClassesG.html | 2 +- .../js/jqplot/docs/search/ClassesH.html | 2 +- .../js/jqplot/docs/search/ClassesJ.html | 2 +- .../js/jqplot/docs/search/ClassesL.html | 2 +- .../js/jqplot/docs/search/ClassesS.html | 2 +- .../js/jqplot/docs/search/ClassesSymbols.html | 2 +- .../js/jqplot/docs/search/ClassesT.html | 2 +- .../js/jqplot/docs/search/ClassesV.html | 2 +- .../js/jqplot/docs/search/FilesJ.html | 2 +- .../js/jqplot/docs/search/FunctionsC.html | 2 +- .../js/jqplot/docs/search/FunctionsD.html | 2 +- .../js/jqplot/docs/search/FunctionsG.html | 2 +- .../js/jqplot/docs/search/FunctionsI.html | 2 +- .../js/jqplot/docs/search/FunctionsM.html | 2 +- .../js/jqplot/docs/search/FunctionsN.html | 2 +- .../js/jqplot/docs/search/FunctionsR.html | 2 +- .../js/jqplot/docs/search/FunctionsS.html | 2 +- .../js/jqplot/docs/search/FunctionsZ.html | 2 +- .../js/jqplot/docs/search/GeneralA.html | 2 +- .../js/jqplot/docs/search/GeneralB.html | 2 +- .../js/jqplot/docs/search/GeneralC.html | 2 +- .../js/jqplot/docs/search/GeneralD.html | 2 +- .../js/jqplot/docs/search/GeneralE.html | 2 +- .../js/jqplot/docs/search/GeneralF.html | 2 +- .../js/jqplot/docs/search/GeneralG.html | 2 +- .../js/jqplot/docs/search/GeneralH.html | 2 +- .../js/jqplot/docs/search/GeneralI.html | 2 +- .../js/jqplot/docs/search/GeneralJ.html | 2 +- .../js/jqplot/docs/search/GeneralL.html | 2 +- .../js/jqplot/docs/search/GeneralM.html | 2 +- .../js/jqplot/docs/search/GeneralN.html | 2 +- .../js/jqplot/docs/search/GeneralO.html | 2 +- .../js/jqplot/docs/search/GeneralP.html | 2 +- .../js/jqplot/docs/search/GeneralR.html | 2 +- .../js/jqplot/docs/search/GeneralS.html | 2 +- .../js/jqplot/docs/search/GeneralSymbols.html | 2 +- .../js/jqplot/docs/search/GeneralT.html | 2 +- .../js/jqplot/docs/search/GeneralU.html | 2 +- .../js/jqplot/docs/search/GeneralV.html | 2 +- .../js/jqplot/docs/search/GeneralW.html | 2 +- .../js/jqplot/docs/search/GeneralX.html | 2 +- .../js/jqplot/docs/search/GeneralY.html | 2 +- .../js/jqplot/docs/search/GeneralZ.html | 2 +- .../js/jqplot/docs/search/HooksA.html | 2 +- .../js/jqplot/docs/search/HooksE.html | 2 +- .../js/jqplot/docs/search/HooksJ.html | 2 +- .../js/jqplot/docs/search/HooksP.html | 2 +- .../js/jqplot/docs/search/NoResults.html | 2 +- .../js/jqplot/docs/search/PropertiesA.html | 2 +- .../js/jqplot/docs/search/PropertiesB.html | 2 +- .../js/jqplot/docs/search/PropertiesC.html | 2 +- .../js/jqplot/docs/search/PropertiesD.html | 2 +- .../js/jqplot/docs/search/PropertiesE.html | 2 +- .../js/jqplot/docs/search/PropertiesF.html | 2 +- .../js/jqplot/docs/search/PropertiesG.html | 2 +- .../js/jqplot/docs/search/PropertiesH.html | 2 +- .../js/jqplot/docs/search/PropertiesI.html | 2 +- .../js/jqplot/docs/search/PropertiesL.html | 2 +- .../js/jqplot/docs/search/PropertiesM.html | 2 +- .../js/jqplot/docs/search/PropertiesN.html | 2 +- .../js/jqplot/docs/search/PropertiesO.html | 2 +- .../js/jqplot/docs/search/PropertiesP.html | 2 +- .../js/jqplot/docs/search/PropertiesR.html | 2 +- .../js/jqplot/docs/search/PropertiesS.html | 2 +- .../js/jqplot/docs/search/PropertiesT.html | 2 +- .../js/jqplot/docs/search/PropertiesU.html | 2 +- .../js/jqplot/docs/search/PropertiesV.html | 2 +- .../js/jqplot/docs/search/PropertiesW.html | 2 +- .../js/jqplot/docs/search/PropertiesX.html | 2 +- .../js/jqplot/docs/search/PropertiesY.html | 2 +- .../js/jqplot/docs/search/PropertiesZ.html | 2 +- .../js/jqplot/docs/styles/1.css | 1 - .../js/jqplot/docs/styles/2.css | 4 +- .../js/jqplot/examples/area.html | 38 +- .../js/jqplot/examples/axisLabelTests.html | 52 +- .../examples/axisLabelsRotatedText.html | 52 +- .../examples/axisScalingForceTickAt.html | 26 +- .../js/jqplot/examples/bandedLine.html | 26 +- .../js/jqplot/examples/bar-charts.html | 40 +- .../js/jqplot/examples/barLineAnimated.html | 32 +- .../js/jqplot/examples/barTest.html | 90 +- .../js/jqplot/examples/bezierCurve.html | 20 +- .../js/jqplot/examples/blockPlot.html | 46 +- .../js/jqplot/examples/bubble-plots.html | 66 +- .../js/jqplot/examples/bubbleChart.html | 104 +- .../jqplot/examples/candlestick-charts.html | 42 +- .../js/jqplot/examples/candlestick.html | 44 +- .../jqplot/examples/cursor-highlighter.html | 18 +- .../customHighlighterCursorTrendline.html | 16 +- .../js/jqplot/examples/dashboardWidget.html | 64 +- .../js/jqplot/examples/dashedLines.html | 46 +- .../js/jqplot/examples/data-renderers.html | 18 +- .../js/jqplot/examples/date-axes.html | 22 +- .../examples/dateAxisLogAxisZooming.html | 48 +- .../js/jqplot/examples/dateAxisRenderer.html | 38 +- .../js/jqplot/examples/example.js | 6 +- .../js/jqplot/examples/example.min.js | 2 +- .../js/jqplot/examples/examples.css | 12 +- .../js/jqplot/examples/examples.min.css | 2 +- .../js/jqplot/examples/fillBetweenLines.html | 18 +- .../js/jqplot/examples/hiddenPlotsInTabs.html | 56 +- .../js/jqplot/examples/index.html | 4 +- .../jquery-ui/css/ui-lightness/jquery-ui.css | 12 +- .../css/ui-lightness/jquery-ui.min.css | 2 +- .../js/jqplot/examples/jsondata.txt | 2 +- .../js/jqplot/examples/kcp_area.html | 30 +- .../js/jqplot/examples/kcp_cdf.html | 40 +- .../js/jqplot/examples/kcp_engel.html | 30 +- .../js/jqplot/examples/kcp_lorenz.html | 52 +- .../js/jqplot/examples/kcp_pdf.html | 108 +- .../js/jqplot/examples/kcp_pyramid.html | 42 +- .../js/jqplot/examples/kcp_pyramid2.html | 42 +- .../js/jqplot/examples/line-charts.html | 74 +- .../js/jqplot/examples/mekkoCharts.html | 78 +- .../js/jqplot/examples/meterGauge.html | 14 +- .../js/jqplot/examples/nav.inc | 10 +- .../js/jqplot/examples/pie-donut-charts.html | 40 +- .../js/jqplot/examples/pieTest.html | 86 +- .../js/jqplot/examples/pieTest2.js | 34 +- .../js/jqplot/examples/pieTest4.html | 174 +- .../js/jqplot/examples/point-labels.html | 38 +- .../js/jqplot/examples/resizablePlot.html | 46 +- .../jqplot/examples/rotated-tick-labels.html | 38 +- .../examples/rotatedTickLabelsZoom.html | 36 +- .../js/jqplot/examples/smoothedLine.html | 24 +- .../examples/syntaxhighlighter/LGPL-LICENSE | 6 +- .../syntaxhighlighter/scripts/shAutoloader.js | 2 +- .../scripts/shAutoloader.min.js | 2 +- .../scripts/shBrushJScript.js | 6 +- .../scripts/shBrushJScript.min.js | 2 +- .../syntaxhighlighter/scripts/shBrushXml.js | 10 +- .../scripts/shBrushXml.min.js | 2 +- .../syntaxhighlighter/scripts/shCore.js | 2 +- .../syntaxhighlighter/scripts/shCore.min.js | 2 +- .../syntaxhighlighter/styles/shCore.css | 2 +- .../syntaxhighlighter/styles/shCore.min.css | 2 +- .../styles/shCoreDefault.css | 2 +- .../styles/shCoreDefault.min.css | 2 +- .../styles/shThemeDefault.css | 2 +- .../styles/shThemeDefault.min.css | 2 +- .../styles/shThemejqPlot.css | 2 +- .../styles/shThemejqPlot.min.css | 2 +- .../js/jqplot/examples/theming.html | 60 +- .../js/jqplot/examples/topbanner.inc | 2 +- .../js/jqplot/examples/waterfall.html | 24 +- .../js/jqplot/examples/waterfall2.html | 32 +- .../js/jqplot/examples/yahooData.js | 2 +- .../js/jqplot/examples/yahooData.min.js | 2 +- .../js/jqplot/examples/zoom1.html | 100 +- .../js/jqplot/examples/zoomOptions.html | 32 +- .../js/jqplot/examples/zoomProxy.html | 34 +- .../js/jqplot/examples/zooming.html | 64 +- .../adcc_faceplate_dark/js/jqplot/excanvas.js | 2 +- .../js/jqplot/excanvas.min.js | 30 +- .../adcc_faceplate_dark/js/jqplot/gpl-2.0.txt | 2 +- .../js/jqplot/jqPlotCssStyling.txt | 10 +- .../js/jqplot/jqPlotOptions.txt | 106 +- .../js/jqplot/jquery.jqplot.css | 2 +- .../js/jqplot/jquery.jqplot.js | 1904 ++++++++-------- .../js/jqplot/jquery.jqplot.min.css | 2 +- .../js/jqplot/jquery.jqplot.min.js | 30 +- .../adcc_faceplate_dark/js/jqplot/jquery.js | 108 +- .../js/jqplot/jquery.min.js | 4 +- .../js/jqplot/optionsTutorial.txt | 16 +- .../plugins/jqplot.BezierCurveRenderer.js | 126 +- .../plugins/jqplot.BezierCurveRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.barRenderer.js | 160 +- .../jqplot/plugins/jqplot.barRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.blockRenderer.js | 60 +- .../plugins/jqplot.blockRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.bubbleRenderer.js | 188 +- .../plugins/jqplot.bubbleRenderer.min.js | 30 +- .../plugins/jqplot.canvasAxisLabelRenderer.js | 66 +- .../jqplot.canvasAxisLabelRenderer.min.js | 30 +- .../plugins/jqplot.canvasAxisTickRenderer.js | 68 +- .../jqplot.canvasAxisTickRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.canvasOverlay.js | 100 +- .../plugins/jqplot.canvasOverlay.min.js | 30 +- .../plugins/jqplot.canvasTextRenderer.js | 76 +- .../plugins/jqplot.canvasTextRenderer.min.js | 30 +- .../plugins/jqplot.categoryAxisRenderer.js | 130 +- .../jqplot.categoryAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.ciParser.js | 40 +- .../js/jqplot/plugins/jqplot.ciParser.min.js | 30 +- .../js/jqplot/plugins/jqplot.cursor.js | 174 +- .../js/jqplot/plugins/jqplot.cursor.min.js | 30 +- .../jqplot/plugins/jqplot.dateAxisRenderer.js | 125 +- .../plugins/jqplot.dateAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.donutRenderer.js | 178 +- .../plugins/jqplot.donutRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.dragable.js | 52 +- .../js/jqplot/plugins/jqplot.dragable.min.js | 30 +- .../plugins/jqplot.enhancedLegendRenderer.js | 52 +- .../jqplot.enhancedLegendRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.funnelRenderer.js | 226 +- .../plugins/jqplot.funnelRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.highlighter.js | 98 +- .../jqplot/plugins/jqplot.highlighter.min.js | 30 +- .../js/jqplot/plugins/jqplot.json2.js | 10 +- .../js/jqplot/plugins/jqplot.json2.min.js | 30 +- .../jqplot/plugins/jqplot.logAxisRenderer.js | 78 +- .../plugins/jqplot.logAxisRenderer.min.js | 30 +- .../plugins/jqplot.mekkoAxisRenderer.js | 108 +- .../plugins/jqplot.mekkoAxisRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.mekkoRenderer.js | 92 +- .../plugins/jqplot.mekkoRenderer.min.js | 30 +- .../plugins/jqplot.meterGaugeRenderer.js | 242 +- .../plugins/jqplot.meterGaugeRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.ohlcRenderer.js | 100 +- .../jqplot/plugins/jqplot.ohlcRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.pieRenderer.js | 206 +- .../jqplot/plugins/jqplot.pieRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.pointLabels.js | 92 +- .../jqplot/plugins/jqplot.pointLabels.min.js | 30 +- .../plugins/jqplot.pyramidAxisRenderer.js | 100 +- .../plugins/jqplot.pyramidAxisRenderer.min.js | 30 +- .../plugins/jqplot.pyramidGridRenderer.js | 36 +- .../plugins/jqplot.pyramidGridRenderer.min.js | 30 +- .../jqplot/plugins/jqplot.pyramidRenderer.js | 88 +- .../plugins/jqplot.pyramidRenderer.min.js | 30 +- .../js/jqplot/plugins/jqplot.trendline.js | 40 +- .../js/jqplot/plugins/jqplot.trendline.min.js | 30 +- .../adcc_faceplate_dark/js/jqplot/usage.txt | 68 +- .../ui-lightness/jquery-ui-1.8.20.custom.css | 12 +- .../js/jquery-ui/js/jquery-1.7.2.min.js | 2 +- .../js/jquery-ui-1.8.20.custom.min.js | 2 +- .../js/jquery-ui/js/jquery-ui.js | 2 +- .../js/jquery-ui/js/jquery.js | 2 +- .../adcc_faceplate_dark/js/metricsdatabase.js | 6 +- .../adcc_faceplate_dark/js/metricsviewer.js | 1 - .../adcc_faceplate_dark/js/statusviewer.js | 34 +- .../client/adcc_faceplate_dark/js/viewport.js | 88 +- .../adcc_faceplate_dark/reduce_status.html | 2 +- recipe_system/adcc/client/index.html | 2 +- .../adcc/client/qap_specviewer/.jshintrc | 2 +- .../adcc/client/qap_specviewer/README.md | 33 +- .../js/jqplot.1.0.9/MIT-LICENSE.txt | 2 +- .../js/jqplot.1.0.9/changes.txt | 74 +- .../js/jqplot.1.0.9/copyright.txt | 28 +- .../js/jqplot.1.0.9/docs/index.html | 2 +- .../js/jqplot.1.0.9/examples/ages.json | 4 +- .../js/jqplot.1.0.9/examples/area.html | 56 +- .../jqplot.1.0.9/examples/axisLabelTests.html | 48 +- .../examples/axisLabelsRotatedText.html | 48 +- .../examples/axisScalingForceTickAt.html | 22 +- .../js/jqplot.1.0.9/examples/bandedLine.html | 22 +- .../js/jqplot.1.0.9/examples/bar-charts.html | 36 +- .../examples/barLineAnimated.html | 28 +- .../js/jqplot.1.0.9/examples/barTest.html | 86 +- .../js/jqplot.1.0.9/examples/bezierCurve.html | 16 +- .../js/jqplot.1.0.9/examples/blockPlot.html | 44 +- .../jqplot.1.0.9/examples/bubble-plots.html | 62 +- .../js/jqplot.1.0.9/examples/bubbleChart.html | 100 +- .../examples/candlestick-charts.html | 38 +- .../js/jqplot.1.0.9/examples/candlestick.html | 40 +- .../jqplot.1.0.9/examples/canvas-overlay.html | 24 +- .../examples/cursor-highlighter.html | 16 +- .../customHighlighterCursorTrendline.html | 12 +- .../examples/dashboardWidget.html | 60 +- .../js/jqplot.1.0.9/examples/dashedLines.html | 42 +- .../jqplot.1.0.9/examples/data-renderers.html | 14 +- .../js/jqplot.1.0.9/examples/date-axes.html | 24 +- .../examples/dateAxisLogAxisZooming.html | 38 +- .../examples/dateAxisRenderer.html | 34 +- .../examples/draw-rectangles.html | 24 +- .../js/jqplot.1.0.9/examples/example.js | 2 +- .../js/jqplot.1.0.9/examples/example.min.js | 2 +- .../js/jqplot.1.0.9/examples/examples.css | 12 +- .../js/jqplot.1.0.9/examples/examples.min.css | 2 +- .../examples/fillBetweenLines.html | 10 +- .../examples/hiddenPlotsInTabs.html | 52 +- .../js/jqplot.1.0.9/examples/index.html | 10 +- .../js/jqplot.1.0.9/examples/jsondata.txt | 2 +- .../js/jqplot.1.0.9/examples/kcp.print.js | 40 +- .../js/jqplot.1.0.9/examples/kcp_area.html | 42 +- .../js/jqplot.1.0.9/examples/kcp_area2.html | 20 +- .../js/jqplot.1.0.9/examples/kcp_cdf.html | 36 +- .../js/jqplot.1.0.9/examples/kcp_engel.html | 30 +- .../js/jqplot.1.0.9/examples/kcp_lorenz.html | 48 +- .../js/jqplot.1.0.9/examples/kcp_pdf.html | 104 +- .../js/jqplot.1.0.9/examples/kcp_pyramid.html | 38 +- .../jqplot.1.0.9/examples/kcp_pyramid2.html | 38 +- .../examples/kcp_pyramid_by_age.html | 36 +- .../jqplot.1.0.9/examples/kcp_quintiles.html | 58 +- .../js/jqplot.1.0.9/examples/line-charts.html | 70 +- .../js/jqplot.1.0.9/examples/mekkoCharts.html | 74 +- .../js/jqplot.1.0.9/examples/meterGauge.html | 10 +- .../examples/multipleBarColors.html | 10 +- .../examples/pie-donut-charts.html | 38 +- .../examples/pieChartsEnhancedLegend.html | 20 +- .../js/jqplot.1.0.9/examples/pieTest.html | 82 +- .../js/jqplot.1.0.9/examples/pieTest2.js | 34 +- .../js/jqplot.1.0.9/examples/pieTest4.html | 170 +- .../jqplot.1.0.9/examples/point-labels.html | 34 +- .../js/jqplot.1.0.9/examples/quintiles.json | 2 +- .../jqplot.1.0.9/examples/resizablePlot.html | 42 +- .../examples/rotated-tick-labels.html | 34 +- .../examples/rotatedTickLabelsZoom.html | 32 +- .../jqplot.1.0.9/examples/selectorSyntax.html | 52 +- .../jqplot.1.0.9/examples/smoothedLine.html | 20 +- .../js/jqplot.1.0.9/examples/step-charts.html | 12 +- .../js/jqplot.1.0.9/examples/theming.html | 52 +- .../js/jqplot.1.0.9/examples/waterfall.html | 20 +- .../js/jqplot.1.0.9/examples/waterfall2.html | 28 +- .../js/jqplot.1.0.9/examples/yahooData.js | 2 +- .../js/jqplot.1.0.9/examples/yahooData.min.js | 2 +- .../js/jqplot.1.0.9/examples/zoom1.html | 96 +- .../js/jqplot.1.0.9/examples/zoomOptions.html | 28 +- .../js/jqplot.1.0.9/examples/zoomProxy.html | 46 +- .../js/jqplot.1.0.9/examples/zooming.html | 60 +- .../js/jqplot.1.0.9/excanvas.js | 2 +- .../js/jqplot.1.0.9/gpl-2.0.txt | 2 +- .../js/jqplot.1.0.9/jqPlotCssStyling.txt | 10 +- .../js/jqplot.1.0.9/jqPlotOptions.txt | 111 +- .../js/jqplot.1.0.9/jquery.jqplot.css | 2 +- .../js/jqplot.1.0.9/jquery.jqplot.js | 1948 ++++++++--------- .../js/jqplot.1.0.9/jquery.jqplot.min.css | 2 +- .../js/jqplot.1.0.9/jquery.jqplot.min.js | 2 +- .../js/jqplot.1.0.9/jquery.min.js | 2 +- .../js/jqplot.1.0.9/optionsTutorial.txt | 14 +- .../plugins/jqplot.BezierCurveRenderer.js | 126 +- .../plugins/jqplot.barRenderer.js | 156 +- .../plugins/jqplot.blockRenderer.js | 60 +- .../plugins/jqplot.bubbleRenderer.js | 188 +- .../plugins/jqplot.canvasAxisLabelRenderer.js | 64 +- .../plugins/jqplot.canvasAxisTickRenderer.js | 62 +- .../plugins/jqplot.canvasOverlay.js | 116 +- .../plugins/jqplot.canvasTextRenderer.js | 76 +- .../plugins/jqplot.categoryAxisRenderer.js | 134 +- .../jqplot.1.0.9/plugins/jqplot.ciParser.js | 40 +- .../plugins/jqplot.dateAxisRenderer.js | 129 +- .../plugins/jqplot.donutRenderer.js | 178 +- .../jqplot.1.0.9/plugins/jqplot.dragable.js | 52 +- .../plugins/jqplot.enhancedLegendRenderer.js | 50 +- .../jqplot.enhancedPieLegendRenderer.js | 50 +- .../plugins/jqplot.funnelRenderer.js | 226 +- .../plugins/jqplot.highlighter.js | 86 +- .../js/jqplot.1.0.9/plugins/jqplot.json2.js | 10 +- .../plugins/jqplot.logAxisRenderer.js | 78 +- .../plugins/jqplot.mekkoAxisRenderer.js | 108 +- .../plugins/jqplot.mekkoRenderer.js | 92 +- .../plugins/jqplot.meterGaugeRenderer.js | 240 +- .../js/jqplot.1.0.9/plugins/jqplot.mobile.js | 14 +- .../plugins/jqplot.ohlcRenderer.js | 100 +- .../plugins/jqplot.pieRenderer.js | 208 +- .../plugins/jqplot.pointLabels.js | 88 +- .../plugins/jqplot.pyramidAxisRenderer.js | 98 +- .../plugins/jqplot.pyramidGridRenderer.js | 36 +- .../plugins/jqplot.pyramidRenderer.js | 88 +- .../jqplot.1.0.9/plugins/jqplot.trendline.js | 40 +- .../qap_specviewer/js/jqplot.1.0.9/usage.txt | 66 +- .../js/jquery-ui-1.12.1/jquery-ui.js | 2 +- .../js/jquery-ui-1.12.1/jquery-ui.min.css | 2 +- .../js/jquery-ui-1.12.1/jquery-ui.min.js | 2 +- .../jquery-ui.structure.min.css | 2 +- .../jquery-ui-1.12.1/jquery-ui.theme.min.css | 2 +- .../qap_specviewer/templates/site_map.html | 2 +- .../doc/rs_ProgManual/.readthedocs.yaml | 2 +- .../rs_ProgManual/_static/css/custom_code.css | 1 - .../doc/rs_ProgManual/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../doc/rs_ProgManual/appendices/caldb.rst | 3 - .../doc/rs_ProgManual/appendices/glossary.rst | 40 +- .../doc/rs_ProgManual/appendices/jit.rst | 2 - .../images/RS_full_schematic.svg | 2 +- .../doc/rs_ProgManual/index-latex.rst | 4 +- .../doc/rs_ProgManual/interfaces.rst | 14 +- recipe_system/doc/rs_ProgManual/intro.rst | 10 +- recipe_system/doc/rs_ProgManual/mappers.rst | 6 +- recipe_system/doc/rs_ProgManual/overview.rst | 5 +- .../doc/rs_ProgManual/references.txt | 1 - .../doc/rs_UsersManual/.readthedocs.yaml | 2 +- .../_static/css/custom_code.css | 1 - .../doc/rs_UsersManual/_static/fonts.css | 2 +- .../_static/rtd_theme_overrides.css | 6 +- .../rs_UsersManual/_static/todo-styles.css | 1 - .../appendices/full_api_example.rst | 2 +- .../appendices/full_commandline_example.rst | 2 +- .../rs_UsersManual/appendices/glossary.rst | 5 +- .../doc/rs_UsersManual/definitions.rst | 1 - .../doc/rs_UsersManual/index-latex.rst | 4 +- recipe_system/doc/rs_UsersManual/install.rst | 2 - recipe_system/doc/rs_UsersManual/intro.rst | 1 - .../doc/rs_UsersManual/notused/adcc.rst | 2 +- .../rs_UsersManual/notused/appendix_demo.rst | 45 +- .../doc/rs_UsersManual/notused/discuss.rst | 14 +- .../doc/rs_UsersManual/notused/howto.rst | 198 +- .../notused/reduce_properties.rst | 10 +- .../doc/rs_UsersManual/notused/showprims.rst | 2 +- recipe_system/doc/rs_UsersManual/reduce.rst | 2 - .../doc/rs_UsersManual/reduceapi.rst | 1 - .../doc/rs_UsersManual/supptools.rst | 1 - .../rs_UsersManual/supptools/dataselect.rst | 2 +- .../doc/rs_UsersManual/supptools/showd.rst | 1 - .../doc/rs_UsersManual/supptools/typewalk.rst | 2 - recipe_system/share/man/man1/adcc.1 | 12 +- recipe_system/share/man/man1/reduce.1 | 28 +- recipe_system/testing.py | 1 - recipe_system/utils/reduceActions.py | 11 +- requirements.txt | 2 +- 1127 files changed, 15898 insertions(+), 16031 deletions(-) diff --git a/.github/codecov.yml b/.github/codecov.yml index 93b33a171..9b3ef12bf 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 fd49e1c27..c5c71c97c 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/.jenkins/Jenkinsfile_conda b/.jenkins/Jenkinsfile_conda index 59acb0b4d..bb6743d2d 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 bd5e7460a..7aabc432c 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 ebade4147..396101f84 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/.readthedocs.yaml b/.readthedocs.yaml index 2b9e8a362..2094e2bf5 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 8b7e96aaf..9de1b5ffa 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 f624a8bbf..52ba6d384 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ 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 +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: @@ -44,7 +44,7 @@ A list of changes since 3.1 can be found in the [Change Logs](https://dragons.re # 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 +processes and algorithms for processing of astronomical data, with focus on the reduction of Gemini data. @@ -59,7 +59,7 @@ 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. +the reduction of data from the appropriate instrument. Software developers should start with the Astrodata and Recipe System manuals. @@ -69,7 +69,7 @@ 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` +we are using at this time for the `master` branch and the `release/3.2.x` branches. ``` @@ -79,7 +79,6 @@ $ pip install git+https://github.com/GeminiDRSoftware/GeminiObsDB.git@release/1. $ 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. +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/astrodata/.readthedocs.yaml b/astrodata/.readthedocs.yaml index e80232f0c..df5b793a9 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 02f76b790..fc746292c 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 62910a0bb..912eac4c0 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 785c691eb..23660678c 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 1f70f11f4..834bd8454 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 01a2c82b5..58bef8466 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 785c691eb..23660678c 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 ea822553c..562c34e94 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 62910a0bb..912eac4c0 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 dcf9445b7..09f365957 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 76d7ea0b5..34e50dafc 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/dragonsteam.rst b/doc/DRAGONS/dragonsteam.rst index 4a53d5d28..623ac2086 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 c73a012a2..82a4b4215 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 ac5f3d583..6826235b8 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 a9e2ab237..95b9c7873 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 3730cff00..c73fb4671 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 b1ecd779c..a236e8d5e 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 1d3ac7d0a..fd76e0168 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 7e8019a89..d62fd3729 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 000c7a30d..c23b6aea2 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 8f0a8a5ca..f05a49b07 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 d4c82dc0f..f663e40ce 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 d963a7841..23ec3f11e 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 13662efb9..e80d7a856 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 10b0feb5d..06465c682 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 0eb34387b..2bbb138d5 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 6eef03c99..d83a0991f 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 dc6a5c451..ffe4cab70 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 b2cb82947..4916981d1 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 02a471c70..3bf3b4340 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 cecc6452c..760549192 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 42f951cc7..0db90fb76 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 dcbbdfe91..d15a8aa2a 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 d072e4ff1..6764c5188 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 c6fc9503d..7e27a814e 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 21a58b69d..d5fdd9bbb 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 3c04d2131..52c2e2230 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 35d7bf779..b12786712 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 9773fa2d0..67ac69206 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 bdf23e8ec..d179ca779 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 e753dfdcc..448a206df 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 3013d38cb..16e70a59e 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 661b0dbea..001280d6c 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 431574d78..174072efb 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 785c691eb..23660678c 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 855e76c37..a6c6ffa32 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 bfa969b59..bd5eeb5b0 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 1f117a400..a5cd017b1 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 d5f53cd91..d23c22f2a 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 2d3cbd55c..b439889c6 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 8e4c1d8a8..3107ecb2d 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 45552f516..c390e5e70 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 9e6707029..f4c23115a 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 431574d78..174072efb 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 785c691eb..23660678c 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 0193325ce..1639c08e9 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 4b0f4f5c5..18ae8f6d7 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 83cb5b345..0499f6bbe 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 cc8a60f1d..e8db6ca24 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 2c2ab2cac..c53a5ada1 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 1c4460ca4..ab0487840 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 83399d3af..ff3796e3a 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 1213e2833..52f4d3574 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 a1c2d3760..41327f120 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 30f13374c..3bc59682f 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 7018f110f..329a68290 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 7d3b86c15..07ac5ba08 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 69911ff69..53b5b2569 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 62a583fd0..48b57ff81 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 b410d9fc2..43f9d94a1 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 e74f1dc3c..fe4936a52 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 5d41b66b5..b173b464c 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 06c90c0e3..217fa5fd5 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 2e318820e..d9413b5c2 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 cf78e15d8..abbcf8c3c 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 2355fe96f..1e532d552 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 4ae9ca053..f36331748 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 17ab192a4..72801af5c 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 d4735b7b3..3319c4654 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 cdda9c0fc..b00d358e6 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 bf047ed3e..d6b6947ae 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 b4e1ece94..04bfc95ee 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 1f401ad52..f1fa3b55d 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 298ea9e21..51285967a 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 61912db86..fa5a7536f 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 785c691eb..23660678c 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 d7b44268b..444d604e9 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 f273257ae..0063c7381 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 207619a77..4ea4c37d1 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 fabeeddc4..9cc608e9c 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 dc2d29cf3..a3926c72f 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 75713be3e..8b5d0f625 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 6f3b2d57d..5e0ead135 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 e50f6b054..e4ebf99d8 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 a66b976ad..028018bdc 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 785c691eb..23660678c 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 b6c4949c8..8fd395842 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 62910a0bb..912eac4c0 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 2bed542a4..d80828538 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 b31afcd5f..219c6a6ba 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 648c62b30..ca93f2a7e 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 3e2369bb0..77b653093 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 cf7ed6b46..9a2d7d86f 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 93205b644..2bbfe4a39 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 9e6c6d9ef..7786cb3d0 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 13003cd58..d396e00be 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 4fec79e16..9ab27e121 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 7eb9c1e88..f235d2b47 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 171ffbbf1..331954bdf 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 94cb950de..109594e67 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 5466e3de1..c806a6288 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 da2a2bb30..d6a8465e7 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 1b38502ae..a98769af7 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 eadfb5c86..98661db17 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 8e6877db5..0a5ac89ed 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 608dc5144..e40a5cd50 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 56187b7f4..59275fd08 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 9dc95f3be..44d0e340d 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 4911406b9..178d7def3 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 fc6045574..3cdc93ebc 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 9b4a6a69b..991eb34c4 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 8a1ec5d55..57a94a4ee 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 f4c58230a..6477541f0 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 1ca0016bf..8673fc6fd 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 6cf4364f8..173a12a2f 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 6c8feba90..dea22ecdd 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 17d5f39c5..bc4a23c34 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 b46e2cfb3..2b5c7cce6 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 0173c1fd1..263ae543a 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 3c324502e..79a708468 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 3d8e7a7e2..6991a9013 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 87a81043a..d3180c975 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 b78f2eab8..c5a5cb37d 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 915a7969a..b8c5a10a8 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 01fa001c8..f662b143f 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 fb8940590..00e1cb7e5 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 ba1245435..3b72aaf55 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 a2ebbc65c..931666628 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 601d5923b..87754e0bc 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 57ae7a8ed..0ff83547c 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 599fa3efe..7fbc7b7f7 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 71e68c58f..8917181ab 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 072bb7df1..09736725a 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 b9e1e81cf..18b74df40 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 4d7b2c63e..4af65cca9 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 cccbd77d1..c765d8ea8 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 386dad653..e764a4f3d 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 5ec7d5782..8f361acd6 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 110e42db3..0a4636085 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 49396a284..ec0e6803b 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 20f3bf0ba..12a8fcc94 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 8ee450c4c..6f755ee5c 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 6eaa24cf8..c43d1886a 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 35114cd2d..c5c8981b1 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 efad777da..ef506c232 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 0cdb4cf70..547b9c789 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 c89bafeba..dbcc9279d 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 5752bb9e1..fb5a30eb9 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 b0b8f4bb0..606eda3a8 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 752289e50..89fe5be59 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 e1ccafbd0..c6e217c3c 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 593c680d7..936bf16f5 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 20f7d9cbf..689a25313 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 2436dee44..d28455f50 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 147aef81f..5d9f2a42a 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 3b2c967d5..6c1d48019 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 99a26290e..38065b466 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 5c2bc7fb2..6429ba235 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 15218f1f3..ad3bd68ba 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 1547c483a..db75587cc 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 9db72a6d2..c0c4ffacc 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 9844937fd..167eb5994 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 f3ff8b591..f631267cf 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 6e886e702..344cf84c1 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 0c9fe2bf3..1aeda7442 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 68598e4fd..b050acb84 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 ffb8a18c1..2fe9e5c28 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 906b2360f..464017201 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 6997cf8bf..4c9fac8bc 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 1b4717080..05e0b405a 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 ff3658a0a..6e227808b 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 244664b28..1ad9b80e3 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 f124ab77a..baadd411e 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 2ebb61057..613992a6b 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 4cb8b00fb..eefef547a 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 668bc430a..d7c65186d 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 88ced6ba5..4191a1b07 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 f694db623..4d7e69d8b 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 3aa0af0ee..c1247de29 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 c66b30472..c5f7f9e08 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 77c147f2e..283a6ce19 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 f124ab77a..baadd411e 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 121ae92de..c877e8b11 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 ccfaa64ab..a7fa8ce72 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 64d8e2f56..a51aff62f 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 8c89dd1ff..f7d54a955 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 c5c6b431b..0bcf47e40 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 c27e9d00a..ceb4f0bdf 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 e7a8255d3..e66def9a0 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 71c2c74c3..025542531 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 ec30ab800..457a001a7 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 79887c746..ee2670f48 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 206676cc3..8cb6398d0 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 aada002d2..afde7b2e4 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 29760124a..ad6d28104 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 4b6fb575a..fa0f59229 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 f16b8089d..0be98ef08 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 b39398446..27ed41dda 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 d328e0940..caf664ddb 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 3d5393ad9..54fcbc0d6 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 e65f364b5..97a658ce2 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 f31598e9d..f1659adb4 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 dd868c9bf..a5042be25 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 49b11e79f..f21781ea1 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 99afd2561..a69bb730c 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 ebf5b5ebf..23068eda9 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 0eaa458cc..cbdfa8a12 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 2f19568e3..748cbc1ae 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 bb917cb17..4d663d226 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 2cc272dff..db55ed567 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 bfe150111..de9bb068e 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 9994f91d0..f24e17fe8 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 5ac3b8754..ff91c9f02 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 f3953e135..b9d0f559f 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 3d308ff74..1987525e6 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 736a576be..7e2f3ff70 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 76c5cea47..585b43c89 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 8160aa6a7..7d8aa6773 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 7c2e7f35f..b0da2e5b3 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 f17f745d1..fc817d527 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 2b3811a9c..4390cc1b6 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 c5d301d75..6242d2772 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 8c97c9c52..19c0f7254 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 46f807bb6..5e7f62280 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 11294c6ab..f62f2e772 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 b2ffc8b3e..93bf03197 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 91c15157a..22db93130 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 b3d2a067e..f2309d2ef 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 1efc1e05c..2c089dbfe 100644 --- a/geminidr/interactive/INTERACTIVE.md +++ b/geminidr/interactive/INTERACTIVE.md @@ -7,19 +7,19 @@ 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. +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 +many primitives, this will be sufficient. Using this `Visualizer` implementation will save time and lead to a consistent interface with other interactive fits. @@ -28,8 +28,8 @@ consistent interface with other interactive fits. ### 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 +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. @@ -55,7 +55,7 @@ then you can just pass a list of (x, y, weights) tuples 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 +have the initial `order`, etc that will be used for each tab. This can be easily generated from the primitive parameters using: ```python @@ -69,7 +69,7 @@ This is the same approach you will take with a custom First you instantiate the `Fit1DVisualizer` with the coordinates or coordinate function and other parameters. -Then you start the bokeh UI by calling +Then you start the bokeh UI by calling ```python geminidr.interactive.server.interactive_fitter(visualizer) @@ -78,7 +78,7 @@ 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 +of final `fit_1D` fits by calling the `results()` method like this: ```python @@ -87,7 +87,7 @@ all_m_final = visualizer.results() ### calculateSensitivity -The `calculateSensitivty` primitive is a good example of the common case and +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 @@ -123,7 +123,7 @@ if interactive: 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): @@ -137,13 +137,13 @@ else: 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 +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 +`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 +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. @@ -170,7 +170,7 @@ The `title` is used in the top of the HTML template shown to the user. The `con 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 +You will want to add this `Button` in your custom UI for the user to submit their final fit. ### do_later @@ -182,7 +182,7 @@ 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 +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 @@ -193,7 +193,7 @@ this call is `results()` ### show_user_message -There is a helper method called `show_user_message` that will pop up a message dialog +There is a helper method called `show_user_message` that will pop up a message dialog for the user. As an example: ```python @@ -205,10 +205,10 @@ self.vis.show_user_message(f"Sigma slider changed to {val}") 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` +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. +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. @@ -250,7 +250,7 @@ There is a helper method called `make_ok_cancel_dialog`. This is called on a bo `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 +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: @@ -267,11 +267,11 @@ self.reset_dialog = self.visualizer.make_ok_cancel_dialog(reset_button, ### 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 +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 @@ -281,23 +281,23 @@ 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 +`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 +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 @@ -324,11 +324,11 @@ 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 +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`. +`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 @@ -336,29 +336,29 @@ need to change the UI in response to a key press, you will want to use the ## 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 +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, +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 +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 +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 @@ -366,35 +366,35 @@ 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 +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 +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. @@ -421,7 +421,7 @@ 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`, +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. @@ -429,7 +429,7 @@ A side effect of the injector is that, on tab changes, you'll get a momentary bl ## 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 +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 @@ -453,7 +453,7 @@ user clicking the Submit button or closing the browser tab. `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 +managing bands (range-selections with plot shading) and apertures (also with plot shading). ### controls @@ -468,10 +468,10 @@ 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, +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. diff --git a/geminidr/interactive/README.md b/geminidr/interactive/README.md index 89323da42..37a2b1cca 100644 --- a/geminidr/interactive/README.md +++ b/geminidr/interactive/README.md @@ -47,7 +47,7 @@ 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 +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,7 +57,7 @@ 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 @@ -69,7 +69,7 @@ use. Here are steps to test it out. 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 +get the file at this URL (Google Drive). You must be logged in to your Gemini account, so a browser is recommended. @@ -90,21 +90,21 @@ look as follows: ![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. +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 +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 +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. @@ -115,7 +115,7 @@ 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 @@ -127,7 +127,7 @@ use. Here are steps to test it out. 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 +get the file at this URL (Google Drive). You must be logged in to your Gemini account, so a browser is recommended. @@ -149,7 +149,7 @@ look as follows: 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 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 +159,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 e976cd3ba..25e890e4a 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 1fdecb155..b60a4fd80 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 ec7f1343e..e4a52f2c0 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 8cdbadb35..254c3133d 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/css/template_dark_minimal.css b/geminidr/interactive/static/css/template_dark_minimal.css index f5f1b781e..10a976cc9 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 503324aed..c1f742940 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 c55414822..7d453d3bb 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 013d4a6a5..758f8d2a6 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 233bf2175..e458e15ea 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 c95f928a0..8fe0ec319 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 ba7ff935b..cd73f75e2 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 f9ba7fcc8..ce2f8825a 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 b40ba5fbd..dbd253245 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 d70f77d99..5b37a9c37 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 add733d85..29a0eaf3d 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 fddf14440..436121312 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 45318732f..730e5a41a 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 51afdeb59..778b1f7c6 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 3578c152c..2c8108092 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 6d28e9995..0f696bbcf 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 f6cb11d8d..a6e6bf964 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 604399ec0..4b12e3921 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 c65f76190..2c9cba4c8 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 b6d0d6bd2..71bcaaf57 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 311ac17fc..d5f646e2f 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 1008e01ec..a995f0f66 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 f0463885c..41ac1ed9d 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 253edf89e..ed587ea4e 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 30d37d48b..3a09a1be9 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 96f759b68..86e906454 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 781494454..b10cb1632 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 8ff4ab6f1..6a8da42d2 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 4e3e01b17..81623c93d 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 eb752511d..ba666c281 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 e8296c760..7a84ea985 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 821c3207e..8a1d72615 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 10c9334e0..fc27b5a97 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 686168e14..0252497da 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 7b0e4ce10..a9b0aca5a 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 25d0c8084..39766c29d 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 d37cc32ee..2dd98dbff 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 f0b91bbea..6d9934f34 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 867048c7e..0a8dcece6 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 eeff16362..64e598aa1 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 8005e4ae8..f342a2f72 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 73440c9cd..8567044f0 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 2062b2945..0768ff820 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 e03f870ce..5031a5fb3 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 d8e09d62f..42dece2c6 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 5d6afb0c3..7cab222f3 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 b597dbb7c..486748f38 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 95d8cb746..8263dada4 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 8516634f1..0f7f11b09 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 60d9c137c..0beda1c5e 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 b16cc86c6..404dac3ee 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 802c3908c..1db7fc3f1 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 659c645c1..4daba5459 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 e3b3faf75..5783927ad 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 10b99ed0d..96c62488b 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 58dcfd07b..064cc0a08 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 daa62ee30..cdc1db6f5 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 53324da62..b5b0cfbef 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/ops_versions.txt b/ops_versions.txt index e38e45059..5a193b0d4 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/recipe_system/adcc/client/adcc_faceplate/adktool.html b/recipe_system/adcc/client/adcc_faceplate/adktool.html index 37f579709..0ff9b15be 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 b7bc13c03..03c619ff9 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 b6d79c039..20d02d966 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 f4e082b92..ff86e5db0 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 a80dadb50..354e6cb79 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 878070045..790729c46 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 086729457..cba6b9431 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 64640cce8..ef9997b71 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 cf1c4b9f2..616c61901 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 bda0f4cd4..f23edb768 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 f52d7aba9..a9ff4312f 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 3b492541a..a72b08625 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 2d14926bc..fd7b7a30a 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 fedf0037b..e04574039 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 d913b1a7f..ad2d06dc3 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 a61451056..2ec1af0f8 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 eb1db2d93..2e1485975 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 3be8b5606..4da8b9bb6 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 3ece1db9a..15be4b2ef 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 a0828dd12..6938ad1c8 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 0af8dec62..9001b2a67 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 d69711b4e..82bb4a4bc 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 27d4846c6..99f839d5e 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 f21c49186..1438506e4 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 e77c4c81c..e08c13c58 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 1076a7a1d..4b3d74acc 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 0e08b3b6b..f7a1cc091 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 e118c3d36..1e36f36f4 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 814f125aa..002d94f2a 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 32969db74..5bbfff0c3 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 eda768228..3b16e7593 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 0e61933f3..7f86f5562 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 05c55d4ba..16337731e 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 d2da937d3..2867640bf 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 8a5348f98..25c57f752 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 3084d4a46..7b0766e9d 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 e2705f59a..bd22f6f12 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 9d3aa68f7..37aa878e9 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 e129b9637..75167f05b 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 aeae10e44..013d8feb4 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 97fbe7975..e0214c4e8 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 d0ad8a95f..8e41c0509 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 9b14c5ef9..2bad5fe1e 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 e5b9bad93..2064bd6f0 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 4ef698c4e..c261b8711 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 85e724b3f..ee5f0c439 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 295fd4a6f..41b75c3b9 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 adb55b1d2..f1bb034ef 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 93258a017..4b916b9cc 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 e55ee282e..c8eddbf34 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 b689ef3a7..6c0ba6023 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 9c3162131..05954020b 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 1f929be03..b56841d52 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 88b3caed4..4253ba8f2 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 4fc52cc00..5071e7d27 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 0589a43ef..cb4916ed6 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 576b7a09d..a80e4c937 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 59ccfc8d4..746d15a9a 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 d4f4dde54..8cd5efbb4 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 a8780d106..5ccc4a329 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 c5efc4c47..369b4ead1 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 e5e1d4ecc..ec528967e 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 ae419f32b..b15142d1f 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 e2e7e9207..71ea34fa3 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 efcdca966..e057a0322 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 691a4e6c3..ccd7490bd 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 2f4dab577..8beeb3b55 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 135eeb6a2..79f33fc96 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 36f121b0a..394436d7e 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 c411b320f..c3f39d3ab 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 b22500983..43ed9d63c 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 6a93b819d..85ae2174f 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 53823e7dc..995e53319 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 53396614d..4cc894248 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 782f11db1..f30002cf4 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 62d2e7cb2..e469be7aa 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 3c66afa02..2dc047d74 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 40135d3a6..f0a81ebd9 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 2c2bed5db..e5d8de8c0 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 561eabc01..e8ffea265 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 450909835..6ba8d7fa8 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 0b6446cb9..39def9e5f 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 7cc60bfec..302777107 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 fac0dbcc8..216aeb0a0 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 bab767cf1..25883b034 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 4b364e983..44d73ca34 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 f62a230b9..2664f5588 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 06a97030e..b4d1265ef 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 20bb76ec9..e14769333 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 3c759ce2d..4537ad26b 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 5f3a9205a..21080c9e8 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 c1af77c88..31b161836 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 092df1505..1cd87feef 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 ff6d0676d..7f97502f7 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 7873ee408..9d9e88960 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 fe560304a..759839459 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 0fc128968..bdfc4d983 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 53789facf..71ebbea69 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 d282c7883..a2d5b6358 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 bac068d9c..49de45f50 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 25e44059d..0e84f2fef 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 830dac937..dce6a4e6b 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 1980bbeee..bb2a7b806 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 53396614d..4cc894248 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 20f4ead98..a43a2bebe 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 31bcbf122..f44a979e5 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 51af427ec..8c0dead4c 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 ce589762e..08b3147e9 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 443e98c48..aa307c516 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 8f6ea7a62..efaea4e8c 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 1e8baa080..ebeefaa47 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 82b17cda6..765d7510d 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 fe464932e..6fe4d7fe3 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 f94e00368..8bff60134 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 eb28c716c..577ca7107 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 d2459c05e..680edd8e5 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 386d9e899..4cc52e2d3 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 a6cef468d..2d54a3de6 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 a30bf3da3..7c75a247d 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 e0380eae7..99426a8d8 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 5bb760ff9..dbd373521 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 cf90670b8..9dd3fbdf2 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 3a7573d17..8e36c9d07 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 ca8f802e4..e09366475 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 289adc8d8..6e945642d 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 2465230d8..095d96059 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 80a53cbf1..a79645b82 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 c60188302..5e476529c 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 e3e5f594a..49419e842 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 f1a4b167a..7dbd99844 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 a462e0991..8e7d7f75c 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 e347d720e..e3be25bd6 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 bc107de45..e0683c2a9 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 df97c192a..3eb9c1b32 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 ebd8349eb..d4312ab80 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 ce589762e..08b3147e9 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 443e98c48..aa307c516 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 8f6ea7a62..efaea4e8c 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 9da6ccfc7..672bc2897 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 17e9cbc30..df2a88d4f 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 12117d4e6..18f6c4572 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 139ed5319..9c5d014f8 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 2c5a61409..7ae187516 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 7733804da..6ed96ae6b 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 00475f6a0..67c5648a2 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 d2da3dd72..8ad421e2e 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 13aca5a5e..5ff82c55f 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 7d47fb769..65a9b1393 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 cd66d5377..09249cf38 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 56a9be11a..f5fae1106 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 b6a0cffac..5b7bff7a8 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 da43d47e7..f9853ef8a 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 d2da3dd72..8ad421e2e 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 13aca5a5e..5ff82c55f 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 7d47fb769..65a9b1393 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 cd66d5377..09249cf38 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 56a9be11a..f5fae1106 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 b6a0cffac..5b7bff7a8 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 da43d47e7..f9853ef8a 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 - + - - + +