[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon - #220

Closed
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon
Closed

[DO NOT MERGE] Parcels-v4 integration for EDITO hackathon#220
erikvansebille wants to merge 47 commits into
mainfrom
edito-hackathon

Conversation

@erikvansebille

@erikvansebilleerikvansebille commented Oct 23, 2025

Copy link
Copy Markdown
Member

This PR implements some changes needed to get virtualshipcode to run with parcels v4, as part of the EDITO Model Lab hackathon. It is not aligned with the v1-refactoring/development though, so better to not merge. Also, better to manually copy some of the changes here to a new PR for proper v4-integration later, when Parcels-v4 is out of alpha stage

Perhaps the most important aspect is the creation of the FieldSet, which is surprisingly clean:

dso=xr.open_mfdataset([filenames["U"], filenames["T"], filenames["S"]])
dso["depth"] =-dso["depth"]
dso=dso.reindex(depth=dso.depth[::-1])
dso=dso.rename({"so": "S", "thetao": "T"})
dso.time.attrs["axis"] ="T"
dsb=xr.open_dataset(filenames["bathymetry"]).rename_vars({"deptho": "bathymetry"})
dsb["bathymetry"] =-dsb["bathymetry"]
ds=xr.merge([dso, dsb], join="inner")
fieldset=FieldSet.from_copernicusmarine(ds)

Also note that, during this attempt to integrate virtualship and Parcels-v4, we also found some bugs/issues in Parcels-v4 itself: Parcels-code/Parcels#2348

j-atkinsand others added 30 commits October 21, 2025 13:38
Consolidates/unifies the old dual ship_config.yaml and schedule.yaml config files into one expedition.yaml file, in line with v1 dev objectives.
Fix unnecessarily divergent branches.
…ls dependency from parcels-v4 branch on github
- Define workspace with VirtualShip name and pixi-build preview
- Configure multiple test environments (py310, py311, py312)
- Set up feature environments for docs, typing, and pre-commit
- Define pixi tasks for tests, docs, linting, and type checking
- Align dependencies with existing pyproject.toml
- Replace mamba-org/setup-micromamba with prefix-dev/setup-pixi
- Update test job to use pixi environments (test-py310, test-py312)
- Update typechecking job to use pixi run typing
- Enable pixi caching for faster CI runs
- Simplify workflow by removing manual dependency installation
- Replace Conda-based development setup with Pixi
- Add comprehensive Pixi workflows section with examples
- Document testing, docs, and code quality commands
- Include tips for environment management and CI reproduction
- Update dependency management instructions to reference pixi.toml
Add Pixi badge to indicate project uses Pixi for environment management
Environment management is now handled by pixi.toml. The environment.yml
file is no longer needed as all dependencies are defined in pixi.toml.
@erikvansebille
erikvansebille changed the base branch from main to v1-devOctober 23, 2025 09:14
@j-atkinsj-atkins changed the title Edito hackathonEdito hackathon (Parcels v4)Oct 27, 2025
@erikvansebilleerikvansebille changed the title Edito hackathon (Parcels v4)[DP NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@erikvansebille
erikvansebille marked this pull request as draft October 27, 2025 15:45
@erikvansebilleerikvansebille changed the title [DP NOT MERGE] Parcels-v4 integration for EDITO hackathon[DO NOT MERGE] Parcels-v4 integration for EDITO hackathonOct 27, 2025
@j-atkinsj-atkins mentioned this pull request Nov 19, 2025
Base automatically changed from v1-dev to mainNovember 21, 2025 09:10
@j-atkins

Copy link
Copy Markdown
Collaborator

Draft PR targeting migration to Parcels v4 has continued in #342, so I suggest we close this PR (where the Parcels v4 API is no longer up to date)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@erikvansebille@j-atkins@VeckoTheGecko