diff --git a/README.md b/README.md index c9cd5187..8042303a 100644 --- a/README.md +++ b/README.md @@ -41,27 +41,30 @@ Main features: 📣 [Discussions](https://github.com/DeepRank/deeprank2/discussions) -## Table of contents +## Table of Contents - [DeepRank2](#deeprank2) - [Overview](#overview) - - [Table of contents](#table-of-contents) + - [Table of Contents](#table-of-contents) - [Installation](#installation) - [Containerized Installation](#containerized-installation) - - [Local/remote installation](#localremote-installation) - - [YML file installation (recommended)](#yml-file-installation-recommended) - - [Manual installation (customizable)](#manual-installation-customizable) - - [Testing DeepRank2 installation](#testing-deeprank2-installation) + - [Pull and Run the Pre-build Docker Image (Recommended)](#pull-and-run-the-pre-build-docker-image-recommended) + - [Build the Docker Image Manually](#build-the-docker-image-manually) + - [Removing the Docker Image](#removing-the-docker-image) + - [Local/remote Installation](#localremote-installation) + - [YML File Installation (Recommended)](#yml-file-installation-recommended) + - [Manual Installation (Customizable)](#manual-installation-customizable) + - [Testing DeepRank2 Installation](#testing-deeprank2-installation) - [Contributing](#contributing) - [Using DeepRank2](#using-deeprank2) - - [Data generation](#data-generation) + - [Data Generation](#data-generation) - [Datasets](#datasets) - [GraphDataset](#graphdataset) - [GridDataset](#griddataset) - [Training](#training) - - [Run a pre-trained model on new data](#run-a-pre-trained-model-on-new-data) - - [Computational performances](#computational-performances) - - [Package development](#package-development) + - [Run a Pre-trained Model on New Data](#run-a-pre-trained-model-on-new-data) + - [Computational Performances](#computational-performances) + - [Package Development](#package-development) ## Installation @@ -74,33 +77,59 @@ There are two ways to install DeepRank2: ### Containerized Installation -In order to try out the package without worrying about your OS and without the need of installing all the required dependencies, we created a `Dockerfile` that can be used for taking care of everything in a suitable container. +We provide a pre-built Docker image hosted on GitHub Packages, allowing you to use DeepRank2 without worrying about installing dependencies or configuring your system. This is the recommended method for trying out the package quickly. -For this, you first need to install [Docker](https://docs.docker.com/engine/install/) on your system. Then run the following commands. You may need to have sudo permission for some steps, in which case the commands below can be preceded by `sudo`: +#### Pull and Run the Pre-build Docker Image (Recommended) + +- Install [Docker](https://docs.docker.com/engine/install/) on your system, if not already installed. +- Pull the latest Docker image from GitHub Packages by running the following command: + +```bash +docker pull ghcr.io/deeprank/deeprank2:latest +``` + +- Run the container from the pulled image: + +```bash +docker run -p 8888:8888 ghcr.io/deeprank/deeprank2:latest +``` + +- Once the container is running, open your browser and navigate to `http://localhost:8888` to access the DeepRank2 application. + +From here, you can use DeepRank2, including running the tutorial notebooks. More details about the tutorials can be found [here](https://github.com/DeepRank/deeprank2/blob/main/tutorials/TUTORIAL.md). Note that the Docker container downloads only the raw PDB files required for the tutorials. To generate processed HDF5 files, you will need to run the `data_generation_xxx.ipynb` notebooks. Since Docker containers may have limited memory resources, we reduce the number of data points processed in the tutorials. To fully utilize the package, consider [installing it locally](#localremote-installation). + +#### Build the Docker Image Manually + +If you prefer to build the Docker image yourself or run into issues with the pre-built image, you can manually build and run the container as follows: + +- Install [Docker](https://docs.docker.com/engine/install/) on your system, if not already installed. +- Clone the DeepRank2 repository and navigate to its root directory: ```bash -# Clone the DeepRank2 repository and enter its root directory git clone https://github.com/DeepRank/deeprank2 cd deeprank2 +``` -# Build and run the Docker image +- Build and run the Docker image: + +```bash docker build -t deeprank2 . docker run -p 8888:8888 deeprank2 ``` -Next, open a browser and go to `http://localhost:8888` to access the application running inside the Docker container. From there you can use DeepRank2, e.g. to run the tutorial notebooks. +- Once the container is running, open your browser and navigate to `http://localhost:8888` to access the DeepRank2 application. -More details about the tutorials' contents can be found [here](https://github.com/DeepRank/deeprank2/blob/main/tutorials/TUTORIAL.md). Note that in the docker container only the raw PDB files are downloaded, which needed as a starting point for the tutorials. You can obtain the processed HDF5 files by running the `data_generation_xxx.ipynb` notebooks. Because Docker containers are limited in memory resources, we limit the number of data points processed in the tutorials. Please [install the package locally](#localremote-installation) to fully leverage its capabilities. +#### Removing the Docker Image -If after running the tutorials you want to remove the (quite large) Docker image from your machine, you must first [stop the container](https://docs.docker.com/engine/reference/commandline/stop/) and can then [remove the image](https://docs.docker.com/engine/reference/commandline/image_rm/). More general information about Docker can be found on the [official website docs](https://docs.docker.com/get-started/). +If you no longer need the Docker image (which can be quite large), you can remove it after stopping the container. Follow the [container stop instructions](https://docs.docker.com/engine/reference/commandline/stop/) and [remove the image](https://docs.docker.com/engine/reference/commandline/image_rm/). For more general information on Docker, refer to the [official Docker documentation](https://docs.docker.com/get-started/). -### Local/remote installation +### Local/remote Installation Local installation is formally only supported on the latest stable release of ubuntu, for which widespread automated testing through continuous integration workflows has been set up. However, it is likely that the package runs smoothly on other operating systems as well. Before installing DeepRank2 please ensure you have [GCC](https://gcc.gnu.org/install/) installed: if running `gcc --version` gives an error, run `sudo apt-get install gcc`. -#### YML file installation (recommended) +#### YML File Installation (Recommended) You can use the provided YML file for creating a [conda environment](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) via [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html), containing the latest stable release of DeepRank2 and all its dependencies. This will install the CPU-only version of DeepRank2 on Python 3.10. @@ -117,7 +146,7 @@ pip install deeprank2 We also provide a frozen environment YML file located at `env/deeprank2_frozen.yml` with all dependencies set to fixed versions. The `env/deeprank2_frozen.yml` file provides a frozen environment with all dependencies set to fixed versions. This ensures reproducibility of experiments and results by preventing changes in package versions that could occur due to updates or modifications in the default `env/deeprank2.yml`. Use this frozen environment file for a stable and consistent setup, particularly if you encounter issues with the default environment file. -#### Manual installation (customizable) +#### Manual Installation (Customizable) If you want to use the GPUs, choose a specific python version (note that at the moment we support python 3.10 only), are a MacOS user, or if the YML installation was not successful, you can install the package manually. We advise to do this inside a [conda virtual environment](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html). @@ -143,7 +172,7 @@ pip install -e .'[test]' The `test` extra is optional, and can be used to install test-related dependencies, useful during development. -#### Testing DeepRank2 installation +#### Testing DeepRank2 Installation If you have cloned the repository, you can check that all components were installed correctly using `pytest`. We especially recommend doing this in case you installed DeepRank2 and its dependencies manually (the latter option above). @@ -160,7 +189,7 @@ If you would like to contribute to the package in any way, please see [our guide The following section serves as a first guide to start using the package, using protein-protein Interface (PPI) queries as example. For an enhanced learning experience, we provide in-depth [tutorial notebooks](https://github.com/DeepRank/deeprank2/tree/main/tutorials) for generating PPI data, generating SVR data, and for the training pipeline. For more details, see the [extended documentation](https://deeprank2.rtfd.io/). -### Data generation +### Data Generation For each protein-protein complex (or protein structure containing a missense variant), a `Query` can be created and added to the `QueryCollection` object, to be processed later on. Two subtypes of `Query` exist: `ProteinProteinInterfaceQuery` and `SingleResidueVariantQuery`. @@ -370,7 +399,7 @@ trainer.test() ``` -#### Run a pre-trained model on new data +#### Run a Pre-trained Model on New Data If you want to analyze new PDB files using a pre-trained model, the first step is to process and save them into HDF5 files [as we have done above](#data-generation). @@ -404,7 +433,7 @@ trainer.test() For more details about how to run a pre-trained model on new data, see the [docs](https://deeprank2.readthedocs.io/en/latest/getstarted.html#run-a-pre-trained-model-on-new-data). -## Computational performances +## Computational Performances We measured the efficiency of data generation in DeepRank2 using the tutorials' [PDB files](https://zenodo.org/record/8187806) (~100 data points per data set), averaging the results run on Apple M1 Pro, using a single CPU. Parameter settings were: atomic resolution, `distance_cutoff` of 5.5 Å, radius (for SRV only) of 10 Å. The [features modules](https://deeprank2.readthedocs.io/en/latest/features.html) used were `components`, `contact`, `exposure`, `irc`, `secondary_structure`, `surfacearea`, for a total of 33 features for PPIs and 26 for SRVs (the latter do not use `irc` features). @@ -414,6 +443,6 @@ Parameter settings were: atomic resolution, `distance_cutoff` of 5.5 Å, radius | PPIs | graph only: **2.99** (std 0.23)
graph+grid: **11.35** (std 1.30) | graph only: **0.54** (std 0.07)
graph+grid: **16.09** (std 0.44) | | SRVs | graph only: **2.20** (std 0.08)
graph+grid: **2.85** (std 0.10) | graph only: **0.05** (std 0.01)
graph+grid: **17.52** (std 0.59) | -## Package development +## Package Development If you're looking for developer documentation, go [here](https://github.com/DeepRank/deeprank2/blob/dev/README.dev.md). diff --git a/docs/source/docking.md b/docs/source/docking.md index eb5f83ae..f7e05091 100644 --- a/docs/source/docking.md +++ b/docs/source/docking.md @@ -1,4 +1,4 @@ -# Docking scores +# Docking Scores The following scores have been developed for evaluating the quality of the protein-protein models produced by computational methods (docking models), and all of them compare the structural similarity between the decoys (computationally generated structures) and the experimentally solved native structures. To calculate these measures, the interface between the two interacting protein molecules is defined as any pair of heavy atoms from the two molecules within 5Ã… of each other. @@ -11,7 +11,7 @@ The following scores have been developed for evaluating the quality of the prote See https://onlinelibrary.wiley.com/doi/abs/10.1002/prot.10393 for more details about `capri_class`, `lrmsd`, `irmsd`, and `fnat`. See https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0161879 for more details about `dockq`. -## Compute and add docking scores +## Compute and Add Docking Scores The following code snippet shows an example of how to use deeprank2 to compute the docking scores for a given docking model, and how to add one of the scores (e.g., `dockq`) as a target to the already processed data. diff --git a/docs/source/features.md b/docs/source/features.md index 6fa59ea6..3271f6e9 100644 --- a/docs/source/features.md +++ b/docs/source/features.md @@ -2,7 +2,7 @@ Features implemented in the code-base are defined in `deeprank2.feature` subpackage. -## Custom features +## Custom Features Users can add custom features by cloning the repository, creating a new module and placing it in `deeprank2.feature` subpackage. The custom features can then be used by installing the package in editable mode (see [here](https://deeprank2.readthedocs.io/en/latest/installation.html#install-deeprank2) for more details). We strongly recommend submitting a pull request (PR) to merge the new feature into the official repository. @@ -77,15 +77,15 @@ dataset = GraphDataset( The following is a brief description of the features already implemented in the code-base, for each features' module. -## Default node features +## Default Node Features For atomic graphs, when features relate to residues then _all_ atoms of one residue receive the feature value for that residue. -### Core properties of atoms and residues: `deeprank2.features.components` +### Core Properties of Atoms and Residues: `deeprank2.features.components` These features relate to the chemical components (atoms and amino acid residues) of which the graph is composed. Detailed information and descrepancies between sources are described can be found in `deeprank2.domain.aminoacidlist.py`. -#### Atom properties: +#### Atom Properties: These features are only used in atomic graphs. @@ -93,7 +93,7 @@ These features are only used in atomic graphs. - `atom_charge`: Atomic charge in Coulomb (float). Taken from `deeprank2.domain.forcefield.patch.top`. - `pdb_occupancy`: Proportion of structures where the atom was detected at this position (float). In some cases a single atom was detected at different positions, in which case separate structures exist whose occupancies sum to 1. Only the highest occupancy atom is used by deeprank2. -#### Residue properties: +#### Residue Properties: - `res_type`: One-hot encoding of the amino acid residue (size 20). - `polarity`: One-hot encoding of the polarity of the amino acid (options: NONPOLAR, POLAR, NEGATIVE, POSITIVE). Note that sources vary on the polarity for few of the amino acids; see detailed information in `deeprank2.domain.aminoacidlist.py`. @@ -104,14 +104,14 @@ These features are only used in atomic graphs. - `hb_donors`, `hb_acceptors`: The number of hydrogen bond donor/acceptor atoms in the residue (int). Hydrogen bonds are noncovalent intermolecular interactions formed between an hydrogen atom (partially positively charged) bound to a small, highly electronegative atom (O, N, F) with an unshared electron pair. -#### Properties related to variant residues: +#### Properties Related to Variant Residues: These features are only used in SingleResidueVariant queries. - `variant_res`: One-hot encoding of variant amino acid (size 20). - `diff_charge`, `diff_polarity`, `diff_size`, `diff_mass`, `diff_pI`, `diff_hb_donors`, `diff_hb_acceptors`: Subtraction of the wildtype value of indicated feature from the variant value. For example, if the variant has 4 hb_donors and the wildtype has 5, then `diff_hb_donors == -1`. -### Conservation features: `deeprank2.features.conservation` +### Conservation Features: `deeprank2.features.conservation` These features relate to the conservation state of individual residues. @@ -120,36 +120,36 @@ These features relate to the conservation state of individual residues. - `conservation` (only used in SingleResidueVariant queries): Conservation of the wild type amino acid (float). _More details required._ - `diff_conservation` (only used in SingleResidueVariant queries): Subtraction of wildtype conservation from the variant conservation (float). -### Protein context features: +### Protein Context Features: -#### Surface exposure: `deeprank2.features.exposure` +#### Surface Exposure: `deeprank2.features.exposure` These features relate to the exposure of residues to the surface, and are computed using [biopython](https://biopython.org/docs/1.81/api/Bio.PDB.html). Note that these features can only be calculated per residue and not per atom. - `res_depth`: [Residue depth](https://en.wikipedia.org/wiki/Residue_depth) is the average distance (in Ã…) of the residue to the closest molecule of bulk water (float). See also [`Bio.PDB.ResidueDepth`](https://biopython.org/docs/1.75/api/Bio.PDB.ResidueDepth.html). - `hse`: [Half sphere exposure (HSE)](https://en.wikipedia.org/wiki/Half_sphere_exposure) is a protein solvent exposure measure indicating how buried an amino acid residue is in a protein (3 float values, see [Bio.PDB.HSExposure](https://biopython.org/docs/dev/api/Bio.PDB.HSExposure.html#module-Bio.PDB.HSExposure) for details). -#### Surface accessibility: `deeprank2.features.surfacearea` +#### Surface Accessibility: `deeprank2.features.surfacearea` These features relate to the surface area of the residue, and are computed using [freesasa](https://freesasa.github.io). Note that these features can only be calculated per residue and not per atom. - `sasa`: [Solvent-Accessible Surface Area](https://en.wikipedia.org/wiki/Accessible_surface_area) is the surface area (in Ã…^2) of a biomolecule that is accessible to the solvent (float). - `bsa`: Buried Surface Area is the surface area (in Ã…^2) that is buried away from the solvent when two or more proteins or subunits associate to form a complex, i.e. it measures the size of the complex interface (float). -#### Secondary structure: `deeprank2.features.secondary_structure` +#### Secondary Structure: `deeprank2.features.secondary_structure` - `sec_struct`: One-hot encoding of the [DSSP]() assigned secondary structure of the amino acid, using the three major classes (HELIX, STRAND, COIL). Calculated using [DSSP4](https://github.com/PDB-REDO/dssp). -#### Inter-residue contacts (IRCs): `deeprank2.features.irc` +#### Inter-residue Contacts (IRCs): `deeprank2.features.irc` These features are only calculated for ProteinProteinInterface queries. - `irc_total`: The number of residues on the other chain that are within a cutoff distance of 5.5 Ã… (int). - `irc_nonpolar_nonpolar`, `irc_nonpolar_polar`, `irc_nonpolar_negative`, `irc_nonpolar_positive`, `irc_polar_polar`, `irc_polar_negative`, `irc_polar_positive`, `irc_negative_negative`, `irc_positive_positive`, `irc_negative_positive`: As above, but for specific residue polarity pairings. -## Default edge features +## Default Edge Features -### Contact features: `deeprank2.features.contact` +### Contact Features: `deeprank2.features.contact` These features relate to relationships between individual nodes. For atomic graphs, when features relate to residues then _all_ atoms of one residue receive the feature value for that residue. @@ -166,7 +166,7 @@ These features relate to the structural relationship between nodes. - `same_res`: Boolean indicating whether atoms belong to the same residue (1) or separate residues (0). Only used in atomic graphs. - `covalent`: Boolean indicating whether nodes are covalently bound (1) or not (0). Note that covalency is not directly assessed, but any edge with a maximum distance of 2.1 Ã… is considered covalent. -#### Nonbond energies: +#### Nonbond Energies: These features measure nonbond energy potentials between nodes, and are calculated using [OPLS forcefield](https://en.wikipedia.org/wiki/OPLS). For residue graphs, the pairwise sum of potentials for all atoms from each residue is used. Note that no distance cutoff is used and the radius of influence is assumed to be infinite, although the potentials tends to 0 at large distance. Also edges are only assigned within a given cutoff radius when graphs are created. diff --git a/docs/source/getstarted.md b/docs/source/getstarted.md index cca87829..9c264df0 100644 --- a/docs/source/getstarted.md +++ b/docs/source/getstarted.md @@ -1,9 +1,9 @@ -# Get started +# Get Started The following section serves as a first guide to start using the package, using protein-protein interface (PPI) queries as example. For an enhanced learning experience, we provide in-depth [tutorial notebooks](https://github.com/DeepRank/deeprank2/tree/main/tutorials) for generating PPI data, generating SRVs data, and for the training pipeline. -## Data generation +## Data Generation For each protein-protein complex (or protein structure containing a missense variant), a `Query` can be created and added to the `QueryCollection` object, to be processed later on. Two subtypes of `Query` exist: `ProteinProteinInterfaceQuery` and `SingleResidueVariantQuery`. @@ -89,7 +89,7 @@ hdf5_paths = queries.process( grid_map_method = MapMethod.GAUSSIAN) ``` -## Data exploration +## Data Exploration As representative example, the following is the HDF5 structure generated by the previous phase for `1ATN_1w.pdb`, so for one single graph, for the graph + grid case: @@ -199,7 +199,7 @@ dataset_test = GraphDataset( ) ``` -#### Transforming features +#### Transforming Features For the `GraphDataset` class it is possible to define a dictionary to indicate which transformations to apply to the features, being the transformations lambda functions and/or standardization. If `True`, standardization is applied after transformation, if the latter is present. Example: @@ -360,7 +360,7 @@ trainer.test() ``` -### Results export and visualization +### Results Export and Visualization The user can specify a DeepRank2 exporter or a custom one in `output_exporters` parameter of the Trainer class, together with the path where to save the results. Exporters are used for storing predictions information collected later on during training and testing. Example: @@ -411,7 +411,7 @@ fig.update_layout( ) ``` -## Run a pre-trained model on new data +## Run a Pre-trained Model on New Data If you want to run a pre-trained model on new PDB files, the first step is to process and save them into HDF5 files. Let's suppose that the model has been trained with `ProteinProteinInterfaceQuery` queries mapped to graphs: diff --git a/docs/source/installation.md b/docs/source/installation.md index b945f260..904bb3ff 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -11,27 +11,53 @@ There are two ways to install DeepRank2: (containerized-installation)= -In order to try out the package without worrying about your OS and without the need of installing all the required dependencies, we created a `Dockerfile` that can be used for taking care of everything in a suitable container. +We provide a pre-built Docker image hosted on GitHub Packages, allowing you to use DeepRank2 without worrying about installing dependencies or configuring your system. This is the recommended method for trying out the package quickly. -For this, you first need to install [Docker](https://docs.docker.com/engine/install/) on your system. Then run the following commands. You may need to have sudo permission for some steps, in which case the commands below can be preceded by `sudo`: +### Pull and Run the Pre-build Docker Image (Recommended) + +- Install [Docker](https://docs.docker.com/engine/install/) on your system, if not already installed. +- Pull the latest Docker image from GitHub Packages by running the following command: + +```bash +docker pull ghcr.io/deeprank/deeprank2:latest +``` + +- Run the container from the pulled image: + +```bash +docker run -p 8888:8888 ghcr.io/deeprank/deeprank2:latest +``` + +- Once the container is running, open your browser and navigate to `http://localhost:8888` to access the DeepRank2 application. + +From here, you can use DeepRank2, including running the tutorial notebooks. More details about the tutorials can be found [here](https://github.com/DeepRank/deeprank2/blob/main/tutorials/TUTORIAL.md). Note that the Docker container downloads only the raw PDB files required for the tutorials. To generate processed HDF5 files, you will need to run the `data_generation_xxx.ipynb` notebooks. Since Docker containers may have limited memory resources, we reduce the number of data points processed in the tutorials. To fully utilize the package, consider [installing it locally](#localremote-installation). + +### Build the Docker Image Manually + +If you prefer to build the Docker image yourself or run into issues with the pre-built image, you can manually build and run the container as follows: + +- Install [Docker](https://docs.docker.com/engine/install/) on your system, if not already installed. +- Clone the DeepRank2 repository and navigate to its root directory: ```bash -# Clone the DeepRank2 repository and enter its root directory git clone https://github.com/DeepRank/deeprank2 cd deeprank2 +``` -# Build and run the Docker image +- Build and run the Docker image: + +```bash docker build -t deeprank2 . docker run -p 8888:8888 deeprank2 ``` -Next, open a browser and go to `http://localhost:8888` to access the application running inside the Docker container. From there you can use DeepRank2, e.g. to run the tutorial notebooks. +- Once the container is running, open your browser and navigate to `http://localhost:8888` to access the DeepRank2 application. -More details about the tutorials' contents can be found [here](https://github.com/DeepRank/deeprank2/blob/main/tutorials/TUTORIAL.md). Note that in the docker container only the raw PDB files are downloaded, which needed as a starting point for the tutorials. You can obtain the processed HDF5 files by running the `data_generation_xxx.ipynb` notebooks. Because Docker containers are limited in memory resources, we limit the number of data points processed in the tutorials. Please [install the package locally](#localremote-installation) to fully leverage its capabilities. +### Removing the Docker Image -If after running the tutorials you want to remove the (quite large) Docker image from your machine, you must first [stop the container](https://docs.docker.com/engine/reference/commandline/stop/) and can then [remove the image](https://docs.docker.com/engine/reference/commandline/image_rm/). More general information about Docker can be found on the [official website docs](https://docs.docker.com/get-started/). +If you no longer need the Docker image (which can be quite large), you can remove it after stopping the container. Follow the [container stop instructions](https://docs.docker.com/engine/reference/commandline/stop/) and [remove the image](https://docs.docker.com/engine/reference/commandline/image_rm/). For more general information on Docker, refer to the [official Docker documentation](https://docs.docker.com/get-started/). -## Local/remote installation +## Local/remote Installation (localremote-installation)= @@ -39,7 +65,7 @@ Local installation is formally only supported on the latest stable release of ub Before installing DeepRank2 please ensure you have [GCC](https://gcc.gnu.org/install/) installed: if running `gcc --version` gives an error, run `sudo apt-get install gcc`. -## YML file installation (recommended) +## YML File Installation (Recommended) You can use the provided YML file for creating a [conda environment](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) via [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html), containing the latest stable release of DeepRank2 and all its dependencies. This will install the CPU-only version of DeepRank2 on Python 3.10. @@ -56,7 +82,7 @@ pip install deeprank2 We also provide a frozen environment YML file located at `env/deeprank2_frozen.yml` with all dependencies set to fixed versions. The `env/deeprank2_frozen.yml` file provides a frozen environment with all dependencies set to fixed versions. This ensures reproducibility of experiments and results by preventing changes in package versions that could occur due to updates or modifications in the default `env/deeprank2.yml`. Use this frozen environment file for a stable and consistent setup, particularly if you encounter issues with the default environment file. -## Manual installation (customizable) +## Manual Installation (Customizable) (manual-installation)= @@ -84,7 +110,7 @@ pip install -e .'[test]' The `test` extra is optional, and can be used to install test-related dependencies, useful during development. -## Testing DeepRank2 installation +## Testing DeepRank2 Installation If you have cloned the repository, you can check that all components were installed correctly using `pytest`. We especially recommend doing this in case you installed DeepRank2 and its dependencies manually (the latter option above).