 Welcome to the BioCell webinar number 77. So today we have Giacomo Fiorin from NHA, Humbert Santus from CNRS, and Jerome Hanin, sorry, and Ann from CNRS. I'm Alessandra from the Royal Institute of Technology and together with me is Otto from the Finnish IT Center and we are hosting for BioCell this webinar. And the title is Colvars Collective Variable Modules for Molecular Simulation Programs. So the webinar will be recorded, so you are aware of that. And during the webinar you have the possibility to ask question. So if you look at the bottom of the Zoom application, you will see this symbol or otherwise this one, depending on the operating system that you are using. So you can just click and type your question. We will read or we will unmute you at the end of the webinar. So after the webinar, when they start the Q&A section, if you don't write anything, so I will unmute you. If you write that you have no microphone, I will read the question for you. So after the webinar, you still have the possibility to ask question to Giacomo, Humbert and Jerome using the BioCell, Chromax, BioCell.eu forum. In particular, if you type the text Colvars, it will be easy for them to see your question and answer directly to you. So something about today presenter. So Giacomo is a staffed scientific at the National Institute for Else. He did a PhD at the CSINE Trieste and then he moved to the USR, working with Michael Klein. Later he got the research, drug faculty position at the University. And in 2020, he became a staffed scientist at the NIH associated with the laboratory of Lucie Forstest and Jose Fernando Cometz. Starting from 2007, Giacomo has developed together with Jerome and several other collaborator the program that he will tell us. So Colvars, Humbert is a software engineer working at the laboratory of the chemie, oh, sorry. It's a software engineer and his work at the laboratory, the chemie theory of the Institute of Biology, Physical Chemie. Sorry, my friends is terrible in Paris. His background is in computer science and structural bioinformatics. And he's maintaining or unity mall software and also other visualization platform. And he's brought the interface between Gromax and Colvars. And Jerome is a director of CNRS Center, actually a research director of the same center where Humbert is working. He's training as a physical chemistry and computational chemistry in France. And he did also his PhD, his postdocs, sorry, with Michael Klein in 2009. Since 2009, he's working at the CRRS and his research is mainly focused on methodological and software development with a specifically focus on efficient sampling in molecular dynamic simulation. And his application mainly is biological membrane. It is together with the Jacomo eco-founder of Colvars software. Now, we will start with the Jacomo follow by Humbert and then Jerome. So I will stop sharing and give the word to Jacomo, please. Thank you so much, Alessandra. And thank you for having all of us here today. And thank you to everybody who's listening in. And we hope that this presentation will give you a flavor of the kind of features and the kind of science that we want to enable you to do. I'm going to start with an introduction and an example about the type of functionality that you can access with the Colvars and Gromax. Then Hubert will talk about the slightly more technical aspects of how the interface is designed and how it works, meaning how to use it. And Jerome will give you, Jerome is going to give you a live demo of how to use the GUI that we have available in VMD for Colvars. And Colvars is a software library and this is a piece of software that we develop is has the purpose of enabling enhanced sampling simulations in MD simulation programs. The library concept is a software engineering and development one. We often refer to Colvars as a module because for the point of view, how you use a software like Gromax, for example, Colvars starting for example, for this version of Gromax is always there available. So you don't have to do anything particular to use it other than to have Gromax pre-installed, at least from the version 24 that we're talking about today. However, this package, we develop it independently from software like Gromax or NAMD, lamps, et cetera. We have our own repository. We have our reference paper. There's not several years old and we have other papers that describe features that were added to the code after that paper. And this is a brief timeline of what the code evolved into. We started off as a patched version of NAMD and Gromax like many other codes of this kind do. And then we start writing in a way that was suitable for packaging with these mainstream applications that people use. We started first with NAMD, followed by lamps, VMD. Then Jerome primarily wrote a GUI interface to Graphical User Interface to use Corvus inside VMD and interface with Tink HP. And lastly, we're talking to you today about the interface with Gromax and trying to describe what kind of features that provides to you. I'm going to start off with an example immediately. The example is supposedly, supposed to describe the kind of applications that you're doing Gromax very often, such as atomistic or coarse-grained simulations of membrane proteins. So this is the example that I'm showing today. This is a membrane protein that starts from an experimental structure X-ray in this case. Although in the recent years, this has changed the source of the structure can be a bit different from X-ray as we know. The important thing to know is, however, that the structure that we take from whatever method that gives it to us does not tell us what is necessarily the orientation in the membrane of the protein. So the orientation of the membrane is described by some empirical methods like BPM. And these methods, they give us a 3D coordinates for a protein that are most suitable to place a protein in a membrane that is aligned with the X, Y, Cartesian plane. This is how you do all coordinates for these proteins from OPM and Compass or other database. Now, if we're doing this kind of simulation in close-crain, we know that the internal structure of the protein is relatively restrained. We don't allow for internal dynamics, which is more, much better described by atomistic force fields. So the primary changes that we're going to see are changes in the relative orientation and relative displacement of the protein and the lipid membranes. So I'm going to talk to you about rotations here and rotations here of the protein on the membrane can be of two kinds. First, you can have spinning rotations, rotations around an axis, which is the same as the normal axis of the membrane. And these rotations are not very physically meaningful because they give us the proteins perceiving lipid molecules that are equivalent to each other all around. So oftentimes, we try to fit the simulation after the fact to remove these kind of rotations from a trajectory or try to even stop the rotation from happening by freezing the angular momentum of the protein from the beginning. And we're going to show you another alternative way to do this because there's other kinds of rotations like rotations that are away from the normal axis, such as tilting. These tilting rotations are more physically interesting because they actually change the energy landscape and the forces that are perceived between the protein and the membrane. So these angles or functions of them are collective variables which we are defining using the software from the correctness of the atoms during the simulation and these variables are computed and we can also apply forces to these variables to achieve enhanced sampling and the visit states that corresponds to higher or lower values of these collective variables. This is in essence what we're trying to do with the software. So how to do it? We are going to see here how to write a configuration file for Culver's that is pretty much complete and ready to run except of course for the topology and all the information that you have already for a standard Gromax simulation. First, as usual, we have to define some atom selection, some atom groups and do we load a Gromax format in this file? There is a little caveat here which is not very convenient to you but has to be noted nonetheless. We do not read the index file from the run. We have an internal reader because the Gromax index file format is useful so we started using it long before we had an interface for Gromax and we kept that internal reader. So although the formula is identical you can surely it would be simple to keep the same index file for MD run and for Culver's but keep in mind that this file is being read in different places but all of the format inside is equivalent so nothing else to worry about. After having defined the atom groups we select them and we use them to define a variable based on them. So here we are defining a collective variable named T and this is of type tilt it's the cosine of the tilt angle we use the cosine instead of the tilt angle itself for mathematical reasons that you can discuss later if you want. And this cosine has range between minus one and one and we can define the default spacing for any grid that will be defined for histograms, metanamics, sorry, BF, etc. We select in this group that is taken from the file we provide reference coordinates for in this case the backbone atoms backbone particles because this is the cosine simulation and these are taken from the initial structure that we see the entire run from. This defines completely how to compute the tilt collective variable and it's very similar to how we define the spin angle collective variable which is the one here except this we have a different keyword for the function and different ranges of values or resolution. Now remember what I said this kind of rotation we don't want it to happen not because it's the damaging or like wrong to happen in the system but it's inconvenient to analyze the simulation when the protein is spinning around. So we stop this spinning rotation from happening by applying a harmonic restraint centered around zero, the initial value on the spin angle variable. And the first constant is given in energy units for Gromax divided by the spacing that we define here the width or resolution or if this width is at the default value of one this is exactly the same as the unit of the collective variable. Now, what does this coefficient file produce once we run the simulation with Gromax and Covers enabled? Let's start from a simulation that has no restraints, no force applied on the collective variables and then when we can only compute them on the fly of course this will be equivalent to computing them after the fact in post processing. As you see here we run a relatively long, no, since it's a small system this is very cheap to do a relatively long simulation over 20 microsecond the spinning goes everywhere and we see that the protein will have experienced all phases of the periodic unit cell. But the tilt has a much better defined energy length because it is defined by the environment of the lipid membrane. So what we want is to suppress the spinning rotations to prevent it from happening but not disturb tilt rotations let them happen because they're physically meaningful. And this is what we achieve using the harmonica strain that I just showed we stopped the spinning angle from happening and from the first look it seems that the rotations of the tilt or the tilt angle have not been perturbed. We should of course verify that this is true not just from the time series but also from the histogram. This is the histogram of the cosine of the tilt angle from a no simulation without any strain supplied and the peak of the distribution corresponds to approximately 10 degrees tilt rotation compared to the initial structure. So already we know that the initial structure that was given by the empirical method BPM was decent but it was not perfectly describing the protein membrane environment that the explicit simulation gives us. And once we turn on the spin restraint then we get almost exactly the same histogram. So we have achieved the goal of restraining some movements that we are not interested in while preserving the movements that we are interested in. Now this histogram is the result of a free energy length and how to compute this free energy landscape. The typical way would be to invert this histogram and take the logarithm of it and this is how it results. This is again from simulations with the equilibrium sampling where we're not doing enhanced sampling yet. This is what we have a minimum here which as I said corresponds to a rotation approximately 10 degrees off the axis that was originally placed in the original coordinates of the protein. And the minimum here is such that the interaction between the protein and the membrane is optimal, meaning that there is as little as possible a hydrophobic is matched between the different pieces of the trans membrane domain of the protein and the environment. We can ensure that this is true by calculating how much the membrane distorts around the protein by taking a 2D map of how much curvature there is for the membrane bending upward or downward. And this is what I'm showing here, the membrane seeing from the top view and we see that the membrane around it will distorts slightly by one or two angstroms but that's typical of what we see in membrane proteins No membrane protein is perfectly symmetric like a cylinder and they will always have some small deviations up and down. Now this is the global minimum. What does the environment of the membrane look like for the original structure for the original rotation? This is how it looks like here where the membrane now is more distorted than it is at the minimum and this is presumably what is responsible for that higher free energy here of seven or eight kilojoules per mole and the snapshot is otherwise fairly equivalent to what we saw. As I said, we haven't done entire sampling yet. We would like, of course, to use it now to see what's happening here in this region that is poorly sampled because it's too high in free energy. So we use a very well-known metaphor and sampling, metadynamics and we apply it to the tilt collective variable and these are the parameters of how much force we're putting in to achieve further sampling in the regions of high free energy. And after we run for 20 microseconds, the same amount of time of the standard simulation that I showed before, this is the result in PMF that we get, potential mean force that we get from metadynamics and it nicely coincides with what we get from the standard sampling here but extends it much higher in free energy to much larger tilt angles. And now since this is a unique advantage of enhanced sampling methods that are based on collective variables, we can use the values of these collective variables to map out what these structures look like in terms of physics and biochemistry of the membrane and the protein. And we see, for example, when we go to really high tilt angles or like really low cosines of it, there's a significant rotation with respect to the original structure and this rotation comes at the cost, presumably, and this cost is most likely due to the severe distortions of the membrane they were causing now. We have tilted the protein too much so that the hydrophobic inspector becomes so big that the membrane has to twist around to accommodate it. And this structure here, we can also map it again in 2D by looking at the curvature map on the x-y plane of the membrane and see that this is indeed the case. What we have seen, basically, we mapped different states along this collective variable from here to here and what we have identified is calculated the potential mean force, the thermodynamics of this transformation and we have also identified using being of these trajectory frames based on values of the collective variables we are going to see a very intuitive way of being in these frames later in the tutorial and live them by Jerome. We can extract frames and analyze them and find out what they are and where the physics of the PMF they were calculating coming from. Okay, now this was one example that I'm giving you today, hoping that it's useful to illustrate what are the unique features that you can achieve by the combination of corvus and gromax. And now corvus is a library for an assembly methods with a fairly general purpose, so we have multiple algorithms supported and now I'm going to speed up slightly because you're going to have this list in the PDF at the end of the webinar but basically we have harmonic restraints as I've just shown you that you can use and you can use them, of course, not just to static restraints but to also perform a plan of sampling or to move them to do 3D MD. You can use the adaptive basing force or ABF method that Magnus told you about two weeks ago already in the Gromax24 webinar when he mentioned corvus and the flavor that is particularly enabling Gromax is the extended system ABF that was developed by Jerome and coworkers. And MetaDynamics is also available there and I've used here the classic version by Lyon-Marinelli original there are other different variations of this method that are available here including the ones that a globby multiple workers or temper correction and the ensemble-based method by Fabrizio Marinelli allows you to target a custom distribution rather than the flat distribution for MetaDynamics. You can, of course, use other type of restraints that are specifically designed to increase the compliance of the simulation with experimental data and these are listed here. And lastly, we can apply no restraints at all but use the corvus code itself to compute statistical properties that will be too costly to compute if you were to save a trajectory with verifying spacing. So instead of saving terabytes of files if you know already what you're interested in calculating you could define it in the corvus input and have it calculated without having to store a lot of time the coordinates. And the collective variables that you can apply these methods to are several to set a list. There's a lot of generality here and hopefully that these variables that you can choose from can be tailored to your specific application. Of course, we will be happy to answer any general questions that you may have for the forum. Keep in mind that this list is specifically for Gromax24, these are the variables that are available there right now. There's additional functionality that we haven't been able to port to Gromax yet but we are doing the near future. For example, there was one question at the last webinar about custom collective variables. We define custom variables by combination by mathematical functions of the existing ones using the laptop library. So that's not currently available in Gromax24 but we have a development version where you can use this library. We also have variables specific to protein secondary structure and we have of course ongoing efforts to make the code faster because this is more and more needed in recent times as we are experiencing and particular to save time by removing the optical computation or enabling also communication between the multiple copies of Gromax and other stuff that is not as finished as these things but will be at some point. And if you are interested in development versions of Gromax you can download them from here. I emphasize that this is a patched version of Gromax that is not reviewed by the Gromax team so take it with a grain of salt. Of course we are happy to answer questions about it if you want. And now we turn over to Hubert how the interface was designed and how to use it. Thank you Giacomo. So I will share my screen. So here for doing my part I will speak more about the design and the usage of the Gromax-Colvar interface. So we try to create the interface to be simple to use for the user and to be compatible with most of the Gromax feature. Meaning that it's compatible with classical integrators of Gromax. It's compatible with also GPU acceleration. And we designed the interface so that during pre-processing time, during GroomPP time, we validate all Colvar's inputs and along with Gromax one. And if everything is correct, we bundle all information inside the TPR file created by Gromax. Another feature which is available within the interface is the Gromax checkpointing ability. Meaning that if you need to continue or restart a simulation Colvar's based simulation, you can do it with the checkpointing. A currently known limitation of the interface is that all Colvar computation is performed only on the main CPU node. Meaning that all the Gromax computation can be done either on CPU or GPU depending on your inputs. But the Colvar's computation is done on the CPU, the main CPU, not only. This could be performance bottleneck if your collective variables is large. So you need to take this into course duration when writing your Colvar's configuration file. For the resources you have documentation within the Gromax manual of 2024 and for the Colvar's side we have created a special reference manual of these Colvar's within Gromax. How those Gromax Colvar interface works under the hood? So basically you have your Gromax standard MD loop where you have your Atom coordinates and you compute the Atom forces through the force field and that with the integrator you get the new coordinates. So this is a standard MD loop. Sorry. Then when you activate Colvar's simulation you retrieve a small set of Atoms coordinates the Colvar Atoms you described and from these Colvar Atoms coordinates you compute your collective variables which can be as Jacomo says the distance angle and others. From these collective variables you can compute a bias and this bias you will give you additional forces on these collective variables. These forces are then transformed to Atomic forces on the correct Atoms and these external Atom forces are putting back to the Gromax MD engine so the MD loop can continue. Now in practice how you can set up a Gromax Colvar simulation so it's very simple so we added there is two new MDP option to activate a Colvar simulation. The first one is Colvar's dash active which need to be set to true to activate the Colvar's simulation and then you need to give the path to your Colvar configuration files that Jacomo show the content in this demonstration and to give the path of this file it will be with the MDP option called Colvar's dash config file then during pre-processing you use a standard GromPP command line with the same option as a standard simulation and during this pre-processing phase the Colvar's input will be passed by the library and make sure that the input you gave is correct and if it's the case it will create the standard TPR file. One thing to know is that as Jacomo show that you can have inside your Colvar configuration file you can have external files like index files also coordinates for RMSD or some other files all these external files will be embedded and stored inside the TPR file at the end of the pre-processing meaning that once the TPR is created this is the only file you need to run the simulation and this is in the spirit of the Gromax philosophy. Then to run the simulation it's the same as before you use a standard MDP command line within the correct TPR you just created and then the simulation is performed and at the end you will see that Colvar's produce its own output files so usually you will have a .Colvar's .Trash file which corresponds to the trajectory of your collective variables and also you can have additional files depending on the feature you used within the Colvar's configuration file so you can have .PMA .Count etc All these Colvar's output files the prefix of these files are the same as the .IDR prefix of Gromax or the energy file of Gromax meaning that if the IDR is called md.IDR you will have md.Colvar's.Trash or md.PMF etc and finally with the interface support restarting and continuation of simulation because all Colvar's information is stored inside the .File of Gromax which is a .CPT file so meaning that if you want to continue your simulation you use also a standard md.RAN command line for continuation and the Colvar's will continue to compute as as usual and also we have a text version of this information if you want to if you have to have more information which will have the name .Colvar.State and that's all for my part I wanted to give you another view of how to run Colvar's within Gromax and I will let Jerome speak and give his demo about the Colvar dashboard Thank you Hubert Alright so so now we've seen let me share my screen we have learned how to write configuration files but my favorite way of writing configuration files is when I don't have to write them and someone writes them for me so here since many people who use Gromax also use VMD and the others maybe should if you have VMD what I did here is I loaded a trajectory that I computed before where there's this all at model of a protein and this ligand is escaping from the protein is escaping because I've applied external basing forces using Colvar's of course so now I want to do two things one is analyze this trajectory what's happening using collective variables and the second thing is I want to set up new biased simulations with this system so what I'm going to do in VMD is I just open the extension analysis Colvar's dashboard here that's included in the current alpha versions of VMD and this opens a little graphical interface that is basically going to let me know what's happening in collective variables space while I look at what's happening in the molecular space here so imagine I want to look at the ligand exiting from the cavity so I'm going to define coordinates and the simplest way I can do is using the VMD system of labeling distances so if I press 2, VMD lets me label the distance between two atoms of the ligand and protein respectively of course this is just a VMD label it's on a collective variable so I go back to the Colvar's dashboard window and I click on this here under automatic Colvar's I have Colvar's from VMD labels if I click this this is going to import the VMD label into a collective variable and now if I animate the collective variable is being computed in real time because the Colvar's library is embedded inside the VMD binary now what I see is that this distance is computed in angstroms but if I'm going to be using Colvar's in GROMACS when linked to GROMACS Colvar's uses the GROMACS units so the distances are going to be nanometers so here I can change the unit system within VMD the Colvar's interface will do the conversion I just get the warning message that I'm changing the units and now it's computing this distance in nanometers so now it's going to be compatible with whatever I'm going to see when I run a simulation with GROMACS now of course this distance is not really what I want because it's two random atoms between the protein and ligand so I'm going to refine this a little bit and to refine it I'm going to edit it by double clicking so if I double click this it opens an editor and you can see it's defined one of his inputs I'm going to make a simpler name I'm going to rename it to trustee and this group of atoms is the ligand instead of just the atom numbers I want to have all maybe heavy atoms of the ligand and for that I'm going to reuse I don't know the atom numbers but I have a representation for this in VMD so I'm going to grab the atom selection from the representation it's like this res name ligand know it so I click this and now it has replaced my selection with the other atoms and the second group is the protein atoms I don't want one atom I want all the alpha carbons so now I'm going to use the VMD selection text that I type into this box alpha and I press enter and now I have the alpha carbons you can wrap the line to see all the alpha carbons ok so now control S to or apply here I have now changed the definition of my distance to include all these atoms how do I know that I've changed it well I can double check this by selecting this and clicking the show atoms button so now this is displaying in different colors the atoms that are used to define the different atom groups I have some noise from this extra representation I'm going to hide this here so now I see that I'm using the center of mass of these red atoms in the center of mass of the gray atoms from the protein so how does this coordinate behave well I can look at the timeline for this the plots are here so the timeline shows that well this is a ligand exiting the cavity and if I animate I have a time cursor that shows me where I'm what I'm looking at in trajectory and if there is a specific event that I'm interested in I can click in this window and this takes me to the right point within the trajectory so this is making a very quick connection between the space of collective variables to the left and the space of molecular coordinates to the right I can also navigate using the keyboard here and I can zoom using the up and down arrows to look at some events in great detail okay so this is the distance coordinate and I see the exit maybe there's more stuff happening than just the distance let me hide these atoms and you know this ligand here is flexible one it has it has rotatable bonds in the middle so I'm going to tag one of these bonds like the diagonal angle to see what's happening to it so again using VMD I press 4 and this lets me select 4 atoms and now I've labeled the angle so same as before I'm just going to convert this to a collective variable now it's made a duplicate of the distance which I don't need and this is the diagonal angle if I want to double check I'm looking at the right diagonal I can show these atoms that's fine these are the atoms I want to see so now how does this the hydrol behave I can see it's fluctuating so it seems to be you know it seems to be a indeed a flexible the hero so now I can look at different events and if I want a better view I would like to know if this is really a multi-modal distribution so for that I click this histogram button here so this just computed a histogram of the the hydrol and it's showing a multi-modal distribution so now if I animate the trajectory this is showing me the cursor is showing me where I'm you know what value I'm looking at in the histogram and I can click somewhere in the histogram and this is going to take me to the frame with the nearest value of the variable so that means if I see multiple states here I can click on one of these and I'm going to explore the frames corresponding to the various states here so this is what what was referring to when you mentioned you know binning according to one coordinate and then exploring what this means in practice so now I have the different configurations of the ligand as available as different modes okay so this is one way and then one question I could ask is so first I can edit this because I don't like this long name I'm going to shorten the name there we are I could ask so is there a correlation between the you know the ligand exiting the cavity and these changes in configuration well to look at correlation I can select you know two variables and click on the third type of plot which is the pairwise plot this is really a scatter plot with one collective variable here and the other collective variable as the y-axis so what I can see here is each of these points is a frame and I can look for any kind of correlation between the distance here and the diagonal angle if I animate now the red dot follows you know the trajectory and if anything if I see a substate that's of interest I can click on these dots and this again takes me to the relevant frame so I cannot do what is this frame here with the lowest point of the ideal so now you know this gives me a lot of tools to explore the trajectory according to these now these were coordinates you know describing the ligand protein geometry the relative geometry I'm going to clear some of the labels here in VMD because that's noisy so let me clear these labels and now what about the protein can I look at what's happening to the protein so if I'm not really inspired I can define a set of classic protein coordinates by clicking again in these automatic call bars there's a button protein nucleic acid auto call bars so if I click this it's detected a protein and it's just defined a series of classic coordinates the RMSD of the protein with the reference has a reference the first frame of this trajectory the radius of duration a measure of its global orientation and this has four components because it's a rotation quaternion so it's like a rotation matrix essentially and this is what gets decomposed into the spin angle and the tilt coordinates that Jacomo was mentioning earlier the orientation angle is just a measure of the global rotation so it's a scalar and it's the global angle of rotation from the reference position and what you can see here is that this is nearly zero but this means this trajectory has been aligned rotationally so there is no rotation but what I can do now is I could run a little experiment in VMD I can just change the coordinates I'm going to rotate my protein and press F5 and now it's recomputed all the collective variables and you can see that I've rotated my protein by exactly 39 97 degrees so this is one point of this is that you can really experiment by changing coordinates literally in VMD and then recomputing the values of the variables to explore how the coordinates depend on the how the collective variables depend on the Cartesian coordinates and another thing I can do is if the physical meaning of some coordinates is not very clear I can display the gradients which is the derivative of the coordinate with respect to Cartesian coordinates I'm going to do that for example for the orientation angle so I show gradients here and this is showing me how the collective variable depends on the position of each atom and if I rotate the view I can see that you know this is the rotation the net rotation that the protein has undergone from the reference and so this is the gradient of the rotation object I could also plot the gradient of the radius of generation this is very simple you know this is how you increase the radius of generation etc so sometimes here this is kind of trivial but if you have a very complex coordinate it's very useful to be able to plot the gradient so now that I have suppose I've explored the space of possible coordinates and then so what I should say is when I'm editing the configuration for a coordinate I have a number of helpers so the helpers would be different templates at different levels I showed you the selection helpers I can also directly insert specific bonds, angles and dihedral from VMD here and I can also add files that are used to define coordinates and if in doubt I have links to the different parts of the relevant documentation here now suppose I want to apply a restraint to for example the protein RMSD I can just right click on it if I right click on it there is a little option add harmonic bias and now this opens another editor for the harmonic bias maybe let's restrain it 0 and the force constant is really not very meaningful in VMD but in GROMACS it's going to be the GROMACS units now I can go under this biases tab and I see that I've defined the harmonic bias and it is computing what the bias energy would be on a given frame so it's a way to preview what the bias is going to do once I'm happy with this configuration I can just save here this is going to save all the variables I've defined and the biases into a file and that file can be directly fed into GROMPP and then I can run GROMACS with this modified or biased dynamics so this is in short how you can use Colvars in VMD using this Colvars dashboard plugin to visualize and analyze trajectories and to explore the space of collective variables intuitively another thing you can do is if you have collective variables that are machine learned or you know data based on data analysis you can also load them into this interface to for instance display their gradient or experiment with them to get a better intuition of what they mean now I think this concludes this demo so I'm just going to thank you all for listening and we really want to thank everyone who contributed code to our to the library through mostly the github repository and there is many people who want to thank the members of the GROMACS team especially Magnus and Burke who you know helped us and guided us for you know to make sure that Colvars plays really nicely with the GROMACS philosophy we want to thank our colleagues both in Bethesda and Paris and of course by excellent Alessandro for hosting this so thank you for listening and please try this out and let us know what you think thank you very much it was a nice going around Colvars now we start with Pedro as the first question now Pedro I just try to unmute you here is Pedro now you should be able to speak now maybe it doesn't have the microphone like for both of us ah you can speak please can we use AWH with Colvars in GROMACS not yet unfortunately but it would be nice to do but AWH is also part of the GROMACS feature so you should be able to use it without Colvars as a standard sure but AWH does not implement all the collective variables that Colvars implements so that's the reason why it would be nice to interface them so I can ask the question right yeah so you can ask several questions if they are not too long please go ahead so you want to install Colvars with GROMACS you need to fetch that from Github Colvars GROMACS 2024 has it just get GROMACS 2024 ok that's included and it's helpful when you compile GROMACS ok that's good the next one you mentioned the machine learning features from Colvars is supported in GROMACS right so ok good the one thing that's supported is if you have a neural network function of collective variable values then you can feed the network weights and define that as a collective variable ok and the units of the biases are automatically put in GROMACS units yes so when Colvars runs with an MD engine like GROMACS or an MD it uses always the same units as that engine ok thank you thank you thank you very much Pedro there is another question now from Kahn that is asking can indiscreet general or general collective variable also be defined such as a single unit subset of a greater atom molecule set and then is asking if you have some issue that you can read it concerning I have struggling with deprotonating an amino group without defining a distance in some CV and selecting a specific hydrogen atom with plume could this be achieved with Colvars um many more details about this probably to answer we need to talk separately maybe so you can post on the forum and they can answer you because there you have the chance but maybe you can just answer if Kahn indiscreet general collective variable also be defined so we have general we have path collective variables where you define a series of snapshots in coordinates through coordinate files and then you have the variable that defines the progress along that path and the distance along that path that there's been several versions of that developed by Parinalo's lab and others that is one example of general collective variables and of course everything is general with respect to some things and others so again like if you can tell us a little more then we're happy to guide you so please go to the forum and ask use the tag Colvars so they see immediately so now we have some question from Andrea Andrea I am mute you you should be able to speak now no for Andrea what about performance with respect to classical md and to plumb engine that is his first question I mean I think it means if you run Gromats with Colvars what is the respect compared to this is my guess as general of thumb it will always be slower because you're doing additional computation and you're introducing initial communication and then in parallel how much slower can be relatively little if not noticeable as was the use case the Magnus was telling us two weeks ago when he was like I see no difference between running with the standard Gromats simulation when we Colvars of course there will be many cases where you will see a performance impact and then it will be up to you to decide if it's acceptable to you what we tried as much as possible is to make it easy to you to test it and then decide whether it's efficient and there are some general rules that we can help you understand make some examples with the caveats that every system is different every piece of hardware is different one example that I can make is for the simulation of the membrane protein in Martini there was a very small system there was one node and that node was a little too powerful to run that system but Gromats was just running standard simulation at 13 microseconds per day and depending on what features of Colvars were introduced we will go down to 11 or 9 so that was a bit slower for that and there were some of the optimizations that I was telling you about earlier they will be happy they will help you to reduce that gap but as one example where you're really pushing Gromats on the scalability limit and then you have of course the impact of the additional communication and computation but that's certainly like more of a worst-case scenario than what Magnus was referring to before as yeah you have no performance penalty there will be some and we're going to be working to make a smaller or help you decide help you tailor the input file to make the smaller in your simulation thank you he has a final question for Jerome I think he meant the simulation that you have shown is bias or is a classical simulation that was bias that had a non-equilibrium bias yes it was ABMD a diabetic bias MD thank you so now there is a question from Miloš I tried to unmute him I may maybe be able to speak Miloš Miloš could you speak no I guess not okay so then is the metadynamics model in the metadynamics model is there an option to obtain statistical weights and perform reweighting I do not understand exactly what is meant by that but we can print the value of the bias at different times and the time series of the gautions that are printed so you can optionally write out a text file which is the same as the hills file that you have in plund so any post-processing analysis method reweighting that you're using for plund that runs with that file can run just the same on the file that is produced from Colbers thank you so then we have Luš that has a long question that I suggest on specific things on PCA so then I suggest he or she is posting on the forum thank you very much I think I can answer very quickly because I think they won't wait wait I have to read the question then otherwise the other do not understand I'm currently working on one temperate simulation of one protein I recently used Diatral and distance change for my metadynamics however I also made PCA of this protein and obtain eigenvector and eigenvalues I'm curious about how I can give this variable as a collective variables I mean the vectors I think the eigenvectors so we have a function type that is called it's exactly what you need okay thank you very much then I just read through because then it's faster we can go through other more questions do you plan Peter is asking do you plan to incorporate also multi-map in the call bar for Gromax yes I cannot say exactly when because I implemented multi-map in NAMD using functions that are part of NAMD and as you may know that's called that first of all works best there but it also NAMD has a restrictive license you cannot just take that code and bring it elsewhere so I would have to rewrite that functionality to make it more portable but definitely I had used cases with multi-map where I needed Gromax functionality and I would like to have it available so at some point yes yeah thank you Peter is asking about GPU is it is planned to support update on GPU with call bars you don't know we will have to figure out I would want to emphasize here how how difficult the task that Hubert undertook over the last couple of years to integrate two pieces of software that are both moving over time so that once that was achieved that was our main priority then we would like to go deeper and understand exactly how to interface with the Gromax code but that it's complex work that we can tell you more once we're doing it once we're more in the middle of it thank you do you want to say something? no no it's okay no yes it will be a complicated task not sure in the near future at least yeah I guess our plan to add a scripting interface similar to how TCL scripting AMD can be used to create complex protocols such as the string method so the good news is we have generalized the TCL embedding so actually you can now build if you want to you can patch Gromax and build it with TCL scripting support so I'm not sure it's in our fork but we can definitely update our fork so it contains optional TCL scripting thank you there is another question there are two questions that I will go through the last two that I have here when developing implementing callbars do you have access to Gromax neighboring list from within the callbar code? no we don't have no okay and the last question it will be visible to compile certain Gromax version with certain CV I don't understand completely if you modify the code yeah I'm not sure what the question is maybe we should talk on the forum about this yeah I think it's better specify which CV you have in mind exactly please Andrei answer post on the forum so I will close now we are at four o'clock thank you everybody for attending and we will have a new webinar soon but it's not known in April after Easter we will be a new occasion and you will if you follow the bike self LinkedIn or Twitter you will know about that so I'm looking forward to see you again and thank you very much and thank you for our speaker bye bye thank you Andrei