﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking	notify_on_close	platform	project
1022	Allow Toolshed bundles to provide access to their C++ API	Tristan Croll	Conrad Huang	"As part of my push to optimise ISOLDE's inner workings I've created a set of C++ classes that would be of more general interest and would make sense as their own bundle (tentatively named `Validation_Tools`). Specifically, I have:

 - `Dihedral` and `Dihedral_Mgr` base classes (specialised into `Proper_Dihedral` classes at present, with plans to add an `Improper`/`Chiral_Dihedral` specialisation once #872 is done)
- `Rama`/`Rama_Mgr` and `Rotamer`/`Rotamer_Mgr` classes handling peptide backbone and sidechain validations respectively
- A `RegularGridInterpolator` class providing fast ''n''-dimensional interpolation against probability contours

I've pasted some timings from my current implementation below. What prevents me from splitting it out is that I would then lose access to its C++ API from ISOLDE proper - which is a problem because I also have ISOLDE-specific C++ restraint classes dependent upon it. 


Timings for a small structure:
1. Finding all 1043 omega, phi, psi and chi dihedrals for 229 residues took 0.00571 seconds
2. Preparing the Ramachandran manager took 0.00783 seconds
3. Finding all 229 valid Ramachandran residues took 0.00028 seconds
4. Preparing the rotamer manager took 0.10936 seconds
5. Finding all 173 rotamers for 229 residues took 0.00125 seconds
Total initialisation time: 0.12443 seconds

6. Scoring 229 residues on the Ramachandran plot took 0.00051 seconds
7. Scoring 173 rotamers took 0.00031 seconds
Time for one complete rota/rama validation: 0.00083 seconds



Timing for a large structure (3j3q):
1. Finding all 1551264 omega, phi, psi and chi dihedrals for 313236 residues took 13.72351 seconds
2. Preparing the Ramachandran manager took 0.00990 seconds
3. Finding all 313236 valid Ramachandran residues took 0.41284 seconds
4. Preparing the rotamer manager took 0.06793 seconds
5. Finding all 264420 rotamers for 313236 residues took 1.10175 seconds
Total initialisation time: 15.31594 seconds
6. Scoring 313236 residues on the Ramachandran plot took 0.57328 seconds
7. Scoring 264420 rotamers took 0.36813 seconds
Time for one complete rota/rama validation: 0.94142 seconds"	enhancement	closed	moderate		Tool Shed		fixed						all	ChimeraX
