Package: proteusPy
SummaryproteusPyis a Python package specializing in the modeling and analysis of proteins of known structure with an emphasis on Disulfide bonds. This package reprises my molecular modeling programProteus, a structure-based program developed as part of my graduate thesis. The package relies on theTurtle3Dclass to create and manipulate local coordinate systems. It does this by implementing the functionsMove,Roll,Yaw,PitchandTurnfor movement in a three-dimensional space.  The initial implementation focuses on theDisulfideclass. The class implements methods to analyze the protein structure stabilizing element known as aDisulfide Bond. This class and its underlying methods are being used to perform a structural analysis of over 35,800 disulfide-bond containing proteins in the RCSB protein data bank (https://www.rcsb.org).General CapabilitiesInteractively display disulfides contained in the RCSB in a variety of display stylesCalculate geometric and energetic properties about these disulfidesCreate binary and sextant structural classes by characterizing the disulfide torsional angles intonclassesBuild idealized disulfide bonds from dihedral angle inputFind disulfide neighbors based on dihedral angle inputOverlap disulfides onto a common frame of reference for displayBuild protein backbones from backbone phi, psi dihedral angle templatesMore in developmentSeehttps://suchanek.github.io/proteusPy/proteusPy.htmlfor the API documentation with examples.RequirementsPC running MacOS, Linux, Windows with git, git-lfs and C compiler installed.8 GB RAM3 GB disk spaceInstallationIt's simplest to clone the repo via GitHub since it contains all of the notebooks, data and test programs. Installation includes installing my Biopython fork which is required to rebuild the database (this is not needed generally). I highly recommend using Miniforge since it includes mamba. The installation instructions below assume a clean install with no package manager or compiler installed.MacOS/LinuxInstall Miniforge:https://github.com/conda-forge/miniforge(existing Anaconda installations are fine but please install mamba)Install git-lfs:https://help.github.com/en/github/managing-large-files/installing-git-large-file-storageInstallmakeon your system.From a shell prompt while sitting in your repo dir:$gitclonehttps://github.com/suchanek/proteusPy.git$gitclonehttps://github.com/suchanek/biopython.git$cdproteusPy$git-lfstrack"*.csv""*.mp4""*.pkl"$makepkg$mambaactivateproteusPy$makeinstallWindowsInstall Miniforge:https://github.com/conda-forge/miniforge(existing Anaconda installations are fine but please install mamba)Install git for Windows and configure for Bash:https://git-scm.com/download/winInstall git-lfs:https://git-lfs.github.com/Install Visual Studio C++ development environment:https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170From an Anaconda Powershell prompt while sitting in your repo dir:$gitclonehttps://github.com/suchanek/proteusPy.git$gitclonehttps://github.com/suchanek/biopython.git$cdproteusPy$git-lfstrack"*.csv""*.mp4""*.pkl"$makepkg$mambaactivateproteusPy$makeinstallTestingI currently have docstring testing for the modules in place. To run themcdinto the repository and run:$maketestsThe modules will run their docstring tests and disulfide visualization windows will open. Simply close them. If all goes normally there will be no errors.General UsageOnce the package is installed one can use the existing notebooks for analysis of the RCSB Disulfide database.Thenotebooksdirectory contains all of my Jupyter notebooks and is a good place to start:Analysis_2q7q.ipynbprovides an example of visualizing the lowest energy Disulfide contained in the database and searching for nearest neighbors on the basis of conformational similarity.Theprogramssubdirectory contains the primary programs for downloading the RCSB disulfide-containing structure files:DisulfideDownloader.py: Downloads the raw RCSB structure files.DisulfideExtractor.py: Extracts the disulfides and creating the database loadersDisulfideClass_Analysis.py: Performs binary or sextant analysis on the disulfide database.The first time one loads the database viaLoad_PDB_SS()the system will attempt to download the full and subset database from Google Drive. If this fails the system will attempt to rebuild the database from the repo'sdatasubdirectory (not the package's). If you've downloaded from github this will work correctly. If you've installed from pyPi viapipit will fail.QuickstartAfter installation is complete launch jupyter lab:$jupyterlaband opennotebooks/Analysis_2q7q.ipynb. This notebook looks at the disulfide bond with the lowest energy in the entire database. There are several other notebooks in this directory that illustrate using the program. Some of these reflect active development work so may not be 'fully baked'.Visualizing Disulfides with pyVistaPyVista is an excellent 3D visualization framework and I've used it for the Disulfide visualization engine. It uses the VTK library on the back end and provides high-level access to 3d rendering. The menu strip provided in the Disulfide visualization windows allows the user to turn borders, rulers, bounding boxes on and off and reset the orientations. Please try them out! There is also a button forlocalvsserverrendering.Localrendering is usually much smoother. To manipulate:Click and drag your mouse to rotateUse the mouse wheel to zoom (3 finger zoom on trackpad)PerformanceManipulating and searching through long lists of disulfides can take time. I've added progress bars for many of these operations.Rendering many disulfides inpyvistacan also take time to load and may be slow to dispay in real time, depending on your hardware. I added optimization to reduce cylinder complexity as a function of total cylinders rendered, but it can still be less than perfect. The faster your GPU the better!Citing proteusPyThe proteusPy package was developed by Eric G. Suchanek, PhD. If you find it useful in your research and wish to cite it please use the following BibTeX entry:@software{proteusPy2024,
  author = {Eric G. Suchanek, PhD},
  title = {proteusPy: A Package for Modeling and Analyzing Proteins of Known Structure},
  year = {2024},
  publisher = {GitHub},
  version = {0.92},
  journal = {GitHub repository},
  url = {https://github.com/suchanek/proteusPy}
}Publicationshttps://doi.org/10.1021/bi00368a023https://doi.org/10.1021/bi00368a024https://doi.org/10.1016/0092-8674(92)90140-8http://dx.doi.org/10.2174/092986708783330566http://dx.doi.org/10.1111/j.1538-7836.2010.03894.x