 Good afternoon everyone and welcome to the next edition of the BioExcel webinar series. My name is Rosen Apostolouf and I will be today's host. The webinar series today are brought to you by BioExcel, which is the leading center of excellence for computational biomolecular research in Europe. In our series, as you might be familiar with them, we feature notable scientists and their work in the domain of computational biomolecular research, developers of popular software applications, new release tools, which we believe might be of interest for you. We also have series of educational webinars for those who are new to the field. Last but not least, we also present major achievements and results of work done in our center and we hope that the series will be of interest to you and will bring value to your research work. In particular, if you'd like us to invite specific speakers or feature given topics, please don't hesitate and contact us. You can visit our website, bioexcel.eu for more information and contact. With that, I would like to present you Gerrit Trebelu, who is our speaker today. He did his undergraduate and PhD at Oxford University and UCL, respectively. Then he spent many years working with Professor Michel Parinello at ETH Zurich and University of Lugano before getting a lectureship at Queen's University of Belfast, where he is currently working. He's doing a lot of research on machine learning algorithms for analysis of molecular dynamics trajectories and he's focused recently on simulations of crystals. He's also one of the four core developers of the plume plugin for molecular dynamics simulations, which is the main topic of our presentation today. With that, I would like to welcome Gerrit and I will now let him continue with the presentation. Okay, so I'm going to assume that everyone can hear me. Welcome to this presentation and thank you for being here today. What I'm going to talk and thank you, Ross, for that nice introduction. What I'm going to talk a bit about today is the software plugin plume of which I'm one of the developers. Because I always forget, I'm going to put the publications on the first slide of the talk so that I don't forget this time. The very first publication about plume is this one here. That was written 10 years ago, so this year we're celebrating 10 years of plume and we had a conference earlier in the year to celebrate that in particular. We rewrote plume in 2014 and we wrote this paper about plume 2 at that time. Just this year, we started this plume to consortium, which was an effort to try and have openness, transparency, and reproducibility in molecular simulations. I'm going to talk a little bit about our efforts in that direction towards the end of the talk. In terms of the outline for my talk, what I'm going to talk about first is really what plume is and what it's for. I'm not going to have a lot of time to go into a lot of the details because we've only got an hour. I'm going to show you some example applications and just show you the range of different ways that it's used. Then I'm going to talk about the plume consortium and what we're working on now. I'm going to finish by talking about what our plans are for this particular piece of software in the future and the direction in which we're trying to move. In terms of our community, we sometimes talk in terms of this division between users of software and developers of software. I've always felt a little bit uncomfortable with that division because even though I write and work on a piece of software, I don't feel like I'm a full-time software developer. I feel I'm very much also involved and primarily driven by the applications. I don't really want to get into the details of making sure that my code is load balanced. I mean, these things are important undoubtedly and it's great that we've got people that want to do that, but that's not my primary focus. Being one of these people who are between this, what we realized a few years ago was that we needed something that would allow us to operate between these two worlds, this world of software users and software developers. I have there a picture of the other developers, Carlo, Max and Giovanni, who are involved in the development of this plumed package. The reason that we developed plumed, the origin of it, was that we were all working in the same group, the group of Michele Paranello and we were working on the development of this method, meta-dynamics and various other related methods. What we found was that every few years we had to write these pieces of software into another code because we would need some other application or because some other code was not being maintained. It got to a certain point where sort of Gromax appeared and we set down to implement meta-dynamics in this again for the umpteenth time. Thankfully, Carlos had the genius idea of saying, what if we do one piece of software that works with all these codes rather than every few years having to rewrite this stuff again because we need some other functionality that's not in the particular one of the codes that we have us already implemented in. So that's the kind of genesis of plumed. What it actually does is you have your MD code there, which does what an MD code normally does. Essentially it calculates forces and it integrates the integrations of motions. Beside that you stick plumed, we call it a plug-in. Other people who are not as nice as us call it a virus. During initialization, there's some initialization done, but the important thing is that at every single time step just after the calculation of the forces, the MD code passes across the positions to plumed. So plumed can do various forms of analysis, calculate various different things. And plumed then has the possibility to pass back forces and by passing back forces obviously affect the trajectory and basically how the equations of motions are integrated or what is integrated. So to illustrate the sorts of things that plumed can do, this is an example plumed input file. So each line in this example is one what we call plumed action. So we have actions that do various different things. Some of them calculate things like sensors of masses, distances, various collective variables, and then we have other actions that calculate a stimulation bias. What you can see in this input file is each of the actions has an associated label. So if you look at the very first line in that file, you'll see that it reads c1, colon, comm, atoms equals 1 to 10. So this is calculating a center of mass and it's telling us that later on in the input file, if you see the symbol c1, that means use the center of mass that is calculated by that first comm command and the same holds everywhere in the input, everywhere else in the input file. So if we take that input file and turn it into a kind of graph, this is how basically data is passed through the code. So we start off with the MD engine, this passes the atomic positions into the plumed. As you can see, those atomic positions are passed into these two comm commands and they calculate these two centers of mass positions, c1 and c2. Those centers of masses are then passed to some of these collective variables. These collective variables, this is angle, torsion, and distance can also take the atomic positions from the MD code. We can then do functions of collective variables and we can do simulation biases. In the end, all of that data is passed to the print command that is within that input and that basically outputs whatever it is the user wants to output to a file. This is not the end of the story though. We have a loop where you go forward through this list of actions and you calculate these biases that depend on functions of collective variables or collective variables and virtual atoms. But because we're applying forces onto the atoms, we also need to calculate the derivatives of all these quantities so that we can with the chain rule basically apply the forces backwards through the code. So this is the sort of second step is what happens going backwards is we take our biases, we calculate the negative derivative potential which is obviously the force. We calculate that with respect to the collective variables that were input and then we basically propagate whatever the output of the action is, the derivative with respect to the input and by doing this process going all the way back, we eventually get back to the forces that we're going to apply on the atoms within the molecular dynamics code. There's one last thing to point out with this, which is that if you look and think about what this input is doing and you look in particular at the quantity t1, the torsion, the only thing that needs that torsion is the print command and that print command is only run every 100 steps. So it's computationally wasteful to calculate that torsion on every time step. So what we have is what are called pilot actions. The particular pilot actions in this case are the upper wall and the metadynamics bias. These need to be calculated on every step and the print command which needs to be calculated every 100 steps and basically these pilot actions control when the other commands are run. So for instance that torsion action which has only done 100 steps is only calculated every 100 steps. It's not calculated on every step and you have this basically avoidance of computational expense. For a torsion there's not much computational expense for something more expensive like a coordination number. This can give you a considerable speed up. Okay, so that gives you a rough outline of what pruned can do. So essentially it takes in the atomic positions, calculates functions of those atomic positions and calculates the derivatives of those functions so that you can propagate that bias potentials. What I wanted to do in the second part of this talk was talk a little bit about some more complicated examples and talk really explain really why you would need this structure of this why we need this extra code because the examples that I've given that far thus far they're not actually that complicated to implement and you might argue that it just makes more sense to have these in the underlying MD engines. So my first example is really is about studying inflexible interfaces and this is some work that I did recently I think two years ago now. And this really started off as a collaboration with this Mario del Popolo person who's based in Mendoza in Argentina and his former postdoc who then became my postdoc Joaquin Klug. And the problem that they were interested in involved basically the binding of nanoparticles to biological membranes. Okay, I've got an example picture showing the that binding process up the top of the slide which you can hopefully see. So we had a grant whereby we had this transferability and mobility between Argentina and Belfast. We definitely got the good end of that deal. And they came with this particular problem with regards to doing these calculations with the membrane. So what they were doing was they were using they were basically calculating the position of the center of mass of the membrane and using the distance between the center of mass of the membrane and the center of mass of the nanoparticle as a collective variable in their calculations. And what they found was that the membrane was doing all sorts of weird things like this. So the membrane would bend during the simulation. The center of mass would be in the center of the cell and it would not be indicative at all of the distance between that center of mass and the position of the nanoparticle would not be indicative at all of the distance between the nanoparticle and the surface of the membrane. So they were interested in can we basically come up with a better collective variable that is able to deal with the fact that this is some flexible object and that is more able to accurately say whether you're inside or outside of the membrane. So if you look at that particular picture there for instance the distance between the center of mass of the membrane and the nanoparticle would be negative which would you would assume would mean that the nanoparticle is inside the membrane but as you can see the nanoparticle is actually sat on the surface of the membrane. So our idea to solve this problem was to say let's suppose that your nanoparticle is here and it's and you look down basically in the direction perpendicular to the surface of the membrane at the density of atoms along that thing. So for each atom that you find along that particular direction you add a Gaussian kernel and you build a model of the density. Okay so you see now that that density is located on the z axis about where those three atoms of the membrane are. If we then move we do that same thing or we do that for a different x and y coordinate so now you see that the membrane is slightly higher and this density field moves to a higher point and we can do that again over here and you see again that density field moves to a different place. So we're just using some Gaussian kernels along the direction perpendicular to the surface of the membrane and the particular x and y coordinates and each atom is just represented by a Gaussian kernel. Okay so that's a kind of schematic representation this is what you get out when you do that analysis you get a a graph that looks something like this so here you have the on the the x axis of this graph the z coordinate and on the y axis you have the density of membrane atoms and the idea was well we take a particular value of the density let's say 0.5 and we say where does this density drop to that particular value so essentially we find the root of this curve we look for the p of the value of p of z where this is equal to some particular value gamma that we're interested in okay so you see I'm just reading off from the y axis where the density goes to that particular value. Now the slight problem with this as you will have noticed is that there are actually two z values that satisfy this equation one for the top surface of the membrane and one for the bottom surface of the membrane but this is not really a problem it's and it makes total because it makes total physical sense the membrane does have a top surface and a bottom surface and in practice when you actually do the calculation what you need to do is just pick which one of those two distances to use normally you're going to use the the shorter of those two when you're looking at it so the the the the membrane surface that is closer when you're constructing your free energy surface for the actual process of doing the if you want to use this as a bias what we found the best thing to do was to assume that those are the two those two distances are the roots of the quadratic equation and so to basically use the product of them as the collective variable. So that's a a nice example of this a really quite complicated cv that I don't think you would really want to be implementing in lots of different pieces of software because you know there's quite a bit of code within that that had to be written. On top of that there's a kind of a trick missing here because okay you've got this nice cv that measures the distance between the nanoparticle and the surface of the membrane but there's all sorts of things that we can do if we have information about the height of a fluctuating interface. For example there's all of capillary fluctuation theory that allows us to extract things like the surface stiffness of the membrane so as well as trying to implement this particular methodology whilst we were doing this we also looked at seeing whether we can basically construct the height of the membrane on a sort of contour plot and so we implemented that as well. We basically we calculate the manifold of points that are on that surface and we can build plots like this which shows the height of the membrane the height of the surface of the membrane as a function of x and y okay and in fact we went even further than that because as I as was said in the introduction I'm interested in the process of crystallization and in crystallization we don't have a nice situation where especially if we're looking at crystallization from the melt where you have one atom of one type and another atom of the other type if you have a solid liquid system all of the atoms in the solid are of the same type as the atoms or within the liquid so the first thing you need before you can even get to this question of where does the solid end and where does the liquid start is some mechanism some symmetry function that allows you to tell whether an atom is part of the solid or part of the liquid. Now thankfully lots of those sorts of coordinates exist many of those are implemented in plume you can use things like steinheit order parameters coordination numbers and various other things in this particular instance what I'm using is a cubic harmonic function and this cubic harmonic function if I look at this graph what I've done is I've calculated this the value of the cubic harmonic function for the atoms within a solid that's the blue histogram and I've calculated the cubic harmonic function for the atoms within a liquid that's the red histogram and what you can see is that there's very little overlap between the distribution of this quantity for the atoms that are in a solid and the distribution of this quantity for the atoms that are part of the liquid so I can what I can do is I can take those the values that I get I can transform them by that black dash line which is just the switching function and I can eventually get to a quantity that if I calculate a function that if I calculate that for a solid like atom will it be equal to one and if I calculate that for a liquid like atom is equal to zero so I'm not able to introduce a tag on each of the atoms that tells me whether a particular atom is part of the solid or whether it is part of the liquid and this is what I've done here so this is a box of just lennard-jones atoms just standard good old lennard-jones but all of the blue atoms have this symmetry function that measures the degree of solidness close to one so these are part of the solid and all of the red atoms have this symmetry function close to zero so these are part of the liquid and what you can see is I have a region of the box where you have solid and a region of the box where you have liquid so the nice thing is if I now take those symmetry function values that I get these are the s these are the these symmetry function values are the si in this equation in the numerator of that equation so that's the value of the symmetry function which remember is one if you're in the solid and zero if you're in the liquid the summations here run over all of the atoms in the systems and then I have a Gaussian kernel which is centered at the position of that atom so if you look at this thing what this is doing is saying in this particular position calculate the average degree of solidness at that point so what I've gone from is a discrete model of what a discrete point-based models which says in this part of the box the atom is solid and in this part of the box the atom is liquid to an hour continuous model so I have at every point in the box a value for this solidity or liquidity parameter and this means that I can then insert that into that density model and I can find the position I can find the contours and find the positions of the interface that separate the solid from the liquid and so this is yet another thing that we've implemented in plume and for anyone who's interested this is what the input file for a calculation like that looks like so this first line the one FCC cubic calculates that symmetry function value for all of the atoms this second line multicolour density calculates and constructs that phase field that I talked about so that that function of the Gaussian kernels and then this line here finds the isocontour and then I can print that up to a grid and I can look at that that contour and I can do various forms of analysis that might appear in capillary fluctuation theory so again this is you know a moderately complicated example of something that you can do with this piece of software plume that you might not want to implement implement in a piece of software like Gromance which already has a lot of complexity you can do these sorts of calculations within plume instead so I have a second example of something that we did recently so this one was about using entropy as a collective variable in simulations of the crystallization of pharmaceuticals but this this idea of using entropy as a CV has appeared in other places and people have been using this to look at sort of distributions of bond vectors in biological systems like proteins for instance okay so this again was a collaboration in this case it was a collaboration I met these two gentlemen Jean-Paulo Garbo and Michael Bellucci at a conference and they asked if it would be possible to do what I'm going to talk about using plume and I said I think so and they worked for Bernhard Trout and Giovanni Cicotti was also involved in this work okay so what they were interested in was the basically crystallization from the melt of pharmaceutical compounds and the sort of prototypical example of these pharmaceutical compounds and this process of crystallization from the melt which has been studied extensively in the literature is urea okay and it seems it works a lot of these techniques work very nicely for urea so the problem with looking at molecules rather than and is that rather than say a transition from gas to liquid is that what we're interested in molecules is not really a change of the density of the structure so what I've got in this graph is the radial distribution function for the centers of masses of the urea molecules in liquid urea which is shown in blue and in solid urea which is shown in green here and you can see like the the peaks in those radial distribution functions they're not really shifting it's not the atoms are coming closer together it's not that the molecules are getting closer together when you form the liquid from the solid and we know this this is obvious we know what really happens when you form a solid crystal from a liquid crystal is that you get orientation of order so the the molecules line up in some ways and you see this really clearly if you look at the relative orientations of the co bonds in these urea molecules so the green line again here is the solid and the blue line is the liquid so you see clearly that there is sort of a uniform distribution for that angle between the co atoms on adjacent urea molecules if you're in the liquid that distribution is essentially uniform whereas if you're in the solid you really have peaks so the urea molecules are either either have their co's pointing in the same direction or pointing in opposite directions and this is very nice what you can do is you can construct a function that looks like this so you have some function of the angle between the urea molecule between those co bonds this is the theta in that expression and this function is just something that has is a function that has peaks on where you see the solid peaks in the the urea so it's the dashed line the dotted line in that middle figure and then you multiply that by the some switching function and you average that over the first coordination sphere and when you do that you beautifully see that the liquid has a very low value for this average quantity you don't have a lot of molecules that are aligned then next to each other and then the solid in green has a high value for this quantity and you have a nice separation between these two regimes so what Ciampaolo and Michael had done before they involved me is they try to apply this to a different system they try to apply this to benzene and what they and they've done it in two dimensions and what they've seen is stuff like this so here what you've got on the right is you've got a structure in the bottom which is clearly disordered just visually and at the top you've got a structure that is clearly ordered and what I'm showing you here is the distribution of distances and angles between adjacent molecules in these two systems so this is just doing this over all of the atoms and in particular the sort of the colored part is the instantaneous distribution in those two configurations on the right and the black part is the distribution that you see in the crystal and the interesting thing that they'd observed was that even though in this even though in this disordered crystal the distribution is more similar to that of the ordered system than the distribution that you see in this clearly ordered system at the top so that one so this one the top one looks disordered when it if you look at the CV when it's actually ordered whereas the bottom one looks ordered when it's actually disordered so because of this trying to fit these Gaussian because basically what you're doing is essentially counting how often you fall into one of those modes this doesn't really seem to work particularly well for some of these more complicated systems so what they were interested what Michael and Jan Paolo were interested in is can we compare the distribution directly so rather than constructing this surrogate that basically looks at how often we fall into those modes so you know we have these triangular kernels that measure whether or not we're close to the orientations we see in the solid can we instead just compare the distributions directly so obviously this distribution this is the distribution of distances and angles in the liquid that's on the left of the slide and the one on the right of the slide is the distribution in the solid and obviously these are very different so you would hope that you could if you compared those you would have something that when you're close to a solid is small and when you're close to a liquid is big and the way that you can compare two distributions is using this thing called the cool black libala divergence which is calculated using this expression here so here you have an integral over all space in this in for these particular two distributions it would be a two-dimensional integral and you basically in integrate the instantaneous distribution which is the p of x and the q of x is some reference distribution so we went and we implemented this in plume we also have forces for this quantity so you can do a bias on this cool black libala divergence and this is what the input looks like in this particular case we're using a uniform distribution as the reference so you see you calculate your cv's you construct a histogram show basically of how those cv an instantaneous histogram of how those cv's are distributed instantaneously and then you integrate that histogram or you integrate that histogram multiplied by the reference distribution that you've input and again this is a quite complicated piece of programming you know reasonably moderately complicated piece of programming that you might not want to have to redo in all these different codes so that brings me to the the last part of the talk where I'm I'll talk about where we see this this plume thing going so I started at the beginning by talking about this distinction between the software users and the software developers and how as developers as plumes we see ourselves more in the in the space between that so we mainly focused on trying to develop applications but in order to develop the applications we want we often have to do a little bit of programming in order to to to get things up and running and what we've realized from doing this for the last 10 years is that we're not alone in this space there's actually many many people in the community who are in this sort of limbo between users of software and developers of software and so in order to facilitate those people and celebrate this fact that we're all in this this limbo we recently started this plume consortium we have members from all the countries shown on this map here we have about 70 members at the moment and the idea of the plume consortium is that we want to promote the development of this open source plug-in software plume we've been very lucky so far in that people have decided to use it and take it on and we want to encourage other people to contribute to it as well as just us and at the same time we also want to promote scientific reproducibility and good behavior so from early on within the development of this plume we organized a workshop we've organized the number of workshops and user meetings about the methods and the code within plume these have always been very successful and we want to continue doing these things and basically teaching people how to to use these methods because that's an important aspect of what we're doing and we hope that the plume consortium will allow us to to facilitate these objectives so what does this actually mean in terms of the development of plume well the first thing it means is that we no longer just have this plume core developed by these four people Memex Karo and Giovanni we do have that but in addition we have modules that people have contributed and we now have seven of these that have been contributed by well six that have been contributed by other people and one that has been contributed by a subset of the four of us and these sit in sit with in plume and you can you when you download the code you automatically have access to all the pieces of software that these other people have developed and we encourage anyone to to contribute what they've done the only things that we ask the only thing we ask is if you want to contribute a module make sure you have regression tests that test the functionality within it and make sure it's suitably documented and and try to answer if there are questions about your module on the plume mailing list try to answer them so that's the first thing is we're moving away from this model of development that is based on a small core of developers working on this piece of code to a model of development that is really based on people contributing functionality that is explained and curated within this plume repository the second thing that we've done is we started this plume nest so the idea of this was to basically build a repository of the data needed to reproduce the calculations that are in this this has been done in a very sort of plume style so there's many people working on repositories and they have invested a lot of money in the sort of storage aspect we're sort of tagging on top of that we're not building a repository to store the files the information you use something like you could use github or materials cloud or nomad whichever one of these databases out there what plume nest will do is grab that data and basically build a page about the way that you have used plume in your calculations and the idea of this is that users can learn from real life examples we can promote scientifically reproducibility and we can create educational material and this has been quite popular we launched this maybe four months ago when we already have 64 pieces of work within the repository so how does it work let's suppose that you've done some piece of work using plume you come to our website plume nest you click on contribute and it gives you a form to fill in and you can see that you give your project a name it assigns an id to you that where it says url that's where you put in where to download the zip file and i've been told it's very important that i explained that it's a zip file the plume will go looking for the plume input files within you say which which files within that other plume input files and then you provide a little bit of detail about what the calculation you did and ideally a doi for the publication that you generated that this data is part of once we get that information we then build a page that appears on the browse section so if you click browse you get a list of all the input files that people have contributed a table that looks something like this if we pick one of these in particular this is what you find so it gives you details of the calculation where you can download the data from so the zip file that you can get the data from the publication that this was part of and then you have within that the plume input these links that will take you to the plume input files that were used to do the calculation and the nice thing is that we regularly check basically if the calculations that you've submitted to the nest are still valid plume inputs so you know the code is changing as as time progresses but we actually make the effort this this is using the server to basically test that these inputs are still compatible with the way that with the with the current version of plume and you get these badges you know that in this case the first one of those inputs is working with the latest stable version version 2.5 and with the master branch of the code so nice and straightforward so we're trying to expand on this at the moment and make these inputs a little bit more and have more information in the nest so this is something that we're in the early stages of doing so at the moment each of those green words is a link to the appropriate page in the documentation so if you click on group it will take you to the manual page of plume for group so from the plume nest website directly to the plume manual pages that's fine but maybe you lose a little bit of context and you want to look at the whole thing together you just want to find out what a keyword is so what we're trying to do is make it so that these all of the keywords within here are tool tips so if you go and hover over this radius keyword for instance a tool tip comes up that tells you what that what that radius command is doing so that's what we're working on and another aspect of this is in terms of the quantities being calculated and so for example if you if you make it if you click on the restraint one down here it will tell you it'll show you basically in red where that command is being used in the input file and what quantities are are included within that restraint and a little bit about what they are so for example here when you click on that restraint it tells you that the restraint action with the label restraint calculates a quantity called restraint dot bias which is the instantaneous value of the bias potential and restraint dot force two which is the instantaneous value of the squared force due to this bias potential okay so kind of useful again for a user who's maybe new to the code to to basically be able to probe and understand based on inputs rather than having to read the dense old manual because we all know that no one really reads the manuals so this is our attempt to address this kind of crisis in reproducibility that we we have in the field and our sort of feeling is that part of the reason for this crisis is the nature of the way that science is done which is maybe quite unusual if you compare it to other fields so you know if you think about the typical scientific career you you start off as a student and you finish as a member of faculty and as you go through as you go through that process you learn more and more about basically how to run calculations and how to do things and the sorts of things that go wrong but at the same time and in parallel to that process of learning you also find that you have progressively less and less time to do things and in fact that sort of process of going from being a student to being a member of faculty happens in in not a terrific amount of time you're talking 10 15 years normally and so you know we have this very fast turnaround of the people who are doing the the actual calculations and so what we're trying to what the way that to solve this reproducibility crisis I think is to build into the way that we work ways of ensuring that when someone who is new to the field comes to look at those calculations later they can more quickly understand what was done than the purple who did it in the first place and with that I'll finish and invite questions thank you very much thank you gareth could you please change to the slide showing how people can oh yeah yep sorry I can I have the question slide there it is yes thank you mm-hmm thanks again for the great presentation it was really interesting to see the big efforts that people are making not only on the cold side but also tackling things like reproducibility and community building these are some of the aspects that also in Barxell we are very interested that we are encouraging and supporting that so I encourage everybody to use the questions tab to to write your questions there and I will let you speak to Garrett I have to send to Garrett you the regards by Roshan Shrestha who especially thankful for your notes on free energy calculations and he sends his regard okay thank you very much we have a question from Partivan just a moment I will see his audio so I don't see the questions can you see them no yeah well Partivan can you hear us oh yes I can hear you okay great so you can speak hi my question is how can you define the classical and what is the difference between the classical and the enhanced MD and how can you define it to a biologist okay so if if you're doing so when we when we talk about ah that's a very difficult question so it depends how you how you ask the answer the question so in a very naive naive way if we're talking about plume we could we could if we were being a bit more immodest if I'm allowed to be modest for a moment we could say that the classical MD standard MD would be you go and you run your calculation just with whatever MD code you're using okay an enhanced version would you would be you run it with that MD code with pruned insight as I said that's the immodest answer I think a division that people would normally would often use is we have this problem of what's called rare event sampling so there are certain processes that take a very long time and we can only run MD for a very short amount of time and obviously if we run a short MD simulation we don't see those processes occur so I'm talking here about processes like protein folding which take place on time scale of seconds or processes like nucleation of crystals which again takes a very long time for it to occur so there's no way that we're going to see that event if we run a simulation for you know 100 nanoseconds so okay in order to resolve that problem we add additional forces in order to force that event to happen on a much shorter times scale and that's what a lot of people talk about when they talk about enhanced MD and enhanced sampling okay the follow-up question is will this fall into a category of this biased or unbiased simulation yeah that's exactly what I'm talking about so biased versus unbiased simulation but okay but when you enhance it it doesn't necessarily always have to be with a simulation bias there are also methods like transition path sampling which you wouldn't necessarily do with plume there are other codes for that where essentially what you do is run lots of different molecular dynamics trajectories and then you do a kind of metropolis in trajectory space or methods like I'm trying to think of another one or a method like forward flux sampling where you run calculations and periodically stop lots of calculations periodically stop them and then and then see whether some have done things that you're interested in and then you throw away all the ones that are not doing anything interesting roughly speaking okay does that answer your question yes yes sure thank you no problem okay we have a question by june let's see june can we hear each other june hello uh maybe he has an audio yeah okay so I'll read his question does the entropy procedures and inputs have to be included in the nest if not would you expect to see it it has it been included in the nest that's a good question did I put that in the nest I don't think I did actually and thank you for reminding I I should put that in there yes so I don't think I did it yet no but there are if I remember correctly there is there is information in the support and information of the paper so what we put further okay then we have a question by marcello marcello do you have a microphone okay I'll read his question besides multiple walkers which other protocols deal with a single cv with slow convergence besides multiple walkers yes so so things like meta dynamics would be one umbrella sampling steered md the problem with steered md is you're not going to get a free energy surface out of it unless you use a judzinsk inequality which is very difficult to converge a variationally enhanced sampling would be another I mean that there's a there's a zoo of different methods that you can use for basically enhancing sampling even even something like along a slow cv even even a method like parallel tempering would would work where you're you know you're swapping between replicas at different temperatures and so the high temperature replicas are taking you over the barriers and the lower temperature replicas are sampling inside the basins that you're interested in so yes I'd recommend looking at some of the reviews on on these techniques okay thanks and marcello has one more question is there input in the nest for calculations of six ring members or five ring members occurring I don't know off the top of my head there are examples in the manual I think then there is a question by roshan I don't know if his audio works let's see hi hi hi gareth how are you doing very well thank you how are you thanks a lot for the notes that you provided on my email okay okay my question okay thank you my question is like why for now in this webinar we are only talking about meta dynamics right why I'm sorry yeah sorry can you just on on sure sure sure I mean on this webinar you are only talking about meta dynamics while they're all enhanced sampling simulated annealing and rammed as well so I just want to understand what makes meta dynamics better or good enhanced sampling technique than others or it depends on the system or processes we are just studying right now okay so why am I why do I talk about meta dynamics I talk about meta dynamics because it's what I know yeah that's what I use personally yeah sure they there are other methods out there there's there's a huge number of different methods out there yeah the the nice thing with meta dynamics is a lot of other people use it so it has recognition when you when you when you publish a paper and you say I did this using people know what that means they know how the method works they have some intuition as to what is going on in the paper and there's also been that work on basically looking at how the free energy surface that you get out and how the performance of the method depends on the parameters but sometimes isn't there for some other methods not all of the methods for many methods that is there yes so that's that's one reason but yeah the reason the reason that I speak about meta dynamics is that it's what I know thank you thank you so there was one more question by June which is are there any additional efforts to elaborate plume with the recent Boltzmann generator apparently Frank Noe and other authors mentioned such possibility in particular so the which one the what the the Frank Noe was talking about about some recent Boltzmann generator I don't know exactly what it means but that's the question okay okay there is a more from June there's been a science paper on Boltzmann generator June writes okay and they so there's been a science paper on the Boltzmann generator and he's wondering whether there are plans to extend plummet with that I wouldn't really I mean I wouldn't really the the short answer is no but there may be it may be that Frank Noe and and company have plans to to contribute this to plume that but I'm not not aware of well this is the the the advantage and the disadvantage of this community development to a certain extent is that obviously you don't exactly know what's going on in the future and yeah and people are free to extend it may appear it may not yeah I was actually wondering because we're very interested in like the high performance aspects of MD I guess it depends on the type of plume that you have but to what extent the extensions affect the performance the raw performance the scalability of the MD engines so it very much depends on the application like you say the the big thing that would slow stuff down a lot is if you try and pass all of the atoms into plume that's going to slow it down a lot but for most bio applications where you're looking at a small molecule in a lot of water and you're just interested in passing the atoms in the small molecule this is not a big worry that you know the the plume does not causing you an enormous slowdown but again it's it's one of these things where to a certain extent you I mean and this is another reason for doing all this stuff to do the reproducibility aspects is the you know the there's such a zoo of architectures and machines out there that you you need to spend quite a bit of time working out how to optimize the compilation especially if you've got multiple bits of pieces working together so it would be really useful in the future to sort of share the efforts in that direction as well as the efforts of what the input files are and you know someone's indeed thanks I don't see any other questions there is only a question regarding the recording yes as with all of our webinars soon after maybe later today or tomorrow we will post a recording on our youtube channel and on the main website so for those of you who have joined later halfway through the talk you will have an opportunity to listen through the whole presentation again and as well you can check out some of our other webinars in the youtube channel I would like to tell you about our next webinar could you go to the next slide Garrett thanks so in a couple of weeks time we will have a presentation by Berkes one of the core developers of Gromax who will present a new method for weighted histograms accelerated sampling implemented in Gromax and those of you who are interested in sampling methods this will be a very interesting and useful talk we believe so you're welcome to attend this webinar as well and with that I would like to thank Garrett again and we look forward to new developments in Plumpt okay thanks for the presentation yeah thank you everyone