Skip to main content

An open-source Python package of the AlphaPept ecosystem

Project description

Pip installation GUI and PyPi releases

py_diAID

The Mann Labs at the Max Planck Institute of Biochemistry developed py_diAID, a tool that facilitates the generation of dia-PASEF and synchro-PASEF methods with an optimal window design. py_diAID, an abbreviation for Data-Independent Acquisition with an Automated Isolation Design, is available as an open-source Python and Graphical User Interface (GUI) package. To access all the hyperlinks in this document, please view it on GitHub.


About

Over the last few years, Data-Independent Acquisition (DIA) coupled with Parallel Accumulation – Serial Fragmentation (PASEF) has been gaining interest among proteomics researchers. The scan mode dia-PASEF offers comprehensive proteome coverage, a high degree of reproducibility, and quantitative accuracy while utilizing a much larger ion beam proportion than conventional DIA methods. Its successor, synchro-PASEF, enables the creation of methods with even shorter cycle times, improving quantitative accuracy while also being highly specific due to the linking of fragment signals with precursor masses. Existing tools generate dia-PASEF and synchro-PASEF methods with equidistant isolation widths and necessitate manual adjustment of the window design to the precursor density cloud.

We present py_diAID, a Python-based package for Data-Independent Acquisition providing Automated Isolation Design. py_diAID optimally generates dia-PASEF and synchro-PASEF methods and places them optimally within the m/z – ion mobility (IM) plane. Additionally, it can generate variable isolation widths aligned to the precursor density in m/z, facilitating short acquisition cycles while covering virtually the entire m/z-IM-range. Our findings indicate that methods created with py_diAID are advantageous for studying deep proteomes from cell lines, clinical samples with regular and very low sample input, as well as for exploring post-translational modifications such as phosphorylation.

py_diAID is an open-source Python package and also offers a Graphical User Interface (GUI). It was developed by the Mann Labs at the Max Planck Institute of Biochemistry. py_diAID is designed to generate dia-PASEF and synchro-PASEF methods with an optimal window design. Furthermore, it aids in quality control by assessing the precursor distribution in the m/z-IM plane and evaluating existing dia-PASEF and synchro-PASEF methods.


License

py_diAID was developed by the Mann Labs at the Max Planck Institute of Biochemistry and is freely available with an Apache License 2.0. External Python packages (available in the requirements folder) have their own licenses, which can be consulted on their respective websites.


Installation

py_diAID can be installed and used on the Windows operating system. There are three different types of installation possible:

  • One-click GUI installer: Choose this installation if you only want the GUI and/or keep things simple.
  • Pip installer: Choose this installation if you want to use py_diAID as a Python package in an existing Python 3.8 environment (e.g. a Jupyter notebook). If needed, the GUI and CLI can be installed with pip.
  • Developer installer: Choose this installation if you are familiar with CLI tools, conda, and Python. This installation allows access to all available features of py_diAID and even allows to modify its source code directly. Generally, the developer version of py_diAID outperforms the precompiled versions making this the installation of choice for high-throughput experiments.

One-click GUI

The GUI of py_diAID is a stand-alone tool that requires no knowledge of Python or CLI tools. Click on the link below to download the latest release for:

Older releases remain available on the release page, but no backward compatibility is guaranteed.

IMPORTANT: Please refer to the GUI manual for detailed instructions on installing and using the stand-alone py_diAID GUI.

Pip

py_diAID can be installed in an existing Python 3.8 environment with a single bash command. This bash command can also be run directly from within a Jupyter notebook by prepending it with a !:

pip install pydiaid

Installing py_diAID like this avoids conflicts when integrating it in other tools, as this does not enforce strict versioning of dependencies. However, if new versions of dependencies are released, they are not guaranteed to be fully compatible with py_diAID. While this should only occur in rare cases where dependencies are not backward compatible, you can always force py_diAID to use dependency versions that are known to be compatible with:

pip install "pydiaid[stable]"

NOTE: You might need to run pip install pip==21.0 before installing py_diAID like this. Also, note the double quotes ".

For those who are adventurous, it is also possible to directly install any branch (e.g. @development) with any extras (e.g. #egg=pydiaid[stable,development-stable]) from GitHub with e.g.

pip install "git+https://github.com/MannLabs/pydiaid.git@development#egg=pydiaid[stable,development-stable]"

Developer

py_diAID can also be installed in editable (i.e. developer) mode with a few bash commands. This allows to fully customize the software and even modify the source code to your specific needs. When an editable Python package is installed, its source code is stored in a transparent location of your choice. While optional, it is advised to first (create and) navigate to e.g. a general software folder:

mkdir ~/folder/where/to/install/software
cd ~/folder/where/to/install/software

The following commands assume you do not perform any additional cd commands anymore.

Next, download the py_diAID repository from GitHub either directly or with a git command. This creates a new py_diAID subfolder in your current directory.

git clone https://github.com/MannLabs/pydiaid.git

For any Python package, it is highly recommended to use a separate conda virtual environment, as otherwise dependency conflicts can occur with already existing packages.

conda create --name pydiaid python=3.8 -y
conda activate pydiaid

Finally, py_diAID and all its dependencies need to be installed. To take advantage of all features and allow development (with the -e flag), this is best done by also installing the development dependencies instead of only the core dependencies:

pip install -e "./pydiaid[development]"

By default this installs loose dependancies (no explicit versioning), although it is also possible to use stable dependencies (e.g. pip install -e "./pydiaid[stable,development-stable]").

By using the editable flag -e, all modifications to the py_diAID source code folder are directly reflected when running py_diAID. Note that the py_diAID folder cannot be moved and/or renamed if an editable version is installed.


Usage

There are two ways to use py_diAID:

NOTE: The first time you use a fresh installation of py_diAID, it is often relatively slow because some functions might still need compilation on your local operating system and architecture. Subsequent executions should be a lot faster.

GUI

If the GUI was not installed through a one-click GUI installer, it could be activated with the following bash command:

pydiaid gui

Note that this needs to be prepended with a ! when you want to run this from within a Jupyter notebook. When the command is run directly from the command-line, make sure you use the right environment (activate it with e.g. conda activate pydiaid or set an alias to the binary executable (can be obtained with where pydiaid or which pydiaid)).

IMPORTANT: Please refer to the GUI manual for detailed instructions on installing, troubleshooting, and using the stand-alone py_diAID GUI.

Python and Jupyter notebooks

py_diAID can be imported as a Python package into any Python script or notebook with the command import pydiaid.

An ‘nbs’ folder in the GitHub repository contains Jupyter Notebooks as tutorials on using py_diAID as a Python package.


Troubleshooting

In case of issues, check out the following links:

  • FAQ: This section provides answers to issues of general interest.
  • Issues: Try a few different search terms to find out if a similar problem has been encountered before.
  • Discussions: Check if your problem or feature request has been discussed earlier.

FAQ

  • Where to find test libraries? The py_diAID package includes test libraries for quick workflow testing. These can be found at: py_diAID installation directory\pydiaid\diapasef\static\AlphaPept_results.csv for dia-PASEF and py_diAID installation directory\pydiaid\synchropasef\static\evidence_MaxQuant_270223.txt for synchro-PASEF.
  • What is the best input for py_diAID method generation? In general, the best input for py_diAID method generation is dda-PASEF acquired with a wide ion mobility range, for instance, from 0.6-1.6. It provides a complete and unbiased view of the precursor cloud in m/z and the ion mobility plane. In contrast, the data collected with dia-PASEF will present a precursor cloud that is influenced by the position of their isolation windows. The dda-PASEF runs may be an analysis of a single-run representative of the study, or a fractionated peptide library. Both these approaches have yielded comparable isolation window schemes. Regardless of the strategy used, the most critical aspect is a precise ion mobility calibration.
  • Using DIA-NN results as input for py_diAID: Regular DIA-NN output information, which does not contain m/z information for precursors, is not suitable as an input for py_diAID. However, we have now included an option to load DIA-NN libraries. These libraries, generated during the analysis of single-runs, can serve as possible input for py_diAID.
  • How to specify multiple PTMs? The initial versions of py_diAID could only process one PTM or string input at a time. We have now updated it to allow for filtering of the input library for multiple PTMs. To do this, all PTMs need to be specified in a list of strings, for instance ["STY", "GlyGly"].

Citations

Check out the dia-PASEF publication and synchro-PASEF publication.


How to contribute

If you like this software, you can give us a star to boost our visibility! All direct contributions are also welcome. Feel free to post a new issue or clone the repository and create a pull request with a new branch. For even more interactive participation, check out the discussions and the Contributors License Agreement.


Changelog

See the HISTORY.md for a complete overview of the changes made in each version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydiaid-0.0.22.tar.gz (21.5 MB view details)

Uploaded Source

Built Distribution

pydiaid-0.0.22-py3-none-any.whl (21.5 MB view details)

Uploaded Python 3

File details

Details for the file pydiaid-0.0.22.tar.gz.

File metadata

  • Download URL: pydiaid-0.0.22.tar.gz
  • Upload date:
  • Size: 21.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pydiaid-0.0.22.tar.gz
Algorithm Hash digest
SHA256 9236e4c8f43e477186f33491d12c28366940067a037628fd61b7e49665c53182
MD5 04fb8faaf05b16a99a3ddc924087655c
BLAKE2b-256 845cfc553f3f29f3c9379dfcec7f1279613a97b18bdcfbd1460f05ca62785cc5

See more details on using hashes here.

File details

Details for the file pydiaid-0.0.22-py3-none-any.whl.

File metadata

  • Download URL: pydiaid-0.0.22-py3-none-any.whl
  • Upload date:
  • Size: 21.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pydiaid-0.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a93b7ad2ce59b93cf59e6b73026237daa238a95f3a75883d3ec723939b4496
MD5 709528b52e536946020debc2a5d48bc5
BLAKE2b-256 a6b2f191270b91187cdf531ffca3106ff9d1a200c56fa2078fcec16bbe9f1eb0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page