From d237447e3ca68977bc256621360581d5f3e5ab8e Mon Sep 17 00:00:00 2001 From: thopri <thopri@144-148.noc.soton.ac.uk> Date: Tue, 3 Mar 2020 13:55:50 +0000 Subject: [PATCH] updated conda yml file that builds working env --- README_markdown.md | 104 ----------------------- environment_pynemo.yml | 181 ----------------------------------------- pynemo_37.yml | 16 ++++ pynemo_stats | Bin 0 -> 51141 bytes 4 files changed, 16 insertions(+), 285 deletions(-) delete mode 100644 README_markdown.md delete mode 100644 environment_pynemo.yml create mode 100644 pynemo_37.yml create mode 100644 pynemo_stats diff --git a/README_markdown.md b/README_markdown.md deleted file mode 100644 index 3ad308b..0000000 --- a/README_markdown.md +++ /dev/null @@ -1,104 +0,0 @@ -# PyNEMO - -To be udated soon. This work springboards from the [PyNEMO](http://pynemo.readthedocs.io/en/latest/index.html) Project. - -## What is this repository for? ## - -## How do I get set up? ## - -Steps to take to install PyNEMO, creating a specific conda virtual environment is highly recommended. [click here for more about virtual enviroments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) - -- Install Conda, either Anaconda or Miniconda (outside of this readme) -- Create conda environment for PyNEMO -``` -$ cd to/PyNEMO/directory -``` -``` -$ conda env create -f environment_pynemo.yml -``` -- Activate the new virtual environment -``` -$ source activate pynemo_env -``` -- Install Jave JRE (outside this readme) and link libjvm.dylib to LD_LIBRARY_PATH variable -``` -$ export LD_LIBRARY_PATH=/path/to/java/library/folder/containing/libjvm.dylib:$LD_LIBARY_PATH # see notes below -``` -- Install Git (outside this readme) -``` -$ git clone https://github.com/NOC-MSM/PyNEMO.git -``` -- Install PyNEMO: -``` -$ cd /location/of/pynemo/repo -``` -``` -$ python setup.py build -``` -``` -$ python setup.py install -``` - -This should result in PyNEMO being installed in the virtual environment, and can be checked by entering: -``` -$ pynemo -v -``` - -Resulting in a help usage prompt: -``` -$ usage: pynemo -g -s <namelist.bdy> -``` - -The virtual environment can be deactivated to return you to the normal prompt by typing: -``` -$ conda deactivate -``` - -To reactivate, the following needs to be typed -``` -$ source activate pynemo_env -``` - -To use PyNEMO, the following command is entered: (the example will run an benchmarking test) -``` -$ pynemo -s /path/to/namelist/file (e.g. PyNEMO/inputs/namelist_remote.bdy) -``` - -**Additional NOTES** - -for MacOs and Java SDK 13 and JRE 8 the following path should be correct - /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server - -Resulting in the following command: (this will be different for different java versions and operating systems) -``` -$ export LD_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server:$LD_LIBRARY_PATH -``` -The conda environment creation command has not yet been tested. The yml document (can be opened using text editor) gives a list of all the modules and their versions that are required for PyNEMO so a environment can be constructed using this document as reference (or if you use pip!) - -## Contribution guidelines ## - -## Bench Marking Tests ## - -The PyNEMO module can be tested using the bench marking namelist bdy file in the inputs folder. To check the outputs of the benchmark test, these can be visualised using the plotting script within the test_scripts folder. The following steps are required, - -- Run PyNEMO using the namelist file in the inputs folder (namelist_remote.bdy) e.g. - - - $ pynemo -s /path/to/namelist/file - -- This will create two output files coordinates.bdy.nc and NNA_R12_bdyT_y1979)m11.nc in an outputs folder - -- To check the coordinates.bdy.nc has the correct boundary points, the script bdy_coords_plot.py will plot the domain boundaries and shown the different locations of the rim width (increasing number should go inwards) This script is located in the test_scripts folder. - -- The result should look like this (if using the current benchmark data) - - - -## Who do I talk to? ## - -* Repo owner or admin - -jdha - -* Other community or team contact - - -For more information regarding the use and development of PyNEMO see: [PyNEMO Wiki](https://github.com/jdha/PyNEMO/wiki) diff --git a/environment_pynemo.yml b/environment_pynemo.yml deleted file mode 100644 index e8df8c8..0000000 --- a/environment_pynemo.yml +++ /dev/null @@ -1,181 +0,0 @@ -name: pynemo_env -channels: - - conda-forge - - anaconda - - srikanthnagella - - defaults -dependencies: - - alabaster=0.7.12=py27_0 - - appnope=0.1.0=py27hb466136_0 - - asn1crypto=1.0.1=py27_0 - - astroid=1.6.5=py27_0 - - attrs=19.2.0=py_0 - - babel=2.7.0=py_0 - - backports=1.0=py_2 - - backports.functools_lru_cache=1.5=py_2 - - backports.shutil_get_terminal_size=1.0.0=py27_2 - - backports_abc=0.5=py27h6972548_0 - - basemap=1.2.0=py27h0acbc05_0 - - blas=1.0=mkl - - bleach=3.1.0=py27_0 - - bzip2=1.0.8=h1de35cc_0 - - ca-certificates=2019.10.16=0 - - cartopy=0.16.0=py27h9263bd1_0 - - certifi=2019.9.11=py27_0 - - cffi=1.12.3=py27hb5b8e2f_0 - - cftime=1.0.3.4=py27h1d22016_1001 - - chardet=3.0.4=py27_1003 - - cloudpickle=1.2.2=py_0 - - configparser=4.0.2=py27_0 - - cryptography=2.7=py27ha12b0ac_0 - - curl=7.65.3=ha441bb4_0 - - cycler=0.10.0=py27hfc73c78_0 - - cython=0.29.13=py27h0a44026_0 - - dbus=1.13.6=h90a0687_0 - - decorator=4.4.0=py27_1 - - defusedxml=0.6.0=py_0 - - docutils=0.15.2=py27_0 - - entrypoints=0.3=py27_0 - - enum34=1.1.6=py27_1 - - expat=2.2.6=h0a44026_0 - - freetype=2.9.1=hb4e5f40_0 - - functools32=3.2.3.2=py27_1 - - futures=3.3.0=py27_0 - - geos=3.6.2=h5470d99_2 - - gettext=0.19.8.1=h15daf44_3 - - glib=2.56.2=hd9629dc_0 - - hdf4=4.2.13=h39711bb_2 - - hdf5=1.10.1=ha036c08_1 - - icu=58.2=h4b95b61_1 - - idna=2.8=py27_0 - - imagesize=1.1.0=py27_0 - - intel-openmp=2019.4=233 - - ipaddress=1.0.22=py27_0 - - ipykernel=4.10.0=py27_0 - - ipython=5.8.0=py27_0 - - ipython_genutils=0.2.0=py27h8b9a179_0 - - ipywidgets=7.5.1=py_0 - - isort=4.3.21=py27_0 - - jedi=0.15.1=py27_0 - - jinja2=2.10.3=py_0 - - jpeg=9b=he5867d9_2 - - jsonschema=3.0.2=py27_0 - - jupyter=1.0.0=py27_7 - - jupyter_client=5.3.3=py27_1 - - jupyter_console=5.2.0=py27_1 - - jupyter_core=4.5.0=py_0 - - keyring=18.0.0=py27_0 - - kiwisolver=1.1.0=py27h0a44026_0 - - krb5=1.16.1=hddcf347_7 - - lazy-object-proxy=1.4.2=py27h1de35cc_0 - - libcurl=7.65.3=h051b688_0 - - libcxx=4.0.1=hcfea43d_1 - - libcxxabi=4.0.1=hcfea43d_1 - - libedit=3.1.20181209=hb402a30_0 - - libffi=3.2.1=h475c297_4 - - libgfortran=3.0.1=h93005f0_2 - - libiconv=1.15=hdd342a3_7 - - libnetcdf=4.5.0=h42fd751_7 - - libpng=1.6.37=ha441bb4_0 - - libsodium=1.0.16=h3efe00b_0 - - libssh2=1.8.2=ha12b0ac_0 - - libtiff=4.0.10=hcb84e12_2 - - libxml2=2.9.9=hf6e021a_1 - - libxslt=1.1.33=h33a18ac_0 - - lxml=4.4.1=py27hef8c89e_0 - - markupsafe=1.1.1=py27h1de35cc_0 - - matplotlib=2.2.3=py27h54f8f79_0 - - mccabe=0.6.1=py27_1 - - mistune=0.8.4=py27h1de35cc_0 - - mkl=2019.4=233 - - mkl-service=2.3.0=py27hfbe908c_0 - - mkl_fft=1.0.14=py27h5e564d8_0 - - mkl_random=1.1.0=py27ha771720_0 - - nbconvert=5.6.0=py27_1 - - nbformat=4.4.0=py27hddc86d0_0 - - ncurses=6.1=h0a44026_1 - - netcdf4=1.3.1=py27he3ffdca_2 - - notebook=5.7.8=py27_0 - - numpy=1.16.5=py27hacdab7b_0 - - numpy-base=1.16.5=py27h6575580_0 - - numpydoc=0.9.1=py_0 - - olefile=0.46=py27_0 - - openssl=1.1.1d=h1de35cc_3 - - owslib=0.18.0=py_0 - - packaging=19.2=py_0 - - pandoc=2.2.3.2=0 - - pandocfilters=1.4.2=py27_1 - - parso=0.5.1=py_0 - - pathlib2=2.3.5=py27_0 - - pcre=8.43=h0a44026_0 - - pexpect=4.7.0=py27_0 - - pickleshare=0.7.5=py27_0 - - pillow=6.2.0=py27hb68e598_0 - - pip=19.2.3=py27_0 - - proj4=5.0.1=h1de35cc_0 - - prometheus_client=0.7.1=py_0 - - prompt_toolkit=1.0.15=py27h4a7b9c2_0 - - psutil=5.6.3=py27h1de35cc_0 - - ptyprocess=0.6.0=py27_0 - - pycodestyle=2.5.0=py27_0 - - pycparser=2.19=py27_0 - - pyepsg=0.4.0=py27_0 - - pyflakes=2.1.1=py27_0 - - pygments=2.4.2=py_0 - - pyjnius=1.4=py27_0 - - pylint=1.9.2=py27_0 - - pyopenssl=19.0.0=py27_0 - - pyparsing=2.4.2=py_0 - - pyproj=1.9.5.1=py27h833a5d7_1 - - pyqt=4.11.4=py27_4 - - pyrsistent=0.15.4=py27h1de35cc_0 - - pyshp=2.1.0=py_0 - - pysocks=1.7.1=py27_0 - - python=2.7.16=h97142e2_7 - - python-dateutil=2.8.0=py27_0 - - python.app=2=py27_9 - - pytz=2019.3=py_0 - - pyzmq=18.1.0=py27h0a44026_0 - - qt=4.8.7=1 - - qtawesome=0.6.0=py_0 - - qtconsole=4.5.5=py_0 - - qtpy=1.9.0=py_0 - - readline=7.0=h1de35cc_5 - - requests=2.22.0=py27_0 - - rope=0.14.0=py_0 - - scandir=1.10.0=py27h1de35cc_0 - - scipy=1.2.1=py27h1410ff5_0 - - seawater=3.3.4=py_1 - - send2trash=1.5.0=py27_0 - - setuptools=41.4.0=py27_0 - - shapely=1.6.4=py27h20de77a_0 - - simplegeneric=0.8.1=py27_2 - - singledispatch=3.4.0.3=py27he22c18d_0 - - sip=4.18=py27_0 - - six=1.12.0=py27_0 - - snowballstemmer=2.0.0=py_0 - - sphinx=1.8.5=py27_0 - - sphinxcontrib=1.0=py27_1 - - sphinxcontrib-websupport=1.1.2=py_0 - - spyder=3.2.8=py27_0 - - spyder-kernels=1.4.0=py27_0 - - sqlite=3.30.0=ha441bb4_0 - - subprocess32=3.5.4=py27h1de35cc_0 - - terminado=0.8.2=py27_0 - - testpath=0.4.2=py27_0 - - thredds_crawler=1.0.0=py27_0 - - tk=8.6.8=ha441bb4_0 - - tornado=5.1.1=py27h1de35cc_0 - - traitlets=4.3.3=py27_0 - - typing=3.7.4.1=py27_0 - - urllib3=1.24.2=py27_0 - - wcwidth=0.1.7=py27h817c265_0 - - webencodings=0.5.1=py27_1 - - wheel=0.33.6=py27_0 - - widgetsnbextension=3.5.1=py27_0 - - wrapt=1.11.2=py27h1de35cc_0 - - wurlitzer=1.0.3=py27_0 - - xz=5.2.4=h1de35cc_4 - - zeromq=4.3.1=h0a44026_3 - - zlib=1.2.11=h1de35cc_3 - - zstd=1.3.7=h5bba6e5_0 diff --git a/pynemo_37.yml b/pynemo_37.yml new file mode 100644 index 0000000..8d904c7 --- /dev/null +++ b/pynemo_37.yml @@ -0,0 +1,16 @@ +name: pynemo3 +channels: + - defaults +dependencies: + - basemap=1.2.0 + - netcdf4=1.5.3 + - pyqt=5.9.2 + - scipy=1.2.1 + - python=3.7.6 + - pip=20.0.2 + - pip: + - idna==2.9 + - lxml==4.5.0 + - pyjnius==1.2.1 + - seawater==3.3.4 + - thredds-crawler==1.5.4 diff --git a/pynemo_stats b/pynemo_stats new file mode 100644 index 0000000000000000000000000000000000000000..a89818501e35fa4a9e105dca523eaff6cd4152fb GIT binary patch literal 51141 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 literal 0 HcmV?d00001 -- GitLab