예제 #1
0
파일: ks.py 프로젝트: LIVVkit/evv4esm
def variable_set(name):
    var_sets = fn.read_json(os.path.join(os.path.dirname(__file__),
                                         'ks_vars.json'))
    try:
        the_set = var_sets[name.lower()]
        return set(the_set)
    except KeyError as e:
        six.raise_from(argparse.ArgumentTypeError(
                'Unknown variable set! Known sets are {}'.format(
                        var_sets.keys()
                )), e)
예제 #2
0
파일: ismip.py 프로젝트: LIVVkit/LIVVkit
def set_up():
    global setup
    setup = functions.read_json(os.path.join(os.path.dirname(__file__), 'ismip.json'))

    for exp, size in [('ismip-hom-a', '005'), ('ismip-hom-c', '005'), ('ismip-hom-f', '000')]:
        recreate_file = os.path.join(livvkit.__path__[0], setup[exp]["data_dir"],
                                     setup[exp]['pattern'][0].replace('???', size))
        setup[exp]['interp_points'] = \
            np.genfromtxt(recreate_file, delimiter=',', missing_values='nan',
                          usecols=(0,), unpack=True)
        if exp == 'ismip-hom-f':
            setup[exp]['interp_points'] = setup[exp]['interp_points']*100 - 50
예제 #3
0
def set_up():
    global setup
    setup = functions.read_json(os.path.join(os.path.dirname(__file__), 'ismip.json'))

    for exp, size in [('ismip-hom-a', '005'), ('ismip-hom-c', '005'), ('ismip-hom-f', '000')]:
        recreate_file = os.path.join(livvkit.__path__[0], setup[exp]["data_dir"],
                                     setup[exp]['pattern'][0].replace('???', size))
        setup[exp]['interp_points'] = \
            np.genfromtxt(recreate_file, delimiter=',', missing_values='nan',
                          usecols=(0), unpack=True)
        if exp == 'ismip-hom-f':
            setup[exp]['interp_points'] = setup[exp]['interp_points']*100 - 50
예제 #4
0
def test_fn_read_write_json(tmpdir):
    j_path = tmpdir.join('fn_read_write_json.json')
    truth = OrderedDict([("ismip-hom-a",
                          OrderedDict([("x", [0.0, 1.0]), ("y", [0.25, 0.25]),
                                       ("pattern", ["ExpA_Fig5_???.txt"]),
                                       ("xlabel", ["Normalized x"]),
                                       ("ylabel", ["Velocity (m/a)"]),
                                       ("data_dir", "data/numerics/ismip-hom")
                                       ]))])

    functions.write_json(truth, j_path.dirname, j_path.basename)
    test = functions.read_json(str(j_path))

    assert test == truth
예제 #5
0
파일: make_tex.py 프로젝트: LIVVkit/LIVVkit
def main():
    datadir = sys.argv[1]
    outdir = sys.argv[2]
    functions.mkdir_p(outdir)

    data_files = glob.glob(datadir + "/**/*.json", recursive=True)
    data_files = [datadir + '/verification/dome.json']
    # data_files = [datadir + '/index.json']

    for each in data_files:
        data = functions.read_json(each)
        tex = th.translate_page(data)
        outfile = os.path.join(outdir, os.path.basename(each).replace('json', 'tex'))
        with open(outfile, 'w') as f:
            f.write(tex)
예제 #6
0
def test_fn_read_write_json(tmpdir):
    j_path = tmpdir.join('fn_read_write_json.json')
    truth = OrderedDict([("ismip-hom-a", OrderedDict([
                                                      ("x", [0.0, 1.0]),
                                                      ("y", [0.25, 0.25]),
                                                      ("pattern", ["ExpA_Fig5_???.txt"]),
                                                      ("xlabel", ["Normalized x"]),
                                                      ("ylabel", ["Velocity (m/a)"]),
                                                      ("data_dir", "data/numerics/ismip-hom")
                                                      ]))])

    functions.write_json(truth, j_path.dirname, j_path.basename)
    test = functions.read_json(str(j_path))

    assert test == truth
예제 #7
0
def main():
    datadir = sys.argv[1]
    outdir = sys.argv[2]
    functions.mkdir_p(outdir)

    data_files = glob.glob(datadir + "/**/*.json", recursive=True)
    data_files = [datadir + '/verification/dome.json']
    # data_files = [datadir + '/index.json']

    for each in data_files:
        data = functions.read_json(each)
        tex = th.translate_page(data)
        outfile = os.path.join(outdir,
                               os.path.basename(each).replace('json', 'tex'))
        with open(outfile, 'w') as f:
            f.write(tex)
예제 #8
0
def write_tex():
    """
    Finds all of the output data files, and writes them out to .tex
    """
    datadir = livvkit.index_dir
    outdir = os.path.join(datadir, "tex")
    print(outdir)
    # functions.mkdir_p(outdir)

    data_files = glob.glob(datadir + "/**/*.json", recursive=True)

    for each in data_files:
        data = functions.read_json(each)
        tex = translate_page(data)
        outfile = os.path.join(outdir, os.path.basename(each).replace('json', 'tex'))
        with open(outfile, 'w') as f:
            f.write(tex)
예제 #9
0
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

from __future__ import absolute_import, division, print_function, unicode_literals

import os
import sys
import glob

from livvkit.util import TexHelper as th
from livvkit.util import functions

datadir = sys.argv[1]
outdir = sys.argv[2]
functions.mkdir_p(outdir)

data_files = glob.glob(datadir + "/**/*.json", recursive=True)
data_files = [datadir + '/verification/dome.json']
# data_files = [datadir + '/index.json']

for each in data_files:
    data = functions.read_json(each)
    tex = th.translate_page(data)
    outfile = os.path.join(outdir,
                           os.path.basename(each).replace('json', 'tex'))
    with open(outfile, 'w') as f:
        f.write(tex)
예제 #10
0
def main(cl_args=None):
    """ Direct execution. """

    if cl_args is None and len(sys.argv) > 1:
        cl_args = sys.argv[1:]
    args = parse_args(cl_args)

    print("--------------------------------------------------------------------")
    print("                   ______  __      __ __      __                    ")
    print("                  |  ____| \ \    / / \ \    / /                    ")
    print("                  | |__     \ \  / /   \ \  / /                     ")
    print("                  |  __|     \ \/ /     \ \/ /                      ")
    print("                  | |____     \  /       \  /                       ")
    print("                  |______|     \/         \/                        ")
    print("                                                                    ")
    print("    Extended Verification and Validation for Earth System Models    ")
    print("--------------------------------------------------------------------")
    print("")
    print("  Current run: " + livvkit.timestamp)
    print("  User: "******"  OS Type: " + livvkit.os_type)
    print("  Machine: " + livvkit.machine)
    print("  " + livvkit.comment)

    from livvkit.components import validation
    from livvkit import scheduler
    from livvkit.util import functions
    from livvkit.util import elements

    if args.extensions:
        functions.setup_output(jsd=os.path.join(args.livv_resource_dir, 'js'))
    
        summary_elements = []
        validation_config = {}
        print(" -----------------------------------------------------------------")
        print("   Beginning extensions test suite ")
        print(" -----------------------------------------------------------------")
        print("")
        for conf in livvkit.validation_model_configs:
            validation_config = functions.merge_dicts(validation_config,
                                                      functions.read_json(conf))
        summary_elements.extend(scheduler.run_quiet(validation, validation_config,
                                                    group=False))
        print(" -----------------------------------------------------------------")
        print("   Extensions test suite complete ")
        print(" -----------------------------------------------------------------")
        print("")

        result = elements.page("Summary", "", element_list=summary_elements)
        functions.write_json(result, livvkit.output_dir, "index.json")
        print("-------------------------------------------------------------------")
        print(" Done!  Results can be seen in a web browser at:")
        print("   " + os.path.join(livvkit.output_dir, 'index.html'))
        print("-------------------------------------------------------------------")

    if args.serve:
        try:
            # Python 3
            import http.server as server
            import socketserver as socket
        except ImportError:
            # Python 2
            # noinspection PyPep8Naming
            import SimpleHTTPServer as server
            # noinspection PyPep8Naming
            import SocketServer as socket

        httpd = socket.TCPServer(('', args.serve), server.SimpleHTTPRequestHandler)

        sa = httpd.socket.getsockname()
        print('\nServing HTTP on {host} port {port} (http://{host}:{port}/)'.format(host=sa[0], port=sa[1]))
        print('\nView the generated website by navigating to:')
        print('\n    http://{host}:{port}/{path}/index.html'.format(host=sa[0], port=sa[1],
                                                                    path=os.path.relpath(args.out_dir)
                                                                    ))
        print('\nExit by pressing `ctrl+c` to send a keyboard interrupt.\n')
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print('\nKeyboard interrupt received, exiting.\n')
            sys.exit(0)
예제 #11
0
파일: __main__.py 프로젝트: LIVVkit/LIVVkit
def main(cl_args=None):
    """ Direct execution. """

    if cl_args is None and len(sys.argv) > 1:
        cl_args = sys.argv[1:]
    args = options.parse_args(cl_args)

    print("-------------------------------------------------------------------")
    print("                      __   _____   ___   ____    _ __     ")
    print("                     / /  /  _/ | / / | / / /__ (_) /_    ")
    print("                    / /___/ / | |/ /| |/ /  '_// / __/    ")
    print("                   /____/___/ |___/ |___/_/\_\/_/\__/     ")
    print("")
    print("                   Land Ice Verification & Validation     ")
    print("-------------------------------------------------------------------")
    print("")
    print("  Current run: " + livvkit.timestamp)
    print("  User: "******"  OS Type: " + livvkit.os_type)
    print("  Machine: " + livvkit.machine)
    print("  " + livvkit.comment)

    from livvkit.components import numerics
    from livvkit.components import verification
    from livvkit.components import performance
    from livvkit.components import validation
    from livvkit import scheduler
    from livvkit.util import functions
    from livvkit.util import elements

    summary_elements = []

    if livvkit.verify or livvkit.validate:
        functions.setup_output()

    if livvkit.verify:
        summary_elements.append(scheduler.run("numerics", numerics,
                                              functions.read_json(livvkit.numerics_model_config)))
        summary_elements.append(scheduler.run("verification", verification,
                                              functions.read_json(livvkit.verification_model_config)))
        summary_elements.append(scheduler.run("performance", performance,
                                              functions.read_json(livvkit.performance_model_config)))
    if livvkit.validate:
        print(" -----------------------------------------------------------------")
        print("   Beginning the validation test suite ")
        print(" -----------------------------------------------------------------")
        print("")
        validation_config = {}
        for conf in livvkit.validation_model_configs:
            validation_config = functions.merge_dicts(validation_config,
                                                      functions.read_json(conf))
        summary_elements.extend(scheduler.run_quiet(validation, validation_config,
                                                    group=False))
        print(" -----------------------------------------------------------------")
        print("   Validation test suite complete ")
        print(" -----------------------------------------------------------------")
        print("")

    if livvkit.verify or livvkit.validate:
        result = elements.page("Summary", "", element_list=summary_elements)
        functions.write_json(result, livvkit.output_dir, "index.json")
        print("-------------------------------------------------------------------")
        print(" Done!  Results can be seen in a web browser at:")
        print("  " + os.path.join(livvkit.output_dir, 'index.html'))
        print("-------------------------------------------------------------------")

    if args.serve:
        try:
            # Python 3
            import http.server as server
            import socketserver as socket
        except ImportError:
            # Python 2
            # noinspection PyPep8Naming
            import SimpleHTTPServer as server
            # noinspection PyPep8Naming
            import SocketServer as socket

        httpd = socket.TCPServer(('', args.serve), server.SimpleHTTPRequestHandler)

        sa = httpd.socket.getsockname()
        print('\nServing HTTP on {host} port {port} (http://{host}:{port}/)'.format(host=sa[0], port=sa[1]))
        print('\nView the generated website by navigating to:')
        print('\n    http://{host}:{port}/{path}/index.html'.format(host=sa[0], port=sa[1],
                                                                    path=os.path.relpath(livvkit.output_dir)
                                                                    ))
        print('\nExit by pressing `ctrl+c` to send a keyboard interrupt.\n')
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print('\nKeyboard interrupt received, exiting.\n')
            sys.exit(0)
예제 #12
0
def main(cl_args=None):
    """ Direct execution. """

    if cl_args is None and len(sys.argv) > 1:
        cl_args = sys.argv[1:]
    args = options.parse_args(cl_args)

    print(
        "-------------------------------------------------------------------")
    print("                      __   _____   ___   ____    _ __     ")
    print("                     / /  /  _/ | / / | / / /__ (_) /_    ")
    print("                    / /___/ / | |/ /| |/ /  '_// / __/    ")
    print("                   /____/___/ |___/ |___/_/\_\/_/\__/     ")
    print("")
    print("                   Land Ice Verification & Validation     ")
    print(
        "-------------------------------------------------------------------")
    print("")
    print("  Current run: " + livvkit.timestamp)
    print("  User: "******"  OS Type: " + livvkit.os_type)
    print("  Machine: " + livvkit.machine)
    print("  " + livvkit.comment)

    from livvkit.components import numerics
    from livvkit.components import verification
    from livvkit.components import performance
    from livvkit.components import validation
    from livvkit import scheduler
    from livvkit.util import functions
    from livvkit.util import elements

    summary_elements = []

    if livvkit.verify or livvkit.validate:
        functions.setup_output()

    if livvkit.verify:
        summary_elements.append(
            scheduler.run("numerics", numerics,
                          functions.read_json(livvkit.numerics_model_config)))
        summary_elements.append(
            scheduler.run(
                "verification", verification,
                functions.read_json(livvkit.verification_model_config)))
        summary_elements.append(
            scheduler.run(
                "performance", performance,
                functions.read_json(livvkit.performance_model_config)))
    if livvkit.validate:
        print(
            " -----------------------------------------------------------------"
        )
        print("   Beginning the validation test suite ")
        print(
            " -----------------------------------------------------------------"
        )
        print("")
        validation_config = {}
        for conf in livvkit.validation_model_configs:
            validation_config = functions.merge_dicts(
                validation_config, functions.read_json(conf))
        summary_elements.extend(
            scheduler.run_quiet(validation, validation_config, group=False))
        print(
            " -----------------------------------------------------------------"
        )
        print("   Validation test suite complete ")
        print(
            " -----------------------------------------------------------------"
        )
        print("")

    if livvkit.verify or livvkit.validate:
        result = elements.page("Summary", "", element_list=summary_elements)
        functions.write_json(result, livvkit.output_dir, "index.json")
        print(
            "-------------------------------------------------------------------"
        )
        print(" Done!  Results can be seen in a web browser at:")
        print("  " + os.path.join(livvkit.output_dir, 'index.html'))
        print(
            "-------------------------------------------------------------------"
        )

    if args.serve:
        try:
            # Python 3
            import http.server as server
            import socketserver as socket
        except ImportError:
            # Python 2
            # noinspection PyPep8Naming
            import SimpleHTTPServer as server
            # noinspection PyPep8Naming
            import SocketServer as socket

        httpd = socket.TCPServer(('', args.serve),
                                 server.SimpleHTTPRequestHandler)

        sa = httpd.socket.getsockname()
        print('\nServing HTTP on {host} port {port} (http://{host}:{port}/)'.
              format(host=sa[0], port=sa[1]))
        print('\nView the generated website by navigating to:')
        print('\n    http://{host}:{port}/{path}/index.html'.format(
            host=sa[0], port=sa[1], path=os.path.relpath(livvkit.output_dir)))
        print('\nExit by pressing `ctrl+c` to send a keyboard interrupt.\n')
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print('\nKeyboard interrupt received, exiting.\n')
            sys.exit(0)