Opened 8 years ago

Closed 6 years ago

#1022 closed enhancement (fixed)

Allow Toolshed bundles to provide access to their C++ API

Reported by: Tristan Croll Owned by: Conrad Huang
Priority: moderate Milestone:
Component: Tool Shed Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

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

  1. Scoring 229 residues on the Ramachandran plot took 0.00051 seconds
  2. 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

  1. Scoring 313236 residues on the Ramachandran plot took 0.57328 seconds
  2. Scoring 264420 rotamers took 0.36813 seconds

Time for one complete rota/rama validation: 0.94142 seconds

Change History (1)

comment:1 by Greg Couch, 6 years ago

Resolution: fixed
Status: assignedclosed

If bundle is dependent on another bundle, bundle_builder will add the appropriate include and libraries directories to the compile command.

Note: See TracTickets for help on using tickets.