Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages

, '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

Repository files navigation

Python Spectral Proper Orthogonal Decomposition

JOSS PaperSoftware LicensePyPI versionBuild Status

PySPOD: A parallel (distributed) Python SPOD package

What do we implement?

In this package we implement two versions of SPOD, both available as parallel and distributed (i.e. they can run on multiple cores/nodes on large-scale HPC machines) via mpi4py:

We additionally implement the calculation of time coefficients and the reconstruction of the data, given a set of modes $\phi$ and coefficients a, as explained in (Chu and Schmidt, 2021) and (Nekkanti and Schmidt, 2021). The library comes with a package to emulating the reduced space, that is to forecasting the time coefficients using neural networks, as described in Lario et al., 2022.

To see how to use the PySPOD package, you can look at the Tutorials.

For additional information, you can also consult the PySPOD website: http://www.mathexlab.com/PySPOD/.

How to cite this work

Current references to the PySPOD library is:

@article{rogowski2024unlocking,
title={Unlocking massively parallel spectral proper orthogonal decompositions in the PySPOD package},
author={Rogowski, Marcin and Yeung, Brandon CY and Schmidt, Oliver T and Maulik, Romit and Dalcin, Lisandro and Parsani, Matteo and Mengaldo, Gianmarco},
journal={Computer Physics Communications},
pages={109246},
year={2024},
publisher={Elsevier}
}
@article{mengaldo2021pyspod,
title={Pyspod: A python package for spectral proper orthogonal decomposition (spod)},
author={Mengaldo, Gianmarco and Maulik, Romit},
journal={Journal of Open Source Software},
volume={6},
number={60},
pages={2862},
year={2021}
}

What data can we apply SPOD to?

SPOD can be applied to wide-sense stationary data. Examples of these arise in different fields, including fluidmechanics, and weather and climate, among others.

How do I install the library?

If you want to download and install the latest version from main:

  • download the library
  • from the top directory of PySPOD, type
python3 setup.py install

To allow for parallel capabilities, you need to have installed an MPI distribution in your machine. Currently MPI distributions tested are Open MPI, and Mpich. Note that the library will still work in serial (no parallel capabilities), if you do not have MPI.

Recent works with PySPOD

Please, contact me if you used PySPOD for a publication and you want it to be advertised here.

Authors and contributors

PySPOD is currently developed and mantained by

  • G. Mengaldo, National University of Singapore (Singapore).

Current active contributors include:

  • M. Rogowski, King Abdullah University of Science and Technology (Saudi Arabia).
  • L. Dalcin, King Abdullah University of Science and Technology (Saudi Arabia).
  • R. Maulik, Argonne National Laboratory (US).
  • A. Lario, SISSA (Italy)

How to contribute

Contributions improving code and documentation, as well as suggestions about new features are more than welcome!

The guidelines to contribute are as follows:

  1. open a new issue describing the bug you intend to fix or the feature you want to add.
  2. fork the project and open your own branch related to the issue you just opened, and call the branch fix/name-of-the-issue if it is a bug fix, or feature/name-of-the-issue if you are adding a feature.
  3. ensure to use 4 spaces for formatting the code.
  4. if you add a feature, it should be accompanied by relevant tests to ensure it functions correctly, while the code continue to be developed.
  5. commit your changes with a self-explanatory commit message.
  6. push your commits and submit a pull request. Please, remember to rebase properly in order to maintain a clean, linear git history.

Contact us by email for further information or questions about PySPOD or ways on how to contribute.

License

See the LICENSE file for license rights and limitations (MIT).

About

A Python package for spectral proper orthogonal decomposition (SPOD).

Topics

Resources

Stars

128 stars

Watchers

6 watching

Forks

Releases

Contributors

Languages