Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
63cbda5
first refactoring step, parent instrument classes
j-atkins Aug 18, 2025
b4fbf2b
ignore refactoring notes in gitignore
j-atkins Aug 18, 2025
2409517
add note to remove upon completing v1 dev
j-atkins Aug 18, 2025
cfa7a0f
scratch inputdataset objects integration to _fetch
j-atkins Sep 17, 2025
851dd27
add call to download_data()
j-atkins Sep 17, 2025
a417c68
Add new instrument classes and update InputDataset to include depth p…
j-atkins Oct 6, 2025
a0c77ab
Refactor instrument handling in _fetch and update imports for consist…
j-atkins Oct 7, 2025
9bcaba2
Refactor instrument classes and re-add (temporary) simulation functio…
j-atkins Oct 7, 2025
8b5954d
improve/clarify comments and notes
j-atkins Oct 9, 2025
ff38f4f
Refactor ArgoFloat and XBT classes to include depth parameters and re…
j-atkins Oct 9, 2025
c870d1c
avoid circular import issues
j-atkins Oct 14, 2025
49b3bee
make tests for InputDataset base class
j-atkins Oct 14, 2025
c4e3196
refactor instrument handling in _fetch.py and update expedition model…
j-atkins Oct 22, 2025
2f40f7d
refactor instrument error handling in Expedition model and remove Sch…
j-atkins Oct 22, 2025
43c855d
add is_underway property to InstrumentType and filter instruments in …
j-atkins Oct 22, 2025
79c81cb
enhance CLI output for fetching
j-atkins Oct 22, 2025
efb53ca
general fixes and new error class
j-atkins Oct 22, 2025
c4ddea1
refactor test cases to use Expedition object
j-atkins Oct 22, 2025
d4e8e8d
Merge branch v1-dev into instrument-refactor
j-atkins Oct 27, 2025
66aa4a5
move instruments base classes out of models/ dir
j-atkins Oct 27, 2025
06ddf37
update base class imports
j-atkins Oct 27, 2025
5887177
make get_instruments_registry more robust with testing
j-atkins Oct 27, 2025
2fcbbd6
Merge branch 'v1-dev' into instrument-refactor
j-atkins Oct 27, 2025
8f5af04
refactor: reorganize instrument classes and update imports for clarity
j-atkins Oct 27, 2025
fdc0e6e
implement instrument registration and input dataset retrieval
j-atkins Oct 27, 2025
95e6cbd
refactor: reorganize imports in instrument test files for consistency
j-atkins Oct 27, 2025
01cee18
further refactoring: instrument classes to use a unified InputDataset…
j-atkins Oct 28, 2025
e96aa8a
evaporate simulate_measurements.py; centralise run logic
j-atkins Oct 28, 2025
3efa29b
draft up check land using bathymetry
j-atkins Oct 28, 2025
aa2d309
small bug fixes
j-atkins Oct 28, 2025
588cab4
patch copernicus product id search logic to new instrument classes, p…
j-atkins Oct 29, 2025
1081fab
adding U and V to instruments where missing
j-atkins Oct 29, 2025
a0d7d2c
enhanced error messaging for XBT in too shallow regions
j-atkins Oct 29, 2025
e5c08ce
bug fixes
j-atkins Oct 29, 2025
a4f8af0
version U and V downloaded
j-atkins Nov 3, 2025
e3c57f6
dummy U and V
j-atkins Nov 3, 2025
813a245
Neaten up logging output
j-atkins Nov 3, 2025
b94f4f0
small bug fixes
j-atkins Nov 3, 2025
a5d10e7
tidy up
j-atkins Nov 3, 2025
3753032
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 3, 2025
b7904e8
Refactor type hints and improve test coverage for instruments and utils
j-atkins Nov 3, 2025
7d1c575
Remove TODO comments and tidy up imports in test files
j-atkins Nov 3, 2025
766dab0
Merge branch 'instrument-refactor' of github.com:OceanParcels/virtual…
j-atkins Nov 3, 2025
e74a5ad
Refactor bathymetry error handling, update verification methods and r…
j-atkins Nov 3, 2025
dc638c6
add code of conduct to assignments (#182)
ammedd Nov 5, 2025
01dd168
add teacher info to documentation (#213)
ammedd Nov 5, 2025
56d8fd5
move product id selection logic to utils
j-atkins Nov 5, 2025
eaa124c
Merge branch 'main' into instrument-refactor
j-atkins Nov 5, 2025
1535abe
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@
"user-guide/assignments/Research_Proposal_only": "user-guide/_images/MFP.jpg",
"user-guide/assignments/Virtualship_research_proposal": "user-guide/_images/AnnaWeber.jpeg",
"user-guide/assignments/sciencecommunication_assignment": "user-guide/_images/marine_ss.jpg",
"user-guide/assignments/Sail_the_ship": "user-guide/_images/vessel.jpg",
"user-guide/assignments/Sail_the_ship": "user-guide/_images/freepik_research_vessel.jpg",
"user-guide/assignments/Code_of_conduct": "user-guide/_images/freepik_code_of_conduct.jpg",
}

sphinx_gallery_conf = {"default_thumb_file": "_static/virtual_ship_logo.png"}

nbsphinx_execute = "never"
Binary file added docs/user-guide/_images/ILOs.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/user-guide/_images/vessel.jpg
Binary file not shown.
104 changes: 104 additions & 0 deletions docs/user-guide/assignments/Code_of_conduct.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Code of conduct\n",
"_As used during the Dynamical Oceanography 2024/25 course at Utrecht University_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Please read this code of conduct, fill out the [parts between brackets] after consultation with your group, remove these italic sections, and then all individually upload a copy._ \n",
"\n",
"_Note that the Code of Conduct applies to the actual collaboration within your group in the Virtual Ship Assignment; so is not about how you would work on the ship._"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This code of conduct has been decided by [NAMES] for their group project during the Virtual Ship Classroom and is enacted from [DD-MM-YYYY]. The procedure is based on [this exercise by Aurelia Moser](http://aureliamoser.com/aaas-guides/conduct/index.html)\n",
"\n",
"Everyone taking part in the course and group discussions (mentors, helpers, coordinators, and learners) is required to conform to the following Code of Conduct. Coordinators will oversee adherence to this code throughout the course.\n",
"\n",
"Characteristics we value: [FILL IN]\n",
"\n",
"Behaviors we encourage: [FILL IN]\n",
"\n",
"Behaviors we discourage: [FILL IN]\n",
"\n",
"The way we redistribute the grade: [FILL IN]\n",
"\n",
"Choose for example “Everyone in the team gets the same grade”, “Everyone can propose a bonus point to one other person, which is then subtracted from other team member’s grades”, “We decide as a group who gets up to x bonus/penalty points”, or any other way to redistribute the grade, as long as the average of the group is not affected. \n",
"\n",
"We make each others feel safe and supported by: [FILL IN]\n",
"\n",
"How to report an issue, should someone violate the code?\n",
"1.\tContact the course instructor by private message, or in person. All communication will be treated as confidential.\n",
"2.\tIf for any reason you don’t want to do 1, you can contact the university Academic Integrity Counsellor."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Community Participation Guidelines"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Apart from the code of conduct, all participants in this course must follow these general guidelines.\n",
"Participation \n",
"\n",
"When participating in Dynamical Oceanography, respect the Utrecht University guideline for academic and scientific integrity and code of conduct. These guidelines cover our behaviour as participants, mentors, experts, staff, volunteers, and anyone else involved in making this course possible.\n",
"\n",
"How to treat each other\n",
"\n",
"To create a collaborative and inviting learning environment, we also emphasise certain values in how we treat each other:\n",
"*\tBe respectful and value each other’s ideas, styles and viewpoints.\n",
"*\tBe direct but professional; we cannot withhold hard truths.\n",
"*\tBe inclusive and help new perspectives be heard.\n",
"*\tAppreciate and accommodate our many cultural practices, attitudes and beliefs.\n",
"*\tBe open to learning from others.\n",
"*\tLead by example and match your actions with your words.\n",
"\n",
"The following will not be tolerated during the activities related to this course:\n",
"*\tviolence and threats of violence.\n",
"*\tpersonal attacks; derogatory language.\n",
"*\tunwelcome sexual attention or physical contact.\n",
"*\tdisruptive behavior.\n",
"*\tinfluencing unacceptable behavior.\n",
"\n",
"### Inclusion and Diversity\n",
"\n",
"We welcome contributions from everyone as long as they interact constructively with our community, including, but not limited to people of varied age, culture, ethnicity, gender, gender-identity, language, race, sexual orientation, geographical location and religious views.\n",
"\n",
"Raising Issues\n",
"\n",
"If you believe you‘re experiencing practices which don‘t meet the above policies, or if you feel you are being harassed in any way, please immediately contact the course coordinator, or the university Academic Integrity Counsellor.\n",
"\n",
"The course coordinator reserves the right to refuse admission to anyone violating these policies, and/or take further action including reporting to the responsible figure for academic integrity at the department.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Thumbnail image](_images/freepik_code_of_conduct.jpg)"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
7 changes: 7 additions & 0 deletions docs/user-guide/assignments/Sail_the_ship.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,13 @@
"![Our ocean provides](https://seewhatgrows.org/wp-content/uploads/2019/06/our-ocean.jpg)\n",
"![10 ways to help our ocean](https://oceanservice.noaa.gov/ocean/help-ocean.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Thumbnail image](_images/freepik_research_vessel.jpg)"
]
}
],
"metadata": {
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/assignments/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
maxdepth: 1
caption: Assignments
---
Virtualship_research_proposal.ipynb
Research_proposal_intro.ipynb
Research_Proposal_only.ipynb
Virtualship_research_proposal.ipynb
sciencecommunication_assignment.ipynb
<!-- Sail_the_ship.ipynb -->
```
1 change: 1 addition & 0 deletions docs/user-guide/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
:maxdepth: 1

quickstart
teacher-content/index
tutorials/index
assignments/index
```
Expand Down
69 changes: 69 additions & 0 deletions docs/user-guide/teacher-content/ILOs.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "84d1c60b",
"metadata": {},
"source": [
"# Aligned learning outcomes\n",
"\n",
"_Aligned using the revised version of Blooms taxonomy (Anderson et al. 2001)_\n",
"\n",
"1. Identify practical challenges of planning sea-based research, such as:\n",
"\n",
"- Availability and capabilities of research vessels and equipment, e.g. ice breaker vessel needed, infrastructure for equipment available\n",
"- General logistics, e.g. transportation of container labs and other equipment\n",
"- Requesting permits\n",
" - Travel permits for staff\n",
" - Diplomatic clearance (EEZ)\n",
" - Customs documents\n",
"- Safety trainings (beforehand and onboard)\n",
"- Preparing, testing and transporting equipment\n",
"\n",
"2. Be aware of (describe) matters during sea-based research, such as:\n",
"\n",
"- Contingency due to weather conditions and other unforeseen circumstances\n",
"- The need to be flexible and patient\n",
"- Taking notes, recording coordinates, stations, casts\n",
"- Measurement protocols\n",
"- Communication with crew, e.g. captain, winch driver\n",
"- Living at sea, e.g. sea legs, seasickness, relaxation, water/energy/waste footprint\n",
"\n",
"3. Give examples of uncertainty and variability of sea-based observations, such as:\n",
"\n",
"- Likely errors or wrong values, and seeing the data through the noise\n",
"- Time and date coordinates, e.g. UTC, local time, ship time\n",
"- Variability and limitations of measurements\n",
"- Different scales of variability, e.g. tidal, seasonal\n",
"- ‘Synopticity’ of measurements (i.e. not possible to measure with one ship at multiple locations at the same time; therefore mixing time and space variability)\n",
"- Instrument specific qualities, e.g. ADCP reflection\n",
"\n",
"4. Learn how to analyse and interpret sea-based observations. Be able to:\n",
"\n",
"- Read in different data formats, e.g. nc, csv, zarr\n",
"- Manipulate arrays and other data structures in python\n",
"- Create and interpret density/TS profiles\n",
"- Create spatial temperature/salinity/velocity maps, do GIS things\n",
"- Interpret plots and deduce ocean circulation\n",
"- Report findings\n",
"- Contribute to a cruise report with pictures or plots\n",
"\n",
"5. Plan a research cruise. Be able to:\n",
"\n",
"- Formulate research questions\n",
"- Select sampling sites\n",
"- Consider the duration of deployments, e.g. time a CTD station takes\n",
"- Decide on on-site measurement order\n",
"- Plan rest/working shifts for scientific personnel\n",
"- Deal with contingency, e.g. consider what sites/measurements are essential, which are ok to skip"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
26 changes: 26 additions & 0 deletions docs/user-guide/teacher-content/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Teacher content

VirtualShip is used as part of the VirtualShip Classroom, that combines authentic tools with VR to create a virtual fieldwork experience and allows you to teach about sea-based research from your regular classroom.

All VirtualShip Classroom (VSC) material is open under an MIT licence and freely available! You can use the VSC to teach anything from a 4 hour masterclass up to an open assignment of more than 40 hours. Example assignments are available below and please feel free to customize anything offline or [contribute](../../contributing/index.md) to the assignments provided here.

Our core learning outcome is for students to appreciate the difficulty of measuring the ocean, making the VSC a valuable tool for students that will go into fieldwork, modelling or anything else. Additional Intended Learning Outcomes [(ILOs)](ILOs.md) were formulated in collaboration with ocean scientists from the Royal Netherlands Institute for Sea Research [(NIOZ)](https://www.nioz.nl/en) and Utrecht University [(UU)](https://www.uu.nl/en).

The 360 videos are available on our YouTube channel [**_@VirtualShip Classroom_**](https://www.youtube.com/@VirtualShipClassroom) and in high resolution upon request. The videos can be viewed in the classroom or at home using:

- VR Headsets – Wear a headset and look around naturally by moving your head.
- Smartphones/Tablets – Move your device or swipe the screen to explore.
- PC/Mac Browsers – Click and drag with your mouse to look around.

The VSC design focuses on creating didactically sound, authentic learning experiences grounded in established learning theories in science education, such as constructivism [(Piaget 1954)](https://doi.org/10.4324/9781315009650) and constructionism [(Papert 1980)](https://worrydream.com/refs/Papert_1980_-_Mindstorms,_1st_ed.pdf). By integrating realistic tasks and a gamified narrative approach within Jupyter notebooks, students learn within a digital replica of the real world, constructing knowledge through ‘learning by doing’ and ‘trial and error’ as they explore oceanography concepts, research methods, and analysis tools.

We evaluated in several (under)graduate courses and find that the VirtualShip Classroom is highly engaging, and students report on enhanced confidence and knowledge [(Daniels et al. 2025)](https://current-journal.com/articles/10.5334/cjme.121).

```{nbgallery}
---
maxdepth: 1
caption: Teaching material
---

ILOs.md
```
Loading
Loading