{"id":22756461,"url":"https://github.com/gher-uliege/diva-workshops","last_synced_at":"2026-05-11T09:39:36.805Z","repository":{"id":84768451,"uuid":"108153788","full_name":"gher-uliege/Diva-Workshops","owner":"gher-uliege","description":"Code, data and instructions for the Diva workshops","archived":false,"fork":false,"pushed_at":"2025-06-30T12:49:21.000Z","size":149899,"stargazers_count":17,"open_issues_count":1,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-03T02:03:28.510Z","etag":null,"topics":["blue-cloud2026","data-analysis","diva","fair-ease","interpolation","ocean-sciences","oceanography","seadatacloud","seadatanet","spatial-analysis"],"latest_commit_sha":null,"homepage":"https://gher-uliege.github.io/Diva-Workshops/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gher-uliege.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-24T16:26:26.000Z","updated_at":"2025-06-30T12:49:25.000Z","dependencies_parsed_at":"2024-11-05T16:17:49.242Z","dependency_job_id":"9c433810-6f81-4026-8793-cde67336c6bf","html_url":"https://github.com/gher-uliege/Diva-Workshops","commit_stats":{"total_commits":694,"total_committers":7,"mean_commits":99.14285714285714,"dds":0.521613832853026,"last_synced_commit":"6c94d4312b8bce1d5894281db03f25c70d241850"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/gher-uliege/Diva-Workshops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gher-uliege%2FDiva-Workshops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gher-uliege%2FDiva-Workshops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gher-uliege%2FDiva-Workshops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gher-uliege%2FDiva-Workshops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gher-uliege","download_url":"https://codeload.github.com/gher-uliege/Diva-Workshops/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gher-uliege%2FDiva-Workshops/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263245315,"owners_count":23436513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blue-cloud2026","data-analysis","diva","fair-ease","interpolation","ocean-sciences","oceanography","seadatacloud","seadatanet","spatial-analysis"],"created_at":"2024-12-11T07:13:49.490Z","updated_at":"2026-05-11T09:39:36.797Z","avatar_url":"https://github.com/gher-uliege.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DIVA Workshops and training\n\n\u003cdiv align=\"center\"\u003e \u003cimg src=\"./figures/divand_logo.png\" alt=\"DIVAnd logo\" width=\"200\"\u003e\u003c/img\u003e\u003c/div\u003e\n\n[![Build Status](https://github.com/gher-uliege/Diva-Workshops/workflows/CI/badge.svg)](https://github.com/gher-uliege/Diva-Workshops/actions) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n![GitHub top language](https://img.shields.io/github/languages/top/gher-uliege/Diva-Workshops)\n[![DOI](https://zenodo.org/badge/108153788.svg)](https://zenodo.org/badge/latestdoi/108153788)      \n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/gher-uliege/Diva-Workshops) ![GitHub contributors](https://img.shields.io/github/contributors/gher-uliege/Diva-Workshops) ![GitHub last commit](https://img.shields.io/github/last-commit/gher-uliege/Diva-Workshops)     \n[![Static Badge](https://img.shields.io/badge/Project-FAIR--EASE-blue)](https://www.fairease.eu/) [![Static Badge](https://img.shields.io/badge/Project-SeaDataCloud-blue)](https://www.seadatanet.org) [![Static Badge](https://img.shields.io/badge/Project-IRISCC-blue)](https://www.iriscc.eu/) [![Static Badge](https://img.shields.io/badge/Project-AQUARIUS-blue)](https://aquarius-ri.eu/)\n\n## Objective\n\nThe goal of the training material module, made up of [Jupyter](https://jupyter.org/) notebooks, is twofold: \n1. provide the users with a basic knowledge of Julia, meaning they are capable of reading the code presented in the notebooks, but also install new modules, write basic functions for processing or create basic plots. \n2. endure that the users to able to create their own products (i.e. climatologies) using the [`DIVAnd`](https://github.com/gher-uliege/divand.jl) software tool, by combining their own datasets with those from other sources (for instance the World Ocean Database) and setting the analysis parameters according to their region of interest.\n\nMore information about `DIVAnd` is available in the package [documentation](https://gher-uliege.github.io/DIVAnd.jl/stable/).\n\n### Content\n\nThe notebooks are organised into 4 categories, according to their main objectives and following the \"Instructional design\" described in the associated paper in JOSE.    \nThe different notebook folders can be covered independently, depending on the experise of the users.       \nSuggestions for the number of sessions and time to be dedicated for each category are provide below.\n\n| Folder | Content | Recommended duration |\n|:-------------------|:----------------------:|----------------|\n[1-Intro](./notebooks/1-Intro/) | Know the basics commands in Julia, read/write netCDF files and create different types of plots (scatter, histograms, maps, ...) | 2 hours |\n[2-Preprocessing](./notebooks/2-Preprocessing) | Learn about the input file preparation: observations (download and reading), bathymetry and mask, time periods, ... | 4 hours |\n[3-Analysis](./notebooks/3-Analysis/) | Perform different types of analysis, optimise the analysis parameters and work with different coordinate systems | 2 sessions of 4 hours   |\n[4-AdvancedTopics](./notebooks/4-AdvancedTopics/) | Discover more complex types of analysis, using for instance advection or inequality constraints. | 4 hours  |\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch3\u003eFull list of notebooks\u003c/h3\u003e\u003c/summary\u003e\n\n[1-01-notebooks-basics.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/1-Intro/1-01-notebooks-basics.ipynb)         \n[1-02-Julia-introduction.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/1-Intro/1-02-Julia-introduction.ipynb)          \n[1-03-netCDF.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/1-Intro/1-03-netCDF.ipynb)           \n[1-04-OI-variational-analysis-introduction.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/1-Intro/1-04-OI-variational-analysis-introduction.ipynb)        \n[1-05-plots-maps.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/1-Intro/1-05-plots-maps.ipynb)           \n[2-01-topography.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/2-Preprocessing/2-01-topography.ipynb)              \n[2-02-reading-data.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/2-Preprocessing/2-02-reading-data.ipynb)           \n[2-03-data-downloading.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/2-Preprocessing/2-03-data-downloading.ipynb)           \n[2-04-ODV-data-import.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/2-Preprocessing/2-04-ODV-data-import.ipynb)              \n[2-05-defining-time-periods.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/2-Preprocessing/2-05-defining-time-periods.ipynb)         \n[3-01-L-and-epsilon-effect.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-01-L-and-epsilon-effect.ipynb)          \n[3-02-correlation-length.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-02-correlation-length.ipynb)          \n[3-03-processing-parameter-optimization.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-03-processing-parameter-optimization.ipynb)         \n[3-04-processing-quality-check.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-04-processing-quality-check.ipynb)       \n[3-05-cpme-demo.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-05-cpme-demo.ipynb)        \n[3-06-errormaps-demo.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-06-errormaps-demo.ipynb)        \n[3-07-example-analysis.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-07-example-analysis.ipynb)          \n[3-08-background-field.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-08-background-field.ipynb)          \n[3-09-full-analysis.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-09-full-analysis.ipynb)           \n[3-10-save_attributes_EMODnet.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-10-save_attributes_EMODnet.ipynb)        \n[3-11-generalized-vertical-coordinates.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-11-generalized-vertical-coordinates.ipynb)          \n[3-12-sigma-layers.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-12-sigma-layers.ipynb)         \n[3-13-polar-coordinates.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-13-polar-coordinates.ipynb)         \n[3-14-Sphericalcoordinates.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-14-Sphericalcoordinates.ipynb)          \n[3-15-analysis-datapoints.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/3-Analysis/3-15-analysis-datapoints.ipynb)        \n[4-01-relative-correlation-length.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-01-relative-correlation-length.ipynb)          \n[4-02-average-background.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-02-average-background.ipynb)          \n[4-03-heatmaps.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-03-heatmaps.ipynb)           \n[4-04-heatmapsCV.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-04-heatmapsCV.ipynb)         \n[4-05-turtles-tensity-map.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-05-turtles-tensity-map.ipynb)           \n[4-06-advection_constrain.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-06-advection_constrain.ipynb)         \n[4-07-advection_constraint_Adriatic.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-07-advection_constraint_Adriatic.ipynb)           \n[4-08-source-term.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-08-source-term.ipynb)          \n[4-09-open-boundary-conditions.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-09-open-boundary-conditions.ipynb)          \n[4-10-multivariate-EOF.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-10-multivariate-EOF.ipynb)           \n[4-11-multivariate-Jacobian.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-11-multivariate-Jacobian.ipynb)         \n[4-12-analysis-with-cycles.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-12-analysis-with-cycles.ipynb)          \n[4-13-BlackSea-detrend-geostrophic.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-13-BlackSea-detrend-geostrophic.ipynb)           \n[4-14-inequalities-constrains.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-14-inequalities-constrains.ipynb)       \n[4-15-geostrophytest.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-15-geostrophytest.ipynb)       \n[4-16-Lshape.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-16-Lshape.ipynb)          \n[4-17-interp-section.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-17-interp-section.ipynb)         \n[4-18-make-paper-figure.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-18-make-paper-figure.ipynb)          \n[4-19-optim-observations-locations-game.ipynb](https://github.com/gher-uliege/Diva-Workshops/blob/main/notebooks/4-AdvancedTopics/4-19-optim-observations-locations-game.ipynb)          \n\u003c/details\u003e\n\n### How to use or adopt the notebooks?\n\nDifferent paths can be taken, depending on your experience with Julia and with `DIVAnd`.   \nFirst follow the instructions for the installation, then decide from where to start according to your experience or your audience.      \n\n| Experience in Julia | Experience with DIVAnd | Recommendation |\n|:-------------------:|:----------------------:|----------------|\n|         No          |           No           | Start from the beginning! |\n|         Yes         |           No           | Start with the [2-Preprocessing](./notebooks/2-Preprocessing) notebooks, then try an analysis (for instance [3-07-example-analysis.ipynb](./notebooks/3-Analysis/3-07-example-analysis.ipynb)) |\n|         No          |           Yes          | Check the [1-Intro](./notebooks/1-Intro/) notebooks to get familiar with Julia, then play with the [analysis](./notebooks/3-Analysis/3-09-full-analysis.ipynb)             |\n|         Yes         |           Yes          | Use the notebook [3-09-full-analysis.ipynb](./notebooks/3-Analysis/3-09-full-analysis.ipynb) as a starting point for your analysis, then play with the [4-AdvancedTopics](./notebooks/4-AdvancedTopics/) |\n\n#### 🚀 Fast start\n\nIf you had to use only one notebook, it should be this one: [3-09-full-analysis.ipynb](./notebooks/3-Analysis/3-09-full-analysis.ipynb)\n\n### How to contribute?\n\nPlease refer to the instructions in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Installation\n\n### Julia \n\nJulia language can be installed using `juliaup`, as detailed in the [Download](https://julialang.org/downloads/) section of Julia.\n\n### Jupyter\n\nJupyter has to be installed in order to have a notebook interface. It can be installed and launched (in Julia) with the following command in the Pkg REPL      \n(Enter the Pkg REPL by pressing `]` from the Julia session):\n```julia\n(@v1.11) pkg\u003e add IJulia\n```\n\u003e [!WARNING]\n\u003e After an update of the Julia version, one can face an error message related to the Kernel:\u003cbr\u003e\n`LoadError: ArgumentError: Package IJulia ... is required but does not seem to be installed` \u003cbr\u003e\nThis can be solved with the command:\n```julia\nusing IJulia\ninstallkernel(\"Julia\")\n```\n\n### The notebooks \n\nTo get the notebooks on your computer you can either:\n1. Download a [zipped archive](https://github.com/gher-uliege/Diva-Workshops/archive/master.zip) and uncompress it [for any user].\n2. Clone the whole directory: `git clone git@github.com:gher-uliege/Diva-Workshops.git` (for git users).\n\u003e [!NOTE] \n\u003e The notebooks will get dependencies via the file `Project.toml`. This is why all the notebooks start with the commands\n```julia\nimport Pkg\nPkg.activate(\"../..\")\nPkg.instantiate()\n```\n\nThe Jupyter session is started with:\n```julia\nusing IJulia\nnotebook()\n```\n\n\u003e [!IMPORTANT]\n\u003e A notebook in [Pluto](https://plutojl.org/), `3-09-full-analysis.jl`, was recently added to the repository. To run it, you have to execute:\n```julia\nimport Pluto\nPluto.run()\n```\nthen you have to open the file `3-09-full-analysis.jl` in your browser.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgher-uliege%2Fdiva-workshops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgher-uliege%2Fdiva-workshops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgher-uliege%2Fdiva-workshops/lists"}