 in PMX session and the waiters will continue to show you practice how to use the application and how it can be helpful for you. So, thanks Ithos. So, let me share the screen and again a little explanation of what I will try to show to the ideas to hands-on tutorial, which is quite high level, so quite abstracted, so quite busy in the production runs, but I also want to show internals of the what's how, what is chromax doing in the steps, what is PMX doing, and to give you a feeling of what this exactly is. Of course, when running the PMX tasks or chromax or interacting with them, you may have questions and might be some issues sometimes. Of course, this is an open source, yeah, academically developed software, so if you have any questions, you can go to the, I hope you see my screen now, which is Ask by Excel EU, and here all the that are supported by Excel have their own, yeah, it's like a forum-based sections, harder, also PMX is there, so on PMX I will then try to solve the problems as well. Yeah, and where we host our PMX is here, I wrote it here on github in the crowd in the PMX, so if you navigate there, you can download PMX. Now, I hope you really have your hands on experience right away, so in tandem doing all these steps, but I see that this workshop is not so, it's quite large that there are so many participants, it's difficult to get everyone, so what I suggest is that I will show each and every step, so I will not skip steps, I will not let's say wait for everyone to follow, so if you have a question, of course, just read to ask, we can try to get an interactive session, but otherwise, I will just continue with this tutorial. All right, and now how PMX is that we have several branches, it is there by default, the first branch that you will close, but the master branch is still a little in the older Python version, in the Python 2, we also developed PMX, the development developed branch, and it is a Python 3-based version, and that's where also the tutorial is, from which I will base, so if you go to the, yeah, I just went to the developer branch, there is a tutorial section, and in this tutorial section, I also placed a install, it is a very brief installation with which you can simply, it really goes from the very beginning, where you create environment, I have already created that, so just to save a little bit of time and spend time on something more interesting, so to show what's exactly, I will not create the segment, you can in principle just create your condo environment, so you go to your, let me just, so let's say we are somewhere, we simply create condo environment with a desired name, we activate this environment, I already created it, so I already did this step, where I activate the environment, I think I called the test race or so, where I went to the test, yeah, I activated it, and then there are several packages that you would need to install, they're just standard non-fine mathlet lip, then one more package are for handling molecular structures and the chemical informatics tools in there, and then finally we go to git clone, pmx, download pmx, let's say we do it, right, we download pmx, that is the folder structure, we enter it in this folder and we check out the development brand, that's important, right, that we are, if I do this, git checkout, git branch, it shows me I'm in the development branch, okay, that's it, we have, we install it, git install installs as pmx, right, and I installed it, I'm done, running his commands right now because I prepared just 10 minutes ago while preparing for this tutorial, all right, and then we just go, so this is where our tutorial files that I prepared are, and let's launch our Jupyter notebook, I hope you're familiar with how those work, if not you can just follow what I'm doing, right, Jupyter notebook, it will open in your browser, it will open the tutorial, which we can now follow, right, okay, the tutorial, let me briefly describe what we'll be doing in the tutorial, and let me describe, well, and then we'll go one step, firstly we just import some modules, all the modules that are in this class is, you can go to this as a tutorial, and check what it is, there's nothing, no magic, that contains all the parameters that this tutorial is setting, so how many replicas we'll run, how many we will want, and so on, and so I'll go, I'll explain a little bit more in detail later, and you see that just the standard Python class, no need to, you can always just go there, extract what you want from it, okay, so let me introduce what we are going to do, in the lecture, a little bit on the topic of ligand protein interactions, and in this ligand protein interactions we have we're interested in modifying the ligand, so making a small modification on this, let's say in this example, it's not exactly the same that we're using this picture, where we change in this benzamide and we attach methyl group in once in water, once protein interacting with the ligand, try to estimate what is the PNG difference of adding this methyl group in the protein and in the ligand, and in water, and this delta-delta G is very informative, because it tells whether this modified stronger or weak with respect to the original original ligand and modified one, we will take one case paper that I'm highlighting from this paper, all the inputs are already on our BMX GitHub web page, from which you can down our all this, and you can from there start these calculations that I will show later and calculate the PNG difference. Experimental, so these will be two ligands, one one codename and another codename, just two ligands, we'll have a look how they look in a second, and we now experimentally measured PNG, this is about three kilojoules per mole for one or another, and then we can compare whether we got the correct similar answer, okay, let the ligands now, so I prepared some input for this tutorial directly coming from this paper that I just so the two ligands are organized as follows, one ligand and another, just the codenames, let's have a look at one of them, so there is an ITP file B and another ITP, so let's start with the PDB, this is a structure file, that's how Gromix stores structures of other formats, but this is just a text file with the coordinates and atom name, let's have a look how it looks, pure, it's a ligand, all right, a ligand which we will want to morph into another ligand, let's load also another ligand, here is another ligand, so we have the two of them, they are very similar, there are small differences, where is the difference, well the difference is that chlorine atom here, all of a sudden it jumps to another position, it jumps to a different position in another ligand, and this change we will try to capture in our PNG difference calculations, you can see that there is some sphere, blob on top of it, this is just for those of you who are interested in molecular mechanics force fields, and this is a so-called sigma hole chlorine, actually it's not just chlorine, it actually has also a small positive, so it has a chloride atom, sorry chloride, it has a high partial negative charge, but it has also a positive charge area, so-called sigma hole on top of it, or yeah in the plane of the debensing along this axis, and this is represented by a partial particle, this is a very detailed, just for you to be confused why there is another blob on top of chloride, okay, so and we also have, ah sorry, we have topology, not to forget, that's called chromax topology, you don't need to learn it or anything just to understand what's these files, because yeah this is a lot of everyday life, looking at those files, trying to understand where the errors come from, so we have a molecule definition, this is a molecule, our ligand, and all the atoms are described in it, so atom one will be carbon type C3 given charge and mass and all of the atoms, later we'll go further, we'll find the bonds, first carbon is bound to the second carbon, with force constant, with this at this distance, with this force constant, then we have pairs, we have angles, angles are, how the idrals and some virtual size for this virtual particle, okay, so this is very simple, we also have efforts more, simply I like to separate them atom types in separate files, nothing special, okay, so these were ligands and proteins, proteins are in amber format in this case, again this is our protein, I forgot what protein it is, it is, I think that's why I'm looking into the tutorial, here is J and K one kinase, you notice that this is just a plain protein, I didn't even add a ligand inside, ligand will be incorporated later, well when we go through the, okay this is, yeah nothing, nothing special to see if you have seen a few proteins, this is just a regular kinase, okay, and again topology files, you can see that Gromax has defined several topology files here, again the same, just this time, again atoms defined, bonds are defined and so on, okay, so the last part is mdp files and I will go into them a little bit later, but they are pretty standard mdp files and mdp are dynamics parameter files, where we say what parameters for the simulations we'll use and these are, so don't need to go through all the functions, through all the parameter names here, but let's say we define the integrator, steepest descent selected for energy minimization, initial time step or some of them will not be used for the energy minimization while others will be energy minimization, tolerance, step size and so on, okay, so this is a very generic overview, okay and what we'll do in the tutorial, we will generate the hybrid structure and topology for these two ligands and we'll start a non, and we'll use non-properation protocol, I will do this, so we will run, sorry I'm trying to enlarge a little bit the size, okay, what we will do, we will set up the system in its wild type state, let's say ligand bound to the protein simulated for a long time, we'll set up ligand bound to, mutated ligand bound to protein and simulate it in a long time, we'll extract and start the transition state to another in one direction and in another direction, from all of these transitions we'll gather work values, use crux notation theorem to calculate delta g between the two states, we'll do this for two states, for two branches of the thermodynamics, we can go back to the thermodynamic here, once in water, once in ligand bound to the protein and recover delta delta g, okay, let's go first step and the first step, we will simply initialize this class, so it doesn't do anything alchemical, it doesn't do actually, it doesn't do anything related with simulations, it just prepares the parameters, prepares the folder structure and tells where to find all these inputs, you remember I showed you inputs for ligands, let's say now with ligand path will be in the protein path, will be in the input protein mdp path and the input mdp, so nothing special, let's just run this and let's see what happened, I ran it and it told me that it found the work path somewhere, it found mdp path, protein files and so on, and it's following work folder structure, it's quite informative, just look at the folder structure to understand what's happening, what will be, so we have an edge and I'm calling the, simply the two ligands that we are considering delta delta g calculations, x, y means that we are interested in the free energy difference between ligand x and y, it will have two sub branches, one in water, one in water and one in protein, ligand bound to the protein, then there will be two states, state a and b, those going now to the figure again, these will correspond to the one state, let's say wild type ligand and one fired ligand, that's stated so for each of the branches, then we'll have three replicas, it's always a good idea to have to run full replicas because the color dynamics is a has a stochastic component to it, every time when you repeat the simulation you will get a slightly different free energy value, when you repeat it, so you can have an independent estimate of the uncertainty of your calculation, that's why we are running in this case three independent and for each of them an energy minimization, let's say equilibration with position restraints, equilibration and then transitions, for the sake of this tutorial we'll just run several of those to make it go faster, but in principle that would be the general logics of this and what happened, now I switch again to the terminal to show you what happened under the hood, so let's pass here, it created this edge x y, so in our case it's edge 18625-1 the ligand thread and water and protein branches, water and it has as I said state a, state b, okay state a, state a have one two three replicas, each of those has three folders em, eq, transitions, they are all empty, we haven't done anything, we just prepared everything and also it created I think one more folder that I haven't mentioned, this hybrid structure topology folder, we'll place some, we will structures and topologies, okay let's have a look next step, this so far so good, let me know if you have any questions because you have also interact but I understand that it may be difficult but if something is really unclear just just interrupt me so that you can discuss, all right next step is to establish a mapping between these two ligands, I'll just run the command and we'll discuss and I'll explain this command that it's performing atom mapping it says and now finish, here it's output quite a bit of output, you can read that what it was doing but it's important to understand what the not not these writings but exactly happened here, so now in this hybrid structure topology appeared many files, you can investigate them, it can be quite informal but let me show you what it did, so what this function did, it took two ligands, let me show, these two starting ligands but one of them is let's say green is wild type, blue is mutant and it passed so now I do later I want to calculate between the two of them, I need to establish which atom will map to which atom, this is let's say here, this nitrogen has to correspond to a nitrogen in another molecule, it needs to, so the script that we just ran smart enough to understand that this one, that this oxygen later maps to another oxygen right, it needs to, that this oxygen for example maps to this oxygen right, it needs to establish a mapping between the two of them and those atoms that it doesn't find a mapping for example here's a chloride atom but on the other ligand there is no chloride atom at this position, it's a hydrogen right, it needs to also understand these two atoms correspond one to another, it all encode that information and here then it finds all the atoms that map to one another, you can see these are slightly truncations of the same ligands, they are completely identical in that respect because it's simply removed from its internal atoms that do correspond to one another, okay so far so good but simply all that it did I'll show you a text file, it simply found a mapping between a text file which created text file where it said atom is actually in the ligand one is the same as atom two in ligand two, atom 27 is the same as atom 27 between the two ligands, different numbers just numbered so similarly all right but that's the only thing you take okay but that's very simple so this is chemoinformatic parsing the structures okay let's now deal with the topologies, this is a tricky part let's do now it will use this mapping that and will use the topology topology information to build to build the topology I'm running this command it's something and it says creating hybrid structure topology okay and it did exactly that let's see what it did it took the topology that I showed you before and merged them into one now it created the two ligands in one that's that's exactly what we wanted we want to have both ligand states so one ligand biota represented let me try to explain what what it means let's look at the nitrogen atom here number it is this is the old topology entry for ligand one it is nitrogen of type nb with a given 0.83 minus 0.83 and mass and now it added the second part it says in state b it will still be nitrogen of type nb but slightly different charge you can see that it's minus 0.831 before it was minus 0.832 so this means that performance simulation and couple the two Hamiltonians with lambda it will know that it can it needs to be this charge in state a the different charge in state b and this is all for all the atoms based on our atom mapping and our topologies some atoms you can notice are have become dummies what does that mean so those are exactly the atoms that are disappearing so we have a clone in state a but we said hey it cannot be the same chloride it has to disappear from that position that's why in the structure just to remind you a it will be a dummy dummy it's just an atom which still has a mass but it doesn't interact with the system so it's really our description of the system's potential energy function it's just and in state b we find another chloride right it's still it is at a different position but it's not state a it's a dummy in state a and there are several other atoms that we call dummies there let me show you how it looks in the structure right so now this is the structure and you see it's funny because the primal kind of dummies it's a bit confused what's happening here but I'll still explain this if I label now atoms by name here is our let's say this is our ligand a it has chlorine chloride the second ligand has d should have chloride there so this is the structure that's representing both yeah the namings need to be amended like with these d values and so but in principle now we have cultures represent in one single pdb file so chloride here and chloride here they will be controlled which one is on and off by apology that they showed you before and we will have we can run the simulation with all this structure yeah yeah with chromax package okay so we're almost there so now just note just wanted to remark that these commands mapping and the and the apology generation was created by pmx those were not promise commands but pmx commands mx minus h you will see commands we have and this was done so i ran them now from this tutorial class but you can run them by by your own let's say type at a mapping and if you type minus h it gives you all the functions it would take one ligand another ligand i to establish a mapping between them or you can type my pmx once you establish the mapping you can say minus h and it will provide the two structures and topologies build hybrid structure and topology so again you provide two structure and two topologies and the mapping between them from the previous step you get the hybrid topology that's it it's very forward two commands that's it let's return to the tutorial let's actually now prepare the actual simulations and go ahead from there because now we are almost we're all do everything we just need to what what do we always need we need to solve it the system add ions add so add water add ions prepare duration usually this is done by yeah there are various i haven't assembled some so i'm sorry i skipped one step but we need to we we just had hybrid structures and topologies we now want to put everything together we want to put those new hybrid structures into the protein the command it simply concatenates them into into a meaningful way let me show you what happened it simply created such a attenuated structure and topology now i open it again and i i'm showing protein uh protein was just empty let's say without the ligand bound now it simply plays a copied row copied ligand into the protein if you have a different workflow it's perfectly fine you can just do this yourself with the any special truth right because there is a question about what are the other dummy atoms besides uh see i yeah that's a good question let me let me show you so uh pmx has many rules how to properly construct how hybrid structures and topologies and based on those we also include other dummies so let's say there are i mean that are for example these hn atoms right dummy hn they are atoms bound to nitrogen that are allowed to disappear it's always a good a good idea to i'll show you which atoms those are not to morph hydrogen that are bound to a mark them that are bound to a polar so these would be also become dummies in principle it's the same atom right or a matching atom between the two molecules so in molecule one nitrogen one hydrogen bound two in molecule two it also hydrogen bound so in principle we don't need to disappear and appear via this dummy technology but it's always when when it is that has a hydrogen that we let them to disappear this doesn't impose any particular problem for the molecular dynamics and it is not a big perturbation actually it doesn't matter if it's if this happens or not via dummies it's a good idea because in some certain situations polar atoms may cause um yeah may hydrogen and polar create artifacts when you're doing a direct perturbations so simply just a empirical rule which we learned hard way by seeing the simulations and there's a few other questions in the meantime how does the script deal with legal different molecular scaffold to confirmations uh yeah that's a good point so the uh different are not an issue in the the script we'll still try to identify a mapping maybe that be not as clean as here here are so many atoms are matching maybe it will find that out of your 50 atoms a small subset atoms are matching well then you will end up having very large perturbation it's it's true it will be challenging but that's that's due to your question that you decided to have two very different ligands in this comparison so the scaffold that's that the question that confirm they do not matter so much because let me show you the script that is established i'm i'm running uh i'm showing just a few options it has two options is uh mcs is alignment you can they're both enabled by default you can disable them and uh one one one one of each try out what mapping would come out but the idea is that the script either relies on the 3d coordinates the different poses of the ligand would matter so different confirmations of the ligand would matter but it also uses a maximum common substructure graph where the confirmations do not matter so based on those two answers it will try to find the optimal and is it possible to align multiple structures on one template in a single step yeah yeah it is uh well you see it's it's trivial you take the template that you have in mind and run the script twice if you have two structures in mind so you have a single template let's say template uh x and you compare it to molecule k you compare it to molecule l you compare it to molecule m and you run in a trigger question right it's a option to do this i understand that it's uh maybe sounds like a complicated question but as the solution trivial run it's in a in a loop with the same template it creates them the so-called star graph yeah can you use pmx on trajectories obtained with amber or maybe other tools from which the solver that i asked him already removed uh yeah in principle you can if you have the trajectories where you extract the structures in exactly the same way as here and then continue from there if if those trajectories are obtained with amber let's say well amber force or amber package you would need to convert we are dealing with grommets here so you would need to convert to the compatible format for grommets but uh otherwise there is no objection to to to keep track structures from from whatever you have okay thanks yeah with the tutorial and we'll take the questions as they come yeah thanks thank you for the questions that's uh that's very nice to have it yeah so we stopped where i assembled the systems and now now we can solve it and prepare them for the simulation very quickly so this is a wrapper script you you have learned that we have i'll show what it's out putting so what it's doing it's putting running several gmx commands again there is no alchemical it's nothing pre-engine related it's simply adds the system into puts a system in our box plays it here so the command is run then adds ions i think somewhere here and so does a ground to p and adds ions yeah so uh very standard very simple things show you what came out i think i'll need to convert i'm just gonna for the in order to show you what what happened here i was i not here i uh i'll just show you i think like this unconverted so a little bit final has a bit of a representation issue but uh just just for the very quickly let's show you a nicer picture of that here protein there show cartoon protein ligand is also there uh what ions also should be there uh yeah i they're just colored funny way but so everything is there alchemy simply prepare the system and can take the next step so now for the next step where we would like simply to minimize the system again this will be just a gromax command grom pp to put and md run to run the energy minimization again with no free energy nothing but let me start these simulations for look what's what's happening in the system so i'm just starting it again this is just a wrapper to run grom pp ones and several times from and again i lost myself and now i i'm i ran the grom pp now i'm ready to run energy minimization i'm okay so now my machine is working harder i think let's have a look so yes j is using 500 cpu percent so it's running on multi course okay and now we have a little bit of time to have a look what it is doing so i switch to the water that's energy minimizing right now water box we have two states state a and state b in a we have our replicas i go to run one and i have energy minimization you see the folder is no longer and the other folder are still empty we haven't touched them equilibration is empty transitions is empty but energy minimization is already running okay so that's exactly what it's doing and then energy minimization let me at least finish one or two runs so that we have some output to have a look what it has done it's so the idea that we oh now it's running too it's affecting the money in quality i hope you still hear me yes we hear you yeah i will run just one energy minimization for the sake of an example and then i'll just stop we can it will be sufficient for us to learn something okay so if we look at this output and the log is here i don't even know how many steps i have maybe i have more than a step that will take us a while yeah but the idea so yeah the idea again we will energy minimize the system in state a and state b in this case it's just a water box and let me show you what comes out of it so what so my energy minimization is still running but i can already show you an example of what we will get so it will be just a with the energy minimized structure where all these atom positions are minimized in the potential governed by the Hamiltonian of state a so state a in the current some is the one where the chloride at this position later will minimize in exactly the same conditions but switching to the Hamiltonian in state b this way we will minimize accordingly that chloride is in this position right that's how we control of course you may ask the question but how do we achieve this how do we control it that it is in state a and state b and this is controlled by the mdp parameter and that's why i'm returning now to the input path to show you how these mdp parameters are controlled in that so let me show you eml zero there this is the way and then going to the free energy control here it is there is a section where i'm showing how it is controlled it's a very small section but that's how grommet controls it so whenever you want to run free energy calculation related things you have this format in this case great we have now our output i also have several functions to run to prepare simulations on the cluster so that you don't need to run on the laptop as i did because it takes a while so you can just if you're in running this tutorial you can check how these are created but these are standard cluster files that you could create yourself if you have a different environment g here i think i also have a slurm environment compared to job scripts let me just show you i think it did i'm being brief on this quite standard things so it creates a job script which you can submit just changes the directory to the required energy engine directory and runs to use those trajectories to further analyze the transitions so i'll execute this and i'll explain what this one what this command does i'm executing it and you can see that first it runs trg con takes this trajectory that i just generated right trg con and extracts every every i think 100 picoseconds it extracts a snapshot from this trajectory and creates such files frame 25 grow 2026 grow these are so extracted from the trajectory if you look at them let me show you several seven 57 these are just two from a simulation well it extracted a hundred of them i think or eight or a hundred these are just two snapshots so you see the ligand moved from one state or not and the water of course moved these are regular simulation snapshots extracted and the prepare transitions command also built a tpr file so for a transition from state a b those tpr files were done exactly with this mdp parameter that they show ti zero that will go again to the png console where we started at equal in it lambda equals zero and we increased delta lambda by small small increment every time to go from zero to one so for the back transition we have a different file which is very similar the same except for the we start at state one b and we go in the reverse direction minus very small and up at zero so it created these tpr files now we all need to run each of them so we need to run 100 md simulations and calculate or before we calculate the work values what grandma outputs is the hd lambda file so i actually also precalculate those because we don't want to run now a hundred files or 80 files 808080 the trajectories now what we get is are these xvg files these are called the hd lambda xvgs let me just show you several of them there just let's look at one of them this is just a text file which goes from zero in in time the first column is time it goes from zero to 50 so the transition was done in 50 people seconds and the next column is the hd lambda so this is this value which we want to integrate into to work value graphically these files look as follows the hdl80 the hdl70 just as follows that we want to integrate this curve to get one single work value or in this case two work values transition will get 80 of them and pmx can do that so if i go to the analysis step now for each of these transitions for each of these states i created 80 transitions now i can run analysis and let's analyze the data this will be our final calculation it's running now the analysis processing the data what it exactly does that it takes all these hdl80 files and them integrates and also processes them to calculate free ng estimates so let's have a look at one of the files i think it creates already outputs right so what it does let's have a look graph later let's have a look in more detail graphically it looks like this we have snapshots those are x-axis for each of them we had a dhd lambda curve but this dhd lambda curve was integrated from zero to one work direction and from one to zero in the reverse direction and each of these curves before became just one single value and this one single value is plotted snapshot is just one work value bam bam bam and the reverse direction also the blue line now all of these work values on the hand side are summarized as histograms so also i mentioned that let's have a meaning that where they overlap where they inter where they intersect will delta g estimate there are several ways to estimate delta g from from these intersections either using maximum likelihood estimate or using approximating those histograms as gaussians and all of these are some are in the results txt so results txt is just the sum reference we analyzed in this case 80 trajectories in the forward direction 80 in the reverse we use if you use crux gaussian intersection excuse me these this is one way to estimate the the overlap the intersection region we approximate the two histograms as gaussians and say where the two gaussians intersect that's where our delta g is that would be minus 8.8 kilojoules per mole is benefit self-translation maybe some of you have heard this it is saying that what is the maximum likelihood parameter of in this case parameter is delta g that would explain the rise to these two work distributions this gives a slightly different interpretation that's a very very similar minus 8.85 there is also maybe you have heard Erzinski estimator which says hey i only will investigate one directional transition so this is what if we do it in the forward direction but of course it doesn't have so much information then from the simulation and it has a less accurate estimation if we're also Erzinski can formulate it in the opposite direction what if i do it only in the reverse direction again a different estimation and one and so forth we can we can consider more and more of those this is a topic of its own i just wanted to give a flavor and pmx can provide you with all this information as it has come here okay so ours has finished what we have now let's not forget so we did delta g's in one direction and in another oh i'm sorry from the transitions in one direction but we have two branches of the thermodynamics so let's have a look what this now i'm just summarizing here in the in the we have now transitions in water for one coming large yes i can make it larger this is the summary from all of these transitions that let's say transition one in water minus 8.85 and several error estimators you can do it analytically or by boots this would be 8.85 for the transition 8.86 for the replica number 3 is 15 so you see all of these are very for the transitions in water we are converging very quickly very very well to a very accurate consistent answer this this is then the average of all of them however improvement is bound to protein we have slightly more of a variation 13 here it's minus 10 here it's minus 12 three different replicas really show some variation so on average about minus 12 kilojoules per mole yeah so uncertainty of about one kilojoules per mole this is but as i just mentioned these are just raw numbers from the separate branches what we're interested in is delta let's just calculate delta delta g will be this number it is minus three so it is simply subtracting minus water branch of the of the thermodynamic cycle three and now so okay this is our answer that's what we calculated from our free engine compilation let's go back so it's minus three let's go back put it somewhere here experimental value so measure double free engine difference for this edge is minus three kilojoules per mole so here we are we and we got minus three kilojoules per mole so we are our experiment was very successful we are very close for this particular ligand but yeah it was a very small change and very well behaved system so yeah accurately but as i mentioned we we made that accurate yet in this case it worked okay so at this point i will stop and maybe we have a few more questions yes thank you with us there is a question regarding the fact that you in your examples you're using in jupiter glom 18 and psmx or the wrap are they working with glomax 21 future version any particular reason that has been 2018 yeah it's a good question so in general of course glomax newer versions are supported and psmx is compatible with also 20 and 21 and now also the latest version but just a note of caution and i advise never to jump to the versions because of the pertaining bugs and the that need to be done so in this case i want to be able to take the running tutorial which i tested with older it's compatible it's certain thank you if there are other questions please put them in the chat okay so just to mention also second that so maybe the we had just one hour for the tutorial maybe was a bit a lot of information for those of you who haven't done it but we are going to well this session is recorded and we'll put it on the web and we'll send you links to the to the recorded video so you can also go through it again at your own place just to to show in it does the bioxl also we have also docs.bioxl.eu where also find a lot of additional information for all the application for for pmx for example there are pmx tutorials on the website that might be useful for you so that's all from us for pmx thank you with us