 So good morning everybody, a welcome to the BioXL webinar series. Now we have a webinar number 48, we start again with this Atom section, and the talk of today will be on computational biomolecular simulation workflow with BioXL building blocks. Our speaker of today is Adam Hospital, from the Institute for Research in Biomedicine Barcelona. Today's speaker and the person that will start the new The Atom series of the BioXL webinar is Adam Hospital. Adam is a postdoctoral fellow in molecular modeling and bioinformatics unit at the Institute for Research in Biomedicine in Barcelona. But in the meantime, he's also a researcher software engineering at the Spanish National Institute for Bioinformatics. So we can say that Adam start from a computer science background, and then he moved to bioinformatics world, and then he was fascinated by the structural aspect of the bioinformatics. He's involved in different projects, both at the Institute for Research in Biomedicine in Barcelona, but also in the supercomputer center in Barcelona. And he's leading the workflow team at BioXL. So he got also in the meantime, he was working in as a software engineering. He got his PhD in biotechnology at the University of Barcelona. We can say that he's also developer of public web server database. Among those we can do, we can see, we can find empty web, naflaps, big na sim. And now I will be happy to see what he will tell us. Okay, fantastic. So thank you, Alessandra. And welcome to all the attendees. And thank you for being here today with us in this webinar. I will talk about the computational biomolecular simulation workflows that we are building with the BioXL Building Blocks Library. I have divided the presentation in these different sections that you see here. I will start with a brief introduction on the BioXL Center of Excellence for the ones that are still not familiar with it. I will give an update on what we understand the current work on the biomolecular workflows, what we are developing our library, the BioXL Building Blocks Library. And then I will show you examples of biomolecular workflows using this library, built using this library. Two different, really different kind of workflows, demonstration workflows built with Jupyter Notebooks and pre-exescaled HPC workflows built or managed by Com Software in supercomputers. And if we have time, I will show you an example of a work that we are doing with these pre-exescaled workflows in the COVID-19 related research. So starting from the beginning, we started in the BioXL Center of Excellence. This Center of Excellence is a project, an European Horizon 2020 project that started in the year 2016, so four years ago. With the motto of becoming the central hub for biomolecular modeling and simulations. And for that, and I hope that you can see my pointer, more than 15 different European partners joined together, all of us coordinated by the KTH in Sweden, to work on the connection between the life science and HPC. And basically working on this area of expertise, so going from the atomistic models to small molecules, macromolecules and reaching the cell unit. Using tools such as molecular mechanics, quantum mechanics and this kind of biomolecular research. Our main objective is to enable better science and we are doing that basically improving the performance and functionality of a set of key applications that I will introduce in the next slide, providing support to non-experts and advanced users. And finally, developing user-friendly and computational workflows. At this point, it's the one that we are more interested on and this is why we have created this library and we are today all together in this webinar. So the key applications that we have in our Bioxial Center of Excellence are very popular tools in this field. I'm sure that you will recognize them. For molecular dynamics, we have GROMACs for the free energy calculations. We have PMX for the docking, not only protein protein but also protein ligand and protein DNA. We have Hadoq and for the QMM and QMM calculations, we have CPMD and CP2K. All of these key applications are developed by partners that are involved in the Bioxial Project. We also have supports, we have a lot of webinars these one training events, conferences, workshops, industry visits and we have a forum where you can this ask.bioxial.eu where you can place and formulate any kind of questions that you want in this key application but also in general in the biomolecular computational field. And of course, using these key applications, what we want is to design, deploy and make available biomolecular workflows. And when we started the project, we thought that we should do that looking at the usability. So we wanted to change the way that we were building these biomolecular workflows. And for that, we partnered with this Elixir European, big European project to start trying to follow a set of best practices in software development to build these workflows. So that means that our workflows should be easy to use, available in different platforms, in different infrastructures, able to be reproduced in different machines in an easy way. And for that, a set of these partners in Bioxial started to work on the library that I will present today. So a little bit about the information about biomolecular workflows and what we think that biomolecular workflows are when we started the project, we sit and start brainstorming with all our colleagues. And I'm sure that you also share this thing with me. The biomolecular simulation workflows are usually built from a number of tools that perform different tasks. And if you think about one workflow that you are now using in your everyday work, you can maybe, you have maybe to download the structure from using a REST API. You maybe need to convert between different formats. You need some kind of modeling if you want to start the molecular dynamics or maybe you are interested in quantum mechanics, you will need to choose which of the programs available you will, you are interested in using. Maybe you are performing QMM on the resulting trajectories. You for sure want to analyze something, extract information from these trajectories. Maybe you are thinking about doing some docking, free energy, et cetera, et cetera. There's a lot of different functionalities. And when you think about these functionalities, I'm sure that you, in the reality, what you are thinking about is something like that. Yes, I'm going to work with molecular dynamics and I'm going to use amber for that or maybe grommax for that or maybe NAMD. And on the resulting trajectory, I'm going to visualize it using VMD. Maybe extracting information also with VMD or maybe using CPP track from amber tools. Or maybe I'm interested in small molecules and I'm going to use open bubble as a chemoinformatics package, parametrize the small molecule using ACPAP. A lot of different tools that we are familiar with because we are working with them every day and many, many more, this is just an example. And at the end, what we are doing, most of the scientists working in this field, what we are doing is to build a shell script like this. So in the step one, I'm running a command line, one of the tools performing one particular functionality, something that I'm interested on. For example, a REST API, I'm downloading a PDB file from the PDB database. In the second step, maybe I am generating a topology using one of these molecular dynamics programs, et cetera, until we end up in the last step of our workflow. Of course, this has a lot of problems, a lot of problems. And you can think about the usability, the one that develops this shell script understands this script, but it's really difficult to teach how this shell script works and why the step one is doing what he's doing and the step two is doing what he's doing. Even if you put a lot of comments between the different steps, interoperability is another big, big problem here. So the upwards of the first step don't need to be compatible with the step two. You need to maybe change the formats and make them compatible with the second step and the same can happen with the other ones. Portability and reproducibility, as you can imagine, you take this shell script and you move this shell script to another computer. If you don't have the same versions of the same programs installed with the same libraries, these will not work the same way that it's working in your computer. And finally, scalability. If you want to take this script that is working really well in your laptop, but with just micro dynamics of 10 nanoseconds, if you want to go to the one microsecond or maybe run that 100 times, you need to move that to another computer, maybe a supercomputer and you will have a lot of scalability problems there. So with all these keywords in mind, we started the development of a new software library that is called BioXL Building Blocks and I will explain you a little bit about this library in this webinar today. So BioXL Building Blocks is basically a Python wrapper, a set of Python wrappers on top of biomolecular simulation tools or biomolecular computational tools. For example, if you think about a particular execution of a particular functionality of a program, for example, build a system box on top of a protein to perform molecular dynamics simulation with these books, with the system. For example, we can choose to work with Gromach molecular dynamics package. We know how to execute that. We know the command line to do that and we know the local input parameters for this command line. But what we are adding here is a Python compatibility layer. And this Python compatibility layer what it's doing is to adapt a set of him output files and configuration files, which are always the same. They have always the same syntax no matter what program is here in the middle. And it does the same. It adapts these inputs to local input parameters and it does the same with the local output parameters. It adapts these output parameters to a set of output files and log files which are always the same syntax for all the different building blocks no matter what is the program that is being executed. And I will give you examples of that. Don't worry if you don't understand now exactly what I mean by that but you will understand that for sure at the end of this presentation. And on top of that, we are building an external layer which is called workflow manager adaptation layer. And this new layer is making these building blocks compatible with different workflow managers. And you will also see examples of that during this presentation. This is important. You have all the information that you need in this web page here. And you will see this URL in different slides in this presentation. So this is a kind of a summary. We start with the building blocks which are wrappers on top of functionalities on different biomolecular tools. And we put together these building blocks which are really easy to interconnect because of this interoperability layer that we are adding and we build our biomolecular workflows. And once we have the biomolecular workflows we launch, we execute these workflows using different workflow managers. And that's thanks to the external layer of compatibility with these workflow managers which can be grown on graphical user interfaces such as this NIME or Galaxy if you know about these graphical user interfaces or Jupyter. But we can also work with HPC focus so more workflow managers focused on supercomputers such as Pycoms or Toil for example. So different ways to execute and control our workflows. As I was telling you at the beginning for that we started this collaboration with Elixir and I don't want you to recognize all of these different logos here but just briefly introduce you that the library is completely fair. That means that it's findable, accessible, interoperable and reusable. And just as an example you can find the library in the Elixir Bio Tools repository, software repository. We have a webpage where you can find all the different information. It is indexed in the OpenEvenge Elixir platform for benchmarking of different software tools. All the source code you can find it in GitHub. We have bio schemas behind all the web pages that we are developing and also the documentation. So you can find our library easily with the search engines like Google for example. All the documentation is made with this standard initiative. Read the docs, OpenAPI, Swagger for the REST API, Interfaces, common workflow language for our workflows descriptions. We are using packaging and this is really, really important for the reusable and reproducibility of our library. Conda packages, Docker containers and also singularity containers. And as you could see in the previous slide we can run and launch our workflows with different workflow managers. I'm not going into details about that but just for you to know that the software best practices that we are following in this library. One of these best practices that is really important for us is the conda environments. And if you are not familiar with this software I will strongly recommend you to take a look at it because it's really powerful. In just one minute what this conda software lets you do is a closed environment inside within one particular computer with a set collection of software libraries and tools installed with particular versions. And you can reproduce in a really easy way the same closed environment in another computer. And that of course gives you the possibility to run a particular workflow. In our case we are interested in workflows using these programs with these versions in the same way in this computer as you do in the other in the second computer using the same conda environment. So I will not extend on that but please take a look at the conda if you are not familiar with it because it's really, really important. And for us it's really important for the reproducibility of our workflows. And you will see examples of that. So at the end of the day what we have is a collection of modules which gather together different building blocks with a particular functionality. So for example, the common is a base package required for all the different building blocks library but we have a bioVV input output module which is a collection of building blocks to fetch data from biological databases. We have a molecular dynamism collection to perform setup and run molecular dynamic simulations. In this case we are using Gromax as it's one of our key applications in BioXL but we are thinking about adding different packages. We have an analysis collection to perform analysis over the molecular dynamic simulations that we are running with this module here. We have a collection to perform free energy calculations wrapping the PMX tool. Also one of our key applications in BioXL we have structure utils to modify or extract information from a PDB and also to convert to in different formats We have a collection to check a model structures, chemistry collection with chemoinformatic analysis, a machine learning one, wrapping popular machine learning algorithms like Psyche-Learn, TensorFlow, etc. And we are finishing a virtual skinning one, a molecular interaction potential one and we are thinking about different modules. So we are extending the library and it's good to know that every time I explain these BioXL building blocks I have more and more of these modules so I will need to extend this slide in two different slides. So we are extending these modules and you can find all the information about these modules in the web page. Those are all the different modules but if you click on one of these plus icons here you will find all the building blocks that you can find inside of this particular module which is the analysis one and you can see clustering, RMS, RDS, etc, all different functionalities which are basically building blocks. If you click on one of these names of the building blocks you will go to the documentation that will explain you everything that you need to know about this building block and what is important is that you have here links to the source code in GitHub, the Python code, documentation and read the docs, the bio-contact package, the Docker container and the singularity container that contains all not just the Python wrappers folder for the building blocks but for example, in this case it also contains the dependencies needed for this building block to run. So in this case in the analysis that means that the Amber Tools 19 and Gromax will be installed if you just type in the install in your terminal. So this is important, really important for reproducibility. Examples about the syntax. I was telling you before that we have this Python compatibility layer. We have these input files and configuration that are then adapted. So these input files and configuration basically are these inputs, outputs and properties that we need every time we want to launch one of our building blocks. So this is repeated every time we want to use the building blocks. We need to import the module, define inputs, outputs and properties which are the parameters of the function for the building blocks and to launch a building block. The example is always easy to see. So import the module. We are importing in this case the particular building block which builds this system box on top of the protein. We define the inputs and outputs files. In this case you can see that this is just a path, a string with a path with the name or in this case of the output file that we want to produce. And here we define as a Python dictionary the properties which are basically the parameters that we need in this particular case. We want the box to be cubic and we want the distance to module to be one nanometer. And then we launch the building block. Inputs, outputs and properties. Inputs in this case is taken the output of the previous step on the workflow. This is basically what we do when we develop workflows. We use as an input for a particular building block the output of the previous building block. And for the output we take this output that we have defined here and the properties, the dictionary of properties. It is really not complicated but if you see examples of how we do that, for example, for a mutation, you can see importing the building block that we need, defining inputs, outputs and properties. You see that it's exactly the same and launching the building block. In this case, we are mutating a residue using Modeler. In this case, we are running a cluster, a clusterization on top of a trajectory. So again, importing the building block, defining inputs, outputs and properties and launching the building block. And here what we are doing is obtaining this cluster centroids and we can represent them. So it's exactly the same. And basically if we join together four different building blocks like these ones that you will understand because this is not difficult. The first one, I can remember importing the library, defining input, outputs and properties, launching the building block. We are downloading using a REST API, a small molecule in PDB format, in this case, the ibuprofen one. Here we are adding hydrogens to this structure with the same syntax as before but now using a building block which is called bubble at hydrogens which is using open bubble. It's wrapping open bubble. We can take a look at the intermediate structure using Jupyter Notebook. You will see that in the next slides when I will show you examples on Jupyter Notebooks. The third step that we are doing here is to minimize the structure of these hydrogens and atoms that we have added in the previous step. Again, importing the library, defining inputs, outputs and properties. In this case, we don't have properties launching the building block. Again, looking at the intermediate results and finally we want to parametrize the small molecule using AC pipe. We import the library. We define inputs, outputs and properties and we launch this. So we have been using in this mini workflow three different tools but the syntax of the building blocks as you could see is exactly the same. So it's very easy to use. Where you can find information about which inputs and outputs I need to define and which properties and which parameters can I use for a particular functionality or for a particular building block. You can find that in the documentation. So each one of our building blocks has a read the docs, a standard documentation with the parameters that they did accept, inputs, outputs and the different properties that you could use. I cannot extend more on that because of the time that we have for this webinar but you can find all the information that you need in the scientific data paper that we published a year ago. And just to tell you that the European Commission has identified this library as one of the high potential innovations from innovation tools from European funded research such as the BioXL Center of Excellence. As I was telling you before, the workflows that we are producing with this library can be launched in many different workflow managers. Here you have just examples of them, common workflow language, using a REST API, using command line, using graphical usage interfaces such as Galaxy or NIME. And even we are developing a web server so that you can use pre-configured workflows and run them with a connection with HPC machines. We don't have time again in this webinar to take a look at all of the different versatility workflow managers that we can use. But I have centered this presentation in two examples. The first one, demonstration workflows, workflows to play, to start with the library using Jupyter notebooks. And the second one, completely different from the previous one, pre-exascale workflows or workflows designed to be used in supercomputers like this Marinostrum one from the Barcelona Supercomputing Center which are controlled by a software that is called Pycoms and are able to use thousands of cores in one single job. You will see. We start with the first one. So demonstration workflows using Jupyter notebooks. Why we chose Jupyter notebooks? I think that they are really, it is a great tool in general because it's a fantastic tool for training. You can inspect intermediate results. In our case, we can inspect the molecules in 3D with interactive tools like NGL. We can interactively modify the parameters of the different steps of the workflow. So you just click here, you modify the parameters and you run the cell again. If you are not familiar with Jupyter notebooks, you have different cells, independent cells that you can run in an independent way. And you have also the possibility to run the complete Jupyter notebook in my binder infrastructure. I will tell you something about that in a couple of slides. But in particular, for the BIOXL building blocks, it is a really good tool, I think, to be familiar to start playing with the syntax that I have just shown you in the previous slides and to learn how to build these workflows. And for that, we have developed a set of tutorials that are the ones that you have here and you can find them in our webpage to start looking at the syntax in how you can join together the different building blocks and build your own workflows. And this is also important. It's an easy way to see how you can package your workflow using the Conda packages and export this workflow to another machine, infrastructure, et cetera. And using Conda, you will see examples of this. So this is how Jupyter notebook one of these demonstration tutorials that we have in the webpage looked like. There's a lot of information, as you can see, this is marked down in the Jupyter notebook that you can add information about the building blocks that we use, the libraries, actual libraries that we need. When you go to a particular cell which is running a particular building block, you can now identify import of the library inputs and output definition and launching. Remember that it's always the same. So here, you have, for example, generating the topology for Gromax MD package, here information about the force field and the water type that is used, here the cell that you can execute and here is the lock that the building block is producing. As I was telling you before, you can check intermediate results. In this case, this is NGLB where you can rotate and zoom and take a look at the structure, intermediate structure. And this is inside the Jupyter, really nice. But you can also take a look or generate plots like this one, which is showing you how the energy is decreasing during the energy minimization process, the step of energy minimization inside one of the demonstration workflows, which is the molecular dynamic setup tutorial. And this is just to show you that you can integrate in the middle of the building blocks, Python code, just to extract information in this case from an energy values output from Gromax and use these values to plot this information in an interactive flow like this one, using the plot library. And this is important. Once you have the Jupyter notebook finished, your workflow in the Jupyter notebook finished, you can export this Jupyter notebook using this code packages. So for that, you just need to create this kind of YAML file, which is called environment dot YAML. And you just need to tell here the dependencies of this workflow, which are these three different building blocks modules, common input, output, and chemistry, apart from some auxiliary libraries that is needed to inspect the intermediate results. You put all of these in one single file and then just doing this, which is Konda environment create with this file, you will, so the Konda software will install everything that is needed to run this particular Jupyter notebook, this particular workflow in another computer. So these seven really easy steps here that you can find in the demonstration workflows that we have in the webpage are the ones, the only ones that you need to reproduce, in this case, this particular workflow, which is the one that I have shown you to automatically parametrize a ligand. You can also use this environment dot YAML, these files too, and these Konda packages to automatically deploy these Jupyter notebooks in the MyBinder infrastructure. If you are not familiar with that, it's an infrastructure that lets you deploy automatically in the cloud, your Jupyter notebooks, install all the dependencies, and you can let you play with the Jupyter notebook as if it was installed in your own machine, just using a browser. You have four demonstration workflows and we are working on more different workflows in our webpage. You can click on execute in binder if you want to directly play with them, but also I invite you to take a look at the tutorial, try to install using these Konda packages in your own machine and try to play with these different demonstration workflows. And now changing to the second part of the examples, which are the HPC workflows. In this case, these workflows, as I was telling you before, are prepared to work on thousands, of course, at the same time, so nothing to do with these Jupyter notebooks that I have just showed you. Starting yet from the Jupyter notebooks, what we can do is to export this Python code that is coded inside the Jupyter notebook to a particular Python file, and you can run this Python file in a command line interface. So you can just with little modifications, you can have the command line interface from this Jupyter notebook, but of course you have these advantages. The graphical cells are not showing, of course. You are losing interactivity, but you gain high throughput. So you can start using this to automate processes, to repeat the processes with different input files, with different parameters. And the problem basically is that this Python file needs to be modified every time you need to modify a certain parameter for a certain step of the workflow. So we thought that a good approximation to run command line interface workflows using the bytes of building blocks would be to split this Python script in two. So we have, on one hand, the workflow script in Python, and on the other hand, a YAML configuration file with a workflow parameter. So here we have the building blocks, the workflow, the Python codes, loops and condition, and so on, what defines the workflow, and here what defines the parameters of the workflow. So inputs and outputs of the step, dependencies between the steps, and the properties which are the configuration files that you saw in the previous slides. And you have also global workflow inputs and parameters. Examples that is always easy to understand with examples, this is a very easy sequential empty setup where you download the PDB, fix the missing side chain atoms, generate the topology, all of that with grommats, generate the system box, solve the box, generate the counter ions and add the counter ions and minimize the structure. So all of these are building blocks from the BioXL building block library. And this, which is a separated file, which is a YAML file, are all the inputs needed. So inputs are just a PDB code that we want to use for the particular step one, dependencies on different steps. So the input of the second step, it's a dependency on the output of the second step. So the input of the second, sorry, of the first step, the input of the second step will be the output of the first step, and here you are defining all these things, which are the parameters of the workflow. We can have more difficult workflow like this one, a little bit more difficult. In this case, we have a loop on different mutations that we want to model on the mutations list and these mutations list is defined in the YAML file as you can see here. So we can run this basically in the terminal and it will produce something like that, which is step one and two are common for all the different mutations, but then when you start modeling the different mutations, you have three different folders. Each one of the folders has 24 different steps, which are the steps defining the MD setup and the run of the simulation. We are, if you remember from our diagram of the building blocks, we have this adaptation layer on top of our Python compatibility layer that makes our building blocks and our workflows compatible with different workflow managers. In this case, we are using for the HPC pre-exascale workflows. We are using PyCons, which is a framework developed in the Barcelona Supercomputing Center. These PyCons, what it does is automatically identify these kind of loops like this one that you have here. So for all the mutations in our list of mutations do something in this case a molecular dynamic setup, PyCons is generating a dependency graph like this one that you can see here is identifying that we have in this case five different mutations which are completely independent, one from the other. So we can run these branches totally in parallel and basically what it ends up doing is something like that, which is using 100% of the CPU of all the nodes that we have reserved for a particular job in the Marine Austin Supercomputer. This is what PyCons is doing and this is the approximation that we are taking for our pre-exascale workflows, PyCons together with the BioXL building blocks workflows. And just to finish, I will finish with an example of how we are applying that in a pre-exascale workflow. In a COVID-19 related study, I will go really fast because we don't have time but I'm sure that you will identify the COVID-19 virus, the spike proteins in red, the RBD receptor binding domain protein coming out of the spike, which is the receptor that is docking to the humanase protein here. This interface here, one where the RBD is attaching the humanase protein is the one that we are interested on. This particular interface here, what we are doing is using our chemical free energy calculations of relative protein binding, free energy difference. Check the influence of particular mutations on the RBD of the virus or on the humanase protein, on the free energy of the binding of the two proteins. So basically what we end up doing is this complex workflow that I have no time to go into details. We are selecting two different deltages. We are subtracting the deltages and obtaining the binding free energy. This can be transformed to pre-exascale workflows. And again, I'm not going to enter into details, but we have pre-exascale workflow to simulate molecular dynamics for different mutations on the RBD, on the humanase and on the complex and all the different structures. And with these molecular dynamics simulations, we are running free energy calculations that it means that we are running this non-equilibrium molecular free energy calculations that involves running 1,000 independent short molecular dynamics simulations using Gromax and BMX. This is extremely parallelizable and we can transform that into this kind of workflows. This is the first one, equilibrium MD simulations that you can see here. This is the reality, is how we are using it in the Marinostrum. We call a Python script, which launches molecular dynamics simulations and models of particular mutations that we are stating here. So we want to run the wild type and this particular mutation. And this, what it's doing is using algorithmic blocks and picons is running all the mutations in all of these nodes. This is a real example 12 mutations, 10 nanoseconds molecular dynamics simulations in more than 2,000 nodes in the Marinostrum supercomputer with just eight hours of time. And the same with the free energy calculations on top of this equilibrium simulations that we have performed in the previous using this workflow. In this case, we can do exactly the same. You can see that the approximation is the same, really easy to understand. And here, again, we are using 100% of the CPU of, in this case, 1,500 different nodes. As a summary, the Bioxial Building Blocks software library offers a new layer of interoperability on biomolecular software tools. The workflows that we are building with this library are portable and reproducible, and can be easily built using this library. And the external additional software workflow manager compatibility layer allows these workflows to be launched and controlled with different frameworks and be used in different infrastructures. And I have shown you a couple of examples, really quick about the demonstration workflow with Jupyter Notebooks, and the pre-exascale HPC workflows, completely different, two different approaches, but using exactly the same workflows behind using the Bioxial Building Blocks. Just as a bonus track and before finishing, you can build your own building block if you are interested on that, and you have a particular tool that is not integrated in our library, or a particular tool that you have developed and you think is interesting for us to have it in our collection. Take a look at this particular section of the web page, and you can find all the information that you need to build your own building block that we will check, of course, and make the appropriate arrangement if needed, and then we will integrate it in our library. Remember, if you don't know that we have a lot of training in the Bioxial Center of Excellence, so we will have a remote Bioxial Winter School on Biomolecular Simulation. We will have a new virtual training related to building blocks in November this year. You have the YouTube channel in Bioxial where you will find different examples of how to build workflows using the Bioxial Building Blocks with the Jupyter Notebooks, in particular this demonstration workflow. So in one hour, there's no time for everything, but please, if you are interested, take a look at these resources because they are really interesting and useful. Finally, just acknowledgments. Those are the people which really make the work here. So the Bioxial Building Blocks developers, Paul, Janice, Laya, and Luis, the Bicom developers, Jorge and Rosa, that is the boss, and the coordinators of all of these library and the Bioxial Workflows Modesto and User-US. And now I would be really happy to take questions from you. We have a first question from Henry Whitler. Henry, I have unmuted your microphone. If you would like to ask your question, please go right ahead. Thank you. Yes, very inspiring talk. I was wondering if this BioBuilding Blocks available in Orgithub, I was wondering which license does it have, and is anyone able to, can anyone adapt the workflow to work with any programs and software, for example, like material research software? Is it possible to adapt? The thinking by copying the code from GitHub? Yes, absolutely. The license that we have is Apache 2 in all the different building blocks and all the different modules. So you can take a look at the GitHub repo of Bioxial, and you will find all the different modules there. So yes. I guess I will have a look, so thank you. Thank you for that answer. The next question we have is from Leonardo de Maria. Leonardo, I have unmuted your microphone. If you would like to ask your question, please go right ahead. Yeah, hi, Adam. Thanks very much for the very nice presentation. I was wondering, you for obvious reasons have started with a selected number of applications, like for example, using Gromax heavily as your MD engine, but can you comment, you know, how easy would it be to have other engines there, like for example, let's say NAMD? Yes, yes, that's a very good question. I mean, in my experience, I developed a web server that was able to, like 10 years ago, that was able to run a setup, to perform setup and run simulations for amber, for NAMD, and for Gromax. So it's all, it's just the only thing that we need is to understand how to prepare everything, all the steps that we need. And once we have that, I would say that integrating that in the Bioshoel Building Logs is really straightforward. We actually have a template. I haven't said anything about that, but we have a template in the GitHub repo that you can, well, everybody can use. You can download the template and just modify what is the tool execution. That means that the command line interface that basically you are wrapping. So once you have this line, I would say that integrate that in the Bioshoel Building Logs is really easy. So yes, of course we are thinking about NAMD, we're thinking about amber now. The thing about amber is the license, which is another thing that we need to discuss another day. We don't have time for that, but yes, we have problems with BioCon and the Konda packages because we can not distribute that, but we can use and we can build this kind of Bioshoel Building Logs anyway, because we are prepared to use software which is compiled in a particular infrastructure. So in the supercomputers, we are not using the Gromach installation that comes from the Konda package, but we are using the installation that it's compiled for the particular infrastructure. So yes, there's a lot of things to discuss here. Yep, thank you. Thank you. Thank you for that answer. The next question we have is from Giorgio Tambo. Giorgio, I have unmuted your microphone if you would like to ask your question. Please go right ahead. Okay, well, thank you very much. First of all, for the very nice talk. I'm sure if I had this during my PhD, that would have saved me a lot of hours and a lot of wrangling with the bar scripts. Well, now currently I'm working in the industry and so I know that it's quite difficult to get access to most software simply because you have to pay for them. And so are all of the Building Blocks free to use also for industry or is some of them to come at the price? For instance, NAMDI, I know it's not free to use in the industry. Yeah, well, the only thing that we are doing in this library is wrapping this kind of software. So if NAMDI is not free to use for industry, we cannot do anything about that. We just can write the wrappers on that so that you can use workflows on top of this. So using the Building Blocks, but you still need this license if the software that is wrapped behind needs a license. So we have, for example, excuse me, we have a wrapper on top of Modeler and in this case, we can even share, distribute the software because they have a conda package for that. But if you don't have the key license to run this Modeler software in your own machine, you cannot run this workflow. So this is a kind of a problem in reproducibility, but we cannot do anything about that. We have started just selecting all the tools that we know that are free to use. You can imagine as Gromax, PMX, all of these workflows, sorry, tools, but yes, we can use these, we are compatible with this kind of software, but we cannot do anything about the licenses that are behind. Of course, of course. Okay, well, thank you very much. Welcome. Thanks again for that answer. The last questions we have are from Dikeos Sumpassis. Let me try that again. Dikeos, I cannot seem to, I seem to not be able to unmute your microphone. I apologize. So in that case, I will ask the questions for you. Dikeos wanted to know, can any Anaconda install work with these building blocks? So for instance, specifically, does the Anaconda installed on Windows 10 PC work? That's a good question. It works. We have tested that in the virtual machine inside the Windows 10. If that is what he or she is referring to, yes. The thing is that of course, you need these Anaconda 3, and then if you have like this kind of a mini-Conda or the different approximations which has a less number of packages installed, the packages that are needed will be installed anyway. But the short answer is yes, as far as I know. We have tested that in the virtual machine, Linux virtual machine inside the Windows 10 Operative System. Great, thank you very much. With that, we have no more questions. I'd like to take a moment to thank Adam again for this very interesting presentation and also to mention that there are a couple of other BioXL webinars coming up. I believe, Adam, you have a slide showing upcoming seminars. Yes, let me see if I can hold for that. Yes. Yeah, so for instance, next week on Tuesday, we have a special edition. We're running a summer school and the students, there will be a student webinar for that summer school happening on Tuesday at 1500 CESD, so European time. And then in October, we have a talk about Molywood streamlining the design and rendering of molecular movies. The method for joining us for these talks is much like the method for joining us for the talk that Adam has just given. With that, thank you again, Adam, for this very good talk and thank you everyone for coming to this webinar.