diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/index.md b/education/HADDOCK3/HADDOCK3-protein-protein-basic/index.md
new file mode 100644
index 000000000..0e32ce34a
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/index.md
@@ -0,0 +1,1544 @@
+---
+layout: page
+title: "Protein-Protein modelling tutorial using a local version of HADDOCK3"
+excerpt: "A tutorial describing the use of HADDOCK3 to model a Protein-Protein complex"
+tags: [HADDOCK, HADDOCK3, installation, preparation, proteins, docking, analysis, workflows]
+image:
+ feature: pages/banner_education-thin.jpg
+---
+This tutorial consists of the following sections:
+
+* table of contents
+{:toc}
+
+
+
+
+## Introduction
+
+This tutorial demonstrates the use of the new modular HADDOCK3 version for predicting the structure of a protein-protein complex from NMR chemical shift perturbation (CSP) data.
+Namely, we will dock two E. coli proteins involved in glucose transport: the glucose-specific enzyme IIA (E2A) and the histidine-containing phosphocarrier protein (HPr).
+The structures in the free form have been determined using X-ray crystallography (E2A) (PDB ID [1F3G](https://www.ebi.ac.uk/pdbe/entry/pdb/1f3g){:target="_blank"})
+and NMR spectroscopy (HPr) (PDB ID [1HDN](https://www.ebi.ac.uk/pdbe/entry/pdb/1hdn){:target="_blank"}).
+The structure of the native complex has also been determined with NMR (PDB ID [1GGR](https://www.ebi.ac.uk/pdbe/entry/pdb/1ggr){:target="_blank"}).
+These NMR experiments have also provided us with an array of data on the interaction itself
+(chemical shift perturbations, intermolecular NOEs, residual dipolar couplings, and simulated diffusion anisotropy data), which will be useful for the docking.
+For this tutorial, we will only make use of inteface residues identified from NMR chemical shift perturbation data as described
+in [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}.
+
+Throughout the tutorial, colored text will be used to refer to questions or instructions, and/or PyMOL commands.
+
+This is a question prompt: try answering it!
+This an instruction prompt: follow it!
+This is a PyMOL prompt: write this in the PyMOL command line prompt!
+This is a Linux prompt: insert the commands in the terminal!
+
+
+
+
+## Setup/Requirements
+
+In order to follow this tutorial you will need to work on a Linux or MacOSX
+system. We will also make use of [**PyMOL**][link-pymol] (freely available for
+most operating systems) in order to visualize the input and output data. We will
+provide you links to download the various required software and data.
+
+Further we are providing pre-processed PDB files for docking and analysis (but the
+preprocessing of those files will also be explained in this tutorial). The files have been processed
+to facilitate their use in HADDOCK and for allowing comparison with the known reference
+structure of the complex. For this _download and unzip the following_
+[zip archive](){:target="_blank"}
+_and note the location of the extracted PDB files in your system_. In it you should find the following directories:
+
+* `haddock3`: Contains HADDOCK3 configuration and job files for the various scenarios in this tutorial
+* `pdbs`: Contains the pre-processed PDB files
+* `plots`: Contains pre-generated html plots for the various scenarios in this tutorial
+* `restraints`: Contains the interface information and the correspond restraint files for HADDOCK
+* `runs`: Contains pre-calculated (partial) run results for the various scenarios in this tutorial
+* `scripts`: Contains a variety of scripts used in this tutorial
+
+
+
+
+
+## HADDOCK general concepts
+
+HADDOCK (see [https://www.bonvinlab.org/haddock3-user-manual/](https://www.bonvinlab.org/haddock3-user-manual/){:target="_blank"})
+is a collection of python scripts derived from ARIA ([https://aria.pasteur.fr](https://aria.pasteur.fr){:target="_blank"})
+that harness the power of CNS (Crystallography and NMR System – [https://cns-online.org](https://cns-online.org){:target="_blank"})
+for structure calculation of molecular complexes. What distinguishes HADDOCK from other docking software is its ability,
+inherited from CNS, to incorporate experimental data as restraints and use these to guide the docking process alongside
+traditional energetics and shape complementarity. Moreover, the intimate coupling with CNS endows HADDOCK with the
+ability to actually produce models of sufficient quality to be archived in the Protein Data Bank.
+
+A central aspect to HADDOCK is the definition of Ambiguous Interaction Restraints or AIRs (see [https://www.bonvinlab.org/haddock3-user-manual/intro_restraints.html](https://www.bonvinlab.org/haddock3-user-manual/intro_restraints.html#ambiguous-distance-restraints)). These allow the
+translation of raw data such as NMR chemical shift perturbation or mutagenesis experiments into distance
+restraints that are incorporated in the energy function used in the calculations. AIRs are defined through
+a list of residues that fall under two categories: active and passive. Generally, active residues are those
+of central importance for the interaction, such as residues whose knockouts abolish the interaction or those
+where the chemical shift perturbation is higher. Throughout the simulation, these active residues are
+restrained to be part of the interface, if possible, otherwise incurring in a scoring penalty. Passive residues
+are those that contribute for the interaction, but are deemed of less importance. If such a residue does
+not belong in the interface there is no scoring penalty. Hence, a careful selection of which residues are
+active and which are passive is critical for the success of the docking.
+
+
+
+
+
+## A brief introduction to HADDOCK3
+
+
+HADDOCK3 is the next generation integrative modelling software in the
+long-lasting HADDOCK project. It represents a complete rethinking and rewriting
+of the HADDOCK2.X series, implementing a new way to interact with HADDOCK and
+offering new features to users who can now define custom workflows.
+
+In the previous HADDOCK2.x versions, users had access to a highly
+parameterisable yet rigid simulation pipeline composed of three steps:
+`rigid-body docking (it0)`, `semi-flexible refinement (it1)`, and `final refinement (itw)`.
+
+
+
+
+
+In HADDOCK3, users have the freedom to configure docking workflows into
+functional pipelines by combining the different HADDOCK3 modules, thus
+adapting the workflows to their projects. HADDOCK3 has therefore developed to
+truthfully work like a puzzle of many pieces (simulation modules) that users can
+combine freely. To this end, the “old” HADDOCK machinery has been modularized,
+and several new modules added, including third-party software additions. As a
+result, the modularization achieved in HADDOCK3 allows users to duplicate steps
+within one workflow (e.g., to repeat twice the `it1` stage of the HADDOCK2.x
+rigid workflow).
+
+Note that, for simplification purposes, at this time, not all functionalities of
+HADDOCK2.x have been ported to HADDOCK3, which does not (yet) support NMR RDC,
+PCS and diffusion anisotropy restraints, cryo-EM restraints and coarse-graining.
+Any type of information that can be converted into ambiguous interaction
+restraints can, however, be used in HADDOCK3, which also supports the
+*ab initio* docking modes of HADDOCK.
+
+
+
+
+
+To keep HADDOCK3 modules organized, we catalogued them into several
+categories.
+The main module categories are "topology", "sampling", "refinement",
+"scoring", and "analysis". There is no limit to how many modules can belong to a
+category. Modules are added as developed, and new categories will be created
+if/when needed. You can access the HADDOCK3 documentation page for the list of
+all categories and modules. Below is a summary of the available modules:
+
+* **Topology modules**
+ * `topoaa`: *generates the all-atom topologies for the CNS engine.*
+* **Sampling modules**
+ * `rigidbody`: *Rigid body energy minimization with CNS (`it0` in haddock2.x).*
+ * `lightdock`: *Third-party glow-worm swam optimization docking software.*
+* **Model refinement modules**
+ * `flexref`: *Semi-flexible refinement using a simulated annealing protocol through molecular dynamics simulations in torsion angle space (`it1` in haddock2.x).*
+ * `emref`: *Refinement by energy minimisation (`itw` EM only in haddock2.4).*
+ * `mdref`: *Refinement by a short molecular dynamics simulation in explicit solvent (`itw` in haddock2.X).*
+ * `openmm`: *Molecular Dynamics refinement module.*
+* **Scoring modules**
+ * `emscoring`: *scoring of a complex performing a short EM (builds the topology and all missing atoms).*
+ * `mdscoring`: *scoring of a complex performing a short MD in explicit solvent + EM (builds the topology and all missing atoms).*
+ * `prodigyligand`: *performs the scoring of input complexes using PRODIGY-ligand. It predicts deltaG of the complex and can return predictions as either deltaG or pKd values.*
+ * `prodigyprotein`: *performs the scoring of input complexes using PRODIGY (protein). It predicts deltaG of the complex and can return predictions as either deltaG or pKd values.*
+ * `sasascore`: *solvent accessibility analysis based on some user-defined residues that should be buried or accessible.*
+* **Analysis modules**
+ * `caprieval`: *Calculates CAPRI metrics (i-RMSD, l-RMSD, Fnat, DockQ) with respect to the top scoring model or reference structure if provided.*
+ * `clustfcc`: *Clusters models based on the fraction of common contacts (FCC)*
+ * `clustrmsd`: *Clusters models based on pairwise RMSD matrix calculated with the `rmsdmatrix` module.*
+ * `rmsdmatrix`: *Calculates the pairwise RMSD matrix between all the models generated in the previous step.*
+ * `ilrmsdmatrix`: *calculates of the interface-ligand RMSD (ilRMSD) matrix between all the models generated in the previous step.*
+ * `seletop`: *Selects the top N models from the previous step.*
+ * `seletopclusts`: *Selects top N clusters from the previous step.*
+ * `alascan`: *For each model, the module will mutate the interface residues and calculate the energy differences between the wild type and the mutant, thus providing a measure of the impact of such mutation.*
+ * `contactmap`: *aims at generating heatmaps and chordcharts of the contacts observed in the input complexes.*
+* **Extra modules**
+ * `exit`: *Stop the workflow when this module is reached.*
+
+The HADDOCK3 workflows are defined in simple configuration text files, similar to the TOML format but with extra features.
+Contrarily to HADDOCK2.X which follows a rigid (yet highly parameterisable)
+procedure, in HADDOCK3, you can create your own simulation workflows by
+combining a multitude of independent modules that perform specialized tasks.
+
+
+
+
+
+## Software requirements
+
+
+### Installing HADDOCK3
+
+In this tutorial we will make use of the HADDOCK3 version. In case HADDOCK3
+is not pre-installed in your system you will have to install it.
+
+To obtain HADDOCK3, fill the [registration form](https://docs.google.com/forms/d/e/1FAIpQLScDcd0rWtuzJ_4nftkDAHoLVwr1IAVwNJGhbaZdTYZ4vWu25w){:target="_blank"}, navigate to [its repository][haddock-repo]{:target="_blank"}, and then follow the [installation instructions](https://www.bonvinlab.org/haddock3-user-manual/install.html){:target="_blank"}.
+
+
+### Auxiliary software
+
+**[PDB-tools][link-pdbtools]**: A useful collection of Python scripts for the
+manipulation (renumbering, changing chain and segIDs...) of PDB files is freely
+available from our GitHub repository. `pdb-tools` is automatically installed
+with HADDOCK3. If you have activated the HADDOCK3 Python environment you have
+access to the pdb-tools package.
+
+**[PyMol][link-pymol]**: We will make use of PyMol for visualization. If not
+already installed on your system, download and install PyMol.
+
+
+
+
+
+## Preparing PDB files for docking
+
+In this section we will prepare the PDB files of the two proteins for docking.
+Crystal structures are available from the [PDBe database](https://www.pdbe.org){:target="_blank"}.
+Throughout this step, we will use `pdb-tools` from the command line.
+
+_**Note**_ that `pdb-tools` is also available as a [web service](https://wenmr.science.uu.nl/pdbtools/){:target="_blank"}.
+
+
+_**Note**_: Before starting to work on the tutorial, make sure to activate haddock3 (follow the workshop-specific instructions above), or, e.g. if installed using `conda`
+
+
+conda activate haddock3
+
+
+
+
+
+### Inspecting and preparing E2A for docking
+
+We will now inspect the E2A structure. For this start PyMOL and in the command line window of PyMOL (indicated by PyMOL>) type:
+
+
+fetch 1F3G
+show cartoon
+hide lines
+show sticks, resn HIS
+
+
+You should see a backbone representation of the protein with only the histidine side-chains visible.
+Try to locate the histidines in this structure.
+
+Is there any phosphate group present in this structure?
+
+Note that you can zoom on the histidines by typing in PyMOL:
+
+zoom resn HIS
+
+Revert to a full view with:
+
+zoom vis
+
+As a preparation step before docking, it is advised to remove any irrelevant water and other small molecules (e.g. small molecules from the crystallisation buffer), however do leave relevant co-factors if present. For E2A, the PDB file only contains water molecules. You can remove those in PyMOL by typing:
+
+remove resn HOH
+
+Now let us vizualize the residues affected by binding as identified by NMR. From [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"} the following residues of E2A were identified has having significant chemical shift perturbations:
+
+38,40,45,46,69,71,78,80,94,96,141
+
+We will now switch to a surface representation of the molecule and highlight the NMR-defined interface. In PyMOL type the following commands:
+
+
+color white, all
+show surface
+select e2a_active, (1F3G and resi 38,40,45,46,69,71,78,80,94,96,141)
+color red, e2a_active
+
+
+
+
+
+
+Inspect the surface.
+
+Do the identified residues form a well defined patch on the surface?
+Do they form a contiguous surface?
+
+The answer to the last question should be no: We can observe residue in the center of the patch that do not seem significantly affected while still being in the middle of the defined interface. This is the reason why in HADDOCK we also define "*passive*" residues that correspond to surface neighbors of active residues. These can be selected manually, or more conveniently you can let the HADDOCK server do it for you (see [Setting up the docking run](#setting-up-the-docking-run) below).
+
+As final step save the molecule as a new PDB file which we will call: *e2a_1F3G.pdb*
+For this in the PyMOL menu on top select:
+
+File -> Export molecule...
+Click on the save button
+Select as ouptut format PDB (*.pdb *.pdb.gz)
+Name your file *e2a_1F3G.pdb* and note its location
+
+After saving the molecule delete it from the Pymol window or close Pymol. You can remove the molecule by typing this into the command line window of PyMOL:
+
+
+delete 1F3G
+
+
+In a terminal, make sure that E2A chain is A.
+
+
+pdb_chain -A e2a_1F3G.pdb | pdb_chainxseg > e2a_1F3G_clean.pdb
+
+
+This will be usefull in the docking phase, as HADDOCK3 needs different chain associated to each protein involved in the docking.
+
+
+
+### Adding a phosphate group
+
+Since the biological function of this complex is to transfer a phosphate group from one protein to another, via histidines side-chains, it is relevant to make sure that a phosphate group be present for docking. As we have seen above none is currently present in the PDB files. HADDOCK does support a list of modified amino acids which you can find at the following link: [https://wenmr.science.uu.nl/haddock2.4/library](https://wenmr.science.uu.nl/haddock2.4/library){:target="_blank"}.
+
+Check the list of supported modified amino acids.
+What is the proper residue name for a phospho-histidine in HADDOCK?
+
+In order to use a modified amino-acid in HADDOCK, the only thing you will need to do is to edit the PDB file and change the residue name of the amino-acid you want to modify. Don not bother deleting irrelevant atoms or adding missing ones, HADDOCK will take care of that. For E2A, the histidine that is phosphorylated has residue number 90. In order to change it to a phosphorylated histidine do the following:
+
+Edit the PDB file (*e2a_1F3G_clean.pdb*) in your favorite text editor
+Change the name of histidine 90 to NEP
+Save the file (as simple text file) under a new name, e.g. *e2aP_1F3G.pdb*
+
+**Note:** The same procedure can be used to introduce a mutation in an input protein structure.
+
+
+
+
+### Inspecting and preparing HPR for docking
+
+We will now inspect the HPR structure. For this start PyMOL and in the command line window of PyMOL type:
+
+
+fetch 1HDN
+show cartoon
+hide lines
+
+
+Since this is an NMR structure it does not contain any water molecules and we don't need to remove them.
+
+Let's vizualize the residues affected by binding as identified by NMR. From [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"} the following residues were identified has having significant chemical shift perturbations:
+
+15,16,17,20,48,49,51,52,54,56
+
+We will now switch to a surface representation of the molecule and highlight the NMR-defined interface. In PyMOL type the following commands:
+
+
+color white, all
+show surface
+select hpr_active, (1HDN and resi 15,16,17,20,48,49,51,52,54,56)
+color red, hpr_active
+
+
+Again, inspect the surface.
+
+Do the identified residues form a well defined patch on the surface?
+Do they form a contiguous surface?
+
+Now since this is an NMR structure, it actually consists of an ensemble of models. HADDOCK can handle such ensemble, using each conformer in turn as starting point for the docking. We however recommend to limit the number of conformers used for docking, since the number of conformer combinations of the input molecules might explode (e.g. 10 conformers each will give 100 starting combinations and if we generate 1000 ridig body models (see [HADDOCK general concepts](#haddock-general-concepts) above) each combination will only be sampled 10 times).
+
+Now let's vizualise this NMR ensemble. In PyMOL type:
+
+
+hide all
+show ribbon
+set all_states, on
+
+
+You should now be seing the 30 conformers present in this NMR structure. To illustrate the potential benefit of using an ensemble of conformations as starting point for docking let's look at the side-chains of the active residues:
+
+
+show lines, hpr_active
+
+
+
+
+
+
+You should be able to see the amount of conformational space sampled by those surface side-chains. You can clearly see that some residues do sample a large variety of conformations, one of which might lead to much better docking results.
+
+**Note:** Pre-sampling of possible conformational changes can thus be beneficial for the docking, but again do limit the number of conformers used for the docking (or increase the number of sampled models, which is possible for users with expert- or guru-level access. The default access level is however only easy - for a higher level access do request it after registration).
+
+As final step, save the molecule as a new PDB file which we will call: *hpr-ensemble.pdb*
+For this in the PyMOL menu select:
+
+File -> Export molecule...
+Select as State 0 (all states)
+Click on Save...
+Select as ouptut format PDB (*.pdb *.pdb.gz)
+Name your file *hpr-ensemble.pdb* and note its location
+
+
+In a terminal, make sure that hpr chain is B.
+
+
+pdb_chain -B hpr-ensemble.pdb | pdb_chainxseg > hpr-ensemble_clean.pdb
+
+
+This will be usefull in the docking phase, as HADDOCK3 needs different chain associated to each protein involved in the docking.
+
+
+
+
+
+## Defining restraints for docking
+
+Before setting up the docking we need first to generate distance restraint files
+in a format suitable for HADDOCK. HADDOCK uses [CNS][link-cns]{:target="_blank"} as computational
+engine. A description of the format for the various restraint types supported by
+HADDOCK can be found in our [Nature Protocol][nat-pro]{:target="_blank"} paper, Box 4.
+
+Distance restraints are defined as:
+
+
+
+The lower limit for the distance is calculated as: distance minus lower-bound
+correction and the upper limit as: distance plus upper-bound correction. The
+syntax for the selections can combine information about chainID - `segid`
+keyword -, residue number - `resid` keyword -, atom name - `name` keyword.
+Other keywords can be used in various combinations of OR and AND statements.
+Please refer for that to the [online CNS manual](http://cns-online.org/v1.3/){:target="_blank"}.
+
+
+
+### Defining active and passive residues for E2A
+
+As stated before, the following residues were identified has having significant chemical shift perturbations from [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}:
+
+38,40,45,46,69,71,78,80,94,96,141
+
+Hence, we are using these residues as `active` residues for the docking run. However, we have to define `passive` residues before the run.
+These passive residues allows us to deal with potentially incomplete binding sites by defining surface neighbors as `passive` residues.
+These are added to the definition of the interface but will not lead to any energetic penalty if they are not part of the
+binding site in the final models, while the residues defined as `active` (typically the identified or predicted binding
+site residues) will. When using the HADDOCK server, `passive` residues will be automatically defined. Here since we are
+using a local version, we need to define those manually and create a file in which the active and passive residues will be listed.
+
+This can easily be done using a haddock3 command line tool in the following way:
+
+
+echo "38 40 45 46 69 71 78 80 94 96 141" > e2a.act-pass
+haddock3-restraints passive_from_active e2a_1F3G.pdb 38,40,45,46,69,71,78,80,94,96,141 >> e2a.act-pass
+
+
+The NMR-identified residues and their surface neighbors generated with the above command can be used to define ambiguous interactions restraints, either using the NMR identified residues as active in HADDOCK, or combining those with the surface neighbors and use this combination as passive only. Here we decided to treat the NMR-identified residues as active residues.
+Note the file consists of two lines, with the first one defining the `active` residues and
+the second line the `passive` ones. We will use later these files to generate the ambiguous distance restraints for HADDOCK.
+
+In general it is better to be too generous rather than too strict in the
+definition of passive residues.
+
+An important aspect is to filter both the active (the residues identified from
+your mapping experiment) and passive residues by their solvent accessibility.
+Our web service uses a default relative accessibility of 15% as cutoff. This is
+not a hard limit. You might consider including even more buried residues if some
+important chemical group seems solvent accessible from a visual inspection.
+
+
+
+### Defining active and passive residues for HPR
+
+As stated before, the following residues were identified has having significant chemical shift perturbations from [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}:
+
+15,16,17,20,48,49,51,52,54,56
+
+Using the same haddock3 command line tool:
+
+
+echo "15 16 17 20 48 49 51 52 54 56" > hpr.act-pass
+haddock3-restraints passive_from_active hpr-ensemble.pdb 15,16,17,20,48,49,51,52,54,56 >> hpr.act-pass
+
+
+
+
+### Defining the ambiguous interaction restraints
+
+Once you have defined your active and passive residues for both molecules, you
+can proceed with the generation of the ambiguous interaction restraints (AIR) file for HADDOCK.
+For this you can either make use of our online [haddock-restraints](https://rascar.science.uu.nl/haddock-restraints) web service, entering the
+list of active and passive residues for each molecule, and saving the resulting
+restraint list to a text file, or use our haddock3 command line tool.
+
+To use our haddock3 command line tool you need to create for each molecule a file containing two lines:
+
+* The first line corresponds to the list of active residues (numbers separated by spaces)
+* The second line corresponds to the list of passive residues.
+
+* For E2A (the file called `e2a.act-pass`):
+
+
+Using those two files, we can generate the CNS-formatted AIR restraint files
+with the following command:
+
+
+haddock3-restraints active_passive_to_ambig e2a.act-pass hpr.act-pass \-\-segid-one A \-\-segid-two B > e2a-hpr_air.tbl
+
+
+This generates a file called `ambig-prot-prot.tbl` that contains the AIR
+restraints. The default distance range for those is between 0 and 2Å, which
+might seem short but makes senses because of the 1/r^6 summation in the AIR
+energy function that makes the effective distance be significantly shorter than
+the shortest distance entering the sum.
+
+The effective distance is calculated as the SUM over all pairwise atom-atom
+distance combinations between an active residue and all the active+passive on
+the other molecule: SUM[1/r^6]^(-1/6).
+
+If you modify manually this file, it is possible to quickly check if the format is valid.
+To do so, you can find in our [haddock-tools][haddock-tools] repository a folder named
+`haddock_tbl_validation` that contains a script called `validate_tbl.py` (also provided here in the `scripts` directory).
+To use it, type:
+
+
+python ./scripts/validate_tbl.py \-\-silent e2a-hpr_air.tbl
+
+
+No output means that your TBL file is valid.
+
+
+
+
+## Setting up the docking with HADDOCK3
+
+Now that we have all required files at hand (PBD and restraints files) it is time to setup our docking protocol.
+For this we need to create a HADDOCK3 configuration file that will define the docking workflow. In contrast to HADDOCK2.X,
+we have much more flexibility in doing this. We will illustrate this flexibility by introducing a clustering step
+after the initial rigid-body docking stage, select up to 10 models per cluster and refine all of those.
+
+HADDOCK3 also provides an analysis module (`caprieval`) that allows
+to compare models to either the best scoring model (if no reference is given) or a reference structure, which in our case
+we have at hand. This will directly allow us to assess the performance of the protocol for the following two scenarios:
+
+1. Scenario 1: 1000 rigidbody docking models, selection of top200 and flexible refinement + EM
+3. Scenario 2: 1000 rigidbody docking models, FCC clustering and selection of max 20 models per cluster followed by flexible refinement and EM
+
+The basic workflow for all three scenarios will consists of the following modules, with some differences in the parameter settings (see below):
+
+1. **`topoaa`**: *Generates the topologies for the CNS engine and build missing atoms*
+2. **`rigidbody`**: *Rigid body energy minimisation (`it0` in haddock2.x)*
+3. **`clustfcc`**: *Clustering of models based on the fraction of common contacts (FCC)*
+4. **`seletopclusts`**: *Selection of the top10 models of all clusters*
+5. **`flexref`**: *Semi-flexible refinement of the interface (`it1` in haddock2.4)*
+6. **`emref`**: *Final refinement by energy minimisation (`itw` EM only in haddock2.4)*
+7. **`clustfcc`**: *Clustering of models based on the fraction of common contacts (FCC)*
+8. **`caprieval`**: *Calculates CAPRI metrics (i-RMSD, l-RMSD, Fnat, DockQ) with respect to the top scoring model or reference structure if provided*
+
+The input PDB and restraints files are the same for the two scenarios. The differences are in the sampling at the rigid body stage.
+
+
+
+
+### HADDOCK3 execution modes
+
+HADDOCK3 currently supports three difference execution modes that are defined in the first section of the configuration file of a run.
+
+#### 1. local mode
+
+In this mode HADDOCK3 will run on the current system, using the defined number of cores (`ncores`) in the config file
+to a maximum of the total number of available cores on the system minus one. An example of the relevant parameters to be defined in the first section of the config file is:
+
+{% highlight toml %}
+# compute mode
+mode = "local"
+# 1 nodes x 50 ncores
+ncores = 50
+{% endhighlight %}
+
+In this mode HADDOCK3 can be started from the command line with as argument the configuration file of the defined workflow.
+
+
+haddock3 \
+
+
+Alternatively redirect the output to a log file and send haddock3 to the background.
+
+
+haddock3 \ \> haddock3.log &
+
+
+_**Note**_: This is also the execution mode that should be used for example when submitting the HADDOCK3 job to a node of a cluster, requesting X number of cores.
+
+
+
+ View an example script for submitting via the slurm batch systemexpand_more
+
+
+ {% highlight shell %}
+ #!/bin/bash
+ #SBATCH --nodes=1
+ #SBATCH --tasks-per-node=50
+ #SBATCH -J haddock3
+ #SBATCH --partition=medium
+
+ # load haddock3 module
+ module load haddock3
+ # or activate the haddock3 conda environment
+ ##source $HOME/miniconda3/etc/profile.d/conda.sh
+ ##conda activate haddock3
+
+ # go to the run directory
+ cd $HOME/HADDOCK3-protein-protein-basic
+
+ # execute
+ haddock3 docking-protein-protein-full.cfg
+ {% endhighlight %}
+
+
+
+
+
+#### 2. batch mode
+
+In this mode HADDOCK3 will typically be started on your local server (e.g. the login node) and will dispatch jobs to the batch system of your cluster.
+Two batch systems are currently supported: `slurm` and `torque` (defined by the `batch_type` parameter). In the configuration file you will
+have to define the `queue` name and the maximum number of concurrent jobs sent to the queue (`queue_limit`). Since HADDOCK3 single model
+calculations are quite fast, it is recommended to calculate multiple models within one job submitted to the batch system.
+The number of model per job is defined by the `concat` parameter in the configuration file.
+You want to avoid sending thousands of very short jobs to the batch system if you want to remain friend with your system administrators...
+
+An example of the relevant parameters to be defined in the first section of the config file is:
+
+{% highlight toml %}
+# compute mode
+mode = "batch"
+# batch system
+batch_type = "slurm"
+# queue name
+queue = "short"
+# number of concurrent jobs to submit to the batch system
+queue_limit = 50
+# number of models to produce per submitted job
+concat = 10
+{% endhighlight %}
+
+In this mode HADDOCK3 can be started from the command line as for the local mode.
+
+#### 3. MPI mode
+
+HADDOCK3 supports a parallel MPI implementation (functional but still very experimental at this stage). For this to work, the `mpi4py` library
+must have been installed at installation time. Refer to the [MPI-related instructions](https://www.bonvinlab.org/haddock3/tutorials/mpi.html).
+The execution mode should be set to `mpi` and the total number of cores should match the requested resources when submitting to the batch system.
+
+An example of the relevant parameters to be defined in the first section of the config file is:
+
+{% highlight toml %}
+# compute mode
+mode = "mpi"
+# 1 nodes x 50 tasks = ncores = 50
+ncores = 50
+{% endhighlight %}
+
+In this execution mode the HADDOCK3 job should be submitted to the batch system requesting the corresponding number of nodes and cores per node.
+
+
+
+ View an example script for submitting an MPI HADDOCK3 job the slurm batch systemexpand_more
+
+ {% highlight shell %}
+ #!/bin/bash
+ #SBATCH --nodes=5
+ #SBATCH --tasks-per-node=50
+ #SBATCH -J haddock3mpi
+
+ # load haddock3 module
+ module load haddock3
+ # or make sure haddock3 is activated
+ ##source $HOME/miniconda3/etc/profile.d/conda.sh
+ ##conda activate haddock3
+
+ # go to the run directory
+ # edit if needed to specify the correct location
+ cd $HOME/HADDOCK3-protein-protein-basic
+
+ # execute
+ haddock3 docking-protein-protein-full.cfg
+ {% endhighlight %}
+
+
+
+
+
+### Scenario 1: 1000 rigidbody docking models, selection of top 200 and flexible refinement + EM
+
+Now that we have all data ready, and know about execution modes of HADDOCK3 it is time to setup the docking for the first scenario. The restraint file to use for this is `e2a-hpr_air.tbl`. We proceed to produce 1000 rigidbody docking models, from which 200 will be selected and refined through flexible refinement and energy minimization.
+This corresponds to the default docking scenario of the HADDOCK2.X version.
+
+For the analysis following the docking results, we are using the solved complex [1GGR](https://www.rcsb.org/structure/1GGR), named e2a-hpr_1GGR.pdb.
+The configuration file for this scenario is:
+
+{% highlight toml %}
+# ====================================================================
+# Protein-protein docking example with NMR-derived ambiguous interaction restraints
+
+# directory in which the scoring will be done
+run_dir = "run1-full"
+
+# execution mode
+mode = "local"
+# maximum of 50 cores (limited by the number of available cores)
+ncores = 50
+
+# molecules to be docked
+molecules = [
+ "data/e2aP_1F3G.pdb",
+ "data/hpr-ensemble_clean.pdb"
+ ]
+
+# ====================================================================
+# Parameters for each stage are defined below, prefer full paths
+# ====================================================================
+[topoaa]
+autohis = true
+
+[rigidbody]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[seletop]
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[flexref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[emref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[clustfcc]
+
+[seletopclusts]
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+# ====================================================================
+{% endhighlight %}
+
+This configuration file is provided in the `haddock3` directory of the downloaded data set for this tutorial as `docking-protein-protein-full.cfg`.
+
+If you have everything ready, you can launch haddock3 either from the command line, or, better,
+submitting it to the batch system requesting in this local run mode a full node (see local execution mode above).
+
+
+
+### Scenario 2: 1000 rigidbody docking models, FCC clustering and selection of max 20 models per cluster followed by flexible refinement and EM
+
+In scenario 2, we proceed to produce 1000 rigidbody docking models, from which we proceed to do a first clustering analysis. From the top clusters a flexible refinement then energy minization is done.
+This scenario illustrates the new flexibility of HADDOCK3, adding a clustering step after rigid-body docking, which is not possible in the HADDOCK2.X version.
+
+For the analysis following the docking results, we are using the solved complex [1GGR](https://www.rcsb.org/structure/1GGR), named e2a-hpr_1GGR.pdb.
+The configuration file for this scenario is:
+
+{% highlight toml %}
+# ====================================================================
+# Protein-protein docking example with NMR-derived ambiguous interaction restraints
+# ====================================================================
+
+# directory in which the scoring will be done
+run_dir = "run2-full"
+
+# execution mode
+mode = "local"
+# maximum of 50 cores (limited by the number of available cores)
+ncores = 50
+
+# molecules to be docked
+molecules = [
+ "data/e2aP_1F3G.pdb",
+ "data/hpr-ensemble_clean.pdb"
+ ]
+
+# ====================================================================
+# Parameters for each stage are defined below, prefer full paths
+# ====================================================================
+
+[topoaa]
+autohis = true
+
+[rigidbody]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[clustfcc]
+
+[seletopclusts]
+# select the best 20 models of each cluster
+top_models = 20
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[flexref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[emref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[clustfcc]
+
+[seletopclusts]
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+# ====================================================================
+{% endhighlight %}
+
+This configuration file is provided in the `haddock3` directory of the downloaded data set for this tutorial as `docking-protein-protein-cltsel-full.cfg`.
+
+If you have everything ready, you can launch haddock3 either from the command line, or, better, submitting it to the batch system requesting in this local run mode a full node (see local execution mode above).
+
+
+
+
+## Analysis of docking results
+
+### Structure of the run directory
+
+Once your run has completed inspect the content of the resulting directory. You will find the various steps (modules) of the defined workflow numbered sequentially, e.g. for scenario 2:
+
+{% highlight shell %}
+> ls scenario2/
+ 00_topoaa/
+ 01_rigidbody/
+ 02_caprieval/
+ 03_clustfcc/
+ 04_seletopclusts/
+ 05_caprieval/
+ 06_flexref/
+ 07_caprieval/
+ 08_emref/
+ 09_caprieval/
+ 10_clustfcc/
+ 11_seletopclusts/
+ 12_caprieval/
+ analysis/
+ data/
+ log
+{% endhighlight %}
+
+There is in addition the log file (text file) and two additional directories:
+
+- the `data` directory containing the input data (PDB and restraint files) for the various modules
+- the `analysis` directory containing various plots to visualise the results for each `caprieval` step
+
+You can find information about the duration of the run at the bottom of the log file. Each sampling/refinement/selection module will contain PBD files.
+
+For example, the `X_seletopclusts` directory contains the selected models from each cluster. The clusters in that directory are numbered based
+on their rank, i.e. `cluster_1` refers to the top-ranked cluster. Information about the origin of these files can be found in that directory in the `seletopclusts.txt` file.
+
+The simplest way to extract ranking information and the corresponding HADDOCK scores is to look at the `X_caprieval` directories (which is why it is a good idea to have it as the final module, and possibly as intermediate steps). This directory will always contain a `capri_ss.tsv` file, which contains the model names, rankings and statistics (score, iRMSD, Fnat, lRMSD, ilRMSD and dockq score). E.g.:
+
+
+
+If clustering is performed prior to calling the `caprieval` module, the `capri_ss.tsv` will also contain information about to which cluster the model belongs to and its ranking within the cluster as shown above.
+
+The relevant statistics are:
+
+* **score**: *the HADDOCK score (arbitrary units)*
+* **irmsd**: *the interface RMSD, calculated over the interfaces the molecules*
+* **fnat**: *the fraction of native contacts*
+* **lrmsd**: *the ligand RMSD, calculated on the ligand after fitting on the receptor (1st component)*
+* **ilrmsd**: *the interface-ligand RMSD, calculated over the interface of the ligand after fitting on the interface of the receptor (more relevant for small ligands for example)*
+* **dockq**: *the DockQ score, which is a combination of irmsd, lrmsd and fnat and provides a continuous scale between 1 (equal to reference) and 0*
+
+The iRMSD, lRMSD and Fnat metrics are the ones used in the blind protein-protein prediction experiment [CAPRI](https://capri.ebi.ac.uk/) (Critical PRediction of Interactions).
+
+In CAPRI the quality of a model is defined as (for protein-protein complexes):
+
+* **acceptable model**: i-RMSD < 4Å or l-RMSD<10Å and Fnat > 0.1 (0.23 < DOCKQ < 0.49)
+* **medium quality model**: i-RMSD < 2Å or l-RMSD<5Å and Fnat > 0.3 (0.49 < DOCKQ < 0.8)
+* **high quality model**: i-RMSD < 1Å or l-RMSD<1Å and Fnat > 0.5 (DOCKQ > 0.8)
+
+
+What is based on this CAPRI criterion the quality of the best model listed above (emref_33.pdb)?
+
+
+In case the `caprieval` module is called after a clustering step an additional file will be present in the directory: `capri_clt.tsv`.
+This file contains the cluster ranking and score statistics, averaged over the minimum number of models defined for clustering
+(4 by default), with their corresponding standard deviations. E.g.:
+
+
+
+In this file you find the cluster rank, the cluster ID (which is related to the size of the cluster, 1 being always the largest cluster), the number of models (n) in the cluster and the corresponding statistics (averages + standard deviations). The corresponding cluster PDB files will be found in the processing `X_seletopclusts` directory.
+
+
+
+### Analysis scenario 1:
+
+Let us now analyze the docking results for this scenario. Use for that either your own run or a pre-calculated run provided in the `runs` directory (note that to save space only partial data have been kept in this pre-calculated runs, but all relevant information for this tutorial is available).
+
+First of all let us check the final cluster statistics.
+
+Inspect the _capri_clt.tsv_ file
+
+
+
+View the pre-calculated 11_caprieval/capri_clt.tsv fileexpand_more
+
+
+==============================================
+== run1-full/02_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 6.407 Fnat: 0.202 DockQ: 0.264
+==============================================
+== run1-full/04_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 6.407 Fnat: 0.202 DockQ: 0.264
+==============================================
+== run1-full/06_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 1 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: - i-RMSD: 2.976 Fnat: 0.611 DockQ: 0.601
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 2.976 Fnat: 0.611 DockQ: 0.601
+==============================================
+== run1-full/08_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 1 out of 1
+Total number of medium or better clusters: 1 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: - i-RMSD: 1.673 Fnat: 0.736 DockQ: 0.727
+First medium cluster - rank: - i-RMSD: 1.673 Fnat: 0.736 DockQ: 0.727
+Best cluster - rank: - i-RMSD: 1.673 Fnat: 0.736 DockQ: 0.727
+==============================================
+== run1-full/11_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 3 out of 4
+Total number of medium or better clusters: 1 out of 4
+Total number of high quality clusters: 1 out of 4
+
+First acceptable cluster - rank: 1 i-RMSD: 0.922 Fnat: 0.847 DockQ: 0.848
+First medium cluster - rank: 1 i-RMSD: 0.922 Fnat: 0.847 DockQ: 0.848
+Best cluster - rank: 1 i-RMSD: 0.922 Fnat: 0.847 DockQ: 0.848
+
+
+
+
+
+Similarly some simple statistics can be extracted from the single model `caprieval` `capri_ss.tsv` files with the `extract-capri-stats.sh` script:
+
+
+
+ ./scripts/extract-capri-stats.sh ./runs/run1-full
+
+
+
+
+View the output of the script:expand_more
+
+
+==============================================
+== run1-full/02_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 365 out of 1000
+Total number of medium or better models: 199 out of 1000
+Total number of high quality models: 0 out of 1000
+
+First acceptable model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+First medium model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 46 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run1-full/04_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 144 out of 200
+Total number of medium or better models: 137 out of 200
+Total number of high quality models: 0 out of 200
+
+First acceptable model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+First medium model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 46 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run1-full/06_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 147 out of 200
+Total number of medium or better models: 118 out of 200
+Total number of high quality models: 20 out of 200
+
+First acceptable model - rank: 2 i-RMSD: 1.221 Fnat: 0.694 DockQ: 0.727
+First medium model - rank: 2 i-RMSD: 1.221 Fnat: 0.694 DockQ: 0.727
+Best model - rank: 30 i-RMSD: 0.883 Fnat: 0.750 DockQ: 0.823
+==============================================
+== run1-full/08_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 147 out of 200
+Total number of medium or better models: 118 out of 200
+Total number of high quality models: 34 out of 200
+
+First acceptable model - rank: 1 i-RMSD: 1.219 Fnat: 0.833 DockQ: 0.787
+First medium model - rank: 1 i-RMSD: 1.219 Fnat: 0.833 DockQ: 0.787
+Best model - rank: 39 i-RMSD: 0.807 Fnat: 0.833 DockQ: 0.862
+==============================================
+== run1-full/11_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 141 out of 185
+Total number of medium or better models: 116 out of 185
+Total number of high quality models: 34 out of 185
+
+First acceptable model - rank: 1 i-RMSD: 0.907 Fnat: 0.917 DockQ: 0.871
+First medium model - rank: 1 i-RMSD: 0.907 Fnat: 0.917 DockQ: 0.871
+Best model - rank: 36 i-RMSD: 0.807 Fnat: 0.833 DockQ: 0.862
+
+ In terms of iRMSD values we only observe very small differences in the best models, but the change in ranking is impressive!
+ The fraction of native contacts and the DockQ scores are however improving much more after flexible refinement.
+ All this will of course depend on how different are the bound and unbound conformations and the amount of data
+ used to drive the docking process. In general, from our experience, the more and better data at hand,
+ the larger the conformational changes that can be induced.
+
+ This is clearly not the case. The scoring function is not perfect, but does a reasonable job in ranking models of acceptable or better quality on top in this case.
+
+
+
+
+
+#### Analysis scenario 1: visualising the scores and their components
+
+We have precalculated a number of interactive plots to visualize the scores and their components versus ranks and model quality.
+
+
+Examine the plots (remember here that higher DockQ values and lower i-RMSD values correspond to better models)
+
+
+Models statistics:
+
+* [iRMSD versus HADDOCK score](plots/scenario1/irmsd_score.html){:target="_blank"}
+* [DockQ versus HADDOCK score](plots/scenario1/dockq_score.html){:target="_blank"}
+
+Cluster statistics (distributions of values per cluster ordered according to their HADDOCK rank):
+
+* [HADDOCK scores](plots/scenario1/score_clt.html){:target="_blank"}
+* [iRMSD](plots/scenario1/irmsd_clt.html){:target="_blank"}
+* [DockQ](plots/scenario1/dockq_clt.html){:target="_blank"}
+
+
+
+### Analysis scenario 2:
+
+Let us now analyse the docking results for this scenario. Use for that either your own run or a pre-calculated run provided in the `runs` directory.
+Go into the _analysis/_caprieval_analysis_ directory of the respective run directory and
+
+Inspect the final cluster statistics in _capri_clt.tsv_ file
+
+
+
+View the pre-calculated _caprieval/capri_clt.tsv fileexpand_more
+
+
+==============================================
+== run2-full/02_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 6.407 Fnat: 0.202 DockQ: 0.264
+==============================================
+== run2-full/05_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 6 out of 33
+Total number of medium or better clusters: 1 out of 33
+Total number of high quality clusters: 0 out of 33
+
+First acceptable cluster - rank: 2 i-RMSD: 1.193 Fnat: 0.563 DockQ: 0.701
+First medium cluster - rank: 2 i-RMSD: 1.193 Fnat: 0.563 DockQ: 0.701
+Best cluster - rank: 2 i-RMSD: 1.193 Fnat: 0.563 DockQ: 0.701
+==============================================
+== run2-full/07_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 8.237 Fnat: 0.104 DockQ: 0.121
+==============================================
+== run2-full/09_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 4.840 Fnat: 0.361 DockQ: 0.400
+==============================================
+== run2-full/12_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 4 out of 25
+Total number of medium or better clusters: 2 out of 25
+Total number of high quality clusters: 2 out of 25
+
+First acceptable cluster - rank: 1 i-RMSD: 3.857 Fnat: 0.319 DockQ: 0.365
+First medium cluster - rank: 2 i-RMSD: 0.982 Fnat: 0.805 DockQ: 0.816
+Best cluster - rank: 4 i-RMSD: 0.980 Fnat: 0.812 DockQ: 0.819
+
+
+
+
+
+Similarly some simple statistics can be extracted from the single model `caprieval` `capri_ss.tsv` files with the `extract-capri-stats.sh` script:
+
+
+./scripts/extract-capri-stats.sh ./runs/run2-full
+
+
+
+
+View the output of the scriptexpand_more
+
+
+==============================================
+== run2-full/02_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 365 out of 1000
+Total number of medium or better models: 199 out of 1000
+Total number of high quality models: 0 out of 1000
+
+First acceptable model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+First medium model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 46 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run2-full/05_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 62 out of 375
+Total number of medium or better models: 22 out of 375
+Total number of high quality models: 0 out of 375
+
+First acceptable model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+First medium model - rank: 3 i-RMSD: 1.153 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 46 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run2-full/07_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 74 out of 375
+Total number of medium or better models: 27 out of 375
+Total number of high quality models: 1 out of 375
+
+First acceptable model - rank: 6 i-RMSD: 1.081 Fnat: 0.750 DockQ: 0.771
+First medium model - rank: 6 i-RMSD: 1.081 Fnat: 0.750 DockQ: 0.771
+Best model - rank: 36 i-RMSD: 0.930 Fnat: 0.778 DockQ: 0.822
+==============================================
+== run2-full/09_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 74 out of 375
+Total number of medium or better models: 27 out of 375
+Total number of high quality models: 7 out of 375
+
+First acceptable model - rank: 1 i-RMSD: 3.718 Fnat: 0.333 DockQ: 0.382
+First medium model - rank: 3 i-RMSD: 0.991 Fnat: 0.806 DockQ: 0.821
+Best model - rank: 60 i-RMSD: 0.896 Fnat: 0.778 DockQ: 0.828
+==============================================
+== run2-full/12_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 65 out of 317
+Total number of medium or better models: 27 out of 317
+Total number of high quality models: 7 out of 317
+
+First acceptable model - rank: 1 i-RMSD: 3.718 Fnat: 0.333 DockQ: 0.382
+First medium model - rank: 3 i-RMSD: 0.991 Fnat: 0.806 DockQ: 0.821
+Best model - rank: 54 i-RMSD: 0.896 Fnat: 0.778 DockQ: 0.828
+
+ In this case we observe a small improvement in terms of iRMSD values as well as in the fraction of native contacts and the DockQ scores. Also the single model rankings have improved, but the top ranked model is not the best one.
+
+ This is clearly not the case. The scoring function is not perfect, but does a reasonable job in ranking models of acceptable or better quality on top in this case.
+
+
+
+
+
+#### Analysis scenario 2: visualising the scores and their components
+
+We have precalculated a number of interactive plots to visualize the scores and their components versus ranks and model quality.
+
+
+Examine the plots (remember here that higher DockQ values and lower i-RMSD values correspond to better models)
+
+
+Models statistics:
+
+* [iRMSD versus HADDOCK score](plots/scenario2/irmsd_score.html){:target="_blank"}
+* [DockQ versus HADDOCK score](plots/scenario2/dockq_score.html){:target="_blank"}
+
+Cluster statistics (distributions of values per cluster ordered according to their HADDOCK rank):
+
+* [HADDOCK scores](plots/scenario2/score_clt.html){:target="_blank"}
+* [iRMSD](plots/scenario2/irmsd_clt.html){:target="_blank"}
+* [DockQ](plots/scenario2/dockq_clt.html){:target="_blank"}
+
+
+
+### Comparing the performance of the two scenarios
+
+Clearly all three scenarios give good results with an acceptable cluster in all three cases ranked at the top:
+
+{% highlight shell %}
+==============================================
+== scenario1-full/11_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 141 out of 185
+Total number of medium or better models: 116 out of 185
+Total number of high quality models: 34 out of 185
+
+First acceptable model - rank: 1 i-RMSD: 0.907 Fnat: 0.917 DockQ: 0.871
+First medium model - rank: 1 i-RMSD: 0.907 Fnat: 0.917 DockQ: 0.871
+Best model - rank: 36 i-RMSD: 0.807 Fnat: 0.833 DockQ: 0.862
+
+==============================================
+== scenario2-cltsel-full/12_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 65 out of 317
+Total number of medium or better models: 27 out of 317
+Total number of high quality models: 7 out of 317
+
+First acceptable model - rank: 1 i-RMSD: 3.718 Fnat: 0.333 DockQ: 0.382
+First medium model - rank: 3 i-RMSD: 0.991 Fnat: 0.806 DockQ: 0.821
+Best model - rank: 54 i-RMSD: 0.896 Fnat: 0.778 DockQ: 0.828
+
+{% endhighlight %}
+
+While the first two scenarios show similar results, we can observe that scenario 2 produces a higher count of clusters, i.e. a higher conformational diversity than the other scenarios.
+This difference is most probably a consequence of the clustering step carried out after the rigidbody docking. In fact, this additional step allowed us to select the best models of each clusters, retaining the diversity produced in the riigid body step, while selecting the overall best ranked models in the first two scenarios showed lower diversity.
+
+
+
+
+## Biological insights
+
+The E2A-HPR complex is involved in phosphate-transfer, in which a phosphate group attached to histidine 90 of E2A (which we named NEP) is transferred to a histidine of HPR. As such, the docking models should make sense according to this information, meaning that two histidines should be in close proximity at the interface. Using PyMOL, check the various cluster representatives (we are assuming here you have performed all PyMOL commands of the previous section):
+
+
+select histidines, resn HIS+NEP
+show spheres, histidines
+util.cnc
+
+
+First of all, has the phosphate group been properly generated?
+
+**Note:** You can zoom on the phosphorylated histidine using the following PyMOL command:
+
+
+zoom resn NEP
+
+
+
+
+
+
+Zoom back to all visible molecules with
+
+
+zoom vis
+
+
+Now inspect each cluster in turn and check if histidine 90 of E2A is in close proximity to another histidine of HPR.
+To facilitate this analysis, view each cluster in turn (use the right panel to activate/desactivate the various clusters by clicking on their name).
+
+Based on this analysis, which cluster does satisfy best the biolocal information?
+
+Is this cluster also the best ranked one?
+
+
+
+## Comparison with the reference structure
+
+As explained in the introduction, the structure of the native complex has been determined by NMR (PDB ID [1GGR](https://www.ebi.ac.uk/pdbe/entry/pdb/1ggr){:target="_blank"}) using a combination of intermolecular NOEs and dipolar coupling restraints. We will now compare the docking models with this structure.
+
+If you still have all cluster representative open in PyMOL you can proceed with the sub-sequent analysis, otherwise load again each cluster representative as described above. Then, fetch the reference complex by typing in PyMOL:
+
+
+fetch 1GGR
+show cartoon
+color yellow, 1GGR and chain A
+color orange, 1GGR and chain B
+
+
+The number of chain B in this structure is however different from the HPR numbering in the structure we used: It starts at 301 while in our models chain B starts at 1. We can change the residue numbering easily in PyMol with the following command:
+
+
+alter (chain B and 1GGR), resv -=300
+
+
+Then superimpose all cluster representatives on the reference structure, using the entire chain A (E2A):
+
+
+select 1GGR and chain A
+alignto sele
+
+
+
+Does any of the cluster representatives ressemble the reference NMR structure? (note: in principle the analysis done above and the caprieval results should allow you to already answer these questions)
+
+
+In case you found a reasonable prediction, what is its cluster rank?
+
+
+
+
+
+## Congratulations! 🎉
+
+You have completed this tutorial. If you have any questions or suggestions, feel free to contact us via email or asking a question through our [support center](https://ask.bioexcel.eu){:target="_blank"}.
+
+And check also our [education](/education) web page where you will find more tutorials!
+
+
+
+
+## A look into the future Virtual Research Environment for HADDOCK3
+
+In the context of a project with the [Netherlands e-Science Center](https://www.esciencecenter.nl){:target="_blank"} we are working on
+building a Virtual Research Environment (VRE) for HADDOCK3 that will allow you to build and edit custom workflows,
+execute those on a variety of infrastructures (grid, cloud, local, HPC) and provide an interactive analysis
+platform for analyzing your HADDOCK3 results. This is _work in progress_ but you can already take a glimpse of the
+first component, the workflow builder, [here](https://github.com/i-VRESSE/workflow-builder){:target="_blank"}.
+
+All the HADDOCK3 VRE software development is open and can be followed from our [GitHub i-VRESSE](https://github.com/i-VRESSE){:target="_blank"} repository.
+
+So stay tuned!
+
+
+[air-help]: https://www.bonvinlab.org/software/haddock2.4/airs/ "AIRs help"
+[gentbl]: https://wenmr.science.uu.nl/gentbl/ "GenTBL"
+[haddock24protein]: /education/HADDOCK24/HADDOCK24-protein-protein-basic/
+[haddock-repo]: https://github.com/haddocking/haddock3 "HADDOCK3 GitHub"
+[haddock-tools]: https://github.com/haddocking/haddock-tools "HADDOCK tools GitHub"
+[installation]: https://www.bonvinlab.org/haddock3/INSTALL.html "Installation"
+[link-cns]: https://cns-online.org "CNS online"
+[link-forum]: https://ask.bioexcel.eu/c/haddock "HADDOCK Forum"
+[link-pdbtools]:http://www.bonvinlab.org/pdb-tools/ "PDB-Tools"
+[link-pymol]: https://www.pymol.org/ "PyMOL"
+[nat-pro]: https://www.nature.com/nprot/journal/v5/n5/abs/nprot.2010.32.html "Nature protocol"
+[tbl-examples]: https://github.com/haddocking/haddock-tools/tree/master/haddock_tbl_validation "tbl examples"
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_clt.html
new file mode 100644
index 000000000..8f89b692d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_score.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_score.html
new file mode 100644
index 000000000..e93dd0aba
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/dockq_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_clt.html
new file mode 100644
index 000000000..8b5d5ca4e
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_score.html
new file mode 100644
index 000000000..a1b9b936e
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/irmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/score_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/score_clt.html
new file mode 100644
index 000000000..4ea042277
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario1/score_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_clt.html
new file mode 100644
index 000000000..28caf6e1d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_score.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_score.html
new file mode 100644
index 000000000..b930f01f6
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/dockq_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_clt.html
new file mode 100644
index 000000000..a428c2b08
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_score.html
new file mode 100644
index 000000000..2382496fb
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/irmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/score_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/score_clt.html
new file mode 100644
index 000000000..4da3e4e9c
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein-basic/plots/scenario2/score_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/cluster1_rank1_chordchart.html b/education/HADDOCK3/HADDOCK3-protein-protein/cluster1_rank1_chordchart.html
new file mode 100644
index 000000000..155d623c5
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/cluster1_rank1_chordchart.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/index.md b/education/HADDOCK3/HADDOCK3-protein-protein/index.md
new file mode 100644
index 000000000..28cf5576f
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/index.md
@@ -0,0 +1,1526 @@
+---
+layout: page
+title: "Protein-Protein modelling tutorial using a local version of HADDOCK3"
+excerpt: "A tutorial describing the use of HADDOCK3 to model a Protein-Protein complex"
+tags: [HADDOCK, HADDOCK3, installation, preparation, proteins, docking, analysis, workflows]
+image:
+ feature: pages/banner_education-thin.jpg
+---
+This tutorial consists of the following sections:
+
+* table of contents
+{:toc}
+
+
+
+
+## Introduction
+
+This tutorial demonstrates the use of the new modular HADDOCK3 version for predicting the structure of a protein-protein complex from NMR chemical shift perturbation (CSP) data.
+Namely, we will dock two E. coli proteins involved in glucose transport: the glucose-specific enzyme IIA (E2A) and the histidine-containing phosphocarrier protein (HPr).
+The structures in the free form have been determined using X-ray crystallography (E2A) (PDB ID [1F3G](https://www.ebi.ac.uk/pdbe/entry/pdb/1f3g){:target="_blank"})
+and NMR spectroscopy (HPr) (PDB ID [1HDN](https://www.ebi.ac.uk/pdbe/entry/pdb/1hdn){:target="_blank"}).
+The structure of the native complex has also been determined with NMR (PDB ID [1GGR](https://www.ebi.ac.uk/pdbe/entry/pdb/1ggr){:target="_blank"}).
+These NMR experiments have also provided us with an array of data on the interaction itself
+(chemical shift perturbations, intermolecular NOEs, residual dipolar couplings, and simulated diffusion anisotropy data), which will be useful for the docking.
+For this tutorial, we will only make use of inteface residues identified from NMR chemical shift perturbation data as described
+in [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}.
+
+Throughout the tutorial, colored text will be used to refer to questions or instructions, and/or PyMOL commands.
+
+This is a question prompt: try answering it!
+This an instruction prompt: follow it!
+This is a PyMOL prompt: write this in the PyMOL command line prompt!
+This is a Linux prompt: insert the commands in the terminal!
+
+
+
+
+
+## HADDOCK general concepts
+
+HADDOCK (see [https://www.bonvinlab.org/software/haddock2.4](https://www.bonvinlab.org/software/haddock2.4){:target="_blank"})
+is a collection of python scripts derived from ARIA ([https://aria.pasteur.fr](https://aria.pasteur.fr){:target="_blank"})
+that harness the power of CNS (Crystallography and NMR System – [https://cns-online.org](https://cns-online.org){:target="_blank"})
+for structure calculation of molecular complexes. What distinguishes HADDOCK from other docking software is its ability,
+inherited from CNS, to incorporate experimental data as restraints and use these to guide the docking process alongside
+traditional energetics and shape complementarity. Moreover, the intimate coupling with CNS endows HADDOCK with the
+ability to actually produce models of sufficient quality to be archived in the Protein Data Bank.
+
+A central aspect of HADDOCK is the definition of Ambiguous Interaction Restraints or AIRs. These allow the
+translation of raw data such as NMR chemical shift perturbation or mutagenesis experiments into distance
+restraints that are incorporated into the energy function used in the calculations. AIRs are defined through
+a list of residues that fall under two categories: active and passive. Generally, active residues are those
+of central importance for the interaction, such as residues whose knockouts abolish the interaction or those
+where the chemical shift perturbation is higher. Throughout the simulation, these active residues are
+restrained to be part of the interface, if possible, otherwise incurring a scoring penalty. Passive residues
+are those that contribute to the interaction but are deemed of less importance. If such a residue does
+not belong in the interface there is no scoring penalty. Hence, a careful selection of which residues are
+active and which are passive is critical for the success of the docking.
+
+
+
+
+
+## A brief introduction to HADDOCK3
+
+HADDOCK3 is the next generation integrative modelling software in the
+long-lasting HADDOCK project. It represents a complete rethinking and rewriting
+of the HADDOCK2.X series, implementing a new way to interact with HADDOCK and
+offering new features to users who can now define custom workflows.
+
+In the previous HADDOCK2.x versions, users had access to a highly
+parameterisable yet rigid simulation pipeline composed of three steps:
+`rigid-body docking (it0)`, `semi-flexible refinement (it1)`, and `final refinement (itw)`.
+
+
+
+
+
+In HADDOCK3, users have the freedom to configure docking workflows into
+functional pipelines by combining the different HADDOCK3 modules, thus
+adapting the workflows to their projects. HADDOCK3 has therefore developed to
+truthfully work like a puzzle of many pieces (simulation modules) that users can
+combine freely. To this end, the “old” HADDOCK machinery has been modularized,
+and several new modules added, including third-party software additions. As a
+result, the modularization achieved in HADDOCK3 allows users to duplicate steps
+within one workflow (e.g., to repeat twice the `it1` stage of the HADDOCK2.x
+rigid workflow).
+
+Note that, for simplification purposes, at this time, not all functionalities of
+HADDOCK2.x have been ported to HADDOCK3, which does not (yet) support NMR RDC,
+PCS and diffusion anisotropy restraints, cryo-EM restraints and coarse-graining.
+Any type of information that can be converted into ambiguous interaction
+restraints can, however, be used in HADDOCK3, which also supports the
+*ab initio* docking modes of HADDOCK.
+
+
+
+
+
+To keep HADDOCK3 modules organized, we catalogued them into several
+categories. However, there are no constraints on piping modules of different
+categories.
+
+The main module categories are "topology", "sampling", "refinement",
+"scoring", and "analysis". There is no limit to how many modules can belong to a
+category. Modules are added as developed, and new categories will be created
+if/when needed. You can access the HADDOCK3 documentation page for the list of
+all categories and modules. Below is a summary of the available modules:
+
+* **Topology modules**
+ * `topoaa`: *generates the all-atom topologies for the CNS engine.*
+* **Sampling modules**
+ * `rigidbody`: *Rigid body energy minimization with CNS (`it0` in haddock2.x).*
+ * `lightdock`: *Third-party glow-worm swam optimization docking software.*
+* **Model refinement modules**
+ * `flexref`: *Semi-flexible refinement using a simulated annealing protocol through molecular dynamics simulations in torsion angle space (`it1` in haddock2.x).*
+ * `emref`: *Refinement by energy minimisation (`itw` EM only in haddock2.4).*
+ * `mdref`: *Refinement by a short molecular dynamics simulation in explicit solvent (`itw` in haddock2.X).*
+* **Scoring modules**
+ * `emscoring`: *scoring of a complex performing a short EM (builds the topology and all missing atoms).*
+ * `mdscoring`: *scoring of a complex performing a short MD in explicit solvent + EM (builds the topology and all missing atoms).*
+* **Analysis modules**
+ * `alascan`: *Performs a systematic (or user-define) alanine scanning mutagenesis of interface residues.*
+ * `caprieval`: *Calculates CAPRI metrics (i-RMSD, l-RMSD, Fnat, DockQ) with respect to the top-scoring model or reference structure if provided.*
+ * `clustfcc`: *Clusters models based on the fraction of common contacts (FCC)*
+ * `clustrmsd`: *Clusters models based on pairwise RMSD matrix calculated with the `rmsdmatrix` module.*
+ * `contactmap`: *Generate contact matrices of both intra- and intermolecular contacts and a chordchart of intermolecular contacts.*
+ * `rmsdmatrix`: *Calculates the pairwise RMSD matrix between all the models generated in the previous step.*
+ * `ilrmsdmatrix`: *Calculates the pairwise interface-ligand-RMSD (il-RMSD) matrix between all the models generated in the previous step.*
+ * `seletop`: *Selects the top N models from the previous step.*
+ * `seletopclusts`: *Selects the top N clusters from the previous step.*
+
+The HADDOCK3 workflows are defined in simple configuration text files, similar to the TOML format but with extra features.
+Contrary to HADDOCK2.X which follows a rigid (yet highly parameterisable)
+procedure, in HADDOCK3, you can create your own simulation workflows by
+combining a multitude of independent modules that perform specialized tasks.
+
+
+
+
+
+## Software and data setup
+
+In order to follow this tutorial you will need to work on a Linux or MacOSX
+system. We will also make use of [**PyMOL**](https://www.pymol.org/){:target="_blank"} (freely available for
+most operating systems) in order to visualize the input and output data. We will
+provide you links to download the various required software and data.
+
+Further, we are providing pre-processed PDB files for docking and analysis (but the
+preprocessing of those files will also be explained in this tutorial). The files have been processed
+to facilitate their use in HADDOCK and to allow comparison with the known reference
+structure of the complex.
+
+If you are running this tutorial on your own resources _download and unzip the following_
+[zip archive](https://surfdrive.surf.nl/files/index.php/s/R7VHGQM9nx8QuQn){:target="_blank"}
+_and note the location of the extracted PDB files in your system_.
+
+__If running as part of a BioExcel workshop or summerschool see the instructions in the next section.__
+
+_Note_ that you can also download and unzip this archive directly from the Linux command line:
+
+
+wget https://surfdrive.surf.nl/files/index.php/s/2RmROYLP4HcNZ1V/download -O HADDOCK3-protein-protein.zip
+unzip HADDOCK3-protein-protein.zip
+
+
+
+Unziping the file will create the `HADDOCK3-protein-protein` directory which should contain the following directories and files:
+
+* `pdbs`: a directory containing the pre-processed PDB files
+* `restraints`: a directory containing the interface information and the corresponding restraint files for HADDOCK3
+* `runs`: a directory containing pre-calculated results
+* `scripts`: a directory containing various scripts used in this tutorial
+* `workflows`: a directory containing configuration file examples for HADDOCK3
+
+In case of a workshop of course, HADDOCK3 will usually have been installed on the system you will be using.
+
+It this is not the case, you will have to install it yourself. To obtain and install HADDOCK3, navigate to [its repository][haddock-repo], fill the
+registration form, and then follow the instructions under the **Local setup (on your own)** section below.
+
+
+
+
+### Local setup (on your own)
+
+If you are installing HADDOCK3 on your own system, check the instructions and requirements below.
+
+
+#### Installing HADDOCK3
+
+To obtain HADDOCK3 navigate to [its repository][haddock-repo], fill the
+registration form, and then follow the [installation instructions](https://www.bonvinlab.org/haddock3/INSTALL.html){:target="_blank"}.
+
+**_Note_** that depending on the system you are installing HADDOCK3 on, you might have to recompile CNS if the provided executable is not working. See the [CNS troubleshooting section](https://github.com/haddocking/haddock3/blob/main/DEVELOPMENT.md#troubleshooting-the-cns-executable){:target="_blank"} on the HADDOCK3 GitHub repository for instructions.
+
+#### Auxiliary software
+
+[**PyMOL**](https://www.pymol.org/){:target="_blank"}: In this tutorial we will make use of PyMOL for visualization. If not
+already installed on your system, download and install [**PyMOL**](https://www.pymol.org/){:target="_blank"}. Note that you can use your favorite visulation software but instructions are only provided here for PyMOL.
+
+
+
+
+
+## Preparing PDB files for docking
+
+In this section we will prepare the PDB files of the two proteins for docking.
+Crystal and NMR structures are available from the [PDBe database](https://www.pdbe.org){:target="_blank"}.
+Throughout this step, we will use `pdb-tools` from the command line.
+
+_**Note**_ that `pdb-tools` is also available as a [web service](https://wenmr.science.uu.nl/pdbtools/){:target="_blank"}.
+
+_**Note**_: Before starting to work on the tutorial, make sure to activate your haddock3 environment (how to do it depends on how you installed haddock3).
+
+
+
+
+### Inspecting and preparing E2A for docking
+
+We will now inspect the E2A structure. For this start PyMOL and in the command line window of PyMOL (indicated by PyMOL>) type:
+
+
+fetch 1F3G
+show cartoon
+hide lines
+show sticks, resn HIS
+
+
+You should see a backbone representation of the protein with only the histidine side-chains visible.
+Try to locate the histidines in this structure.
+
+Is there any phosphate group present in this structure?
+
+Note that you can zoom on the histidines by typing in PyMOL:
+
+zoom resn HIS
+
+Revert to a full view with:
+
+zoom vis
+
+As a preparation step before docking, it is advised to remove any irrelevant water and other small molecules (e.g. small molecules from the crystallisation buffer), however do leave relevant co-factors if present. For E2A, the PDB file only contains water molecules. You can remove those in PyMOL by typing:
+
+remove resn HOH
+
+Now let us vizualize the residues affected by binding as identified by NMR. From [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"} the following residues of E2A were identified has having significant chemical shift perturbations:
+
+38,40,45,46,69,71,78,80,94,96,141
+
+We will now switch to a surface representation of the molecule and highlight the NMR-defined interface. In PyMOL type the following commands:
+
+
+color white, all
+show surface
+select e2a_active, (1F3G and resi 38,40,45,46,69,71,78,80,94,96,141)
+color red, e2a_active
+
+
+
+
+
+
+Inspect the surface.
+
+Do the identified residues form a well defined patch on the surface?
+Do they form a contiguous surface?
+
+The answer to the last question should be no: We can observe residue in the center of the patch that do not seem significantly affected while still being in the middle of the defined interface. This is the reason why in HADDOCK we also define "*passive*" residues that correspond to surface neighbors of active residues. These can be selected manually, or more conveniently you can let the HADDOCK server do it for you (see [Setting up the docking run](#setting-up-the-docking-run) below).
+
+As final step save the molecule as a new PDB file which we will call: *e2a_1F3G.pdb*
+For this in the PyMOL menu on top select:
+
+File -> Export molecule...
+Click on the save button
+Select as ouptut format PDB (*.pdb *.pdb.gz)
+Name your file *e2a_1F3G.pdb* and note its location
+
+After saving the molecule delete it from the Pymol window or close Pymol. You can remove the molecule by typing this into the command line window of PyMOL:
+
+
+delete 1F3G
+
+
+In a terminal, make sure that E2A chain is A.
+
+
+pdb_chain -A e2a_1F3G.pdb | pdb_chainxseg > e2a_1F3G_clean.pdb
+
+
+This will be usefull in the docking phase, as HADDOCK3 needs different chain associated to each protein involved in the docking.
+
+
+
+### Adding a phosphate group
+
+Since the biological function of this complex is to transfer a phosphate group from one protein to another, via histidines side-chains, it is relevant to make sure that a phosphate group be present for docking. As we have seen above none is currently present in the PDB files. HADDOCK does support a list of modified amino acids which you can find at the following link: [https://wenmr.science.uu.nl/haddock2.4/library](https://wenmr.science.uu.nl/haddock2.4/library){:target="_blank"}.
+
+Check the list of supported modified amino acids.
+What is the proper residue name for a phospho-histidine in HADDOCK?
+
+In order to use a modified amino-acid in HADDOCK, the only thing you will need to do is to edit the PDB file and change the residue name of the amino-acid you want to modify. Don not bother deleting irrelevant atoms or adding missing ones, HADDOCK will take care of that. For E2A, the histidine that is phosphorylated has residue number 90. In order to change it to a phosphorylated histidine do the following:
+
+Edit the PDB file (*e2a_1F3G_clean.pdb*) in your favorite text editor
+Change the name of histidine 90 to NEP
+Save the file (as simple text file) under a new name, e.g. *e2aP_1F3G.pdb*
+
+Alternatively, this can also be done from the command line with the following command:
+
+
+sed 's/HIS\ A\ 90/NEP\ A\ 90/g' e2a_1F3G_clean.pdb > e2aP_1F3G.pdb
+
+
+**Note:** The same procedure can be used to introduce a mutation in an input protein structure.
+
+
+
+
+### Inspecting and preparing HPR for docking
+
+We will now inspect the HPR structure. For this start PyMOL and in the command line window of PyMOL type:
+
+
+fetch 1HDN
+show cartoon
+hide lines
+
+
+Since this is an NMR structure it does not contain any water molecules and we don't need to remove them.
+
+Let's vizualize the residues affected by binding as identified by NMR. From [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"} the following residues were identified has having significant chemical shift perturbations:
+
+15,16,17,20,48,49,51,52,54,56
+
+We will now switch to a surface representation of the molecule and highlight the NMR-defined interface. In PyMOL type the following commands:
+
+
+color white, all
+show surface
+select hpr_active, (1HDN and resi 15,16,17,20,48,49,51,52,54,56)
+color red, hpr_active
+
+
+Again, inspect the surface.
+
+Do the identified residues form a well defined patch on the surface?
+Do they form a contiguous surface?
+
+Now since this is an NMR structure, it actually consists of an ensemble of models. HADDOCK can handle such ensemble, using each conformer in turn as starting point for the docking. We however recommend to limit the number of conformers used for docking, since the number of conformer combinations of the input molecules might explode (e.g. 10 conformers each will give 100 starting combinations and if we generate 1000 ridig body models (see [HADDOCK general concepts](#haddock-general-concepts) above) each combination will only be sampled 10 times).
+
+Now let's vizualise this NMR ensemble. In PyMOL type:
+
+
+hide all
+show ribbon
+set all_states, on
+
+
+You should now be seing the 30 conformers present in this NMR structure. To illustrate the potential benefit of using an ensemble of conformations as starting point for docking let's look at the side-chains of the active residues:
+
+
+show lines, hpr_active
+
+
+
+
+
+
+You should be able to see the amount of conformational space sampled by those surface side-chains. You can clearly see that some residues do sample a large variety of conformations, one of which might lead to much better docking results.
+
+**Note:** Pre-sampling of possible conformational changes can thus be beneficial for the docking, but again do limit the number of conformers used for the docking (or increase the number of sampled models, which is possible for users with expert- or guru-level access. The default access level is however only easy - for a higher level access do request it after registration).
+
+As final step, save the molecule as a new PDB file which we will call: *hpr-ensemble.pdb*
+For this in the PyMOL menu select:
+
+File -> Export molecule...
+Select as State 0 (all states)
+Click on Save...
+Select as ouptut format PDB (*.pdb *.pdb.gz)
+Name your file *hpr-ensemble.pdb* and note its location
+
+
+In a terminal, make sure that hpr chain is B.
+
+
+pdb_chain -B hpr-ensemble.pdb | pdb_chainxseg > hpr-ensemble_clean.pdb
+
+
+This will be usefull in the docking phase, as HADDOCK3 needs different chain associated to each protein involved in the docking.
+
+
+
+
+
+## Defining restraints for docking
+
+Before setting up the docking, we first need to generate distance restraint files in a format suitable for HADDOCK.
+HADDOCK uses [CNS][link-cns]{:target="_blank"} as computational engine.
+A description of the format for the various restraint types supported by HADDOCK can be found in our [Nature Protocol 2024][nat-pro]{:target="_blank"} paper, Box 1.
+
+Distance restraints are defined as follows:
+
+
+
+The lower limit for the distance is calculated as: distance minus lower-bound correction
+and the upper limit as: distance plus upper-bound correction.
+
+The syntax for the selections can combine information about:
+
+* chainID - `segid` keyword
+* residue number - `resid` keyword
+* atom name - `name` keyword.
+
+Other keywords can be used in various combinations of OR and AND statements. Please refer for that to the [online CNS manual][link-cns]{:target="_blank"}.
+
+E.g.: a distance restraint between the CB carbons of residues 10 and 200 in chains A and B with an
+allowed distance range between 10Å and 20Å would be defined as follows:
+
+
+assign (segid A and resid 10 and name CB) (segid B and resid 200 and name CB) 20.0 10.0 0.0
+
+
+
+Can you think of a different way of defining the distance and lower and upper corrections while maintaining the same
+allowed range?
+
+
+
+
+
+### Defining active and passive residues for E2A
+
+As stated before, the following residues were identified has having significant chemical shift perturbations from [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}:
+
+38,40,45,46,69,71,78,80,94,96,141
+
+Hence, we are using these residues as `active` residues for the docking run. However, we have to define `passive` residues before the run.
+These passive residues allows us to deal with potentially incomplete binding sites by defining surface neighbors as `passive` residues.
+These are added to the definition of the interface but will not lead to any energetic penalty if they are not part of the
+binding site in the final models, while the residues defined as `active` (typically the identified or predicted binding
+site residues) will. When using the HADDOCK server, `passive` residues will be automatically defined. Here since we are
+using a local version, we need to define those manually and create a file in which the active and passive residues will be listed.
+
+This can easily be done using a haddock3 command line tool in the following way:
+
+
+echo "38 40 45 46 69 71 78 80 94 96 141" > e2a.act-pass
+haddock3-restraints passive_from_active e2a_1F3G.pdb 38,40,45,46,69,71,78,80,94,96,141 >> e2a.act-pass
+
+
+The NMR-identified residues and their surface neighbors generated with the above command can be used to define ambiguous interactions restraints, either using the NMR identified residues as active in HADDOCK, or combining those with the surface neighbors and use this combination as passive only. Here we decided to treat the NMR-identified residues as active residues.
+Note the file consists of two lines, with the first one defining the `active` residues and
+the second line the `passive` ones. We will use later these files to generate the ambiguous distance restraints for HADDOCK.
+
+In general it is better to be too generous rather than too strict in the
+definition of passive residues.
+
+An important aspect is to filter both the active (the residues identified from
+your mapping experiment) and passive residues by their solvent accessibility.
+Our web service uses a default relative accessibility of 15% as cutoff. This is
+not a hard limit. You might consider including even more buried residues if some
+important chemical group seems solvent accessible from a visual inspection.
+
+
+
+### Defining active and passive residues for HPR
+
+As stated before, the following residues were identified has having significant chemical shift perturbations from [Wang *et al*, EMBO J (2000)](https://onlinelibrary.wiley.com/doi/10.1093/emboj/19.21.5635/abstract){:target="_blank"}:
+
+15,16,17,20,48,49,51,52,54,56
+
+Using the same haddock3 command line tool:
+
+
+echo "15 16 17 20 48 49 51 52 54 56" > hpr.act-pass
+haddock3-restraints passive_from_active hpr-ensemble.pdb 15,16,17,20,48,49,51,52,54,56 >> hpr.act-pass
+
+
+
+
+### Defining the ambiguous interaction restraints
+
+Once you have defined your active and passive residues for both molecules, you
+can proceed with the generation of the ambiguous interaction restraints (AIR) file for HADDOCK.
+For this you can either make use of our online [haddock-restraints](https://rascar.science.uu.nl/haddock-restraints) web service, entering the
+list of active and passive residues for each molecule, and saving the resulting
+restraint list to a text file, or use our haddock3 command line tool.
+
+To use our haddock3 command line tool you need to create for each molecule a file containing two lines:
+
+* The first line corresponds to the list of active residues (numbers separated by spaces)
+* The second line corresponds to the list of passive residues.
+
+* For E2A (the file called `e2a.act-pass`):
+
+
+Using those two files, we can generate the CNS-formatted AIR restraint files
+with the following command:
+
+
+haddock3-restraints active_passive_to_ambig restraints/e2a.act-pass restraints/hpr.act-pass \-\-segid-one A \-\-segid-two B > e2a-hpr_air.tbl
+
+
+This generates a file called `ambig-prot-prot.tbl` that contains the AIR
+restraints. The default distance range for those is between 0 and 2Å, which
+might seem short but makes senses because of the 1/r^6 summation in the AIR
+energy function that makes the effective distance be significantly shorter than
+the shortest distance entering the sum.
+
+The effective distance is calculated as the SUM over all pairwise atom-atom
+distance combinations between an active residue and all the active+passive on
+the other molecule: SUM[1/r^6]^(-1/6).
+
+
+
+### Restraints validation
+
+If you modify manually this generated restraint files or create your own, it is possible to quickly check if the format is valid using the following `haddock3-restraints` sub-command:
+
+
+haddock3-restraints validate_tbl e2a-hpr_air.tbl \-\-silent
+
+
+No output means that your TBL file is valid.
+
+*__Note__* that this only validates the syntax of the restraint file, but does not check if the selections defined in the restraints are actually existing in your input PDB files.
+
+
+
+
+
+## Setting up the docking with HADDOCK3
+
+
+
+### HADDOCK3 workflow definition
+
+Now that we have all required files at hand (PBD and restraints files) it is time to setup our docking protocol.
+For this we need to create a HADDOCK3 configuration file that will define the docking workflow. In contrast to HADDOCK2.X,
+we have much more flexibility in doing this. We will illustrate this flexibility by introducing a clustering step
+after the initial rigid-body docking stage, select up to 10 models per cluster and refine all of those.
+
+HADDOCK3 also provides an analysis module (`caprieval`) that allows
+to compare models to either the best scoring model (if no reference is given) or a reference structure, which in our case
+we have at hand. This will directly allow us to assess the performance of the protocol for the following two scenarios:
+
+1. **Scenario 1**: 1000 rigidbody docking models, selection of top200 and flexible refinement + EM
+3. **Scenario 2**: 1000 rigidbody docking models, FCC clustering and selection of max 20 models per cluster followed by flexible refinement and EM
+
+The basic workflow for the first scenario consists of the following modules:
+
+1. **`topoaa`**: *Generates the topologies for the CNS engine and builds missing atoms*
+2. **`rigidbody`**: *Performs rigid body energy minimisation (`it0` in haddock2.x)*
+3. **`caprieval`**: *Calculates CAPRI metrics (i-RMSD, l-RMSD, Fnat, DockQ) with respect to the top scoring model or reference structure if provided*
+4. **`seletop`** : *Selects the top X models from the previous module*
+5. **`flexref`**: *Preforms semi-flexible refinement of the interface (`it1` in haddock2.4)*
+6. **`caprieval`**
+7. **`emref`**: *Final refinement by energy minimisation (`itw` EM only in haddock2.4)*
+8. **`caprieval`**
+9. **`clustfcc`**: *Clustering of models based on the fraction of common contacts (FCC)*
+10. **`seletopclusts`**: *Selects the top models of all clusters*
+11. **`caprieval`** Cluster-based CAPRI statistics
+12. **`contactmap`**: *Contacts matrix and a chordchart of intermolecular contacts*
+
+In the second scenario a clustering step is introduced after rigid-body docking with the seletop module of scenario 1 (step4) replaced by:
+
+* **`clustfcc`**: *Clustering of models based on the fraction of common contacts (FCC)*
+* **`seletopclusts`**: *Selection of the top10 models of all clusters*
+
+The input PDB and restraints files are the same for the two scenarios.
+
+
+The corresponding toml configuration files are provided in the `workflows` directory. For scenario2 it looks like:
+
+{% highlight toml %}
+# ====================================================================
+# Protein-protein docking example with NMR-derived ambiguous interaction restraints
+# ====================================================================
+
+# directory in which the scoring will be done
+run_dir = "run2-full"
+
+# execution mode
+mode = "local"
+# maximum of 50 cores (limited by the number of available cores)
+ncores = 50
+
+# molecules to be docked
+molecules = [
+ "data/e2aP_1F3G.pdb",
+ "data/hpr-ensemble_clean.pdb"
+ ]
+
+# ====================================================================
+# Parameters for each stage are defined below, prefer full paths
+# ====================================================================
+
+[topoaa]
+autohis = true
+
+[rigidbody]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[clustfcc]
+
+[seletopclusts]
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[flexref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[emref]
+tolerance = 5
+ambig_fname = "data/e2a-hpr_air.tbl"
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[clustfcc]
+
+[seletopclusts]
+
+[caprieval]
+reference_fname = "data/e2a-hpr_1GGR.pdb"
+
+[contactmap]
+
+# ====================================================================
+{% endhighlight %}
+
+
+**_Note_**: For making best use of the available CPU resources it is recommended to adapt the sampling parameter to be a multiple of the number of available cores when running in local mode.
+
+**_Note_**: In case no reference is available (the usual scenario), the best ranked model is used as reference for each stage.
+Including `caprieval` at the various stages even when no reference is provided is useful to get the rankings and scores and visualise the results (see Analysis section below).
+
+**_Note_**: The default sampling would be 1000 models for `rigidbody` of which, for scenario1, 200 are passed to the flexible refinement in `seletop`.
+
+As an indication of the computational requirements, the default sampling worflow of scenario1 for this tutorial completes in about 37min using 12 cores on a MaxOSX M2 processor.
+
+**_Note_**: To get a list of all possible parameters that can be defined in a specific module (and their default values) you can use the following command:
+
+
+haddock3-cfg -m \
+
+
+Add the `-d` option to get a more detailed description of parameters and use the `-h` option to see a list of arguments and options.
+
+Alternatively, you can consult the [developer's guide](https://www.bonvinlab.org/haddock3/){:target="_blank"}, where each parameter of each module is listed along with their default values, short and long descriptions, etc. Navigate to the [Modules](https://www.bonvinlab.org/haddock3/modules/index.html#){:target="_blank"} and select a module which parameters you want to display.
+
+
+In the above workflow we see in three modules a *tolerance* parameter defined. Using the *haddock3-cfg* command try to figure out what this parameter does.
+
+
+
+
+
+### Running HADDOCK3
+
+In in the first section of the workflow above we have a parameter `mode` defining the execution mode. HADDOCK3 currently supports three difference execution modes:
+
+- **local** : In this mode, HADDOCK3 will run on the current system, using the defined number of cores (`ncores`) in the config file to a maximum of the total number of available cores on the system.
+- **batch**: In this mode, HADDOCK3 will typically be started on your local server (e.g. the login node) and will dispatch jobs to the batch system of your cluster (slurm and torque are currently supported).
+- **mpi**: HADDOCK3 also supports a pseudo parallel MPI implementation, which allows to harvest the power of multiple nodes to distribute the computations (functional but still very experimental at this stage).
+
+
+
+
+#### Learn more about the various execution modes of haddock3
+
+
+
+
+
+ Local executionexpand_more
+
+
+In this mode HADDOCK3 will run on the current system, using the defined number of cores (ncores)
+in the config file to a maximum of the total number of available cores on the system minus one.
+An example of the relevant parameters to be defined in the first section of the config file is:
+
+{% highlight toml %}
+# compute mode
+mode = "local"
+# 1 nodes x 50 ncores
+ncores = 50
+{% endhighlight %}
+
+In this mode HADDOCK3 can be started from the command line with as argument the configuration file of the defined workflow.
+
+{% highlight shell %}
+haddock3
+{% endhighlight %}
+
+Alternatively redirect the output to a log file and send haddock3 to the background.
+
+
+As an indication, running locally on an Apple M2 laptop using 10 cores, this workflow completed in 7 minutes.
+
+
+{% highlight shell %}
+haddock3 > haddock3.log &
+{% endhighlight %}
+
+Note: This is also the execution mode that should be used for example when submitting the HADDOCK3 job to a node of a cluster, requesting X number of cores.
+
+
+
+
+
+
+
+ Exection in batch mode using slurmexpand_more
+
+
+ Here is an example script for submitting via the slurm batch system:
+
+ {% highlight shell %}
+ #!/bin/bash
+ #SBATCH --nodes=1
+ #SBATCH --tasks-per-node=50
+ #SBATCH -J haddock3
+ #SBATCH --partition=medium
+
+ # activate the haddock3 conda environment
+ source $HOME/miniconda3/etc/profile.d/conda.sh
+ conda activate haddock3
+
+ # go to the run directory
+ cd $HOME/HADDOCK3-antibody-antigen
+
+ # execute
+ haddock3
+ {% endhighlight %}
+
+
+
+ In this mode HADDOCK3 will typically be started on your local server (e.g. the login node) and will dispatch jobs to the batch system of your cluster.
+ Two batch systems are currently supported: slurm and torque (defined by the batch_type parameter).
+ In the configuration file you will have to define the queue name and the maximum number of concurrent jobs sent to the queue (queue_limit).
+
+ Since HADDOCK3 single model calculations are quite fast, it is recommended to calculate multiple models within one job submitted to the batch system.
+ he number of model per job is defined by the concat parameter in the configuration file.
+ You want to avoid sending thousands of very short jobs to the batch system if you want to remain friend with your system administrators...
+
+ An example of the relevant parameters to be defined in the first section of the config file is:
+
+ {% highlight toml %}
+ # compute mode
+ mode = "batch"
+ # batch system
+ batch_type = "slurm"
+ # queue name
+ queue = "short"
+ # number of concurrent jobs to submit to the batch system
+ queue_limit = 100
+ # number of models to produce per submitted job
+ concat = 10
+ {% endhighlight %}
+
+ In this mode HADDOCK3 can be started from the command line as for the local mode.
+
+
+
+
+
+
+ Exection in MPI modeexpand_more
+
+
+
+HADDOCK3 supports a parallel pseudo-MPI implementation. For this to work, the mpi4py library must have been installed at installation time.
+Refer to the (MPI-related instructions).
+
+The execution mode should be set to `mpi` and the total number of cores should match the requested resources when submitting to the batch system.
+
+An example of the relevant parameters to be defined in the first section of the config file is:
+
+{% highlight toml %}
+# compute mode
+mode = "mpi"
+# 5 nodes x 50 tasks = ncores = 250
+ncores = 250
+{% endhighlight %}
+
+In this execution mode the HADDOCK3 job should be submitted to the batch system requesting the corresponding number of nodes and cores per node.
+
+
+ {% highlight shell %}
+ #!/bin/bash
+ #SBATCH --nodes=5
+ #SBATCH --tasks-per-node=50
+ #SBATCH -J haddock3mpi
+
+ # Make sure haddock3 is activated
+ source $HOME/miniconda3/etc/profile.d/conda.sh
+ conda activate haddock3
+
+ # go to the run directory
+ # edit if needed to specify the correct location
+ cd $HOME/HADDOCK3-antibody-antigen
+
+ # execute
+ haddock3 \
+ {% endhighlight %}
+
+
+
+
+
+
+
+### Scenario 1: 1000 rigidbody docking models, selection of top 200 and flexible refinement + EM
+
+Now that we have all data ready, and know about execution modes of HADDOCK3 it is time to setup the docking for the first scenario. The restraint file to use for this is `e2a-hpr_air.tbl`. We proceed to produce 1000 rigidbody docking models, from which 200 will be selected and refined through flexible refinement and energy minimization. For the analysis following the docking results, we are using the solved complex [1GGR](https://www.rcsb.org/structure/1GGR), named e2a-hpr_1GGR.pdb.
+
+The configuration file for this scenario is provided as `workflows/scenario1.cfg`
+
+If you have everything ready, you can launch haddock3 either from the command line, or, better,
+submitting it to the batch system requesting in this local run mode a full node (see local execution mode above).
+Instead of running the full sampling scenario, you can run a shorter version (sampling reduced to 100/20) (the full run results are anyway provided in the `runs` directory):
+
+
+haddock3 workflows/scenario1-short.cfg
+
+
+As an indication, running locally on an Apple M2 laptop using 12 cores, this workflow completed in less than 3 minutes, while the full runs takes about 21 minutes to complete.
+
+
+
+### Scenario 2: 1000 rigidbody docking models, FCC clustering and selection of max 20 models per cluster followed by flexible refinement and EM
+
+In scenario 2, we proceed to produce 1000 rigidbody docking models, from which we proceed to do a first clustering analysis. From the top10 models of each clusters a flexible refinement then energy minization is done. This scenario illustrates the new flexibility of HADDOCK3, adding a clustering step after rigid-body docking, which is not possible in the HADDOCK2.X version.
+
+The configuration file for this scenario is provided as `workflows/scenario2.cfg`
+
+If you have everything ready, you can launch haddock3 either from the command line, or, better,
+submitting it to the batch system requesting in this local run mode a full node (see local execution mode above).
+Instead of running the full sampling scenario, you can run a shorter version (sampling reduced to 100) (the full run results are anyway provided in the `runs` directory):
+
+
+haddock3 workflows/scenario2-short.cfg
+
+
+As an indication, running locally on an Apple M2 laptop using 10 cores, this workflow completed in less than 4 minutes.
+
+
+
+
+
+## Analysis of docking results
+
+
+### General structure of a run directory
+
+In case something went wrong with the docking (or simply if you do not want to wait for the results) you can find the following precalculated runs in the `runs` directory:
+- `run1-full`: docking scenario1
+- `run1-short`: docking scenario1-short (limited sampling)
+- `run2-full`: docking scenario2
+- `run2-short`: docking scenario2-short (limited sampling)
+
+
+Once your run has completed inspect the content of the resulting directory. You will find the various steps (modules) of the defined workflow numbered sequentially, e.g. for scenario 2:
+
+{% highlight shell %}
+> ls runs/run2-full/
+ 00_topoaa/
+ 01_rigidbody/
+ 02_caprieval/
+ 03_clustfcc/
+ 04_seletopclusts/
+ 05_caprieval/
+ 06_flexref/
+ 07_caprieval/
+ 08_emref/
+ 09_caprieval/
+ 10_clustfcc/
+ 11_seletopclusts/
+ 12_caprieval/
+ 13_contactmaps
+ analysis/
+ data/
+ log
+ traceback/
+{% endhighlight %}
+
+In addition, there is a log file (text file) and four additional directories:
+
+- the `analysis` directory contains various plots to visualize the results for each caprieval step and a general report (`report.html`) that provides all statistics with various plots. You can open this file in your preferred web browser
+- the `data` directory contains the input data (PDB and restraint files) for the various modules, as well as an input workflow (in `configurations` directory)
+- the `toppar` directory contains the force field topology and parameter files (only present when running in self-contained mode)
+- the `traceback` directory contains `traceback.tsv`, which links all models to see which model originates from which throughout all steps of the workflow.
+
+You can find information about the duration of the run at the bottom of the log file.
+
+Each sampling/refinement/selection module will contain PDB files.
+For example, the `09_seletopclusts` directory contains the selected models from each cluster. The clusters in that directory are numbered based
+on their rank, i.e. `cluster_1` refers to the top-ranked cluster. Information about the origin of these files can be found in that directory in the `seletopclusts.txt` file.
+
+The simplest way to extract ranking information and the corresponding HADDOCK scores is to look at the `XX_caprieval` directories (which is why it is a good idea to have it as the final module, and possibly as intermediate steps). This directory will always contain a `capri_ss.tsv` single model statistics file, which contains the model names, rankings and statistics (score, iRMSD, Fnat, lRMSD, ilRMSD and dockq score). E.g. for `run1-short/11_caprieval`:
+
+
+
+If clustering was performed prior to calling the `caprieval` module, the `capri_ss.tsv` file will also contain information about to which cluster the model belongs to and its ranking within the cluster.
+
+The relevant statistics are:
+
+* **score**: *the HADDOCK score (arbitrary units)*
+* **irmsd**: *the interface RMSD, calculated over the interfaces the molecules*
+* **fnat**: *the fraction of native contacts*
+* **lrmsd**: *the ligand RMSD, calculated on the ligand after fitting on the receptor (1st component)*
+* **ilrmsd**: *the interface-ligand RMSD, calculated over the interface of the ligand after fitting on the interface of the receptor (more relevant for small ligands for example)*
+* **dockq**: *the DockQ score, which is a combination of irmsd, lrmsd and fnat and provides a continuous scale between 1 (exactly equal to reference) and 0*
+
+Various other terms are also reported including:
+
+* **bsa**: *the buried surface area (in squared angstroms)*
+* **elec**: *the intermolecular electrostatic energy*
+* **vdw**: *the intermolecular van der Waals energy*
+* **desolv**: *the desolvation energy*
+
+
+The iRMSD, lRMSD and Fnat metrics are the ones used in the blind protein-protein prediction experiment [CAPRI](https://capri.ebi.ac.uk/){:target="_blank"} (Critical PRediction of Interactions).
+
+In CAPRI the quality of a model is defined as (for protein-protein complexes):
+
+* **acceptable model**: i-RMSD < 4Å or l-RMSD < 10Å and Fnat > 0.1 (0.23 < DOCKQ < 0.49)
+* **medium quality model**: i-RMSD < 2Å or l-RMSD < 5Å and Fnat > 0.3 (0.49 < DOCKQ < 0.8)
+* **high quality model**: i-RMSD < 1Å or l-RMSD < 1Å and Fnat > 0.5 (DOCKQ > 0.8)
+
+
+Based on these CAPRI criteria, what is the quality of the best model listed above (_cluster_1_model_1.pdb_)?
+
+
+In case where the `caprieval` module is called after a clustering step, an additional `capri_clt.tsv` file will be present in the directory.
+This file contains the cluster ranking and score statistics, averaged over the minimum number of models defined for clustering
+(4 by default), with their corresponding standard deviations. E.g.:
+
+
+
+
+In this file you find the cluster rank (which corresponds to the naming of the clusters in the previous `seletop` directory), the cluster ID (which is related to the size of the cluster, 1 being always the largest cluster), the number of models (n) in the cluster and the corresponding statistics (averages + standard deviations). The corresponding cluster PDB files will be found in the preceeding `09_seletopclusts` directory.
+
+While these simple text files can be easily checked from the command line already, they might be cumbersome to read.
+For that reason, we have developed a post-processing analysis that automatically generates html reports for all `caprieval` steps in the workflow.
+These are located in the respective `analysis/XX_caprieval` directories and can be viewed using your favorite web browser.
+
+
+
+
+### Analysis scenario 1:
+
+Let us now analyze the docking results for this scenario. Use for that either your own run or a pre-calculated run provided in the `runs` directory.
+
+
+
+
+
+#### Cluster statistics
+
+First of all let us check the final cluster statistics using the full run results from `runs/run1-full`.
+
+Go into the `analysis/10_caprieval_analysis` directory of the respective run directory (if needed copy the run or that directory to your local computer) and open in a web browser the `report.html` file. Be patient as this page contains interactive plots that may take some time to generate.
+
+You can also view this report online [here](plots/scenario1/report.html){:target="_blank"}
+
+
+On the top of the page, you will see a table that summarises the cluster statistics (taken from the `capri_clt.tsv` file).
+The columns (corresponding to the various clusters) are sorted by default on the cluster rank, which is based on the HADDOCK score (found on the 4th row of the table).
+As this is an interactive table, you can sort it as you wish by using the arrows present in the first column.
+Simply click on the arrows of the term you want to use to sort the table (and you can sort it in ascending or descending order).
+A snapshot of this table is shown below:
+
+*__Note__* that in case the PDB files are still compressed (gzipped) the download links will not work. Also online visualisation is not enabled.
+
+
+Inspect the final cluster statistics
+
+How many clusters have been generated?
+
+Look at the score of the first few clusters: Are they significantly different if you consider their average scores and standard deviations?
+
+Since for this tutorial we have at hand the crystal structure of the complex, we provided it as reference to the `caprieval` modules.
+This means that the iRMSD, lRMSD, Fnat and DockQ statistics report on the quality of the docked model compared to the reference crystal structure.
+
+How many clusters of acceptable or better quality have been generate according to CAPRI criteria?
+
+What is the rank of the best cluster generated?
+
+What is the rank of the first acceptable of better cluster generated?
+
+
+We are also providing in the `scripts` directory a simple script that extract some cluster statistics for acceptable or better clusters from the `caprieval` steps.
+To use is simply call the script with as argument the run directory you want to analyze, e.g.:
+
+
+ ./scripts/extract-capri-stats-clt.sh ./runs/run1-full
+
+
+
+
+ View the output of the scriptexpand_more
+
+
+==============================================
+== run1-full//02_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 5.163 Fnat: 0.292 DockQ: 0.339
+==============================================
+== run1-full//04_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 5.970 Fnat: 0.174 DockQ: 0.222
+==============================================
+== run1-full//06_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 5.846 Fnat: 0.174 DockQ: 0.223
+==============================================
+== run1-full//08_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 0 out of 1
+Total number of medium or better clusters: 0 out of 1
+Total number of high quality clusters: 0 out of 1
+
+First acceptable cluster - rank: i-RMSD: Fnat: DockQ:
+First medium cluster - rank: i-RMSD: Fnat: DockQ:
+Best cluster - rank: - i-RMSD: 5.814 Fnat: 0.201 DockQ: 0.231
+==============================================
+== run1-full//11_caprieval/capri_clt.tsv
+==============================================
+Total number of acceptable or better clusters: 2 out of 3
+Total number of medium or better clusters: 1 out of 3
+Total number of high quality clusters: 0 out of 3
+
+First acceptable cluster - rank: 1 i-RMSD: 1.017 Fnat: 0.875 DockQ: 0.844
+First medium cluster - rank: 1 i-RMSD: 1.017 Fnat: 0.875 DockQ: 0.844
+Best cluster - rank: 1 i-RMSD: 1.017 Fnat: 0.875 DockQ: 0.844
+
+
+
+
+
+
+
+#### Visualizing the scores and their components
+
+
+Next to the cluster statistic table shown above, the `report.html` file also contains a variety of plots displaying the HADDOCK score
+and its components against various CAPRI metrics (i-RMSD, l-RMSD, Fnat, Dock-Q) with a color-coded representation of the clusters.
+These are interactive plots. A menu on the top right of the first row (you might have to scroll to the rigth to see it)
+allows you to zoom in and out in the plots and turn on and off clusters.
+
+As a reminder, you can view this report online [**here**](plots/scenario1/report.html){:target="_blank"}
+
+
+Examine the plots (remember here that higher DockQ values and lower i-RMSD values correspond to better models)
+
+
+For this antibody-antigen case, which of the score components correlates best with the quality of the models?
+
+
+Finally, the report also shows at the bottom of the page plots of the cluster statistics (distributions of values per cluster ordered according to their HADDOCK rank).
+
+
+
+#### Some single structure analysis
+
+
+Single structure statistics can also be visualised in an html report if you would open a file from a caprieval step prior to clustering (e.g. `08_caprieval` after the final energy minimisation).
+
+Some simple statistics can be extracted from the single model `caprieval` `capri_ss.tsv` files with the `extract-capri-stats.sh` script:
+
+
+
+ ./scripts/extract-capri-stats.sh ./runs/run1-full
+
+
+
+
+View the output of the script:expand_more
+
+
+==============================================
+== run1-full//02_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 401 out of 1000
+Total number of medium or better models: 221 out of 1000
+Total number of high quality models: 0 out of 1000
+
+First acceptable model - rank: 1 i-RMSD: 2.788 Fnat: 0.306 DockQ: 0.385
+First medium model - rank: 7 i-RMSD: 1.148 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 9 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run1-full//04_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 159 out of 200
+Total number of medium or better models: 155 out of 200
+Total number of high quality models: 0 out of 200
+
+First acceptable model - rank: 1 i-RMSD: 2.788 Fnat: 0.306 DockQ: 0.385
+First medium model - rank: 7 i-RMSD: 1.148 Fnat: 0.556 DockQ: 0.711
+Best model - rank: 9 i-RMSD: 1.145 Fnat: 0.556 DockQ: 0.713
+==============================================
+== run1-full//06_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 161 out of 200
+Total number of medium or better models: 141 out of 200
+Total number of high quality models: 41 out of 200
+
+First acceptable model - rank: 1 i-RMSD: 1.034 Fnat: 0.833 DockQ: 0.827
+First medium model - rank: 1 i-RMSD: 1.034 Fnat: 0.833 DockQ: 0.827
+Best model - rank: 62 i-RMSD: 0.885 Fnat: 0.806 DockQ: 0.841
+==============================================
+== run1-full//08_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 161 out of 200
+Total number of medium or better models: 141 out of 200
+Total number of high quality models: 49 out of 200
+
+First acceptable model - rank: 1 i-RMSD: 1.030 Fnat: 0.889 DockQ: 0.846
+First medium model - rank: 1 i-RMSD: 1.030 Fnat: 0.889 DockQ: 0.846
+Best model - rank: 91 i-RMSD: 0.846 Fnat: 0.806 DockQ: 0.843
+==============================================
+== run1-full//11_caprieval/capri_ss.tsv
+==============================================
+Total number of acceptable or better models: 16 out of 26
+Total number of medium or better models: 10 out of 26
+Total number of high quality models: 5 out of 26
+
+First acceptable model - rank: 1 i-RMSD: 1.030 Fnat: 0.889 DockQ: 0.846
+First medium model - rank: 1 i-RMSD: 1.030 Fnat: 0.889 DockQ: 0.846
+Best model - rank: 10 i-RMSD: 0.922 Fnat: 0.833 DockQ: 0.841
+
+ In terms of iRMSD values we only observe very small differences in the best models, but the change in ranking is impressive!
+ The fraction of native contacts and the DockQ scores are however improving much more after flexible refinement.
+ All this will of course depend on how different are the bound and unbound conformations and the amount of data
+ used to drive the docking process. In general, from our experience, the more and better data at hand,
+ the larger the conformational changes that can be induced.
+
+ This is clearly not the case. The scoring function is not perfect, but does a reasonable job in ranking models of acceptable or better quality on top in this case.
+
+ After rigid body docking the first acceptable cluster is at rank 3 and the same is true after refinement, but the iRMSD values have improved.
+
+
+
+
+
+
+
+## Visualisation of the models
+
+
+We will now visualise the generated models. For this go for example to `runs/run1-full/10_seletopclusts/`. This directory contains the top10 models of each cluster.
+For visualisation we can load in PyMol the best model of each cluseter (the ones ending with `_1.pdb`). By default the PDB files will be gzipped.
+PyMol should be able to directly read those.
+In order to compare the various clusters we will however download the models and inspect them using PyMol.
+
+
+Then start PyMOL and load each cluster representative:
+
+File menu -> Open -> select cluster_1_model_1.pdb.gz
+
+Repeat this for each cluster.
+
+Alternatively you could start PyMol from the command line (if available) and load all models at once:
+
+
+pymol *_1.pdb.gz
+
+
+Once all files have been loaded, type in the PyMOL command window:
+
+
+show cartoon
+util.cbc
+hide lines
+
+
+Let's then superimpose all models on chain A of the first cluster:
+
+
+select cluster_1_model_1 and chain A
+alignto sele
+
+
+This will align all clusters on chain A (E2A), maximizing the differences in the orientation of chain B (HPR).
+
+
+Examine the various clusters. How does the orientation of HPR differ between them?
+
+
+**Note:** You can turn on and off a cluster by clicking on its name in the right panel of the PyMOL window.
+
+Let's now check if the active residues which we defined are actually part of the interface. In the PyMOL command window type:
+
+
+select e2a_active, (resi 38,40,45,46,69,71,78,80,94,96,141) and chain A
+select hpr_active, (resi 15,16,17,20,48,49,51,52,54,56) and chain B
+color red, e2a_active
+color orange, hpr_active
+
+
+
+Are the active residues in the interface?
+
+
+
+
+
+
+
+## Biological insights
+
+The E2A-HPR complex is involved in phosphate-transfer, in which a phosphate group attached to histidine 90 of E2A (which we named NEP) is transferred to a histidine of HPR. As such, the docking models should make sense according to this information, meaning that two histidines should be in close proximity at the interface. Using PyMOL, check the various cluster representatives (we are assuming here you have performed all PyMOL commands of the previous section):
+
+
+select histidines, resn HIS+NEP
+show spheres, histidines
+util.cnc
+
+
+First of all, has the phosphate group been properly generated?
+
+**Note:** You can zoom on the phosphorylated histidine using the following PyMOL command:
+
+
+zoom resn NEP
+
+
+
+
+
+
+Zoom back to all visible molecules with
+
+
+zoom vis
+
+
+Now inspect each cluster in turn and check if histidine 90 of E2A is in close proximity to another histidine of HPR.
+To facilitate this analysis, view each cluster in turn (use the right panel to activate/desactivate the various clusters by clicking on their name).
+
+Based on this analysis, which cluster does satisfy best the biolocal information?
+
+Is this cluster also the best ranked one?
+
+
+
+
+
+## Comparison with the reference structure
+
+As explained in the introduction, the structure of the native complex has been determined by NMR (PDB ID [1GGR](https://www.ebi.ac.uk/pdbe/entry/pdb/1ggr){:target="_blank"}) using a combination of intermolecular NOEs and dipolar coupling restraints. We will now compare the docking models with this structure.
+
+If you still have all cluster representative open in PyMOL you can proceed with the sub-sequent analysis, otherwise load again each cluster representative as described above. Then, fetch the reference complex by typing in PyMOL:
+
+
+fetch 1GGR
+show cartoon
+color yellow, 1GGR and chain A
+color orange, 1GGR and chain B
+
+
+The number of chain B in this structure is however different from the HPR numbering in the structure we used: It starts at 301 while in our models chain B starts at 1. We can change the residue numbering easily in PyMol with the following command:
+
+
+alter (chain B and 1GGR), resv -=300
+
+
+Then superimpose all cluster representatives on the reference structure, using the entire chain A (E2A):
+
+
+select 1GGR and chain A
+alignto sele
+
+
+
+Does any of the cluster representatives ressemble the reference NMR structure?
+
+
+In case you found a reasonable prediction, what is its cluster rank?
+
+
+**_Note_** that based on the CAPRI analysis output discussed previously you should already know the answer to these questions.
+
+
+
+## Congratulations! 🎉
+
+You have completed this tutorial. If you have any questions or suggestions, feel free to contact us via email or asking a question through our [support center](https://ask.bioexcel.eu){:target="_blank"}.
+
+And check also our [education](/education) web page where you will find more tutorials!
+
+
+
+[air-help]: https://www.bonvinlab.org/software/haddock2.4/airs/ "AIRs help"
+[haddock-restraints]: https://wenmr.science.uu.nl/haddock-restraints/ "haddock-restraints"
+[haddock24protein]: /education/HADDOCK24/HADDOCK24-protein-protein-basic/
+[haddock-repo]: https://github.com/haddocking/haddock3 "HADDOCK3 GitHub"
+[haddock-tools]: https://github.com/haddocking/haddock-tools "HADDOCK tools GitHub"
+[installation]: https://www.bonvinlab.org/haddock3/INSTALL.html "Installation"
+[link-cns]: https://cns-online.org "CNS online"
+[link-forum]: https://ask.bioexcel.eu/c/haddock "HADDOCK Forum"
+[link-pdbtools]:http://www.bonvinlab.org/pdb-tools/ "PDB-Tools"
+[link-pymol]: https://www.pymol.org/ "PyMOL"
+[nat-pro]: https://www.nature.com/articles/s41596-024-01011-0.epdf?sharing_token=UHDrW9bNh3BqijxD2u9Xd9RgN0jAjWel9jnR3ZoTv0O8Cyf_B_3QikVaNIBRHxp9xyFsQ7dSV3t-kBtpCaFZWPfnuUnAtvRG_vkef9o4oWuhrOLGbBXJVlaaA9ALOULn6NjxbiqC2VkmpD2ZR_r-o0sgRZoHVz10JqIYOeus_nM%3D "Nature protocol"
+[tbl-examples]: https://github.com/haddocking/haddock-tools/tree/master/haddock_tbl_validation "tbl examples"
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/phosphorylated-histidine.png b/education/HADDOCK3/HADDOCK3-protein-protein/phosphorylated-histidine.png
new file mode 100644
index 000000000..8cd9d8148
Binary files /dev/null and b/education/HADDOCK3/HADDOCK3-protein-protein/phosphorylated-histidine.png differ
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/air_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/air_clt.html
new file mode 100644
index 000000000..af9cecbd9
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/air_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/bsa_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/bsa_clt.html
new file mode 100644
index 000000000..166d82c7a
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/bsa_clt.html
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_air.html
new file mode 100644
index 000000000..fb03b94b1
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_clt.html
new file mode 100644
index 000000000..7cc02cb34
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_desolv.html
new file mode 100644
index 000000000..a0b136494
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_elec.html
new file mode 100644
index 000000000..530f8a1c2
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_score.html
new file mode 100644
index 000000000..a28dbc691
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_vdw.html
new file mode 100644
index 000000000..677974c2c
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/dockq_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/elec_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/elec_clt.html
new file mode 100644
index 000000000..86cd80f0d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/elec_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_air.html
new file mode 100644
index 000000000..b90ba80af
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_clt.html
new file mode 100644
index 000000000..60941eacb
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_desolv.html
new file mode 100644
index 000000000..f46851124
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_elec.html
new file mode 100644
index 000000000..fe9eb25c3
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_score.html
new file mode 100644
index 000000000..d384fa754
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_vdw.html
new file mode 100644
index 000000000..f684b26f2
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/fnat_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_air.html
new file mode 100644
index 000000000..e837f95d4
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_clt.html
new file mode 100644
index 000000000..6a1d0a42e
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_desolv.html
new file mode 100644
index 000000000..a6d7078ea
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_elec.html
new file mode 100644
index 000000000..29e0096b1
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_score.html
new file mode 100644
index 000000000..0ee336d16
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_vdw.html
new file mode 100644
index 000000000..dfbdccece
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/ilrmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_air.html
new file mode 100644
index 000000000..0915f2e36
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_clt.html
new file mode 100644
index 000000000..4e2ad6f82
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_desolv.html
new file mode 100644
index 000000000..f944ba44d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_elec.html
new file mode 100644
index 000000000..7920a7096
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_score.html
new file mode 100644
index 000000000..dd6e9157f
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_vdw.html
new file mode 100644
index 000000000..a3e4f02c7
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/irmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_air.html
new file mode 100644
index 000000000..259490359
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_clt.html
new file mode 100644
index 000000000..be62ee5da
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_desolv.html
new file mode 100644
index 000000000..8b1290649
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_elec.html
new file mode 100644
index 000000000..6d2aebc95
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_score.html
new file mode 100644
index 000000000..1ca3c4fe5
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_vdw.html
new file mode 100644
index 000000000..db74c6bb8
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/lrmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/report.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/report.html
new file mode 100644
index 000000000..bb29af4de
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/report.html
@@ -0,0 +1,94 @@
+Analysis report of step 11_caprieval
Analysis report of step 11_caprieval
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/score_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/score_clt.html
new file mode 100644
index 000000000..c0128b6c5
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/score_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/summary.tgz b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/summary.tgz
new file mode 100644
index 000000000..f5c695e3e
Binary files /dev/null and b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/summary.tgz differ
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/vdw_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/vdw_clt.html
new file mode 100644
index 000000000..331ed0649
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario1/vdw_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/air_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/air_clt.html
new file mode 100644
index 000000000..ca12583c7
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/air_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/bsa_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/bsa_clt.html
new file mode 100644
index 000000000..65e98e1cd
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/bsa_clt.html
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_air.html
new file mode 100644
index 000000000..9353c5f0b
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_clt.html
new file mode 100644
index 000000000..e235e527b
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_desolv.html
new file mode 100644
index 000000000..8118695c7
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_elec.html
new file mode 100644
index 000000000..cf9937f23
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_score.html
new file mode 100644
index 000000000..0534498a3
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_vdw.html
new file mode 100644
index 000000000..8972b5fd5
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/dockq_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/elec_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/elec_clt.html
new file mode 100644
index 000000000..f2631da92
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/elec_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_air.html
new file mode 100644
index 000000000..d6efbb39e
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_clt.html
new file mode 100644
index 000000000..2ec145bea
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_desolv.html
new file mode 100644
index 000000000..766b6240d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_elec.html
new file mode 100644
index 000000000..9072abefe
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_score.html
new file mode 100644
index 000000000..fee4d29f1
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_vdw.html
new file mode 100644
index 000000000..7a4aeaacd
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/fnat_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_air.html
new file mode 100644
index 000000000..e82ea2e8e
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_clt.html
new file mode 100644
index 000000000..0f09cf31a
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_desolv.html
new file mode 100644
index 000000000..00a96beea
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_elec.html
new file mode 100644
index 000000000..201d3f941
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_score.html
new file mode 100644
index 000000000..a11407024
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_vdw.html
new file mode 100644
index 000000000..dc34d0a86
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/ilrmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_air.html
new file mode 100644
index 000000000..983aa6717
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_clt.html
new file mode 100644
index 000000000..0362cf7f7
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_desolv.html
new file mode 100644
index 000000000..c0e218ec0
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_elec.html
new file mode 100644
index 000000000..a503d106f
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_score.html
new file mode 100644
index 000000000..857635553
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_vdw.html
new file mode 100644
index 000000000..1b86cd68d
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/irmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_air.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_air.html
new file mode 100644
index 000000000..c81eac210
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_air.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_clt.html
new file mode 100644
index 000000000..894ca53e3
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_desolv.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_desolv.html
new file mode 100644
index 000000000..c3b12c201
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_desolv.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_elec.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_elec.html
new file mode 100644
index 000000000..665b1bb81
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_elec.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_score.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_score.html
new file mode 100644
index 000000000..a024135a5
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_score.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_vdw.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_vdw.html
new file mode 100644
index 000000000..1eed08460
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/lrmsd_vdw.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/report.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/report.html
new file mode 100644
index 000000000..01613986b
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/report.html
@@ -0,0 +1,94 @@
+Analysis report of step 12_caprieval
Analysis report of step 12_caprieval
+
+
The "Other" cluster is not a real cluster it containsall structures that are not in the top 10 clusters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/score_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/score_clt.html
new file mode 100644
index 000000000..052508565
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/score_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/summary.tgz b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/summary.tgz
new file mode 100644
index 000000000..2fe16dc45
Binary files /dev/null and b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/summary.tgz differ
diff --git a/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/vdw_clt.html b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/vdw_clt.html
new file mode 100644
index 000000000..3ba4787d6
--- /dev/null
+++ b/education/HADDOCK3/HADDOCK3-protein-protein/plots/scenario2/vdw_clt.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/education/HADDOCK3/index.md b/education/HADDOCK3/index.md
index 9b4d1590f..1e23e64c1 100644
--- a/education/HADDOCK3/index.md
+++ b/education/HADDOCK3/index.md
@@ -41,6 +41,9 @@ _Note that HADDOCK3 is still in heavy development and as such the software is ev
# System-specific basic tutorials
+* [**Protein-Protein docking**](/education/HADDOCK3/HADDOCK3-protein-protein):
+ This tutorial describes a basic protein-protein docking case using HADDOCK3. The interface information for the docking is derived from NMR chemical shift perturbation data. This tutorial requires basic Linux expertise.
+
* [**Antibody-antigen docking**](/education/HADDOCK3/HADDOCK3-antibody-antigen):
This tutorial demonstrates the use of HADDOCK3 for predicting the structure of an antibody-antigen complex using information
about the hypervariable loops of the antibody and a loose definition of the epitope determined through NMR experiments.