Remove gmxapi roadmap.rst and acceptance tests.
authorM. Eric Irrgang <ericirrgang@gmail.com>
Tue, 8 Jun 2021 11:29:02 +0000 (14:29 +0300)
committerPaul Bauer <paul.bauer.q@gmail.com>
Tue, 8 Jun 2021 13:24:17 +0000 (13:24 +0000)
This document and the supporting tests are out-of-date and unused for
project planning, as far as I can tell.

Resolves #3706

31 files changed:
admin/ci-scripts/build-and-test-py-gmxapi-0.3.sh
python_packaging/roadmap.rst [deleted file]
python_packaging/scripts/README.md
python_packaging/scripts/run_acceptance_test [deleted file]
python_packaging/scripts/run_full
python_packaging/scripts/run_full_mpi
python_packaging/test/conftest.py [deleted file]
python_packaging/test/pytest.ini [deleted file]
python_packaging/test/pytesthelpers.py [deleted file]
python_packaging/test/test_fr01.py [deleted file]
python_packaging/test/test_fr03.py [deleted file]
python_packaging/test/test_fr04.py [deleted file]
python_packaging/test/test_fr05.py [deleted file]
python_packaging/test/test_fr07.py [deleted file]
python_packaging/test/test_fr08.py [deleted file]
python_packaging/test/test_fr09.py [deleted file]
python_packaging/test/test_fr10.py [deleted file]
python_packaging/test/test_fr11.py [deleted file]
python_packaging/test/test_fr12.py [deleted file]
python_packaging/test/test_fr13.py [deleted file]
python_packaging/test/test_fr14.py [deleted file]
python_packaging/test/test_fr15.py [deleted file]
python_packaging/test/test_fr16.py [deleted file]
python_packaging/test/test_fr17.py [deleted file]
python_packaging/test/test_fr18.py [deleted file]
python_packaging/test/test_fr19.py [deleted file]
python_packaging/test/test_fr20.py [deleted file]
python_packaging/test/test_fr21.py [deleted file]
python_packaging/test/test_fr22.py [deleted file]
python_packaging/test/test_fr23.py [deleted file]
python_packaging/test/testdata.json [deleted file]

index e33fb3faaa8ace41e9f44b0bda7e04d2cde1fedb..556b4ccecdc804d03cb92ad7e4c21c9b85e5f0b5 100644 (file)
@@ -59,25 +59,3 @@ if [ -x `which mpiexec` ]; then
       -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
       -n 1 ${PROGRAM[@]}
 fi
-
-# Run Python acceptance tests.
-python -m pytest python_packaging/test --junitxml=$PY_ACCEPTANCE_TEST_XML --threads=2
-
-# Note: Multiple pytest processes getting --junitxml output file argument
-# may cause problems, so we set the option on only one of the launched processes.
-# See also Multiple Instruction Multiple Data Model for OpenMPI mpirun:
-# https://www.open-mpi.org/doc/v3.0/man1/mpiexec.1.php
-PROGRAM=(`which python` -m mpi4py -m pytest \
-        -p no:cacheprovider \
-        $PWD/python_packaging/test \
-        --threads=1)
-# shellcheck disable=SC2068
-if [ -x `which mpiexec` ]; then
-    PYTHONDONTWRITEBYTECODE=1 \
-    mpiexec --allow-run-as-root \
-      -x OMP_NUM_THREADS=1 \
-      --mca opal_warn_on_missing_libcuda 0 \
-      --mca orte_base_help_aggregate 0 \
-      -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
-      -n 1 ${PROGRAM[@]}
-fi
diff --git a/python_packaging/roadmap.rst b/python_packaging/roadmap.rst
deleted file mode 100644 (file)
index 91438a0..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-========================
-Python packaging roadmap
-========================
-
-Describe functional goals, feature tracking, and associated tests.
-
-Functionality to build
-======================
-
-General tool implementation sequence
-------------------------------------
-
-1. Tools in ``operation`` submodule wrap Python code with compliant interface
-2. ``commandline_operation()`` provides UI for (nearly) arbitrary CLI tools
-3. ``tool`` submodule provides trivially wrapped ``gmx`` tools with well-defined inputs and outputs
-
-Simulation tool implementation sequence
----------------------------------------
-
-1. ``mdrun``
-2. ``modify_input``
-3. ``make_input``
-
-Data flow
----------
-
-* ``result()`` methods force data locality for use by non-API calls
-* output properties allow proxied access to (fault tolerant, portable) result futures
-* ``logical_and()``, etc. allow manipulation of data / signals "in flight"
-
-Data flow topology tools
-------------------------
-
-* implicit scatter / map
-* implicit broadcast
-* ``gather()`` makes results local
-* ``reduce()`` allows operation across an ensemble (implicit allReduce where appropriate)
-
-Control flow
-------------
-
-* ``subgraph`` allows several operations to be bundled with a scope that allows
-  user-declared data persistence (e.g. when used in a loop)
-* ``while_loop`` allows repeated execution of a subgraph, subject to a declared
-  condition of the subgraph state/output, managing accessibilty of data handles
-  internal and external to the graph
-
-Execution environment
----------------------
-
-1. Top level module function ``run()`` launches work to produce requested data
-2. Infrastructure manages / negotiates dispatching or allocation of available resources
-
-Packaging
----------
-
-1. Python package can be installed from GROMACS source directory after GROMACS installation.
-2. Python package can be installed by a user from a hand-built GROMACS installation.
-3. Python package can be installed from a Linux binary GROMACS distribution using
-   appropriate optimized binary libraries.
-
-Installation procedures are testable with Dockerfiles in a Docker-based CI environment.
-Ref: https://github.com/kassonlab/gmxapi/blob/master/ci_scripts/test_installers.sh
-
-Typing
-------
-
-In addition to basic scalar types,
-some structured data types are immediately necessary.
-
-* gmxapi.NDArray supports an N-dimensional array of a single scalar gmxapi data type
-  (with sufficient metadata for common array view APIs)
-* gmxapi.Map supports an associative container with key strings and Variant values
-
-NDArray is immediately necessary to disambiguate non-scalar parameters/inputs from
-implicit data flow topological operations.
-
-Data structures currently coupled to file formats should be decomposable into
-Maps with well-specified schema, but in the absence of more complete API data
-abstractions we just use filename Strings as the API-level content of
-input/output data handles. (Suggest: no need for file objects at
-the higher-level API if read_Xfiletype(/write_Yfiletype) operations
-produce(/consume) named and typed data objects of specified API types.)
-
-The API specification should be clear about policies for narrowing and widening
-of scalar types.
-
-Sequence
-========
-
-Features development sequence based on functional priorities and dependencies.
-
-* fr1: wrap importable Python code.
-* fr2: output proxy establishes execution dependency (superseded by fr3)
-* fr3: output proxy can be used as input
-* fr4: dimensionality and typing of named data causes generation of correct work topologies
-* fr5: explicit many-to-one or many-to-many data flow
-* fr7: Python bindings for launching simulations
-* fr8: gmx.mdrun understands ensemble work
-* fr9: MD plugins
-* fr10: fused operations for use in looping constructs
-* fr11: Python access to TPR file contents
-* fr12: Simulation checkpoint handling
-* fr13: ``run`` module function simplifies user experience
-* fr14: Easy access to GROMACS run time parameters
-* fr15: Simulation input modification
-* fr16: Create simulation input from simulation output
-* fr17: Prepare simulation input from multiple sources
-* fr18: GROMACS CLI tools receive improved Python-level support over generic commandline_operations
-* fr19: GROMACS CLI tools receive improved C++-level support over generic commandline_operations
-* fr20: Python bindings use C++ API for expressing user interface
-* fr21 User insulated from filesystem paths
-* fr22 MPI-based ensemble management from Python
-* fr23 Ensemble simulations can themselves use MPI
-
-Expectations on Mark for Q1-Q2 2019 GROMACS master changes
-==========================================================
-
-* Broker and implement build system amenable to multiple use
-  cases. Need to be able to build and deploy python module from single
-  source repo that is usable (i.e. can run the acceptance tests).
-
-  - Some kind of nested structure likely appropriate, perhaps
-    structured as nested CMake projects that in principle could stand
-    alone. That's probably workable because nested projects can see
-    the parent project's cache variables (TODO check this)
-  - probably a top-level project coordinating a libgromacs build and a
-    python module build, with the former typically feeding the latter
-  - the libgromacs build may be able to leverage independent efforts
-    towards a multi-configuration build (so SIMD/MPI/GPU agnostic)
-  - top-level project offers much the same UI as now, passing much of
-    it through to the libgromacs project
-  - top-level project offers the option to find a Python (or be told
-    which to use), to find a libgromacs (or be told, or be told to
-    build), to build any necessary wrapper binaries (ie. classical gmx
-    and mdrun), and to deploy all linked artefacts to
-    CMAKE_INSTALL_PREFIX or the appropriate Python site-packages
-  - the top-level project will be used by e.g. setup.py wrapper
-    from scikit-build/distutils
-  - requires reform of compiler flags handling
-  - probably requires some re-organization of external dependencies
-    of libgromacs
-  - follow online "Modern CMake" best practices as far as practicable
-  - library should be available for static linking with position
-    independent code to allow a single shared object to be built for
-    the Python module.
-
-* Dissolve boundary between libgmxapi and libgromacs
-
-  - no effort on form and stability of the C++ headers and library in
-    2019, beyond what facilitates implementing the Python interface
-    in GROMACS 2020
-  - existing libgromacs declarations of "public API" and installed
-    headers removed
-
-* libgromacs to be able to be use an MPI communicator passed in,
-  rather than hard-coding MPI_COMM_WORLD anywhere. It is likely that
-  existing wrapper binaries can use the same mechanism to pass
-  MPI_COMM_WORLD to libgromacs.
-
-* UI helpers should express.
-  - preferred name for datum as a string: ``nsteps``, ``tau-t``, etc.
-  - setter (function object, pointer to a builder method, )
-  - typing and type discovery (could be deducible from setter, but something to allow user input checking, or determination
-    of the suitability of a data source to provide the given input)
-  - help text: can be recycled to provide auto-extracted documentation, command-line help, and annotation in Python docstrings.
-  - for CLI: short name for flag. E.g. 'p' for "topology_file"
-  - for compatibility: deprecated / alternate names. E.g. "nstlist" for "neighbor_list_rebuild_interval", or "orire" for
-    "enable_orientation_restraints"
-  - default values
-
-Possible GROMACS source changes whose impact is currently unknown
-=================================================================
-* gmx::Any (which is a flavour of C++17 std::any) type could be
-  helpful at API boundary. Also perhaps a flavour of C++17
-  std::optional or std::variant.
-
-Additional goals
-================
-
-Some project goals are integrations or optimizations that are explicitly hidden from the user
-and not testable in a high level script, but should be reflected as milestones in a roadmap.
-
-GROMACS source changes deferred to later in 2019
-================================================
-* Build system works also from tarball
-* Build system can produce maximally static artefacts (for performance
-  on HPC infrastructure)
-* express grompp and mdrun options handling with gmx::Options to
-  prepare for future dictionary-like handling in Python without
-  serializing a .tpr file
index 68e519773b95993584f0aba1d0648e01ae97d960..0a1065a96ced684072b4296605aa64efad1b81d0 100644 (file)
@@ -4,7 +4,6 @@ The scripts in this directory are for convenience when running different suites
 They can be specified as arguments to the Docker containers based on `ci.dockerfile`
 
 * `run_flake8` runs the Flake8 Python linting tool on the `gmxapi` package sources.
-* `run_acceptace_test` runs the test suite in the higher level `test` directory.
 * `run_gmxapi_unittest` runs single-threaded tests for the gmxapi Python package.
 * `run_sample_test` runs the tests for the sample_restraint MD plugin API client code.
 * `run_full` runs all of the above tests.
diff --git a/python_packaging/scripts/run_acceptance_test b/python_packaging/scripts/run_acceptance_test
deleted file mode 100755 (executable)
index 1f077ea..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-# Entry point script for Docker containers.
-# Additional arguments are passed along to pytest.
-# See README.md and the gmxapi/ci-<option> Docker images.
-
-# TODO: (#2756) Centrally manage dependencies on the GROMACS installation.
-#  The gmxapi package, virtualenv, or test  infrastructure should have an
-#  internal mechanism for tracking the correct GROMACS installation.
-source /usr/local/gromacs/bin/GMXRC
-
-pytest $HOME/test $@
index df28f52fe2a4d580b107f02029c864320c04fd90..b9aba79edb17494b88aa3b82c2661eb17ba21b2a 100755 (executable)
@@ -10,5 +10,4 @@ set -ev
 source /usr/local/gromacs/bin/GMXRC
 
 pytest $HOME/gmxapi/test
-pytest $HOME/test
 pytest $HOME/sample_restraint/tests
index b8452b6488b648b8766808950edcc60718f64cff..9cae12748d35f75b9e03813c91d5828ee5946e8d 100755 (executable)
@@ -11,4 +11,3 @@ source /usr/local/gromacs/bin/GMXRC
 
 mpiexec -n 2 `which python` -m mpi4py -m pytest $HOME/gmxapi/test
 mpiexec -n 2 `which python` -m mpi4py -m pytest $HOME/sample_restraint/tests
-mpiexec -n 2 `which python` -m mpi4py -m pytest $HOME/test
diff --git a/python_packaging/test/conftest.py b/python_packaging/test/conftest.py
deleted file mode 100644 (file)
index 37ef076..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Configuration and fixtures for pytest."""
-
-import json
-import logging
-import os
-
-import pytest
-
-pytest_plugins = ('gmxapi.testsupport',)
-
-
-@pytest.fixture(scope='class')
-def spc_water_box(gmxcli, remove_tempdir):
-    """Provide a TPR input file for a simple simulation.
-
-    Prepare the MD input in a freshly created working directory.
-    """
-    import gmxapi as gmx
-    # TODO: Remove this import when the the spc_water_box fixture is migrated to gmxapi.testsupport
-    from gmxapi.testsupport import _cleandir
-
-    # TODO: (#2896) Fetch MD input from package / library data.
-    # Example:
-    #     import pkg_resources
-    #     # Note: importing pkg_resources means setuptools is required for running this test.
-    #     # Get or build TPR file from data bundled via setup(package_data=...)
-    #     # Ref https://setuptools.readthedocs.io/en/latest/setuptools.html#including-data-files
-    #     from gmx.data import tprfilename
-
-    with _cleandir(remove_tempdir) as tempdir:
-
-        testdir = os.path.dirname(__file__)
-        with open(os.path.join(testdir, 'testdata.json'), 'r') as fh:
-            testdata = json.load(fh)
-
-        # TODO: (#2756) Don't rely on so many automagical behaviors (as described in comments below)
-
-        structurefile = os.path.join(tempdir, 'structure.gro')
-        # We let `gmx solvate` use the default solvent. Otherwise, we would do
-        #     gro_input = testdata['solvent_structure']
-        #     with open(structurefile, 'w') as fh:
-        #         fh.write('\n'.join(gro_input))
-        #         fh.write('\n')
-
-        topfile = os.path.join(tempdir, 'topology.top')
-        top_input = testdata['solvent_topology']
-        # `gmx solvate` will append a line to the provided file with the molecule count,
-        # so we strip the last line from the input topology.
-        with open(topfile, 'w') as fh:
-            fh.write('\n'.join(top_input[:-1]))
-            fh.write('\n')
-
-        assert os.path.exists(topfile)
-        solvate = gmx.commandline_operation(gmxcli,
-                                            arguments=['solvate', '-box', '5', '5', '5'],
-                                            # We use the default solvent instead of specifying one.
-                                            # input_files={'-cs': structurefile},
-                                            output_files={'-p': topfile,
-                                                          '-o': structurefile,
-                                                          }
-                                            )
-        assert os.path.exists(topfile)
-
-        if solvate.output.returncode.result() != 0:
-            logging.debug(solvate.output.erroroutput.result())
-            raise RuntimeError('solvate failed in spc_water_box testing fixture.')
-
-        # Choose an exactly representable dt of 2^-9 ps (approximately 0.002)
-        dt = 2.**-9.
-        mdp_input = [('integrator', 'md'),
-                     ('dt', dt),
-                     ('cutoff-scheme', 'Verlet'),
-                     ('nsteps', 2),
-                     ('nstxout', 1),
-                     ('nstvout', 1),
-                     ('nstfout', 1),
-                     ('tcoupl', 'v-rescale'),
-                     ('tc-grps', 'System'),
-                     ('tau-t', 1),
-                     ('ref-t', 298)]
-        mdp_input = '\n'.join([' = '.join([str(item) for item in kvpair]) for kvpair in mdp_input])
-        mdpfile = os.path.join(tempdir, 'md.mdp')
-        with open(mdpfile, 'w') as fh:
-            fh.write(mdp_input)
-            fh.write('\n')
-        tprfile = os.path.join(tempdir, 'topol.tpr')
-        # We don't use mdout_mdp, but if we don't specify it to grompp,
-        # it will be created in the current working directory.
-        mdout_mdp = os.path.join(tempdir, 'mdout.mdp')
-
-        grompp = gmx.commandline_operation(gmxcli, 'grompp',
-                                           input_files={
-                                               '-f': mdpfile,
-                                               '-p': solvate.output.file['-p'],
-                                               '-c': solvate.output.file['-o'],
-                                               '-po': mdout_mdp,
-                                           },
-                                           output_files={'-o': tprfile})
-        tprfilename = grompp.output.file['-o'].result()
-        if grompp.output.returncode.result() != 0:
-            logging.debug(grompp.output.erroroutput.result())
-            raise RuntimeError('grompp failed in spc_water_box testing fixture.')
-
-        # TODO: more inspection of grompp errors...
-        assert os.path.exists(tprfilename)
-        yield tprfilename
diff --git a/python_packaging/test/pytest.ini b/python_packaging/test/pytest.ini
deleted file mode 100644 (file)
index fe55d2e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[pytest]
-junit_family=xunit2
diff --git a/python_packaging/test/pytesthelpers.py b/python_packaging/test/pytesthelpers.py
deleted file mode 100644 (file)
index 4c171d4..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Reusable definitions for test modules.
-
-Define the ``withmpi_only`` test decorator.
-"""
-
-import pytest
-
-# TODO: (#3718) Normalize the handling of run-time arguments.
-from gmxapi.simulation.mdrun import ResourceManager as _ResourceManager
-_ResourceManager.mdrun_kwargs = {'threads': 2}
-
-withmpi_only = None
-
-try:
-    from mpi4py import MPI
-    withmpi_only = \
-        pytest.mark.skipif(not MPI.Is_initialized() or MPI.COMM_WORLD.Get_size() < 2,
-                           reason="Test requires at least 2 MPI ranks, "
-                                  + "but MPI is not initialized or context is too small.")
-except ImportError:
-    withmpi_only = pytest.mark.skip(reason="Test requires at least 2 MPI ranks, but mpi4py is not available.")
diff --git a/python_packaging/test/test_fr01.py b/python_packaging/test/test_fr01.py
deleted file mode 100644 (file)
index 51fdcfc..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import gmxapi as gmx
-
-
-def test_fr1():
-    """FR1: Wrap importable Python code.
-
-    gmxapi compatible operations are implemented with simple machinery that allows
-    compartmentalized progress on functionality to be highly decoupled from
-    implementing user-facing tools. Tools are provided in `gmx.operation` and
-    demonstrated by implementing `gmx.commandline_operation`.
-    """
-    # commandline_operation helper creates a set of operations
-    # that includes the discovery and execution of the program
-    # named in `executable`.
-    operation = gmx.commandline_operation(executable='true')
-    operation.run()
-    assert operation.output.returncode.result() == 0
-
-    operation = gmx.commandline_operation(executable='false')
-    operation.run()
-    assert operation.output.returncode.result() == 1
diff --git a/python_packaging/test/test_fr03.py b/python_packaging/test/test_fr03.py
deleted file mode 100644 (file)
index 1ce96fa..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import os
-import shutil
-import stat
-import tempfile
-
-import gmxapi as gmx
-
-
-def test_fr3():
-    """FR3: Output proxy can be used as input."""
-    with tempfile.TemporaryDirectory() as directory:
-        file1 = os.path.join(directory, 'input')
-        file2 = os.path.join(directory, 'output')
-
-        # Make a shell script that acts like the type of tool we are wrapping.
-        scriptname = os.path.join(directory, 'clicommand.sh')
-        with open(scriptname, 'w') as fh:
-            fh.write('\n'.join(['#!' + shutil.which('bash'),
-                                '# Concatenate an input file and a string argument to an output file.',
-                                '# Mock a utility with the tested syntax.',
-                                '#     clicommand.sh "some words" -i inputfile -o outputfile',
-                                'echo $1 | cat $3 - > $5\n']))
-        os.chmod(scriptname, stat.S_IRWXU)
-
-        line1 = 'first line'
-        filewriter1 = gmx.commandline_operation(scriptname,
-                                                arguments=[line1],
-                                                input_files={'-i': os.devnull},
-                                                output_files={'-o': file1})
-
-        line2 = 'second line'
-        filewriter2 = gmx.commandline_operation(scriptname,
-                                                arguments=[line2],
-                                                input_files={'-i': filewriter1.output.file['-o']},
-                                                output_files={'-o': file2})
-
-        filewriter2.run()
-        # Check that the files have the expected lines
-        with open(file1, 'r') as fh:
-            lines = [text.rstrip() for text in fh]
-        assert len(lines) == 1
-        assert lines[0] == line1
-        with open(file2, 'r') as fh:
-            lines = [text.rstrip() for text in fh]
-        assert len(lines) == 2
-        assert lines[0] == line1
-        assert lines[1] == line2
diff --git a/python_packaging/test/test_fr04.py b/python_packaging/test/test_fr04.py
deleted file mode 100644 (file)
index 9a74855..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr4'),
-                   reason="Feature level not met.")
-def test_fr4():
-    """FR4: Dimensionality and typing of named data causes generation of correct work topologies."""
-    N = 10
-    simulation_input = gmx.read_tpr(initial_tpr)
-
-    # Array inputs imply array outputs.
-    input_array = gmx.modify_input(
-        simulation_input, params={'tau-t': [t / 10.0 for t in range(N)]})
-
-    md = gmx.mdrun(input_array)  # An array of simulations
-
-    rmsf = gmx.commandline_operation(
-        'gmx',
-        'rmsf',
-        input={
-            '-f': md.output.trajectory,
-            '-s': initial_tpr
-        },
-        output={'-o': gmx.FileName(suffix='.xvg')})
diff --git a/python_packaging/test/test_fr05.py b/python_packaging/test/test_fr05.py
deleted file mode 100644 (file)
index 03f2288..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr5'),
-                   reason="Feature level not met.")
-def test_fr5():
-    """FR5: Explicit many-to-one or many-to-many data flow.
-
-    Test operations for manipulating the data flow graph topology.
-
-    Check for expected default behavior and explicit behavior of data flow (graph
-    edges) with respect to scatter, gather, map, reduce, and broadcast.
-    """
-    output_files = gmx.gather(rmsf.output.file['-o'])
-    gmx.run()
-
-    print('Output file list:')
-    print(', '.join(output_files.result()))
diff --git a/python_packaging/test/test_fr07.py b/python_packaging/test/test_fr07.py
deleted file mode 100644 (file)
index 27354b7..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-
-
-@pytest.mark.usefixtures('cleandir')
-def test_fr7(spc_water_box):
-    """FR7: Python bindings for launching simulations.
-
-    gmx.mdrun uses bindings to C++ API to launch simulations.
-    """
-    md = gmx.mdrun(spc_water_box)
-    md.run()
-    # Note: can't verify that this is accomplished with C++ integration without
-    # exploring implementation details.
diff --git a/python_packaging/test/test_fr08.py b/python_packaging/test/test_fr08.py
deleted file mode 100644 (file)
index de7a33f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-# Ref https://gitlab.com/gromacs/gromacs/-/issues/3192
-@pytest.mark.skipif(not has_feature('fr8'),
-                   reason="Feature level not met.")
-def test_fr8(spc_water_box):
-    """FR8: gmx.mdrun understands ensemble work."""
-    md = gmx.mdrun([spc_water_box, spc_water_box])
-    md.run()
-    # Maybe assert that two trajectory files with unique filesystem locations are produced?
diff --git a/python_packaging/test/test_fr09.py b/python_packaging/test/test_fr09.py
deleted file mode 100644 (file)
index e8c38ec..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr9'),
-                   reason="Feature level not met.")
-def test_fr9():
-    """FR9: *gmx.mdrun supports interface for binding MD plugins*
-
-    (requires interaction with library development)
-    """
-    import sample_restraint
-
-    starting_structure = 'input_conf.gro'
-    topology_file = 'input.top'
-    run_parameters = 'params.mdp'
-
-    initial_tpr = gmx.commandline_operation(
-        'gmx',
-        'grompp',
-        input={
-            '-f': run_parameters,
-            '-c': starting_structure,
-            '-p': topology_file
-        },
-        output={'-o': gmx.OutputFile('.tpr')})
-
-    simulation_input = gmx.read_tpr(initial_tpr.output.file['-o'])
-
-    # Prepare a simple harmonic restraint between atoms 1 and 4
-    restraint_params = {'sites': [1, 4],
-                        'R0': 2.0,
-                        'k': 10000.0}
-
-    restraint = sample_restraint.harmonic_restraint(input=restraint_params)
-
-    md = gmx.mdrun(input=simulation_input, potential=sample_restraint)
-
-    #md.run()
diff --git a/python_packaging/test/test_fr10.py b/python_packaging/test/test_fr10.py
deleted file mode 100644 (file)
index 6ccc810..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr10'),
-                   reason="Feature level not met.")
-def test_fr10():
-    """FR10: 10: fused operations for use in looping constructs
-
-    * gmx.subgraph fuses operations
-    * gmx.while creates an operation wrapping a dynamic number of iterations of a subgraph
-    """
-    train = gmx.subgraph(variables={'conformation': initial_input})
-    with train:
-        myplugin.training_restraint(
-            label='training_potential',
-            params=my_dict_params)
-        modified_input = gmx.modify_input(
-            input=initial_input, structure=train.conformation)
-        md = gmx.mdrun(input=modified_input, potential=train.training_potential)
-        # Alternate syntax to facilitate adding multiple potentials:
-        # md.interface.potential.add(train.training_potential)
-        brer_tools.training_analyzer(
-            label='is_converged',
-            params=train.training_potential.output.alpha)
-        train.conformation = md.output.conformation
-
-    train_loop = gmx.while_loop(
-        operation=train,
-        condition=gmx.logical_not(train.is_converged))
diff --git a/python_packaging/test/test_fr11.py b/python_packaging/test/test_fr11.py
deleted file mode 100644 (file)
index 9d7b22b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr11'),
-                   reason="Feature level not met.")
-def test_fr11():
-    """FR11: Python access to TPR file contents.
-
-    * gmx.read_tpr utility provides access to TPR file contents
-    * gmx.read_tpr operation produces output consumable by gmx.mdrun
-    * gmx.mdrun produces gromacs.read_tpr node for tpr filename kwargs
-    """
-    simulation_input = gmx.read_tpr(initial_tpr)
-    nsteps = simulation_input.params('nsteps')
-    md = gmx.mdrun(simulation_input)
-    assert md.output.trajectory.step.result() == nsteps
diff --git a/python_packaging/test/test_fr12.py b/python_packaging/test/test_fr12.py
deleted file mode 100644 (file)
index 20e1ecb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr12'),
-                   reason="Feature level not met.")
-def test_fr12():
-    """FR12: Simulation checkpoint handling
-
-    * gmx.mdrun is properly restartable
-
-    This should be invisible to the user, and requires introspection and testing infrastructure to properly test (TBD).
-    """
-    from gmxapi import testsupport
-
-    simulation_input = gmx.read_tpr(initial_tpr)
-    md = gmx.mdrun(simulation_input, label='md')
-    interrupting_context = testsupport.interrupted_md(md)
-    with interrupting_context as session:
-        first_half_md = session.md.run()
-    md = gmx.mdrun(first_half_md, context=testsupport.inspect)
-    testsupport.verify_restart(md)
diff --git a/python_packaging/test/test_fr13.py b/python_packaging/test/test_fr13.py
deleted file mode 100644 (file)
index 23b3e7e..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr13'),
-                   reason="Feature level not met.")
-def test_fr13():
-    """FR13: ``run`` module function simplifies user experience
-
-    * gmx.run finds and runs operations to produce expected output files
-    * gmx.run handles ensemble work topologies
-    * gmx.run handles multi-process execution
-    * gmx.run safety checks to avoid data loss / corruption
-    """
-    # commandline_operation helper creates a set of operations
-    # that includes the discovery and execution of the program
-    # named in `executable`.
-    md = gmx.mdrun([tprfilename, tprfilename])
-    gmx.run()
diff --git a/python_packaging/test/test_fr14.py b/python_packaging/test/test_fr14.py
deleted file mode 100644 (file)
index 42285d6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr14'),
-                   reason="Feature level not met.")
-def test_fr14():
-    """FR14: Easy access to GROMACS run time parameters
-
-    *gmx.run conveys run-time parameters to execution context*
-
-    (requires interaction with library development)
-
-    TODO: find human readable parameter names to complement short CLI flags.
-    """
-    gmx.run(work, tmpi=20, grid=gmx.NDArray([3, 3, 2]), ntomp_pme=1, npme=2, ntomp=1)
diff --git a/python_packaging/test/test_fr15.py b/python_packaging/test/test_fr15.py
deleted file mode 100644 (file)
index d59d3f6..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019,2020, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import logging
-
-import pytest
-
-import gmxapi as gmx
-
-# Configure the `logging` module before proceeding any further.
-gmx.logger.setLevel(logging.WARNING)
-
-try:
-    from mpi4py import MPI
-    rank_number = MPI.COMM_WORLD.Get_rank()
-except ImportError:
-    rank_number = 0
-    rank_tag = ''
-    MPI = None
-else:
-    rank_tag = 'rank{}:'.format(rank_number)
-
-# Use this formatter to improve the caplog log records.
-formatter = logging.Formatter(rank_tag + '%(name)s:%(levelname)s: %(message)s')
-
-@pytest.mark.usefixtures('cleandir')
-def test_fr15(spc_water_box, caplog):
-    """FR15: Simulation input modification.
-
-    * *gmx.modify_input produces new (tpr) simulation input in data flow operation*
-      (requires interaction with library development)
-    """
-    try:
-        from mpi4py import MPI
-        current_rank = MPI.COMM_WORLD.Get_rank()
-        ensemble_size = MPI.COMM_WORLD.Get_size()
-    except ImportError:
-        current_rank = 0
-        ensemble_size = 1
-
-    with caplog.at_level(logging.DEBUG):
-        caplog.handler.setFormatter(formatter)
-        with caplog.at_level(logging.WARNING, 'gmxapi'), \
-                 caplog.at_level(logging.DEBUG, 'gmxapi.mdrun'), \
-                 caplog.at_level(logging.DEBUG, 'gmxapi.modify_input'), \
-                 caplog.at_level(logging.DEBUG, 'gmxapi.read_tpr'), \
-                 caplog.at_level(logging.DEBUG, 'gmxapi.simulation'):
-
-            initial_input = gmx.read_tpr([spc_water_box for _ in range(ensemble_size)])
-            parameters = list([{'ld-seed': i} for i in range(ensemble_size)])
-            param_sweep = gmx.modify_input(input=initial_input,
-                                           parameters=parameters
-                                           )
-            md = gmx.mdrun(param_sweep)
-            # TODO: (#3179) Handle ensembles of size 1 more elegantly.
-            if md.output.ensemble_width > 1:
-                result_list = md.output.parameters['ld-seed'].result()
-            else:
-                result_list = [md.output.parameters['ld-seed'].result()]
-            for expected, actual in zip(parameters, result_list):
-                assert expected['ld-seed'] == actual
diff --git a/python_packaging/test/test_fr16.py b/python_packaging/test/test_fr16.py
deleted file mode 100644 (file)
index 8d51431..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr16'),
-                   reason="Feature level not met.")
-def test_fr16():
-    """FR16: Create simulation input from simulation output.
-
-    *gmx.make_input handles state from checkpoints*
-    (requires interaction with library development)
-    """
-    initial_input = gmx.read_tpr(tpr_filename)
-    md = gmx.mdrun(initial_input)
-    stage2_input = gmx.make_input(topology=initial_input,
-                                  conformation=md.output,
-                                  parameters=stage2_params,
-                                  simulation_state=md.output)
-    md = gmx.mdrun(stage2_input)
-    md.run()
diff --git a/python_packaging/test/test_fr17.py b/python_packaging/test/test_fr17.py
deleted file mode 100644 (file)
index 90d4e94..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr17'),
-                   reason="Feature level not met.")
-def test_fr17():
-    """FR17: Prepare simulation input from multiple sources
-
-    gmx.write_tpr (a facility used to implement higher-level functionality)
-    merges tpr data (e.g. inputrec, structure, topology) into new file(s)
-    """
-    gmx.fileio.write_tpr(filename=managed_filename, input=stage2_input)
-    for key, value in gmx.fileio.read_tpr(managed_filename)['input']:
-        assert stage2_input[key] == value
diff --git a/python_packaging/test/test_fr18.py b/python_packaging/test/test_fr18.py
deleted file mode 100644 (file)
index 5d7b657..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr18'),
-                   reason="Feature level not met.")
-def test_fr18():
-    """FR18: GROMACS CLI tools receive improved Python-level support over generic commandline_operations
-
-    * gmx.tool provides wrapping of unmigrated gmx CLI tools
-    """
-    rmsf = gmx.tool.rmsf(trajectory=md.output.trajectory,
-                         structure=initial_tpr)
-    output_files = gmx.gather(rmsf.output.file).result()
diff --git a/python_packaging/test/test_fr19.py b/python_packaging/test/test_fr19.py
deleted file mode 100644 (file)
index 3100c6c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr19'),
-                   reason="Feature level not met.")
-def test_fr19():
-    """FR19: GROMACS CLI tools receive improved C++-level support over generic commandline_operations
-
-    gmx.tool uses Python bindings on C++ API for CLI modules (not testable at the UI level)
-    """
-    rmsf = gmx.rmsf(trajectory=md.output.trajectory,
-                    structure=initial_tpr)
diff --git a/python_packaging/test/test_fr20.py b/python_packaging/test/test_fr20.py
deleted file mode 100644 (file)
index 7f8179a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr20'),
-                   reason="Feature level not met.")
-def test_fr20():
-    """FR20: Python bindings use C++ API for expressing user interface
-
-    gmx.tool operations are migrated to updated Options infrastructure
-    (requires interaction with library development)
-    """
-    analysis = gmx.rmsf(trajectory=md.output.trajectory,
-                        topology=initial_input)
-    file_list = gmx.fileio.write_xvg(analysis.output).result()
diff --git a/python_packaging/test/test_fr21.py b/python_packaging/test/test_fr21.py
deleted file mode 100644 (file)
index 75e1e41..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-@pytest.mark.skipif(not has_feature('fr21'),
-                   reason="Feature level not met.")
-def test_fr21():
-    """FR21: User insulated from filesystem paths.
-
-    gmx.context manages data placement according to where operations run
-    """
-    output_files = gmx.gather(rmsf.output.file).result()
-    testsupport.verify_unique_xvg_files(output_files)
-    # Verify completeness of project sustainability goal in code review.
diff --git a/python_packaging/test/test_fr22.py b/python_packaging/test/test_fr22.py
deleted file mode 100644 (file)
index 9491676..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-from pytesthelpers import withmpi_only
-
-@withmpi_only
-@pytest.mark.skipif(not has_feature('fr22'),
-                   reason="Feature level not met.")
-def test_fr22():
-    """FR22: MPI-based ensemble management from Python
-
-    gmx.context can own an MPI communicator and run ensembles of simulations.
-    """
-    from mpi4py import MPI
-    comm_world = MPI.COMM_WORLD
-
-    group2 = comm_world.Get_group().Incl([0,1])
-    ensemble_comm = comm_world.Create_group(group2)
-
-    md = gmx.mdrun([tpr_filename for _ in range(2)])
-
-    with gmx.get_context(md, communicator=ensemble_comm) as session:
-        session.run()
-
-    ensemble_comm.Free()
diff --git a/python_packaging/test/test_fr23.py b/python_packaging/test/test_fr23.py
deleted file mode 100644 (file)
index 517a12c..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2019, by the GROMACS development team, led by
-# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
-# and including many others, as listed in the AUTHORS file in the
-# top-level source directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-
-"""Test gmxapi functionality described in roadmap.rst."""
-
-import pytest
-
-import gmxapi as gmx
-from gmxapi.version import has_feature
-
-from pytesthelpers import withmpi_only
-
-@withmpi_only
-@pytest.mark.skipif(not has_feature('fr23'),
-                   reason="Feature level not met.")
-def test_fr23():
-    """FR23: Ensemble simulations can themselves use MPI
-
-    *GROMACS simulation can use a set of subcommunicators from the comm owned by the client.*
-    (requires interaction with library development)
-    """
-    from mpi4py import MPI
-    comm_world = MPI.COMM_WORLD
-
-    md = gmx.mdrun([tpr_filename for _ in range(2)])
-
-    with gmx.get_context(md, communicator=comm_world) as session:
-        session.run()
-
-    md = gmx.mdrun([tpr_filename for _ in range(4)])
-
-
-    with gmx.get_context(md, communicator=comm_world) as session:
-        session.run()
diff --git a/python_packaging/test/testdata.json b/python_packaging/test/testdata.json
deleted file mode 100644 (file)
index ec74d97..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-{
-  "datasource": {
-    "solvent_topology": "src/testutils/simulationdatabase/spc216.top",
-    "solvent_structure": "src/testutils/simulationdatabase/spc216.gro"
-  },
-  "solvent_topology": [
-    "#include \"oplsaa.ff/forcefield.itp\"",
-    "",
-    "; Include water topology",
-    "#include \"oplsaa.ff/tip3p.itp\"",
-    "",
-    "[ system ]",
-    "; Name",
-    "spc2",
-    "",
-    "[ molecules ]",
-    "; Compound        #mols",
-    "SOL              216"
-  ],
-  "solvent_structure": [
-    "216 water molecules",
-    "  648",
-    "    1SOL     OW    1   0.005   0.600   0.244  0.1823 -0.4158  0.4875",
-    "    1SOL    HW1    2  -0.017   0.690   0.270 -1.7457 -0.5883 -0.4604",
-    "    1SOL    HW2    3   0.051   0.610   0.161  2.5085 -0.1501  1.7627",
-    "    2SOL     OW    4   0.155   0.341   0.735  0.6282  0.4390  0.0015",
-    "    2SOL    HW1    5   0.140   0.284   0.660 -0.3206  0.0700  0.4631",
-    "    2SOL    HW2    6   0.081   0.402   0.734 -0.1556 -0.4529  1.4404",
-    "    3SOL     OW    7   1.853   0.500   0.554  0.0780  0.6477  0.1596",
-    "    3SOL    HW1    8   1.788   0.505   0.484 -0.5409 -1.2601  0.5636",
-    "    3SOL    HW2    9   1.809   0.533   0.632 -0.0335  0.4430  0.1829",
-    "    4SOL     OW   10   0.732   1.356   1.314  0.3818 -0.1526  0.0053",
-    "    4SOL    HW1   11   0.724   1.291   1.245 -0.6376  0.1642 -0.1766",
-    "    4SOL    HW2   12   0.767   1.434   1.270  0.7292 -0.2888  0.0444",
-    "    5SOL     OW   13   1.746   1.593   0.575 -0.4779 -0.0868  0.0596",
-    "    5SOL    HW1   14   1.735   1.666   0.637  0.2545 -0.2925  0.4446",
-    "    5SOL    HW2   15   1.708   1.518   0.621  1.8857 -0.6672  1.1321",
-    "    6SOL     OW   16   1.759   0.582   0.800  0.1066  0.3638  0.1453",
-    "    6SOL    HW1   17   1.673   0.542   0.815  0.2653 -0.5059 -1.2580",
-    "    6SOL    HW2   18   1.787   0.608   0.888 -0.6999 -1.1652  0.8946",
-    "    7SOL     OW   19   0.965   0.529   0.941  0.0464  0.6791 -0.5470",
-    "    7SOL    HW1   20   0.912   0.531   1.020  0.7588 -0.9814 -0.0074",
-    "    7SOL    HW2   21   0.902   0.533   0.869 -0.5440  3.3012  0.0802",
-    "    8SOL     OW   22   0.091   0.598   1.836  0.0326  0.2995  0.5048",
-    "    8SOL    HW1   23   0.091   0.507   1.806 -1.9591  0.6076 -0.4926",
-    "    8SOL    HW2   24   0.174   0.634   1.804  0.0499 -0.6923 -0.5988",
-    "    9SOL     OW   25   0.796   1.279   0.780  0.0287  0.9120  0.0338",
-    "    9SOL    HW1   26   0.731   1.331   0.734 -0.7066  0.7743  0.9173",
-    "    9SOL    HW2   27   0.799   1.196   0.733  0.1127  1.1975 -0.4621",
-    "   10SOL     OW   28   0.737   0.813   0.145 -0.2045 -0.2755 -0.1129",
-    "   10SOL    HW1   29   0.765   0.723   0.130  2.0853  0.6254 -1.4381",
-    "   10SOL    HW2   30   0.771   0.835   0.231  0.8150 -0.0891 -0.5595",
-    "   11SOL     OW   31   0.547   1.092   0.477  0.7492 -0.2399 -0.7211",
-    "   11SOL    HW1   32   0.529   1.089   0.571 -1.6704 -1.5609 -1.1701",
-    "   11SOL    HW2   33   0.463   1.072   0.436  1.8685 -0.1447 -3.1641",
-    "   12SOL     OW   34   0.729   1.093   1.672 -0.3320 -0.4160 -0.1770",
-    "   12SOL    HW1   35   0.781   1.129   1.744 -3.0691  0.8046  1.2710",
-    "   12SOL    HW2   36   0.762   1.004   1.660 -0.3590 -0.9619  3.2122",
-    "   13SOL     OW   37   0.570   1.373   1.080  0.5042 -0.2319 -0.2229",
-    "   13SOL    HW1   38   0.625   1.297   1.099 -1.3369 -1.5288  0.0461",
-    "   13SOL    HW2   39   0.544   1.361   0.988 -1.9170 -1.3747  0.5551",
-    "   14SOL     OW   40   1.431   1.407   1.448 -0.0622  0.3206 -0.1113",
-    "   14SOL    HW1   41   1.471   1.367   1.526 -0.0250 -0.0867 -0.3344",
-    "   14SOL    HW2   42   1.398   1.332   1.397 -0.3689  0.6034 -0.3325",
-    "   15SOL     OW   43   0.544   0.321   1.628  0.2713  0.2958 -0.0287",
-    "   15SOL    HW1   44   0.458   0.278   1.627  0.2912  0.2480  0.2043",
-    "   15SOL    HW2   45   0.579   0.307   1.540  0.4867 -0.5991  0.1932",
-    "   16SOL     OW   46   1.482   0.418   0.684  0.2029  0.6095 -0.1120",
-    "   16SOL    HW1   47   1.396   0.411   0.641 -0.0022  0.9048  0.2426",
-    "   16SOL    HW2   48   1.490   0.336   0.734 -0.2046  0.9013  0.4457",
-    "   17SOL     OW   49   0.383   1.854   0.680 -0.5139  0.5358  0.4888",
-    "   17SOL    HW1   50   0.421   1.821   0.599  0.7665  0.7680  0.9853",
-    "   17SOL    HW2   51   0.458   1.885   0.731 -1.3106  0.4418  1.7385",
-    "   18SOL     OW   52   1.132   1.589   1.714  0.2895 -0.1975 -0.0185",
-    "   18SOL    HW1   53   1.043   1.553   1.717  0.5306 -0.7027  2.3217",
-    "   18SOL    HW2   54   1.155   1.588   1.621 -0.5281 -4.1539 -0.3015",
-    "   19SOL     OW   55   0.395   1.440   0.467  0.5492  0.0979  0.3540",
-    "   19SOL    HW1   56   0.368   1.353   0.437 -0.1402  0.0430  1.1291",
-    "   19SOL    HW2   57   0.315   1.491   0.468  1.3744  1.5434 -2.6982",
-    "   20SOL     OW   58   0.305   1.125   0.948  0.2111 -0.2977 -0.8856",
-    "   20SOL    HW1   59   0.295   1.202   0.892  2.3617  0.9048  0.3267",
-    "   20SOL    HW2   60   0.271   1.153   1.033  0.1365 -1.0047 -0.6756",
-    "   21SOL     OW   61   0.724   1.826   1.501  0.0298  0.4019 -0.0972",
-    "   21SOL    HW1   62   0.768   1.794   1.579 -0.4863 -1.1317 -0.4356",
-    "   21SOL    HW2   63   0.660   1.759   1.479  0.8721  0.2961 -2.4245",
-    "   22SOL     OW   64   0.514   0.998   0.125  0.6098  0.7181 -0.7434",
-    "   22SOL    HW1   65   0.597   0.957   0.101  0.9105  1.6725 -1.3616",
-    "   22SOL    HW2   66   0.482   1.036   0.043 -0.2917  0.6175 -0.4394",
-    "   23SOL     OW   67   1.315   0.291   1.516 -0.0316  0.1776  0.0042",
-    "   23SOL    HW1   68   1.404   0.271   1.488 -0.3833 -0.6259 -0.5615",
-    "   23SOL    HW2   69   1.300   0.382   1.490 -0.3373 -0.5364 -2.3890",
-    "   24SOL     OW   70   0.062   0.829   0.562 -0.1329 -0.4901  0.1105",
-    "   24SOL    HW1   71   0.100   0.870   0.484 -0.6830 -0.5973 -0.2147",
-    "   24SOL    HW2   72  -0.009   0.888   0.588 -1.4347 -1.6123 -0.8158",
-    "   25SOL     OW   73   0.236   1.600   0.680  0.0347 -0.3240  0.4242",
-    "   25SOL    HW1   74   0.202   1.585   0.592  1.3235 -1.8349  0.1530",
-    "   25SOL    HW2   75   0.267   1.691   0.679 -0.8062 -0.0476 -0.3902",
-    "   26SOL     OW   76   0.071   1.691   0.164  0.0618 -0.1646  0.2129",
-    "   26SOL    HW1   77   0.075   1.759   0.097 -0.3582 -0.6286 -0.2942",
-    "   26SOL    HW2   78   0.089   1.609   0.116  1.2034 -0.3431  0.9259",
-    "   27SOL     OW   79   1.692   0.825   0.708 -0.5641 -0.5462 -0.0453",
-    "   27SOL    HW1   80   1.604   0.794   0.687 -0.6763 -0.2255 -0.0492",
-    "   27SOL    HW2   81   1.733   0.751   0.752 -1.0728 -0.4631  0.5871",
-    "   28SOL     OW   82   1.579   1.053   0.254 -0.8033 -0.0906 -0.0352",
-    "   28SOL    HW1   83   1.484   1.038   0.253 -0.5163 -1.9637 -0.8677",
-    "   28SOL    HW2   84   1.612   0.993   0.321 -0.3926  1.8899  1.5777",
-    "   29SOL     OW   85   0.255   0.444   1.549 -0.3923  0.0985  0.0998",
-    "   29SOL    HW1   86   0.315   0.457   1.623 -0.3069  1.0962 -0.1358",
-    "   29SOL    HW2   87   0.201   0.370   1.575  0.7050 -0.5864  0.4719",
-    "   30SOL     OW   88   0.517   1.454   0.771  0.5258  0.3188  0.1433",
-    "   30SOL    HW1   89   0.540   1.448   0.678 -0.7306  1.1517 -0.2395",
-    "   30SOL    HW2   90   0.432   1.499   0.771 -0.5682 -1.6745  1.5617",
-    "   31SOL     OW   91   1.290   1.247   1.248 -0.1525 -0.1170 -0.3420",
-    "   31SOL    HW1   92   1.225   1.308   1.284  0.8657  0.1540  1.1053",
-    "   31SOL    HW2   93   1.238   1.177   1.208 -1.3298  0.9308 -0.6961",
-    "   32SOL     OW   94   1.161   0.046   0.549 -0.7899  0.0165 -0.2292",
-    "   32SOL    HW1   95   1.234   0.006   0.596 -1.1893 -0.2501  0.1682",
-    "   32SOL    HW2   96   1.172   0.017   0.459 -0.7270 -0.4863 -0.0610",
-    "   33SOL     OW   97   0.200   0.931   1.248  0.1834 -0.0182 -0.3383",
-    "   33SOL    HW1   98   0.256   0.920   1.171  0.0813 -1.0292 -0.2797",
-    "   33SOL    HW2   99   0.213   0.850   1.299 -0.7054  0.0873  0.0770",
-    "   34SOL     OW  100   1.653   0.813   0.403 -0.4229  0.4610 -0.5574",
-    "   34SOL    HW1  101   1.632   0.721   0.384  0.8351  0.2066 -0.7345",
-    "   34SOL    HW2  102   1.697   0.810   0.488 -0.8967  0.9684 -0.2935",
-    "   35SOL     OW  103   1.138   1.632   1.408  0.2235  0.1534 -0.3000",
-    "   35SOL    HW1  104   1.106   1.554   1.363  2.5410 -2.2790  2.0813",
-    "   35SOL    HW2  105   1.080   1.702   1.379 -2.4493 -2.5989 -1.8891",
-    "   36SOL     OW  106   0.309   0.377   1.834 -0.4182 -0.4312 -0.3901",
-    "   36SOL    HW1  107   0.270   0.293   1.810  1.5773 -1.5836  0.2316",
-    "   36SOL    HW2  108   0.356   0.359   1.915 -0.2928  1.3958 -0.0364",
-    "   37SOL     OW  109   1.437   1.245   1.000 -0.0010  0.2071 -0.1808",
-    "   37SOL    HW1  110   1.416   1.156   0.973 -1.6468  1.1111 -1.9656",
-    "   37SOL    HW2  111   1.405   1.252   1.090  0.6670 -1.1529  0.1781",
-    "   38SOL     OW  112   1.424   1.753   0.580  0.2135 -0.3184  0.0506",
-    "   38SOL    HW1  113   1.415   1.709   0.496 -0.3394 -0.8115  0.3676",
-    "   38SOL    HW2  114   1.382   1.694   0.643 -0.0567  0.4046  0.5551",
-    "   39SOL     OW  115   0.842   0.793   0.396 -0.1790 -0.0812 -0.1655",
-    "   39SOL    HW1  116   0.827   0.699   0.405  0.8753 -0.1486  1.0973",
-    "   39SOL    HW2  117   0.773   0.834   0.448 -0.1571 -0.1809 -0.0577",
-    "   40SOL     OW  118   1.184   0.226   0.775  0.0987  0.3445 -0.0968",
-    "   40SOL    HW1  119   1.151   0.212   0.686  1.4235  1.3947 -0.7627",
-    "   40SOL    HW2  120   1.273   0.191   0.774 -0.0295 -0.0600  0.9650",
-    "   41SOL     OW  121   1.645   1.631   0.294 -0.1345  0.2473 -0.0927",
-    "   41SOL    HW1  122   1.700   1.553   0.302  3.4777  2.7807  1.0014",
-    "   41SOL    HW2  123   1.633   1.661   0.384 -2.3958  0.4256 -0.4190",
-    "   42SOL     OW  124   0.990   0.346   1.386  0.0430  0.1267 -0.1927",
-    "   42SOL    HW1  125   1.000   0.372   1.477 -2.1829 -1.0234  0.4135",
-    "   42SOL    HW2  126   1.076   0.311   1.362  1.1511  1.9943  0.9059",
-    "   43SOL     OW  127   1.202   0.168   0.212 -1.0083  0.3755  0.1937",
-    "   43SOL    HW1  128   1.264   0.196   0.145  0.7411 -0.2800  1.5089",
-    "   43SOL    HW2  129   1.128   0.131   0.163  0.1573  0.0522 -1.3518",
-    "   44SOL     OW  130   1.107   1.012   1.474  0.1787 -0.3903  0.2368",
-    "   44SOL    HW1  131   1.103   1.064   1.393 -2.8553 -3.0802 -1.4572",
-    "   44SOL    HW2  132   1.098   1.077   1.544  2.7027  1.9887 -1.5560",
-    "   45SOL     OW  133   1.100   1.061   1.152  0.5007  0.1964  0.5163",
-    "   45SOL    HW1  134   1.055   1.105   1.080  0.6653 -0.2221  0.1570",
-    "   45SOL    HW2  135   1.038   0.995   1.183  0.0876  0.9561  1.3329",
-    "   46SOL     OW  136   1.136   0.703   0.486 -0.1829  0.0543  0.1652",
-    "   46SOL    HW1  137   1.042   0.696   0.470 -0.1004 -2.0729  0.5023",
-    "   46SOL    HW2  138   1.176   0.703   0.399 -0.2869 -2.7402  0.0715",
-    "   47SOL     OW  139   0.205   0.758   0.832  0.1211 -0.5871  0.3969",
-    "   47SOL    HW1  140   0.160   0.782   0.751  0.6567 -1.4270 -0.1532",
-    "   47SOL    HW2  141   0.153   0.798   0.901  0.0933  0.8180 -0.4036",
-    "   48SOL     OW  142   0.014   1.547   1.653  0.0626  0.4351  0.1221",
-    "   48SOL    HW1  143  -0.068   1.593   1.633  0.0169  1.2500  2.0845",
-    "   48SOL    HW2  144  -0.011   1.455   1.659 -0.7796  0.7015  0.9501",
-    "   49SOL     OW  145   0.937   0.550   0.310 -0.4266  0.1699 -0.0318",
-    "   49SOL    HW1  146   0.940   0.460   0.342 -1.3375 -0.2757 -1.1180",
-    "   49SOL    HW2  147   1.018   0.561   0.260 -1.7099 -1.1003 -2.4930",
-    "   50SOL     OW  148   1.594   0.494   1.709 -0.0166  0.2988  0.0705",
-    "   50SOL    HW1  149   1.526   0.554   1.740 -1.2253 -0.8979 -0.2534",
-    "   50SOL    HW2  150   1.597   0.508   1.614  1.3720  1.5596  0.2831",
-    "   51SOL     OW  151   1.317   0.968   0.261 -0.3666  0.0273 -0.2007",
-    "   51SOL    HW1  152   1.326   0.873   0.258  2.6967  0.1307  3.0264",
-    "   51SOL    HW2  153   1.237   0.982   0.311  1.1619 -0.9005  2.6027",
-    "   52SOL     OW  154   0.818   0.220   0.930 -0.2358 -0.1122  0.7203",
-    "   52SOL    HW1  155   0.896   0.264   0.962 -0.5134 -0.4077  1.8296",
-    "   52SOL    HW2  156   0.843   0.128   0.924  0.2529  0.1261 -1.3134",
-    "   53SOL     OW  157   1.063   1.375   0.602 -0.1037  0.4271 -0.4463",
-    "   53SOL    HW1  158   1.080   1.291   0.646  0.8360 -1.0279 -3.4337",
-    "   53SOL    HW2  159   1.144   1.425   0.613 -0.7715  1.0792  1.5996",
-    "   54SOL     OW  160   0.402   0.050   1.093 -0.3397  0.0770 -0.0682",
-    "   54SOL    HW1  161   0.419  -0.043   1.079 -0.9714  0.1003 -1.0092",
-    "   54SOL    HW2  162   0.426   0.092   1.010 -0.9941  0.6253  0.0181",
-    "   55SOL     OW  163   1.638   1.025   0.883  0.0757  0.2175 -0.6114",
-    "   55SOL    HW1  164   1.604   1.095   0.826  0.1478  0.1813 -0.6999",
-    "   55SOL    HW2  165   1.670   0.959   0.822 -0.0596  0.0744 -0.5271",
-    "   56SOL     OW  166   1.398   1.680   1.499 -0.4326 -0.1587  0.4298",
-    "   56SOL    HW1  167   1.380   1.610   1.437 -0.8688  1.3026 -1.1337",
-    "   56SOL    HW2  168   1.312   1.714   1.522 -0.1861  0.3706  0.5817",
-    "   57SOL     OW  169   0.233   0.934   0.223  0.8457 -0.4228 -0.3137",
-    "   57SOL    HW1  170   0.220   0.964   0.133 -0.8989 -2.8830 -0.9538",
-    "   57SOL    HW2  171   0.299   0.865   0.215  1.2989 -0.0754  0.4245",
-    "   58SOL     OW  172   1.441   0.685   0.696  0.2354  0.4515 -0.4124",
-    "   58SOL    HW1  173   1.354   0.700   0.734 -0.2181  0.6376 -1.4924",
-    "   58SOL    HW2  174   1.463   0.595   0.721  0.2007  0.7651  0.7684",
-    "   59SOL     OW  175   0.337   1.268   0.247 -0.0093 -0.4920  0.1373",
-    "   59SOL    HW1  176   0.344   1.178   0.215  2.3331 -0.5413  0.6397",
-    "   59SOL    HW2  177   0.250   1.273   0.286  0.5826 -3.2231  2.0231",
-    "   60SOL     OW  178   0.898   0.118   0.200 -0.3551  0.2302 -0.0587",
-    "   60SOL    HW1  179   0.911   0.132   0.106  0.2985 -1.4100 -0.2193",
-    "   60SOL    HW2  180   0.829   0.180   0.223 -0.2792  0.9071 -1.5410",
-    "   61SOL     OW  181   1.836   1.848   1.626  0.0758 -0.2851  0.2067",
-    "   61SOL    HW1  182   1.827   1.886   1.713 -0.3224  1.3741 -0.5508",
-    "   61SOL    HW2  183   1.760   1.789   1.619 -1.1443  1.2674  0.1338",
-    "   62SOL     OW  184   1.709   1.339   0.320 -0.0310  0.2465 -0.1588",
-    "   62SOL    HW1  185   1.682   1.260   0.274 -0.3448  0.1521  0.1802",
-    "   62SOL    HW2  186   1.803   1.329   0.333 -0.1206 -0.2203  0.1609",
-    "   63SOL     OW  187   0.565   0.045   0.300  0.0049 -0.4326 -0.1368",
-    "   63SOL    HW1  188   0.507   0.057   0.225 -0.1634 -2.5297 -0.3735",
-    "   63SOL    HW2  189   0.526  -0.026   0.350  1.0811 -0.2485  1.0029",
-    "   64SOL     OW  190   1.628   0.075   0.522 -0.1732 -0.1708 -0.0354",
-    "   64SOL    HW1  191   1.564   0.147   0.528  0.0770 -0.0114  0.6735",
-    "   64SOL    HW2  192   1.585   0.001   0.564  0.2490  0.0361  0.7716",
-    "   65SOL     OW  193   0.217   0.088   1.291 -0.4462  0.0630  0.0515",
-    "   65SOL    HW1  194   0.299   0.084   1.242 -0.2119  1.3491  0.3286",
-    "   65SOL    HW2  195   0.231   0.028   1.365  0.0105 -0.1842 -0.2283",
-    "   66SOL     OW  196   1.107   1.599   0.835  0.2849  0.8202 -0.0344",
-    "   66SOL    HW1  197   1.035   1.596   0.772  0.7229 -2.5884 -0.4613",
-    "   66SOL    HW2  198   1.184   1.575   0.784  0.8991 -0.4540  1.4607",
-    "   67SOL     OW  199   0.526   0.552   0.449  0.1748 -0.6067  0.3229",
-    "   67SOL    HW1  200   0.434   0.575   0.446  0.6174  1.3015  0.5709",
-    "   67SOL    HW2  201   0.527   0.459   0.471 -1.6192 -0.0837  2.7272",
-    "   68SOL     OW  202   1.370   0.230   1.838  0.4671 -0.0369  0.5305",
-    "   68SOL    HW1  203   1.436   0.291   1.805 -1.2860  1.7105  0.1811",
-    "   68SOL    HW2  204   1.357   0.168   1.766 -0.4179  1.3780 -0.5543",
-    "   69SOL     OW  205   0.265   0.145   0.335 -0.3628  0.3179  0.3174",
-    "   69SOL    HW1  206   0.205   0.108   0.401 -1.9831  1.8944 -0.2337",
-    "   69SOL    HW2  207   0.215   0.142   0.254  1.1223 -0.3200 -0.5913",
-    "   70SOL     OW  208   0.640   0.255   0.072 -0.5708  0.2064  0.1379",
-    "   70SOL    HW1  209   0.592   0.297   0.143  0.6043 -0.4147  1.3207",
-    "   70SOL    HW2  210   0.603   0.167   0.066 -0.6735  0.2601 -0.0204",
-    "   71SOL     OW  211   1.053   1.444   1.188 -0.0691 -0.6794 -0.2630",
-    "   71SOL    HW1  212   1.050   1.387   1.111 -2.0209  0.6149 -1.1791",
-    "   71SOL    HW2  213   1.105   1.519   1.161 -1.8638  0.4079 -0.8057",
-    "   72SOL     OW  214   1.220   0.833   1.310 -0.3143  0.7335 -0.3290",
-    "   72SOL    HW1  215   1.162   0.770   1.266  1.2222 -1.5075  0.7975",
-    "   72SOL    HW2  216   1.167   0.868   1.382  0.2237 -2.6185  1.7829",
-    "   73SOL     OW  217   0.826   1.515   0.927  0.3270 -0.2701 -0.4080",
-    "   73SOL    HW1  218   0.920   1.501   0.924  0.2200 -1.3970  1.3889",
-    "   73SOL    HW2  219   0.788   1.433   0.895 -0.0893 -0.7359  1.2522",
-    "   74SOL     OW  220   0.947   0.419   0.683 -0.1867  0.1362 -0.5691",
-    "   74SOL    HW1  221   0.950   0.388   0.592 -0.7514  0.0847 -0.5674",
-    "   74SOL    HW2  222   0.861   0.392   0.715 -0.0499  0.2952 -0.0654",
-    "   75SOL     OW  223   0.532   1.697   0.437 -0.6446 -0.7155  0.7480",
-    "   75SOL    HW1  224   0.627   1.686   0.437 -0.8548 -2.6894 -0.0127",
-    "   75SOL    HW2  225   0.498   1.614   0.471 -2.1241 -0.3559  0.1956",
-    "   76SOL     OW  226   1.398   1.337   0.222 -0.5257  0.2643  0.0180",
-    "   76SOL    HW1  227   1.405   1.361   0.314 -1.0932  1.0998 -0.1528",
-    "   76SOL    HW2  228   1.433   1.412   0.175  2.1972 -1.1944 -0.3851",
-    "   77SOL     OW  229   0.212   1.702   1.770  0.8164 -0.0679 -0.0905",
-    "   77SOL    HW1  230   0.262   1.670   1.695  1.2871  4.6169 -1.9424",
-    "   77SOL    HW2  231   0.127   1.724   1.734  0.7133  1.2614  0.9604",
-    "   78SOL     OW  232   0.699   0.270   0.386 -0.8177 -0.5114  0.3479",
-    "   78SOL    HW1  233   0.669   0.287   0.475  1.2496  0.7505  0.8311",
-    "   78SOL    HW2  234   0.636   0.206   0.352 -1.7993 -0.8114  2.6001",
-    "   79SOL     OW  235   1.364   0.635   1.746 -0.7384 -0.1142  0.3285",
-    "   79SOL    HW1  236   1.350   0.721   1.707  0.1639 -0.6765 -1.2647",
-    "   79SOL    HW2  237   1.276   0.603   1.766 -1.1202  0.8395  0.1977",
-    "   80SOL     OW  238   1.316   1.494   0.695  0.5271  0.4903 -0.2267",
-    "   80SOL    HW1  239   1.355   1.490   0.782  1.4716  2.4892 -0.5239",
-    "   80SOL    HW2  240   1.366   1.430   0.644 -0.3994 -1.1000  0.8041",
-    "   81SOL     OW  241   0.532   0.838   0.958 -0.4993 -0.0110  0.1528",
-    "   81SOL    HW1  242   0.442   0.838   0.927 -0.3290  1.0927 -0.3788",
-    "   81SOL    HW2  243   0.526   0.856   1.052 -0.7970  0.7189 -0.0061",
-    "   82SOL     OW  244   1.373   0.209   0.411 -0.4600 -0.0336  0.2506",
-    "   82SOL    HW1  245   1.349   0.299   0.436  0.8064  0.1217  0.9551",
-    "   82SOL    HW2  246   1.302   0.180   0.354 -1.2353  1.1687  0.5895",
-    "   83SOL     OW  247   0.863   0.622   1.815  0.1086 -0.0512 -0.2934",
-    "   83SOL    HW1  248   0.776   0.662   1.825  0.2746 -0.0065  1.0405",
-    "   83SOL    HW2  249   0.847   0.528   1.822  0.1601 -0.0462 -0.1118",
-    "   84SOL     OW  250   1.783   0.582   1.418  0.6465  0.6810  0.3160",
-    "   84SOL    HW1  251   1.875   0.567   1.396  0.4674  0.4019 -0.2379",
-    "   84SOL    HW2  252   1.784   0.663   1.469  1.2410  0.4910  0.6118",
-    "   85SOL     OW  253   0.613   0.312   1.111  0.2122 -0.1926  0.0935",
-    "   85SOL    HW1  254   0.548   0.299   1.042 -1.2204 -0.4568  1.4556",
-    "   85SOL    HW2  255   0.683   0.250   1.090 -0.5503 -0.7886 -0.7088",
-    "   86SOL     OW  256   0.672   0.064   0.643 -0.4134 -0.2417 -0.2832",
-    "   86SOL    HW1  257   0.713   0.018   0.570  1.2261 -0.1055  0.5337",
-    "   86SOL    HW2  258   0.745   0.093   0.698 -1.5062  1.5431  0.2971",
-    "   87SOL     OW  259   0.944   0.065   0.742 -0.4039  0.1338 -0.1715",
-    "   87SOL    HW1  260   0.972  -0.020   0.777 -1.0742  0.3828  0.9718",
-    "   87SOL    HW2  261   1.010   0.086   0.676  0.5369 -0.6258  0.5115",
-    "   88SOL     OW  262   1.518   1.398   0.544  0.3191  0.1672  0.1253",
-    "   88SOL    HW1  263   1.542   1.340   0.617  1.3829 -3.0497 -2.6516",
-    "   88SOL    HW2  264   1.585   1.383   0.478 -0.9695  2.5176 -1.7930",
-    "   89SOL     OW  265   1.383   0.745   0.981  0.6221  0.4835 -0.5502",
-    "   89SOL    HW1  266   1.424   0.776   1.062  0.3016  0.6178 -0.4363",
-    "   89SOL    HW2  267   1.382   0.650   0.990  2.1328  0.3926 -1.1555",
-    "   90SOL     OW  268   1.430   0.711   0.228 -0.5541 -0.2056 -0.2440",
-    "   90SOL    HW1  269   1.484   0.752   0.161  1.4464 -1.4288  0.5632",
-    "   90SOL    HW2  270   1.487   0.704   0.304 -2.0971 -0.8420  0.8945",
-    "   91SOL     OW  271   0.594   1.349   0.251  0.4694 -0.3366 -0.1842",
-    "   91SOL    HW1  272   0.504   1.319   0.264  0.4413 -0.5655 -0.8713",
-    "   91SOL    HW2  273   0.591   1.399   0.170  0.3740  2.1788  1.3333",
-    "   92SOL     OW  274   0.012   1.346   0.947 -0.5059  0.3559 -0.8179",
-    "   92SOL    HW1  275   0.035   1.286   1.017 -1.8536  0.1320 -0.5600",
-    "   92SOL    HW2  276   0.082   1.411   0.947 -0.5934  0.4480  0.8287",
-    "   93SOL     OW  277   0.975   0.631   1.569  0.3983 -0.5427 -0.0867",
-    "   93SOL    HW1  278   0.951   0.615   1.661  1.8703  0.5422  0.4925",
-    "   93SOL    HW2  279   0.916   0.701   1.541  0.5134 -0.3107  0.2594",
-    "   94SOL     OW  280   0.424   0.348   0.217  0.1101  0.2239 -0.2278",
-    "   94SOL    HW1  281   0.386   0.282   0.276 -0.3617  0.8853  0.2184",
-    "   94SOL    HW2  282   0.371   0.426   0.232  0.5477  0.6496 -0.8958",
-    "   95SOL     OW  283   1.796   1.062   1.504  0.2695  0.6634 -0.0751",
-    "   95SOL    HW1  284   1.834   0.988   1.550  1.3024  0.4717 -1.2049",
-    "   95SOL    HW2  285   1.725   1.025   1.453  1.7321  0.1617 -1.8100",
-    "   96SOL     OW  286   0.776   1.177   1.110 -0.1065  0.8948 -0.3445",
-    "   96SOL    HW1  287   0.821   1.160   1.027 -0.7478 -1.4805 -0.2468",
-    "   96SOL    HW2  288   0.783   1.095   1.158  1.2731  2.6040  2.4881",
-    "   97SOL     OW  289   1.646   1.672   1.639 -0.7898 -0.2604 -0.5233",
-    "   97SOL    HW1  290   1.620   1.703   1.726 -1.0611 -0.1904 -0.6292",
-    "   97SOL    HW2  291   1.566   1.678   1.587  0.1940  3.0779 -1.7466",
-    "   98SOL     OW  292   0.939   1.027   0.909  0.0792  0.1363  0.3449",
-    "   98SOL    HW1  293   0.975   0.941   0.888  0.5802  0.7760 -1.5203",
-    "   98SOL    HW2  294   0.899   1.057   0.828  0.0139  1.7174  0.9382",
-    "   99SOL     OW  295   1.706   1.046   1.150 -0.0080  0.1842 -0.0903",
-    "   99SOL    HW1  296   1.617   1.024   1.177  0.1120  1.5197  1.4922",
-    "   99SOL    HW2  297   1.704   1.046   1.054 -1.3207 -1.2705 -0.0770",
-    "  100SOL     OW  298   1.111   0.060   1.299  0.6560 -0.4016  0.2593",
-    "  100SOL    HW1  299   1.057  -0.014   1.271  2.1510 -1.8943  1.2423",
-    "  100SOL    HW2  300   1.161   0.083   1.221 -2.4139  1.9814 -1.1128",
-    "  101SOL     OW  301   1.054   1.138   1.722 -0.5332 -0.8115 -0.1786",
-    "  101SOL    HW1  302   0.985   1.166   1.783 -0.2649 -1.4601  0.4295",
-    "  101SOL    HW2  303   1.121   1.206   1.729 -0.3829 -1.0225  0.4524",
-    "  102SOL     OW  304   0.779   1.078   0.328  0.3264 -0.0895  0.3044",
-    "  102SOL    HW1  305   0.689   1.092   0.359  0.3399  1.9332 -0.5641",
-    "  102SOL    HW2  306   0.823   1.161   0.344  1.5363 -0.4619 -1.0674",
-    "  103SOL     OW  307   0.597   1.033   1.410  0.5611 -0.0677 -0.1702",
-    "  103SOL    HW1  308   0.652   1.088   1.466  1.5061 -0.8838 -0.2823",
-    "  103SOL    HW2  309   0.659   0.982   1.358 -0.2060  2.0267 -3.3556",
-    "  104SOL     OW  310   1.397   0.447   1.174 -0.2703 -0.3920  0.0860",
-    "  104SOL    HW1  311   1.329   0.477   1.236 -1.9939  1.4621 -2.6202",
-    "  104SOL    HW2  312   1.349   0.431   1.093  1.6783 -4.4843 -0.3707",
-    "  105SOL     OW  313   0.342   1.754   1.444 -0.7895 -0.3252  0.5390",
-    "  105SOL    HW1  314   0.432   1.725   1.434 -0.4843  0.8878 -0.3721",
-    "  105SOL    HW2  315   0.289   1.686   1.404 -0.2417 -0.7319  0.5069",
-    "  106SOL     OW  316   0.002   1.006   0.356 -0.0082 -0.1035  0.3071",
-    "  106SOL    HW1  317  -0.063   0.996   0.287  1.1105 -0.6804 -0.6858",
-    "  106SOL    HW2  318   0.085   0.984   0.314  0.8663  0.8560  1.4823",
-    "  107SOL     OW  319   0.447   0.278   0.844  0.5699 -0.2726  0.1385",
-    "  107SOL    HW1  320   0.353   0.299   0.848 -0.0268 -2.5891 -0.5926",
-    "  107SOL    HW2  321   0.468   0.279   0.751  1.1462 -0.2559  0.2661",
-    "  108SOL     OW  322   1.114   1.213   0.176 -0.5160  0.4537 -0.4754",
-    "  108SOL    HW1  323   1.193   1.266   0.182 -0.1529  0.2045 -2.8947",
-    "  108SOL    HW2  324   1.111   1.183   0.086 -2.4625 -0.9720  0.0273",
-    "  109SOL     OW  325   1.481   1.728   1.247 -0.1655 -0.4445  0.5919",
-    "  109SOL    HW1  326   1.396   1.723   1.205  0.8162  1.6705 -1.7794",
-    "  109SOL    HW2  327   1.462   1.727   1.341 -2.6390 -1.7162  0.1293",
-    "  110SOL     OW  328   1.138   0.825   0.006  0.3403 -0.2263  0.6843",
-    "  110SOL    HW1  329   1.188   0.906   0.011  2.4061 -1.3404 -1.0926",
-    "  110SOL    HW2  330   1.068   0.836   0.071  1.9808  1.9921  2.1470",
-    "  111SOL     OW  331   0.413   1.587   1.126 -0.4510 -0.1948  0.2874",
-    "  111SOL    HW1  332   0.451   1.503   1.103  0.8830  0.2222  0.9179",
-    "  111SOL    HW2  333   0.357   1.569   1.201 -1.2876 -0.7672 -0.4700",
-    "  112SOL     OW  334   0.578   0.590   1.601 -0.2121  0.4248  0.2637",
-    "  112SOL    HW1  335   0.575   0.494   1.609  0.4014  0.1196 -2.8748",
-    "  112SOL    HW2  336   0.523   0.621   1.673  1.0861 -2.2013  2.4997",
-    "  113SOL     OW  337   0.002   0.779   1.615  0.7813 -0.7307 -0.2776",
-    "  113SOL    HW1  338   0.016   0.699   1.667  3.4450 -0.3780 -0.3442",
-    "  113SOL    HW2  339  -0.021   0.846   1.679  0.6986 -1.0630  0.0413",
-    "  114SOL     OW  340   0.992   0.139   1.797  0.3564 -0.2052  0.2572",
-    "  114SOL    HW1  341   1.059   0.117   1.732 -0.1788 -0.0542 -0.3569",
-    "  114SOL    HW2  342   0.944   0.212   1.759  0.9191  0.7955  1.4597",
-    "  115SOL     OW  343   0.241   0.160   1.602  0.4831 -0.1816 -0.7919",
-    "  115SOL    HW1  344   0.156   0.128   1.634  0.3119  0.6631 -0.3942",
-    "  115SOL    HW2  345   0.267   0.096   1.536 -1.5273  0.7510 -2.5467",
-    "  116SOL     OW  346   0.586   0.808   1.228  0.2997 -0.4046 -0.1919",
-    "  116SOL    HW1  347   0.602   0.794   1.321 -0.7320  0.6096  0.1501",
-    "  116SOL    HW2  348   0.589   0.720   1.190 -0.6107 -0.9722  1.0146",
-    "  117SOL     OW  349   1.289   1.008   0.944 -0.3185 -0.4256  0.0058",
-    "  117SOL    HW1  350   1.228   0.995   1.016  1.2257 -0.3232  1.3683",
-    "  117SOL    HW2  351   1.348   0.933   0.949 -0.2008 -0.4172 -1.1646",
-    "  118SOL     OW  352   1.187   0.580   0.165  0.3280 -0.3664  0.3273",
-    "  118SOL    HW1  353   1.275   0.613   0.184  0.3810 -0.8104  0.8781",
-    "  118SOL    HW2  354   1.150   0.643   0.104  0.4595  0.6771  1.3106",
-    "  119SOL     OW  355   0.128   0.363   1.323 -0.0700  0.0085 -0.1949",
-    "  119SOL    HW1  356   0.163   0.288   1.275  0.8070  0.0786  0.3254",
-    "  119SOL    HW2  357   0.200   0.392   1.379 -1.1518 -0.2325  1.3565",
-    "  120SOL     OW  358   0.061   1.186   1.158  0.4563  0.0669  0.1443",
-    "  120SOL    HW1  359   0.104   1.123   1.216  1.6294 -0.5795 -1.3865",
-    "  120SOL    HW2  360  -0.028   1.154   1.150  0.8566 -1.0241 -0.0685",
-    "  121SOL     OW  361   0.280   0.690   1.377  0.0612 -0.5249 -0.4113",
-    "  121SOL    HW1  362   0.248   0.623   1.436  2.7647 -0.7044  0.9387",
-    "  121SOL    HW2  363   0.354   0.649   1.331  1.8039  1.5013  0.5020",
-    "  122SOL     OW  364   1.833   0.972   1.801 -0.2131 -0.4145  0.3714",
-    "  122SOL    HW1  365   1.749   0.997   1.840 -1.2497  0.3115 -2.2315",
-    "  122SOL    HW2  366   1.892   1.044   1.823 -0.9338  0.2591  0.1444",
-    "  123SOL     OW  367   0.141   1.603   0.414  0.3883  0.0585  0.0978",
-    "  123SOL    HW1  368   0.133   1.634   0.323  0.8960 -0.8732 -0.2699",
-    "  123SOL    HW2  369   0.051   1.606   0.448 -0.0498 -1.0693 -0.9321",
-    "  124SOL     OW  370   1.560   0.559   0.427 -0.0216  0.5022 -0.4211",
-    "  124SOL    HW1  371   1.601   0.486   0.380 -2.0502 -0.9402 -0.0325",
-    "  124SOL    HW2  372   1.511   0.517   0.498 -1.5476  2.2157 -0.4319",
-    "  125SOL     OW  373   0.996   0.813   0.704 -0.1978  0.1388 -0.1498",
-    "  125SOL    HW1  374   1.063   0.744   0.703  0.3067  0.6290 -1.7186",
-    "  125SOL    HW2  375   0.913   0.766   0.693  0.0989 -0.2822 -0.6183",
-    "  126SOL     OW  376   0.868   1.729   1.730  0.0281  0.1797 -0.7823",
-    "  126SOL    HW1  377   0.942   1.789   1.717 -1.1948  1.9851  0.3784",
-    "  126SOL    HW2  378   0.842   1.741   1.821 -0.0835 -2.3569 -0.4305",
-    "  127SOL     OW  379   1.789   1.270   1.671 -0.4728  0.2798  0.3146",
-    "  127SOL    HW1  380   1.723   1.273   1.741 -1.8178  2.0205 -0.9753",
-    "  127SOL    HW2  381   1.770   1.190   1.624  0.7075 -1.1325  2.1509",
-    "  128SOL     OW  382   0.429   1.108   1.723  0.1544 -0.3079  0.1986",
-    "  128SOL    HW1  383   0.516   1.097   1.684 -0.4514  0.4598 -1.4119",
-    "  128SOL    HW2  384   0.368   1.089   1.651 -0.9869  0.7867  0.8568",
-    "  129SOL     OW  385   1.645   0.313   0.302 -0.6779 -0.2001 -0.2455",
-    "  129SOL    HW1  386   1.704   0.328   0.228 -1.1186 -0.2033 -0.5945",
-    "  129SOL    HW2  387   1.596   0.235   0.279 -0.5821 -0.3981  0.2017",
-    "  130SOL     OW  388   0.911   0.913   1.641 -0.9318  0.4624 -0.7830",
-    "  130SOL    HW1  389   0.949   0.979   1.583 -2.1402  1.7456 -0.1606",
-    "  130SOL    HW2  390   0.986   0.867   1.678 -0.0066  2.4026 -0.1816",
-    "  131SOL     OW  391   1.058   1.317   0.952 -0.8086 -0.0363 -0.2081",
-    "  131SOL    HW1  392   1.003   1.272   0.889 -1.2713  0.1838  0.0344",
-    "  131SOL    HW2  393   1.144   1.321   0.910 -1.2565  0.6379 -1.0784",
-    "  132SOL     OW  394   0.511   1.081   0.739 -1.0025 -0.0666  0.1815",
-    "  132SOL    HW1  395   0.447   1.108   0.805 -2.4376 -1.3233 -0.6516",
-    "  132SOL    HW2  396   0.568   1.019   0.785 -0.2783  1.1289  0.9507",
-    "  133SOL     OW  397   0.285   0.503   0.910 -0.4210  0.2898 -0.2476",
-    "  133SOL    HW1  398   0.233   0.459   0.843  1.5523 -0.2180 -1.5119",
-    "  133SOL    HW2  399   0.298   0.591   0.877 -0.0853  0.2705 -0.1709",
-    "  134SOL     OW  400   0.674   0.539   0.187 -0.1741  0.3018  0.4115",
-    "  134SOL    HW1  401   0.623   0.512   0.263  0.5879 -1.0290  0.4599",
-    "  134SOL    HW2  402   0.764   0.515   0.208  0.3944  2.0605  0.0540",
-    "  135SOL     OW  403   1.260   0.591   1.441 -0.0711 -0.3111  0.1552",
-    "  135SOL    HW1  404   1.173   0.593   1.479 -0.1192 -1.3540  0.1238",
-    "  135SOL    HW2  405   1.286   0.683   1.435 -1.8560  0.1173 -1.4502",
-    "  136SOL     OW  406   1.148   0.087   1.574 -0.9736 -0.3746  0.3638",
-    "  136SOL    HW1  407   1.181   0.176   1.561  1.7731 -1.2568  1.0305",
-    "  136SOL    HW2  408   1.138   0.052   1.485  2.9650 -1.1229  0.1136",
-    "  137SOL     OW  409   0.210   1.415   0.061 -0.2491 -0.4412  0.2942",
-    "  137SOL    HW1  410   0.289   1.413   0.116 -0.5031 -0.3641  0.6618",
-    "  137SOL    HW2  411   0.243   1.432  -0.027  0.0174  1.4375  0.7313",
-    "  138SOL     OW  412   0.105   0.047   0.820  0.3959  0.2991  0.0300",
-    "  138SOL    HW1  413   0.094   0.131   0.776 -0.9519 -0.6603 -1.5166",
-    "  138SOL    HW2  414   0.190   0.015   0.790  0.8202  1.0145  0.4649",
-    "  139SOL     OW  415   0.575   1.728   0.881 -0.3117  0.1583  0.4072",
-    "  139SOL    HW1  416   0.542   1.639   0.896 -0.8514  0.5344  1.5039",
-    "  139SOL    HW2  417   0.629   1.721   0.802  1.4058 -1.5886  1.7098",
-    "  140SOL     OW  418   0.964   0.679   1.295  0.2869 -0.2653  0.7807",
-    "  140SOL    HW1  419   0.968   0.634   1.380 -0.0459 -0.5819  0.6255",
-    "  140SOL    HW2  420   0.908   0.624   1.241  1.1585 -0.4952  0.0927",
-    "  141SOL     OW  421   0.038   0.532   1.056  0.4558  0.0500 -0.1209",
-    "  141SOL    HW1  422   0.032   0.488   1.141  1.5562  1.7609  0.8655",
-    "  141SOL    HW2  423   0.123   0.504   1.021  0.3521 -0.0328 -0.3071",
-    "  142SOL     OW  424   0.421   0.753   0.165 -0.0407 -0.2100  0.1967",
-    "  142SOL    HW1  425   0.436   0.844   0.141 -0.5029 -0.0369  0.5633",
-    "  142SOL    HW2  426   0.509   0.717   0.178  0.1348  0.2213  0.2070",
-    "  143SOL     OW  427   1.324   0.904   1.624  1.0762 -0.8165  0.4165",
-    "  143SOL    HW1  428   1.329   0.928   1.716 -1.5403 -0.4747  0.5047",
-    "  143SOL    HW2  429   1.236   0.931   1.596  2.4504  0.6983 -2.6520",
-    "  144SOL     OW  430   0.732   0.704   0.718  0.0771  0.4227  0.0065",
-    "  144SOL    HW1  431   0.709   0.614   0.743  0.0107  0.8290  1.4635",
-    "  144SOL    HW2  432   0.700   0.757   0.790  0.6118  1.5690 -0.5968",
-    "  145SOL     OW  433   1.583   0.679   1.262 -0.3123  0.9622 -0.3549",
-    "  145SOL    HW1  434   1.557   0.609   1.201 -1.5669  1.4574 -0.3935",
-    "  145SOL    HW2  435   1.652   0.639   1.315  0.4282  0.3518 -1.7523",
-    "  146SOL     OW  436   0.528   1.467   1.839  0.3102  0.4490 -0.4735",
-    "  146SOL    HW1  437   0.579   1.460   1.758 -0.3168 -0.4040 -0.8050",
-    "  146SOL    HW2  438   0.442   1.434   1.816  0.4957 -1.0398  0.8606",
-    "  147SOL     OW  439   0.840   0.459   1.175 -0.0390 -0.2074  0.0596",
-    "  147SOL    HW1  440   0.892   0.425   1.247  1.2875  1.0698 -0.2676",
-    "  147SOL    HW2  441   0.758   0.410   1.179  0.2575 -0.5741  2.0556",
-    "  148SOL     OW  442   0.898   1.762   1.289 -0.0258 -0.3272  0.3500",
-    "  148SOL    HW1  443   0.833   1.708   1.245  0.5574 -0.8435  0.1070",
-    "  148SOL    HW2  444   0.851   1.801   1.363 -0.6747 -0.4782  0.0182",
-    "  149SOL     OW  445   0.240   0.537   0.438  0.0973 -0.0193  0.0246",
-    "  149SOL    HW1  446   0.236   0.629   0.414 -0.0976  0.8547  3.1703",
-    "  149SOL    HW2  447   0.156   0.520   0.481  0.2380 -1.5922 -0.2902",
-    "  150SOL     OW  448   0.167   1.257   1.465 -0.0175 -0.1640 -0.2819",
-    "  150SOL    HW1  449   0.226   1.189   1.433  1.2020  1.3149 -1.2321",
-    "  150SOL    HW2  450   0.091   1.209   1.499  2.0974 -2.1736  1.8520",
-    "  151SOL     OW  451   1.448   0.931   1.184  0.1071  0.1399  0.1917",
-    "  151SOL    HW1  452   1.365   0.938   1.232  0.5540  0.1868  0.9605",
-    "  151SOL    HW2  453   1.495   0.860   1.227  0.2740 -0.1986 -0.5408",
-    "  152SOL     OW  454   1.046   0.926   0.250 -0.6933 -0.1237  0.2538",
-    "  152SOL    HW1  455   1.016   1.015   0.233 -1.1037 -0.7282 -2.3918",
-    "  152SOL    HW2  456   0.981   0.891   0.312 -2.0415  0.5621 -0.7431",
-    "  153SOL     OW  457   1.697   1.681   1.059 -0.2543 -0.7362  0.1995",
-    "  153SOL    HW1  458   1.786   1.691   1.095 -0.3965  0.4371  0.2585",
-    "  153SOL    HW2  459   1.641   1.677   1.137 -0.3755 -0.0992  0.1528",
-    "  154SOL     OW  460   1.264   1.681   1.111  0.1793 -0.5189 -0.2497",
-    "  154SOL    HW1  461   1.261   1.758   1.053  1.7480  0.1655  0.5563",
-    "  154SOL    HW2  462   1.309   1.615   1.059 -1.8673 -1.1698 -1.2370",
-    "  155SOL     OW  463   0.199   1.529   0.946  0.1219 -0.3495 -0.5337",
-    "  155SOL    HW1  464   0.223   1.579   1.024  2.0497 -0.7833 -0.8147",
-    "  155SOL    HW2  465   0.189   1.595   0.877  0.7406 -0.1690 -0.4524",
-    "  156SOL     OW  466   0.413   1.850   0.088  0.6024 -0.0153  0.0548",
-    "  156SOL    HW1  467   0.320   1.848   0.112  0.7607 -0.7892  0.5918",
-    "  156SOL    HW2  468   0.418   1.798   0.008  0.7989 -1.1020  0.7781",
-    "  157SOL     OW  469   0.748   1.654   0.109  0.0532 -0.2063 -0.2413",
-    "  157SOL    HW1  470   0.692   1.593   0.061 -1.6524  1.2952 -0.2546",
-    "  157SOL    HW2  471   0.687   1.715   0.150  1.6694  1.1019  0.2907",
-    "  158SOL     OW  472   1.458   0.115   0.761  0.6646  0.0012 -0.3672",
-    "  158SOL    HW1  473   1.436   0.025   0.739 -0.2017  0.1036  0.0692",
-    "  158SOL    HW2  474   1.548   0.110   0.793  0.2372 -0.8712  0.7125",
-    "  159SOL     OW  475   1.338   1.663   0.337  0.0918  0.0030 -0.3212",
-    "  159SOL    HW1  476   1.244   1.654   0.324  0.3347  1.1393 -3.3671",
-    "  159SOL    HW2  477   1.377   1.616   0.263  1.9313 -0.7064  1.0542",
-    "  160SOL     OW  478   0.088   0.231   0.153 -0.1407  0.1993  0.6057",
-    "  160SOL    HW1  479   0.016   0.278   0.110 -1.1478  0.7008  2.8087",
-    "  160SOL    HW2  480   0.044   0.168   0.210  1.1963 -1.5358 -0.2335",
-    "  161SOL     OW  481   1.283   0.951   0.550  0.0367 -0.4990 -0.2473",
-    "  161SOL    HW1  482   1.362   0.897   0.559 -0.6926 -1.7377 -1.1492",
-    "  161SOL    HW2  483   1.214   0.888   0.528 -1.0495  0.6751 -0.2095",
-    "  162SOL     OW  484   0.885   1.501   1.606  0.3989 -0.2065 -0.0986",
-    "  162SOL    HW1  485   0.812   1.459   1.652  0.5494  0.0827  0.4159",
-    "  162SOL    HW2  486   0.879   1.593   1.632  0.6767 -0.1003 -0.4140",
-    "  163SOL     OW  487   0.807   1.803   0.428  0.5850  0.0805  0.0023",
-    "  163SOL    HW1  488   0.762   1.842   0.353 -0.3587 -0.2961  0.3542",
-    "  163SOL    HW2  489   0.895   1.783   0.396  0.0905 -0.3758 -1.1018",
-    "  164SOL     OW  490   1.804   1.664   1.361  0.4053 -0.6471  0.0447",
-    "  164SOL    HW1  491   1.744   1.596   1.392  0.2468  0.3319  2.0102",
-    "  164SOL    HW2  492   1.797   1.733   1.427  0.4871  1.3243 -1.9667",
-    "  165SOL     OW  493   0.013   0.096   1.087 -0.1594 -0.2881 -0.0326",
-    "  165SOL    HW1  494   0.082   0.103   1.154 -1.3044  2.4442  0.9139",
-    "  165SOL    HW2  495   0.061   0.086   1.005  1.2950 -2.1038  0.9922",
-    "  166SOL     OW  496   0.056   0.190   0.535 -0.8500 -0.0155 -0.2255",
-    "  166SOL    HW1  497  -0.034   0.159   0.535 -1.0624  0.5389  1.8354",
-    "  166SOL    HW2  498   0.058   0.259   0.469 -2.2319  0.8203  0.5893",
-    "  167SOL     OW  499   1.309   1.603   0.061 -0.1846  0.2039 -0.0659",
-    "  167SOL    HW1  500   1.221   1.598   0.023 -0.0875 -1.2432 -0.1217",
-    "  167SOL    HW2  501   1.352   1.673   0.013 -1.4978  1.3326  0.3530",
-    "  168SOL     OW  502   1.001   1.275   1.418  0.1961  0.2455 -0.5259",
-    "  168SOL    HW1  503   0.975   1.323   1.340 -0.7940  0.1687 -0.2492",
-    "  168SOL    HW2  504   0.991   1.338   1.490 -0.2898 -0.1090 -0.2771",
-    "  169SOL     OW  505   0.869   1.045   0.628  0.0408 -0.0640  0.0010",
-    "  169SOL    HW1  506   0.849   1.047   0.534 -0.4359  1.2988  0.1199",
-    "  169SOL    HW2  507   0.928   0.971   0.638  0.1610 -0.1753 -1.3973",
-    "  170SOL     OW  508   1.581   1.502   0.042  0.3486  0.5272 -0.6055",
-    "  170SOL    HW1  509   1.536   1.586   0.051 -1.4792 -0.6154  1.4154",
-    "  170SOL    HW2  510   1.669   1.518   0.078 -0.3017  1.3279  0.6445",
-    "  171SOL     OW  511   0.163   1.528   1.312  0.0348  0.3933  0.2362",
-    "  171SOL    HW1  512   0.147   1.436   1.331  1.0306 -0.3305 -2.3119",
-    "  171SOL    HW2  513   0.078   1.570   1.325 -0.7793 -1.1381 -0.0225",
-    "  172SOL     OW  514   1.732   1.393   1.356  0.1865 -0.2101  0.3886",
-    "  172SOL    HW1  515   1.708   1.363   1.443 -1.7684 -1.3902 -0.5414",
-    "  172SOL    HW2  516   1.774   1.318   1.315 -0.9957 -0.4001 -0.4945",
-    "  173SOL     OW  517   1.219   1.169   0.712  0.7108  0.0799  0.3876",
-    "  173SOL    HW1  518   1.239   1.106   0.781 -0.5986  0.3617  1.0436",
-    "  173SOL    HW2  519   1.248   1.127   0.631 -0.0776 -1.3392  0.8280",
-    "  174SOL     OW  520   0.916   1.795   0.997 -0.3173  0.5315 -0.6086",
-    "  174SOL    HW1  521   0.927   1.762   1.087 -1.4594  1.0705 -0.2562",
-    "  174SOL    HW2  522   0.870   1.724   0.951  0.2503  0.2632 -0.7627",
-    "  175SOL     OW  523   0.692   1.417   0.534 -0.4818  0.1942  0.1468",
-    "  175SOL    HW1  524   0.775   1.399   0.489 -0.5134 -0.7626  0.4633",
-    "  175SOL    HW2  525   0.626   1.372   0.482 -0.3647 -1.9769  1.8356",
-    "  176SOL     OW  526   1.596   0.304   1.445  0.3175 -0.3135 -0.3898",
-    "  176SOL    HW1  527   1.601   0.229   1.386 -0.2043  0.2695 -1.1878",
-    "  176SOL    HW2  528   1.664   0.364   1.414 -0.5382  0.3797 -0.9635",
-    "  177SOL     OW  529   0.110   1.254   0.395  0.8718  0.0832 -0.2134",
-    "  177SOL    HW1  530   0.064   1.171   0.384  1.1078  0.0548 -0.9772",
-    "  177SOL    HW2  531   0.119   1.263   0.490 -2.4736  1.0684  0.0644",
-    "  178SOL     OW  532   0.366   0.651   1.780 -0.3176 -0.4077  0.2699",
-    "  178SOL    HW1  533   0.375   0.705   1.858  0.3938 -0.8403  0.4906",
-    "  178SOL    HW2  534   0.371   0.561   1.813  0.6242 -0.5852 -0.3474",
-    "  179SOL     OW  535   0.709   0.281   1.425 -0.2923 -0.3998 -0.3144",
-    "  179SOL    HW1  536   0.703   0.185   1.419 -0.3200 -0.5026  1.1601",
-    "  179SOL    HW2  537   0.803   0.298   1.433 -0.3159 -0.3427 -0.1457",
-    "  180SOL     OW  538   1.778   0.392   0.025  0.1767  0.1091  0.2609",
-    "  180SOL    HW1  539   1.709   0.415  -0.038  0.7657  1.2727  0.0323",
-    "  180SOL    HW2  540   1.818   0.476   0.049  1.0650 -0.4929  0.9148",
-    "  181SOL     OW  541   1.573   0.890   1.471  0.1204  0.8595  0.4310",
-    "  181SOL    HW1  542   1.582   0.815   1.413  1.1199  1.7859 -0.6159",
-    "  181SOL    HW2  543   1.492   0.872   1.520 -0.5716 -0.0790 -1.0080",
-    "  182SOL     OW  544   1.797   0.031   0.294 -0.0270 -0.4136  0.4942",
-    "  182SOL    HW1  545   1.793  -0.063   0.279 -0.9247  0.1595 -3.2590",
-    "  182SOL    HW2  546   1.726   0.048   0.357 -0.0789 -2.1643  0.9253",
-    "  183SOL     OW  547   1.286   1.295   1.789 -0.1058 -0.0729  0.2014",
-    "  183SOL    HW1  548   1.312   1.386   1.777  2.5978 -0.4213  2.8308",
-    "  183SOL    HW2  549   1.349   1.245   1.737  0.7367 -0.6255  1.7384",
-    "  184SOL     OW  550   0.702   0.764   1.460  0.1077  0.2028  0.1007",
-    "  184SOL    HW1  551   0.657   0.684   1.486 -1.0328  1.1151  0.9885",
-    "  184SOL    HW2  552   0.735   0.800   1.543  0.7375  0.5908 -0.3136",
-    "  185SOL     OW  553   1.472   1.539   0.971  0.3685  0.0007 -0.1396",
-    "  185SOL    HW1  554   1.527   1.610   1.005  1.9000 -0.6298 -1.2404",
-    "  185SOL    HW2  555   1.526   1.461   0.980 -1.2975 -1.0340  1.0200",
-    "  186SOL     OW  556   0.796   0.342   1.743  0.0647  0.2087 -0.1905",
-    "  186SOL    HW1  557   0.707   0.346   1.708 -0.3481  0.2139  0.8310",
-    "  186SOL    HW2  558   0.785   0.316   1.835  1.1248  0.0596 -0.0939",
-    "  187SOL     OW  559   1.487   1.196   1.625  0.4477  0.5894  0.6552",
-    "  187SOL    HW1  560   1.548   1.170   1.694  2.1930  1.6754 -0.4105",
-    "  187SOL    HW2  561   1.492   1.124   1.561 -0.7804 -0.1724  1.3911",
-    "  188SOL     OW  562   0.315   1.419   1.668 -0.4269  0.4976  0.2966",
-    "  188SOL    HW1  563   0.356   1.333   1.667 -1.1730  0.0661  2.6060",
-    "  188SOL    HW2  564   0.233   1.407   1.620 -0.2799  0.0302  0.1602",
-    "  189SOL     OW  565   0.000   0.814   1.008 -0.2210  0.1754 -0.2464",
-    "  189SOL    HW1  566  -0.002   0.723   1.036  0.1164  0.1740 -0.2193",
-    "  189SOL    HW2  567  -0.041   0.862   1.081  3.2990  0.5086  1.6467",
-    "  190SOL     OW  568   1.032   0.288   0.415 -0.1519 -0.0754  0.3182",
-    "  190SOL    HW1  569   0.963   0.222   0.421 -0.1008 -0.1269  0.3370",
-    "  190SOL    HW2  570   1.089   0.257   0.345 -0.7622  0.5406 -0.4522",
-    "  191SOL     OW  571   0.701   0.456   0.847 -0.4419  0.4681 -0.1803",
-    "  191SOL    HW1  572   0.753   0.382   0.877  0.3932  0.7910 -0.8278",
-    "  191SOL    HW2  573   0.610   0.427   0.857 -0.2297  0.7292  3.0945",
-    "  192SOL     OW  574   1.627   0.171   1.737 -0.0843 -0.6683 -0.2299",
-    "  192SOL    HW1  575   1.648   0.209   1.652 -1.2194  0.7121  0.0805",
-    "  192SOL    HW2  576   1.644   0.241   1.800  0.3143 -1.5331  0.6388",
-    "  193SOL     OW  577   0.323   0.958   1.510  0.8214  0.2761  0.1865",
-    "  193SOL    HW1  578   0.400   0.939   1.457 -0.0335  0.5136 -1.1590",
-    "  193SOL    HW2  579   0.255   0.898   1.478  0.1442  0.7849  0.6396",
-    "  194SOL     OW  580   0.821   1.189   0.033  0.7230  0.2025  0.1811",
-    "  194SOL    HW1  581   0.815   1.128   0.107 -1.5800  0.9849  0.6960",
-    "  194SOL    HW2  582   0.784   1.270   0.067  0.5179  0.8440 -1.5475",
-    "  195SOL     OW  583   0.715   1.616   1.172  0.3272  0.1027  0.1359",
-    "  195SOL    HW1  584   0.756   1.581   1.093  1.3288 -0.8263  1.0564",
-    "  195SOL    HW2  585   0.623   1.628   1.149  0.5732 -0.3826 -1.0964",
-    "  196SOL     OW  586   1.505   1.805   1.833  0.0644 -0.5227 -0.2325",
-    "  196SOL    HW1  587   1.540   1.873   1.775 -0.6363 -0.8056 -0.9864",
-    "  196SOL    HW2  588   1.506   1.846   1.920  0.3753  0.1810 -0.5619",
-    "  197SOL     OW  589   0.838   0.896   1.211 -0.4776 -0.5819  0.4604",
-    "  197SOL    HW1  590   0.751   0.856   1.204 -0.7558  0.0597  0.2601",
-    "  197SOL    HW2  591   0.885   0.839   1.272 -1.7175  0.2815  2.2857",
-    "  198SOL     OW  592   1.331   1.018   0.010 -0.4672 -0.2101 -0.2947",
-    "  198SOL    HW1  593   1.334   0.992   0.102 -1.0490 -0.1719 -0.2637",
-    "  198SOL    HW2  594   1.328   1.113   0.011  1.4277 -0.1154 -0.4045",
-    "  199SOL     OW  595   1.740   1.770   0.797  0.2027  0.2325 -0.0524",
-    "  199SOL    HW1  596   1.736   1.738   0.887  2.6560 -0.4792 -0.1416",
-    "  199SOL    HW2  597   1.811   1.835   0.798 -0.3223  0.8364 -1.2781",
-    "  200SOL     OW  598   0.197   1.145   0.013  0.2240  0.8576  0.7433",
-    "  200SOL    HW1  599   0.278   1.144  -0.037  0.6253  0.5874  1.3956",
-    "  200SOL    HW2  600   0.177   1.238   0.025  0.3334  0.9227  0.4177",
-    "  201SOL     OW  601   0.122   1.292   0.675 -0.3671  0.2154 -0.0378",
-    "  201SOL    HW1  602   0.041   1.320   0.716 -0.5104 -0.4630  0.1516",
-    "  201SOL    HW2  603   0.186   1.359   0.698 -0.4702 -0.0923  1.1957",
-    "  202SOL     OW  604   0.657   1.362   1.581  0.1997 -0.5559 -0.0528",
-    "  202SOL    HW1  605   0.666   1.268   1.596  1.2042 -0.5582 -0.6486",
-    "  202SOL    HW2  606   0.667   1.373   1.486  0.4830  0.1893  0.0563",
-    "  203SOL     OW  607   1.674   0.094   1.271  0.0036 -0.0188  0.0723",
-    "  203SOL    HW1  608   1.766   0.107   1.246 -0.1186  1.3906  0.2757",
-    "  203SOL    HW2  609   1.645   0.018   1.221  0.9219  0.2964 -0.9485",
-    "  204SOL     OW  610   0.406   0.320   0.534 -0.3975  0.8945 -0.0319",
-    "  204SOL    HW1  611   0.332   0.379   0.519 -0.5592 -0.0524 -3.3378",
-    "  204SOL    HW2  612   0.378   0.237   0.494  0.8998 -0.6322  2.1519",
-    "  205SOL     OW  613   1.602   1.329   0.808 -0.0543 -0.2794  0.0018",
-    "  205SOL    HW1  614   1.539   1.298   0.873  0.0647  1.3093  0.8743",
-    "  205SOL    HW2  615   1.685   1.292   0.836 -0.3532 -1.3058 -0.4265",
-    "  206SOL     OW  616   0.504   0.525   1.274 -0.1373  0.6219  0.1464",
-    "  206SOL    HW1  617   0.581   0.508   1.329 -0.1329  1.8063  0.5251",
-    "  206SOL    HW2  618   0.504   0.454   1.210 -0.6928 -1.3916  2.2639",
-    "  207SOL     OW  619   0.939   1.622   0.615  0.0376  0.2169 -0.8057",
-    "  207SOL    HW1  620   0.864   1.660   0.569 -0.2825 -0.9206 -1.2431",
-    "  207SOL    HW2  621   0.946   1.533   0.580  0.4289 -0.3187  0.5869",
-    "  208SOL     OW  622   1.222   0.448   0.958  0.8093  0.1695  0.0716",
-    "  208SOL    HW1  623   1.230   0.403   0.874 -0.7606 -2.3903  1.2470",
-    "  208SOL    HW2  624   1.131   0.478   0.961  0.7570 -0.0912  1.0302",
-    "  209SOL     OW  625   1.162   0.079   1.002 -0.1201  0.0294 -0.0134",
-    "  209SOL    HW1  626   1.152   0.158   0.948 -1.6848 -0.0229  0.1683",
-    "  209SOL    HW2  627   1.090   0.022   0.974  1.8094 -1.9202 -1.1086",
-    "  210SOL     OW  628   0.951   1.274   0.372 -0.2479  0.5020 -0.2795",
-    "  210SOL    HW1  629   1.002   1.247   0.297 -0.3032 -0.8555  0.1568",
-    "  210SOL    HW2  630   1.015   1.296   0.439 -0.2177 -0.1231 -0.1009",
-    "  211SOL     OW  631   0.570   1.596   1.430 -0.0067 -0.0669  0.2383",
-    "  211SOL    HW1  632   0.637   1.550   1.379  0.2717 -0.1940  0.7151",
-    "  211SOL    HW2  633   0.518   1.527   1.471 -1.0547  0.0175 -0.9171",
-    "  212SOL     OW  634   1.490   0.038   0.235  0.3812 -0.5175  0.0030",
-    "  212SOL    HW1  635   1.467  -0.050   0.265  1.2784 -0.8382 -0.2278",
-    "  212SOL    HW2  636   1.472   0.095   0.309  0.9136 -1.0588  0.5495",
-    "  213SOL     OW  637   1.274   0.440   0.514  0.3406 -0.4876 -0.2221",
-    "  213SOL    HW1  638   1.201   0.390   0.477 -0.5303  0.5126  0.1369",
-    "  213SOL    HW2  639   1.247   0.531   0.509  1.3323 -0.1447  0.4304",
-    "  214SOL     OW  640   1.673   0.249   0.968  0.2535  0.0918  0.1841",
-    "  214SOL    HW1  641   1.723   0.211   1.040 -0.3275 -0.9696  0.0332",
-    "  214SOL    HW2  642   1.656   0.339   0.995  0.9016 -0.0077  0.9253",
-    "  215SOL     OW  643   1.625   1.226   0.027  0.6308 -0.1048  0.8494",
-    "  215SOL    HW1  644   1.594   1.313   0.049 -0.0604 -0.0212 -0.4190",
-    "  215SOL    HW2  645   1.593   1.170   0.098  1.5560  0.7563  1.9532",
-    "  216SOL     OW  646   1.002   1.711   0.243  0.1020 -0.6172  0.1515",
-    "  216SOL    HW1  647   0.926   1.677   0.196  0.3933 -1.2573  0.1242",
-    "  216SOL    HW2  648   0.988   1.805   0.248 -2.5080 -1.0870  3.3619",
-    "   1.86206   1.86206   1.86206",
-    ""
-  ]
-}
-