Repository files navigation

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

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

Pty-chi Logo

Welcome to the repository of Pty-chi, a PyTorch-based ptychography reconstruction library!

Installation

We recommend using uv for environment and package management. uv is a modern lightweight package manager for Python featuring fast speed and deterministic builds. When creating a uv virtual environment, the environment directory and all the packages installed in it are kept in the current working directory.

Standard installation

If you are adding Pty-Chi to a uv-managed project, use:

uv add ptychi

If you are installing Pty-Chi into an existing uv virtual environment that is not managed as a uv project, use:

uv pip install ptychi

Pty-Chi provides uv extras to select a PyTorch build:

  • cpu: CPU-only PyTorch build.
  • cuda126: PyTorch build with CUDA 12.6.
  • cuda132: PyTorch build with CUDA 13.2.
  • rocm72: PyTorch build with ROCm 7.2 on Linux.

For example:

uv add "ptychi[cuda132]"

or:

uv pip install "ptychi[cpu]"

If you are not using uv, install the default build from PyPI with:

pip install ptychi

Developer installation

Use developer installation when you want to modify the code and test the changes, or when you run into build issues that drive you to install the package from source.

First cd into the root level of your local clone of Pty-Chi, and then create a new uv virtual environment with Python 3.11:

uv venv --python 3.11

Then install Pty-Chi and its dependencies using:

uv sync

You can select a PyTorch build with the same extras used for standard installation. For example:

uv sync --extra cpu
uv sync --extra cuda126
uv sync --extra cuda132
uv sync --extra rocm72

You can now run scripts inside the project directory with:

uv run <script.py>

without activating the environment. Alternatively, you can activate the environment with:

source .venv/bin/activate

and then run scripts with:

python <script.py>

This allows you to run scripts located anywhere in your system.

How to run test scripts

  1. Contact the developers to be given access to the APS GitLab repository that holds test data. You need to have an account on APS GitLab.
  2. After gaining access, clone the GitLab data repository to your hard drive.
  3. Set PTYCHO_CI_DATA_DIR to the ci_data directory of the data repository: export PTYCHO_CI_DATA_DIR="path_to_data_repo/ci_data".
  4. Run any test scripts in tests with Python.

To use non-Nvidia GPUs

Pty-Chi works on GPUs from different vendors than NVidia. For example, Intel. To run Pty-Chi with Intel GPUs, add these lines right after importing torch and ptychi:

torch.set_default_device("xpu")
ptychi.device.set_torch_accelerator_module(torch.xpu)

Reading documentations

Pty-Chi's documentation is hosted on Read the Docs.

You can also build the docs and view them in your browser locally. To build the docs, install the dependencies as the first step:

pip install -r docs/requirements.txt

Then:

cd docs
make html

You can then view the docs by opening docs/build/html/index.html in your browser.

Developer's Guide

Please refer to the developer's guide in the Wiki page for more information on how to contribute to the project.

🛑 For major changes such as adding a new reconstructor or those involving extensive structural changes to the codebase, please first discuss with the maintainers by creating an issue. Consider creating a new package inheriting Pty-Chi's reconstructors and data structures for experimental features and algorithms. SeeDeveloper’s guide: Extending Pty-Chi with external algorithm packages.

Citation

If Pty-Chi is useful for your research, please consider citing the following paper:

@misc{ptychi_2025_arxiv,
title = {Pty-Chi: A PyTorch-based modern ptychographic data analysis package},
author = {Ming Du and Hanna Ruth and Steven Henke and Yi Jiang and Viktor Nikitin and Ashish Tripathi and Junjing Deng and Jeffrey Klug and Peco Myint and Tao Zhou and Nicholas Schwarz and Mathew Cherukara and Alec Sandy and Stefan Vogt},
year = {2025},
eprint = {2510.20929},
archivePrefix = {arXiv},
primaryClass = {physics.optics},
url = {https://arxiv.org/abs/2510.20929},
}

Releases

Packages

Used by

Contributors

Languages