| | 1 | |
| | 2 | = ChIMP Meetings (Joint Sali-Ferrin Lab Meetings) = |
| | 3 | |
| | 4 | [[PageOutline]] |
| | 5 | |
| | 6 | == October 15, 2009 == |
| | 7 | Attendees: Conrad, Scooter, yz, TomF, TomG, Keren, Elena, Dina |
| | 8 | |
| | 9 | === Preliminary Progress === |
| | 10 | 1. SAXS: TomG & Dina |
| | 11 | * Chimera interface to the SAXS module from IMP |
| | 12 | * Can calculate and plot a SAXS profile for a PDB model |
| | 13 | * Can overlay experimentally derived SAXS profile on the same plot |
| | 14 | * Potential licensing issues with distributing this with Chimera |
| | 15 | * Some potential UI enhancements: |
| | 16 | * Re-use of a plot window to compare experimental profiles vs. changed model |
| | 17 | 1. Opal: Conrad |
| | 18 | * Web service framework (from SDSC) |
| | 19 | * Easy to deploy web services -- can quickly wrap existing software (legacy command-line programs) |
| | 20 | * Currently running 1.9 on the Plato cluster |
| | 21 | * 2.0 is out, but not much change in functionality (primarily internal changes) |
| | 22 | * Currently using Opal in Chimera for: |
| | 23 | * Template lookup (interactive) |
| | 24 | * BLAST pdb/nr |
| | 25 | * Asynchronous -- can save in sessions, etc. |
| | 26 | * Others |
| | 27 | * GOElite |
| | 28 | * Output is whatever the program outputs |
| | 29 | * Files |
| | 30 | * stdout, stderr |
| | 31 | |
| | 32 | === Action Plan === |
| | 33 | 1. ~~Hire postdoc~~ - Done! |
| | 34 | 1. Hire programmer |
| | 35 | 1. Write job description (yz, TomF) |
| | 36 | 1. Post through HR |
| | 37 | 1. Go through Craig's List? |
| | 38 | 1. SAXS Interface |
| | 39 | 1. Work is known |
| | 40 | * Share plot |
| | 41 | * Use web services |
| | 42 | 1. Resolve license |
| | 43 | 1. Bring yz up to speed |
| | 44 | * Chimera |
| | 45 | * IMP |
| | 46 | 1. Develop an action plan for |
| | 47 | * !MultiFit Interface |
| | 48 | * Protein Homology modeling/loop modeling |
| | 49 | |
| | 50 | |
| | 51 | === Additional Projects === |
| | 52 | 1. Future/new projects |
| | 53 | 1. Coarse-grained models (beads) |
| | 54 | * Fitting/optimization of coarse-grained models into density |
| | 55 | 1. Flexible fitting |
| | 56 | * Refining data after manipulating structures within densities |
| | 57 | 1. Finding components within 2D micrographs |
| | 58 | * Manipulate component in 3D, view on micrographs |
| | 59 | |
| | 60 | === Issues === |
| | 61 | 1. Licensing issues with the SAXS module |
| | 62 | * Ben is working with UCSF to get license approved |
| | 63 | * Complicated: not all team members are only at UCSF, and some team members have left UCSF |
| | 64 | * Goal is to release IMP as LGPL |
| | 65 | * Would like to release IMP before releasing an IMP component (e.g. SAXS) separately as part of Chimera |
| | 66 | * Tom thinks that the SAXS component for IMP should be included with Chimera download |
| | 67 | * May need to think about incremental downloads |
| | 68 | |
| | 69 | == March 18, 2009 == |
| | 70 | === Introduction to IMP (Ben Webb) === |
| | 71 | 1. Aim of IMP: |
| | 72 | * Use structural information from any source (experiment, physics, statistics) |
| | 73 | * Information at different resolutions |
| | 74 | * Generate models at low, high, or mixed resolution |
| | 75 | * Obtain the set of all models that are consistent with the input data |
| | 76 | 1. Satisfaction of spatial restraints |
| | 77 | * Representation of a system |
| | 78 | * Scoring function |
| | 79 | * Optimization/sampling |
| | 80 | 1. Example: nuclear pore complex |
| | 81 | * Optimizing individual protein positions (500 proteins) |
| | 82 | * Information: |
| | 83 | * Low-resolution information |
| | 84 | * Protein interactions |
| | 85 | 1. Example: 26S proteasome |
| | 86 | * Information: |
| | 87 | * EM density map |
| | 88 | * Some model information |
| | 89 | * Gross (very low resolution) |
| | 90 | 1. Design |
| | 91 | 1. Small Kernel + modules |
| | 92 | * Kernel provides some basic C++ classes, utility functions, and a set of abstract bases |
| | 93 | * Modules provide the bulk of the functionality |
| | 94 | * Sali lab provides the kernel and a basic set of modules |
| | 95 | 1. Kernel |
| | 96 | * Encodes for: |
| | 97 | * Representation |
| | 98 | * Particle class provides data storage for the system |
| | 99 | * Each Particle object is simply a hash of key/value pairs |
| | 100 | * values can be integers, floats, strings, or pointers to Particles |
| | 101 | * Keys can be added or removed at runtime |
| | 102 | * Eash Particle is an independent hash |
| | 103 | * Model object is a simple contains of Particles (plus Restraints and ScoreStates) |
| | 104 | * e.g. a Model may contains particles with: |
| | 105 | * x,y, z float attributes |
| | 106 | * x,y,z and R float attributes |
| | 107 | * particle 1 and particle2 pointer attributes (bonds) |
| | 108 | * Particle access is usually through Decorators which: |
| | 109 | * wrap Particles |
| | 110 | * provide convenient interface |
| | 111 | * add runtime checks |
| | 112 | * provide a runtime class hierarchy |
| | 113 | * e.g. a Particle with x,y,z keys can be wrapped by an XYZDecorator |
| | 114 | * e.g. a Particle wrapped by a ResidueDecorator could provide residue information |
| | 115 | * Scoring |
| | 116 | * Most simply, the Restraint abstract class takes a set of Particles and returns: |
| | 117 | * a score |
| | 118 | * first derivatives w.r.t. Particle atttributes |
| | 119 | * Known structural information is encoded as implementations of Restraint |
| | 120 | * ScoreState class allows for derived system state information |
| | 121 | * Building blocks |
| | 122 | * UnaryFunction: return the score & derivative of the input w.r.t. some function |
| | 123 | * PairScore: given two Particles, return some pairwise score & derivatives between them |
| | 124 | * PairsRestraint: apply a PairScore to each of a list of Particle pais |
| | 125 | * Example: combine Harmonic UnaryFunction with DistancePairScore to enforce a simple distance restraint |
| | 126 | * Optimization |
| | 127 | * Floating-point Particle attributes can be marked as 'optimizable' |
| | 128 | * The Optimizer class |
| | 129 | * Takes a Model as input |
| | 130 | * Modifies the optimizable attributes to give the best score |
| | 131 | * Yields the final Model state |
| | 132 | 1. IMP modules |
| | 133 | * Modules provide useful functionality such as |
| | 134 | * General purpose optimizers (e.g. conjugate gradients, steepest descent) |
| | 135 | * Building block restraints |
| | 136 | * Support for certain representations |
| | 137 | * Special purpose optimizers (e.g. molecular dynamics, inference) |
| | 138 | * Interfaces to other packages (e.g. import of homology-derived restraints from Modeller) |
| | 139 | * Implementations of restraints for specific kinds of structural data (e.g. SAXS, EM, proteomics) |
| | 140 | * Specific applications, e.g. docking |
| | 141 | * Use defined interfaces in the IMP kernal |
| | 142 | * Can be implemented in C++ or Python |
| | 143 | * Live in their own IMP.foo namespace |
| | 144 | * Can be part of IMP or maintained by other labs |
| | 145 | * Can be released under any license compatible with IMP's (LGPL like) |
| | 146 | * Wrapping |
| | 147 | * Kernel and module C++ code wrapped by SWIG |
| | 148 | * Resulting Python code very similar to the C++ |
| | 149 | 1. Compilation |
| | 150 | * Type 'scons' |
| | 151 | * Required dependencies: a C++ compiler, SWIG, boost |
| | 152 | * Optional dependencies: Modeller, CGAL, our EM library |
| | 153 | * Should work with reasonably recent version of g++, MSVC and boost |
| | 154 | 1. Interfaces with Chimera |
| | 155 | * Python frontend allows easy integration with other Python-based packages |
| | 156 | * e.g. a Chimera extension can simply "import IMP" |
| | 157 | * Alternatively |
| | 158 | * can generate IMP inputs and run IMP in a separate process |
| | 159 | * can read IMP outputs for visualization |
| | 160 | * For loose integration in future, could use the same web server interface framework proposed for ModWeb, ModLoop, etc. |
| | 161 | |
| | 162 | === Discussion === |
| | 163 | * Chimera is interactive, IMP is not necessarily |
| | 164 | * Is there a benefit to monitoring an IMP run? |
| | 165 | * Depends on the application |
| | 166 | * NPC was very iterative |
| | 167 | * Might definitely need user interaction during the optimization |
| | 168 | * Biggest category is to have Chimera "check in" on results during optimization |
| | 169 | * If you can visualize the current state of the system, you can change position with Chimera |
| | 170 | * Guide be used to move things out of a local minimum |
| | 171 | * Can Chimera be used to setup the constraints/restraints? |
| | 172 | * Could use sequence conservation, etc. |
| | 173 | * Chimera could be to prepare the information for an IMP job |
| | 174 | * Chimera <--> IMP: Visualize IMP representation directly in Chimera (translator) |
| | 175 | * Can IMP output an XML-based format? Not yet, but it should be relatively straightforward |
| | 176 | |
| | 177 | == February 24, 2009 == |
| | 178 | |
| | 179 | === Introductions === |
| | 180 | |
| | 181 | === Background === |
| | 182 | * Goal: leverage work going on in each lab to "make something that is more than the sum of the independent parts" |
| | 183 | * History: past attempts have never come together |
| | 184 | * Tom and Andre started a renewed conversation to establish the collaboration |
| | 185 | |
| | 186 | === Demo === |
| | 187 | * Chimera and model evaluation |
| | 188 | * Using Render By Attribute to show Modbase error profile (using B-Factor) |
| | 189 | * Question: How does "Render by Attribute" work when you don't have atoms or residues? |
| | 190 | * Answer: Currently it doesn't. Probably something to look at -- how to set up an equivalent mechanism for low-resolution structures? |
| | 191 | * Perhaps we could use volume tracer pseudo-atoms (markers) with render-by-attribute? |
| | 192 | * Question: Can you make worms transparent? |
| | 193 | * Answer: You should be able to... |
| | 194 | * Question: in molmap, could you set the threshold such that the volume within the mesh is a certain value. |
| | 195 | * Answer: The underlying code would support that, but there is no UI, yet. You can also report the volume as you adjust the threshold (which would be an adequate approach) |
| | 196 | * Restraints |
| | 197 | * One solution would be to extend the structure measurements tool (or use something similar) |
| | 198 | * How would you visualize restraints involving multiple atoms? |
| | 199 | * Structure/volume violations |
| | 200 | * Chimera can detect several restraint violations already |
| | 201 | * One solution might be to combine restraints and then plot the first derivative |
| | 202 | * Chimera's new 2D plotting library might be used for constraints that are not spatially correlated. |
| | 203 | * Spatially correlated constraints could be plotted using "normal mode"-style arrows (currently can be done using bild). |
| | 204 | * Getting an interface to do this interactively would be useful |
| | 205 | * Can the tracer pseudo-atom XML file add new attributes? |
| | 206 | * TODO: enhance markers (tracer pseudo-atoms) to support user-defined attributes. |
| | 207 | * Ensembles |
| | 208 | * EnsembleCluster |
| | 209 | * Question: Can EnsembleCluster be used for points in space rather than molecules? |
| | 210 | * Answer: Yes, if you read them in as atoms. Might also be able to to use markers. |
| | 211 | * TODO: enhance markers to be used by EnsembleMatch |
| | 212 | * Suggestion: How to represent objects that represent structures, but are not atomic resolution? |
| | 213 | * Maybe this is one area groups could work together to define standards |
| | 214 | * Currently Chimera uses model, residue, atom as it's hierarchical nomenclature. Would be useful to support additional nomenclature hierarchies that might represent lower resolution structures and other "weird" representations. |
| | 215 | * Animations |
| | 216 | * Continuing to enhance our command set |
| | 217 | * No time-line based UI as of yet |
| | 218 | * Tom's animation example... |
| | 219 | |
| | 220 | === Specific Applications === |
| | 221 | * Multifit - Keren Lasker, Tom Goddard |
| | 222 | * fit multiple proteins in EM maps with steric clash handling. |
| | 223 | * Illustration [http://www.cgl.ucsf.edu/home/goddard/temp/1z5s/1z5s.html Chimera & MultiFit] |
| | 224 | * Interface looks easily tractable, but there will need to be work to develop a general mechanism to support stand-alone runs without freezing Chimera |
| | 225 | * SAXS - Dina Schneidman |
| | 226 | * using small angle x-ray scattering as a modeling constraint |
| | 227 | * want interactive 2-d plot of saxs curve and model display |
| | 228 | * 2-d EM micrograph restraints - Javier Velazquez-Muriel |
| | 229 | * use 2-d EM micrographs as modeling restraint |
| | 230 | * can Chimera project simulated maps from models and correlate 2-d maps? |
| | 231 | * ModWeb |
| | 232 | === Discussion === |
| | 233 | * What is the best way to interface between Chimera and other programs? |
| | 234 | * One initial possibility would be to use readStdin, but use it "in reverse" |
| | 235 | * Applications: MultiFit, projecting 3D models to 2D, SAXS 2-d plots. |
| | 236 | * Our issues aren't with the simpler algorithms, the time consuming part is the user interface |
| | 237 | * Where we need algorithmic help is in more complicated algorithms (e.g. MultiFit) |
| | 238 | * TODO: improve 3D to 2D projection capabilities |
| | 239 | * TODO: Andre and Tom -- discuss supplemental funding proposal |
| | 240 | * Web server interface |
| | 241 | * In the process of building Chimera infrastructure to support asynchronous requests to web servers, including saving and checking on session state. |
| | 242 | * TODO: include Hau, Dina, and Karen with meeting with John Irwin to talk about web services implementation |
| | 243 | * TODO: think about including Chimera<-->ModWeb functionality. Include Ben and Ursula in John Irwin meeting? |
| | 244 | * Key exchange would be the blocking point -- perhaps we could implement a Chimera interface that could be used to get the key automatically |
| | 245 | |
| | 246 | === Moving Forward === |
| | 247 | * Meet every two weeks, but focus on a specific area and advertise the topic in advance. |
| | 248 | * Keep content on wiki -- ChIMP project (Chimera-IMP) |
| | 249 | |
| | 250 | |
| | 251 | |
| | 252 | |