{ "info": { "author": "Brian Powell", "author_email": "powellb@hawaii.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "# State Estimation and Analysis in PYthon (SEAPY)\n\nTools for working with ocean models and data.\n\nSEAPY requires: numpy, scipy, netCDF4, basemap, joblib, and numpy_groupies\n\n## Installation\n\n### Install from Conda-Forge\n\nInstall from [conda-forge](https://conda-forge.org/) with the Conda package manager:\n```\n$ conda install -c conda-forge seapy\n```\n\nYou should also consider making conda-forge your default channel. See the [conda-forge tips and tricks page](https://conda-forge.org/docs/user/tipsandtricks.html).\n\nThe Conda-Forge [SEAPY feedstock](https://github.com/conda-forge/seapy-feedstock) is maintained by Filipe Fernandes, [ocefpaf](https://github.com/ocefpaf/). As of August 2019 there are binary packages on all the platforms that Conda-Forge supports: Python 3.6 and 3.7 on Linux, Windows and Mac OSX (all 64-bit).\n\nTo remove seapy:\n```\n$ conda remove seapy\n```\n\n## Install from PyPI\n\nInstall from [PyPI](https://pypi.org/) with PIP:\n```\n$ pip install seapy-ocean\n```\n\nNote that on PyPI (but nowhere else) the package name is seapy-ocean to avoid a name clash with another package. The module name is still seapy.\n\nSEAPY packages on PyPI have been built and uploaded by Mark Hadfield, [hadfieldnz](https://pypi.org/user/hadfieldnz/). There is a source distribution that should build with no problems on Linux (and Mac OSX, but we haven't tested it) and a binary distribution for Windows (64-bit).\n\nIn a Conda environment, it is quite possible to install with PIP, but dependency handling and updating will be cleaner if you use the Conda package.\n\nTo remove seapy-ocean\n```\n$ pip uninstall seapy-ocean\n```\n\n## Install from source code on GitHub.com\n\nThe SEAPY source code is maintained by Brian Powell, (powellb)[https://github.com/powellb]. Releases are made on the [master branch](https://github.com/powellb/seapy/tree/master)\n\nInstall from [GitHub.com](https://github.com/) with PIP:\n```\n$ pip install git+git://github.com/powellb/seapy@master\n```\n\nOR clone a copy of the source and install in editable mode, eg:\n```\n$ git clone https://github.com/powellb/seapy.git\n$ pip install -e seapy\n```\n\nWith an [editable-mode](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs) installation, changes you make to your copy of the source code will take effect when you import the module.\n\n## Contributing\n\nIf you've installed from source in editable mode so that you can change and test the source code, then you should consider forking your own copy of the repository. This allows you to\nkeep your changes under revision control and potentially contribute them to the project. [Forking on GitHub.com](https://help.github.com/en/articles/fork-a-repo) is a lightweight process that won't complicate your workflow significantly and keeps the relationship between your work and the original project clear, so it is strongly advised to do it early. However he immutable and unique nature of Git commits means that you can create and populate a fork later if you want to, as long as you have saved your work somewhere in Git format. To create a fork you will need a [GitHub.com user account](https://help.github.com/en/articles/signing-up-for-a-new-github-account).\n\nThis [beginner's guide to contributing to a GitHub project](https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/) has some good suggestions about contributing to an existing project. The convention in the [existing SEAPY forks](https://github.com/powellb/seapy/network/members) is to reserve the branch name \"master\" for the master branch in Brian Powell's repository (or copies thereof) and to use a branch matching your user name for your own work.\n\n\n## Examples\n\nMany of the time-saving features are in generating fields for running the ROMS model.\n\n1. To load the meta information about a model (ROMS, HYCOM, MITgcm, POM, SODA), load an output file (history, average, climatology, grid, etc.) via:\n\n >> mygrid = seapy.model.asgrid(filename)\n\n >> mygrid\n C-Grid: 32x194x294\n\n >> print(mygrid)\n filename\n 32x194x294: C-Grid with S-level\n Available: I,J,_isroms,_nc,angle,cgrid,cs_r,depth_rho,depth_u,depth_v,dm,dn,eta_rho,eta_u,eta_v,f,filename,h,hc,lat_rho,lat_u,lat_v,lm,ln,lon_rho,lon_u,lon_v,mask_rho,mask_u,mask_v,n,name,pm,pn,s_rho,shape,spatial_dims,tcline,theta_b,theta_s,thick_rho,thick_u,thick_v,vstretching,vtransform,xi_rho,xi_u,xi_v\n\n\n2. Most methods available in SEAPY require a grid, which can be specified as a \"filename\" or as a grid object.\n\n3. Find out how to download global HYCOM data that will span my grid from 1/1/2015 through 5/1/2015:\n\n\n >> seapy.model.hycom.load_history(\"hycom_file.nc\", start_time=datetime(2015,1,1),\n end_time=datetime(2015,5,1),\n grid=mygrid, load_data=False)\n ncks -v water_temp,salinity,surf_el,water_v,water_u -d time,352,352 -d lat,1204,1309 -d lon,2438,2603 http://tds.hycom.org/thredds/dodsC/GLBu0.08/expt_91.1 hycom_file.nc\n\nThis will display the 'ncks' command necessary to download the data. If you want to have SEAPY download it (not recommended due to server-speed), use `'load_data=True'`.\n\n4. Once you have HYCOM data, interpolate it to your grid\n\n >> seapy.roms.interp.to_clim(\"hycom_file.nc\", \"my_clim.nc\",\n dest_grid=mygrid, nx=1/6, ny=1/6,\n vmap={\"surf_el\":\"zeta\", \"water_temp\":\"temp\",\n \"water_u\":\"u\", \"water_v\":\"v\", \"salinity\":\"salt\"})\n\n5. Generate boundary conditions from the climatology\n\n >> seapy.roms.boundary.from_roms(\"my_clim.nc\", \"my_bry.nc\")\n\n6. Generate initial conditions from the climatology\n\n >> seapy.roms.initial.from_roms(\"my_clim.nc\", \"my_ini.nc\")\n\n7. You now have what you need to run your model\n\n8. To set up data assimilation, download the raw observations (e.g., `aviso_map_day1.nc`, `aviso_map_day2.nc`, `argo_day1.nc` ). You can then process the data:\n\n >> dt = 400/86400 # time-step of the model in days\n >> aviso_gen = seapy.roms.obsgen.aviso_sla_map(mygrid, dt)\n >> aviso_gen.batch_files(seapy.list_files('.','aviso.*nc'), 'aviso_roms_#.nc')\n >> argo_gen = seapy.roms.obsgen.argo_ctd(mygrid, dt)\n >> obs = argo_gen.convert_file(\"argo_day1.nc\")\n >> obs.to_netcdf(\"argo_roms_1.nc\")\n\n9. Put all of the processed observations files together into a file for a given assimilation window\n\n >> seapy.roms.obs.merge_files(seapy.list_files('.*roms_[0-9]+.nc'), 'roms_obs_#.nc', np.arange([0, 10.1, 5]))\n\nThere are many more things that can be done, but these show some of the power available via simple commands.\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/powellb/seapy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "seapy-ocean", "package_url": "https://pypi.org/project/seapy-ocean/", "platform": "", "project_url": "https://pypi.org/project/seapy-ocean/", "project_urls": { "Homepage": "https://github.com/powellb/seapy" }, "release_url": "https://pypi.org/project/seapy-ocean/0.4.4/", "requires_dist": [ "basemap", "h5py", "joblib", "netcdf4", "numpy", "numpy-groupies", "scipy" ], "requires_python": "", "summary": "State Estimation and Analysis in PYthon", "version": "0.4.4" }, "last_serial": 5942441, "releases": { "0.4.2": [ { "comment_text": "", "digests": { "md5": "2bb0442666ec97e93329d74c0b085656", "sha256": "19f7d62f77021fa17d7245da67c2dabb76b25e76e95826b2743673b5e9b3c728" }, "downloads": -1, "filename": "seapy_ocean-0.4.2-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "2bb0442666ec97e93329d74c0b085656", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1071990, "upload_time": "2019-09-17T00:50:02", "url": "https://files.pythonhosted.org/packages/de/c8/9957ba183c8894fa7ef0a25ee4d9ed2a1075b05a2c9ab67b952f9eb489e6/seapy_ocean-0.4.2-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "09089816edac7928b7f3a54aabf6bd08", "sha256": "75911efa6583fdd0b7d463804201e929c6f37bf8b134e794046e892e60d50857" }, "downloads": -1, "filename": "seapy-ocean-0.4.2.tar.gz", "has_sig": false, "md5_digest": "09089816edac7928b7f3a54aabf6bd08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 866604, "upload_time": "2019-09-17T00:49:22", "url": "https://files.pythonhosted.org/packages/29/33/a2226c8f582a7e7d0825784205a62207977182e54413817022ad5bc23f7e/seapy-ocean-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "d90b1e2fba2e2d8d2bf96529ea1151a9", "sha256": "cfe57926070317ef87756a9eb7c6e46fbf92da07cf8e14be5b492b63c90d7028" }, "downloads": -1, "filename": "seapy_ocean-0.4.3-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "d90b1e2fba2e2d8d2bf96529ea1151a9", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1071421, "upload_time": "2019-09-25T01:07:28", "url": "https://files.pythonhosted.org/packages/75/75/f2f69bc1e6dfaf771792f5d53270d0ebf1760966897d32098a4f72240c75/seapy_ocean-0.4.3-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "c01f6a284dfcf7dcd3c6b70b3981df21", "sha256": "e597395078a3f5f56d4f719a4e658436e2de859c30e0f104d8469f65d7bd3184" }, "downloads": -1, "filename": "seapy-ocean-0.4.3.tar.gz", "has_sig": false, "md5_digest": "c01f6a284dfcf7dcd3c6b70b3981df21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 866024, "upload_time": "2019-09-25T01:00:44", "url": "https://files.pythonhosted.org/packages/46/d6/a08692cec06986c58761a62b0ab613efd06b85612f214345fcec2a24c2fd/seapy-ocean-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "b0aa08962aca791728d0d1b10207fbf2", "sha256": "0bc583aaf8748061c3071967b94a3c97c1b0bc509bcaf21981892ab5a6336267" }, "downloads": -1, "filename": "seapy_ocean-0.4.4-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "b0aa08962aca791728d0d1b10207fbf2", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1072713, "upload_time": "2019-10-08T01:44:28", "url": "https://files.pythonhosted.org/packages/20/5b/6bce81a0b92f9a4cce6e5cff684ae2ef188eee3c8883176272dcf9296190/seapy_ocean-0.4.4-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "b4fd5059948f0d3e6015cf3c7387dd98", "sha256": "e52ced24bd6a56e7366c2c97ab41bd8ae9772e6cf7d10f06094c222a8ca80114" }, "downloads": -1, "filename": "seapy-ocean-0.4.4.tar.gz", "has_sig": false, "md5_digest": "b4fd5059948f0d3e6015cf3c7387dd98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 868942, "upload_time": "2019-10-08T01:56:43", "url": "https://files.pythonhosted.org/packages/45/9b/bca3600aa027b2ba8541f967cbb8aae367b7c72b3b98a1a487dfddf751c6/seapy-ocean-0.4.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b0aa08962aca791728d0d1b10207fbf2", "sha256": "0bc583aaf8748061c3071967b94a3c97c1b0bc509bcaf21981892ab5a6336267" }, "downloads": -1, "filename": "seapy_ocean-0.4.4-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "b0aa08962aca791728d0d1b10207fbf2", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1072713, "upload_time": "2019-10-08T01:44:28", "url": "https://files.pythonhosted.org/packages/20/5b/6bce81a0b92f9a4cce6e5cff684ae2ef188eee3c8883176272dcf9296190/seapy_ocean-0.4.4-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "b4fd5059948f0d3e6015cf3c7387dd98", "sha256": "e52ced24bd6a56e7366c2c97ab41bd8ae9772e6cf7d10f06094c222a8ca80114" }, "downloads": -1, "filename": "seapy-ocean-0.4.4.tar.gz", "has_sig": false, "md5_digest": "b4fd5059948f0d3e6015cf3c7387dd98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 868942, "upload_time": "2019-10-08T01:56:43", "url": "https://files.pythonhosted.org/packages/45/9b/bca3600aa027b2ba8541f967cbb8aae367b7c72b3b98a1a487dfddf751c6/seapy-ocean-0.4.4.tar.gz" } ] }