Dinâmica Molecular de Proteína de Membrana no Google Colab com OpenMM – Passo a Passo!
Caio Klocke Zamuner
[{'start': '3.199', 'end': '6.560', 'text': 'This video aims to make'}, {'start': '6.560', 'end': '10.719', 'text': 'molecular dynamics simulations of membrane proteins accessible.'}, {'start': '8.880', 'end': '12.240', 'text': 'This will demonstrate step by step'}, {'start': '10.719', 'end': '14.160', 'text': 'all the steps necessary to'}, {'start': '12.240', 'end': '16.000', 'text': 'execute this simulation, from'}, {'start': '14.160', 'end': '18.560', 'text': 'obtaining the protein file to'}, {'start': '16.000', 'end': '18.560', 'text': 'analyzing the'}, {'start': '20.240', 'end': '24.439', 'text': 'results.  So, to start, we'}, {'start': '22.359', 'end': '25.880', 'text': 'need to download the file'}, {'start': '24.439', 'end': '29.160', 'text': 'which has the protein structure, it will'}, {'start': '25.880', 'end': '31.080', 'text': "be in PDB format.  We'll"}, {'start': '29.160', 'end': '34.360', 'text': 'locate it in the'}, {'start': '31.080', 'end': '36.600', 'text': 'protein database and download it in that'}, {'start': '34.360', 'end': '40.039', 'text': 'format.  In this case, we will use'}, {'start': '36.600', 'end': '41.960', 'text': 'humans and we will use just one monomer'}, {'start': '40.039', 'end': '43.520', 'text': '.  So, when we open it in'}, {'start': '41.960', 'end': '44.800', 'text': 'another program, an external PMO program,'}, {'start': '43.520', 'end': '46.760', 'text': 'we can visualize this'}, {'start': '44.800', 'end': '49.600', 'text': '3D structure'}, {'start': '46.760', 'end': '50.879', 'text': '.  With that, we need to prepare'}, {'start': '49.600', 'end': '53.160', 'text': 'it to identify where'}, {'start': '50.879', 'end': '55.000', 'text': 'the membrane will be inserted.  So we go to'}, {'start': '53.160', 'end': '57.440', 'text': 'this server which can'}, {'start': '55.000', 'end': '58.920', 'text': 'predict where this membrane will be and how it'}, {'start': '57.440', 'end': '60.359', 'text': 'will be located.'}, {'start': '58.920', 'end': '63.960', 'text': 'So we upload the file that was'}, {'start': '60.359', 'end': '66.520', 'text': 'downloaded to the PDB and submit it, and in a few'}, {'start': '63.960', 'end': '68.880', 'text': 'seconds or a few minutes the server'}, {'start': '66.520', 'end': '71.080', 'text': 'generates a new file with these'}, {'start': '68.880', 'end': '73.560', 'text': 'coordinates, with this reorientation of the'}, {'start': '71.080', 'end': '75.240', 'text': 'protein.'}, {'start': '73.560', 'end': '78.759', 'text': 'With that we download it, right,'}, {'start': '75.240', 'end': '82.320', 'text': 'after this process and we can also'}, {'start': '78.759', 'end': '84.079', 'text': 'check it on Pall.'}, {'start': '82.320', 'end': '86.360', 'text': 'And in this new file we will have'}, {'start': '84.079', 'end': '89.159', 'text': 'this reorientation, as well as two'}, {'start': '86.360', 'end': '92.159', 'text': 'planes per sphere, which are'}, {'start': '89.159', 'end': '94.560', 'text': 'between these planes where'}, {'start': '92.159', 'end': '97.360', 'text': 'the membrane will be inserted.  So now we'}, {'start': '94.560', 'end': '99.960', 'text': 'can go to the Google Collab server and'}, {'start': '97.360', 'end': '101.759', 'text': 'first I will change the'}, {'start': '99.960', 'end': '103.479', 'text': 'execution environment so that the process is'}, {'start': '101.759', 'end': '105.399', 'text': "faster.  So I'm going to put it on GPU so that"}, {'start': '103.479', 'end': '108.880', 'text': 'this molecular dynamics calculation is'}, {'start': '105.399', 'end': '111.040', 'text': 'faster and then start executing'}, {'start': '108.880', 'end': '114.360', 'text': 'the installation and downloading'}, {'start': '111.040', 'end': '116.719', 'text': 'of libraries, as well as'}, {'start': '114.360', 'end': '118.320', 'text': 'programs needed to execute the'}, {'start': '116.719', 'end': '121.759', 'text': 'molecular dynamics.  This should take'}, {'start': '118.320', 'end': '121.759', 'text': 'a few minutes.'}, {'start': '123.719', 'end': '128.840', 'text': 'With all'}, {'start': '126.560', 'end': '130.560', 'text': 'downloads and installations complete, we can'}, {'start': '128.840', 'end': '133.720', 'text': "now load the protein.  So let's go"}, {'start': '130.560', 'end': '136.319', 'text': 'to the next module and run that'}, {'start': '133.720', 'end': '137.920', 'text': 'module.  With this,'}, {'start': '136.319', 'end': '140.280', 'text': 'a box saying choose files will appear at the output.'}, {'start': '137.920', 'end': '142.800', 'text': 'We click and select the file with the'}, {'start': '140.280', 'end': '145.920', 'text': 'prepared protein.  This will now be loaded'}, {'start': '142.800', 'end': '147.599', 'text': 'onto the server and at the output'}, {'start': '145.920', 'end': '150.040', 'text': 'we will have a result of the'}, {'start': '147.599', 'end': '152.200', 'text': 'three-dimensional structure, as'}, {'start': '150.040', 'end': '154.239', 'text': 'seen in Fallol.  So we'}, {'start': '152.200', 'end': '158.319', 'text': 'can see the protein and where'}, {'start': '154.239', 'end': '161.519', 'text': 'the lipids will be inserted and the formation of the'}, {'start': '158.319', 'end': '163.680', 'text': 'membrane.  With that, we move on to the next'}, {'start': '161.519', 'end': '165.440', 'text': 'step, which would be preparing the'}, {'start': '163.680', 'end': '168.519', 'text': 'membrane.  So we can select the'}, {'start': '165.440', 'end': '172.200', 'text': 'type of lipid in this membrane, eh, as'}, {'start': '168.519', 'end': '174.360', 'text': 'well as the salt concentration or the'}, {'start': '172.200', 'end': '177.280', 'text': 'ionic strength and adjust the parameters of the'}, {'start': '174.360', 'end': '179.720', 'text': 'solation box.  So we run that and the'}, {'start': '177.280', 'end': '182.480', 'text': 'next run command will start'}, {'start': '179.720', 'end': '184.760', 'text': 'preparing our protein under the'}, {'start': '182.480', 'end': '190.599', 'text': 'desired conditions.  So this'}, {'start': '184.760', 'end': '190.599', 'text': 'takes a few seconds and a few minutes.'}, {'start': '197.519', 'end': '203.040', 'text': 'And as a result, we will have'}, {'start': '200.360', 'end': '206.640', 'text': 'the 3D structure at the output, only this time the'}, {'start': '203.040', 'end': '209.720', 'text': 'protein is already in the membrane, as is'}, {'start': '206.640', 'end': '214.680', 'text': 'the substitution box.  So we will'}, {'start': '209.720', 'end': '217.360', 'text': 'have a visualization of this figure and we'}, {'start': '214.680', 'end': '220.200', 'text': 'can see the water as spheres'}, {'start': '217.360', 'end': '222.959', 'text': 'and the structures of the lipids, as'}, {'start': '220.200', 'end': '225.280', 'text': 'well as the protein.'}, {'start': '222.959', 'end': '226.959', 'text': 'And once we have verified that everything is OK, we'}, {'start': '225.280', 'end': '229.400', 'text': 'can move on to the simulation stage.'}, {'start': '226.959', 'end': '232.400', 'text': 'So, we select the total'}, {'start': '229.400', 'end': '234.239', 'text': 'simulation time, the temperature, as well as the'}, {'start': '232.400', 'end': '237.159', 'text': 'time of each stage that will be'}, {'start': '234.239', 'end': '239.239', 'text': 'recorded there to form the'}, {'start': '237.159', 'end': '242.239', 'text': 'simulation.  With that, executing this'}, {'start': '239.239', 'end': '245.560', 'text': 'command and executing the next command, it'}, {'start': '242.239', 'end': '247.840', 'text': 'will start, eh, the simulation with the'}, {'start': '245.560', 'end': '249.680', 'text': 'protein in the membrane.'}, {'start': '247.840', 'end': '253.720', 'text': 'This is a step that takes a little'}, {'start': '249.680', 'end': '256.880', 'text': 'longer, eh, a few minutes and it depends a lot'}, {'start': '253.720', 'end': '258.440', 'text': 'on the computing capacity.  So, it is'}, {'start': '256.880', 'end': '261.840', 'text': 'a process of preparing the protein,'}, {'start': '258.440', 'end': '264.199', 'text': 'minimizing the energy of the system and with'}, {'start': '261.840', 'end': '267.280', 'text': 'that we can also monitor'}, {'start': '264.199', 'end': '270.120', 'text': 'the simulation through a bar, a'}, {'start': '267.280', 'end': '273.680', 'text': 'loading bar during the'}, {'start': '270.120', 'end': '276.440', 'text': 'process.  With this, in this output'}, {'start': '273.680', 'end': '279.240', 'text': 'we can view the percentage'}, {'start': '276.440', 'end': '281.560', 'text': 'of the process, as well as the'}, {'start': '279.240', 'end': '283.479', 'text': 'estimated time.  Ah, in that case, it will be'}, {'start': '281.560', 'end': '286.720', 'text': 'approximately 10 minutes for 2'}, {'start': '283.479', 'end': '289.720', 'text': 'nissundos of execution.  And now just'}, {'start': '286.720', 'end': '289.720', 'text': 'wait.'}, {'start': '294.320', 'end': '299.240', 'text': 'With the simulation complete, eh, what'}, {'start': '296.759', 'end': '302.639', 'text': 'will be shown there in the'}, {'start': '299.240', 'end': '305.520', 'text': 'output terminal, now we will have to process this'}, {'start': '302.639', 'end': '308.280', 'text': 'data, these trajectories and build them'}, {'start': '305.520', 'end': '308.280', 'text': 'with the next'}, {'start': '309.680', 'end': '314.240', 'text': 'module.  Executing this command may take'}, {'start': '312.240', 'end': '315.479', 'text': 'a little longer, because'}, {'start': '314.240', 'end': '317.560', 'text': 'all trajectories need to be analyzed'}, {'start': '315.479', 'end': '322.840', 'text': ', but in approximately'}, {'start': '317.560', 'end': '326.199', 'text': 'a few minutes the module is finished'}, {'start': '322.840', 'end': '331.360', 'text': ', ok.  As a result, we have'}, {'start': '326.199', 'end': '332.840', 'text': 'the 3D structure in the output box and'}, {'start': '331.360', 'end': '334.759', 'text': 'unlike the other outputs, now'}, {'start': '332.840', 'end': '337.520', 'text': 'we can track it over time.  So,'}, {'start': '334.759', 'end': '340.199', 'text': 'each frame refers to a time eh and the'}, {'start': '337.520', 'end': '341.759', 'text': 'total time of molecular dynamics.  In'}, {'start': '340.199', 'end': '343.919', 'text': 'this case, we will'}, {'start': '341.759', 'end': '346.240', 'text': 'now follow an example of half the time'}, {'start': '343.919', 'end': '350.800', 'text': 'of 2 ns.'}, {'start': '346.240', 'end': '353.120', 'text': 'And in this case we see a modification'}, {'start': '350.800', 'end': '357.240', 'text': 'related to the initial structure, right, the'}, {'start': '353.120', 'end': '360.720', 'text': 'beginning of molecular dynamics and'}, {'start': '357.240', 'end': '363.160', 'text': 'we follow the identification of the'}, {'start': '360.720', 'end': '365.479', 'text': "protein's function, which is to transport"}, {'start': '363.160', 'end': '368.240', 'text': 'water molecules across the membrane.'}, {'start': '365.479', 'end': '371.120', 'text': 'So we can see in the'}, {'start': '368.240', 'end': '373.120', 'text': 'internal region of this protein the'}, {'start': '371.120', 'end': '375.800', 'text': 'water molecules that are represented'}, {'start': '373.120', 'end': '380.759', 'text': 'by gray spheres.'}, {'start': '375.800', 'end': '384.720', 'text': 'And with that we can evaluate this'}, {'start': '380.759', 'end': '387.199', 'text': 'biological process with this'}, {'start': '384.720', 'end': '387.199', 'text': 'type of'}, {'start': '390.919', 'end': '395.479', 'text': 'program.  Furthermore, it is possible to'}, {'start': '393.319', 'end': '397.680', 'text': 'follow the molecular dynamics simulation time by time'}, {'start': '395.479', 'end': '399.639', 'text': ".  So, we're"}, {'start': '397.680', 'end': '401.319', 'text': 'going to download these files,'}, {'start': '399.639', 'end': '402.479', 'text': 'right?  In the next module you can'}, {'start': '401.319', 'end': '404.680', 'text': 'download the files'}, {'start': '402.479', 'end': '406.800', 'text': 'needed for this and run'}, {'start': '404.680', 'end': '409.080', 'text': 'these files in another program, which will'}, {'start': '406.800', 'end': '412.479', 'text': "be VMD.  And I'll show you in the"}, {'start': '409.080', 'end': '412.479', 'text': 'next step.'}, {'start': '417.520', 'end': '421.879', 'text': 'Well, we downloaded the'}, {'start': '419.919', 'end': '423.639', 'text': 'compressed file and now we can explore'}, {'start': '421.879', 'end': '426.080', 'text': "what's inside, which would be the"}, {'start': '423.639', 'end': '428.240', 'text': 'files with the trajectory, as well as'}, {'start': '426.080', 'end': '429.800', 'text': 'the atomic coordinates of the entire'}, {'start': '428.240', 'end': '431.479', 'text': 'simulation.'}, {'start': '429.800', 'end': '433.120', 'text': "So, we're going to open these two files"}, {'start': '431.479', 'end': '435.680', 'text': 'in another program, which I already'}, {'start': '433.120', 'end': '439.080', 'text': 'have downloaded onto my computer'}, {'start': '435.680', 'end': '442.879', 'text': ', which would be PMD, a'}, {'start': '439.080', 'end': '445.160', 'text': 'free program.  And in this we will load the'}, {'start': '442.879', 'end': '448.479', 'text': 'PDB file into it.  We can drag'}, {'start': '445.160', 'end': '450.680', 'text': 'it directly into this larger window.  So'}, {'start': '448.479', 'end': '453.039', 'text': 'this entire simulation will be loaded, look,'}, {'start': '450.680', 'end': '453.039', 'text': 'first'}, {'start': '453.360', 'end': '458.520', 'text': 'frame.  And in this we will make some'}, {'start': '455.960', 'end': '464.039', 'text': 'visual adjustments beforehand so that it is'}, {'start': '458.520', 'end': '464.039', 'text': 'easier to visualize the dynamics over time.'}, {'start': '466.319', 'end': '474.280', 'text': "So let's go over there in graphic"}, {'start': '471.879', 'end': '477.800', 'text': 'representations.  And here we will'}, {'start': '474.280', 'end': '483.599', 'text': 'first adjust for'}, {'start': '477.800', 'end': '487.840', 'text': "water visualization.  So let's go to"}, {'start': '483.599', 'end': '487.840', 'text': 'selections and select'}, {'start': '487.879', 'end': '492.360', 'text': 'waters.  Give an apply.'}, {'start': '490.759', 'end': '493.879', 'text': 'Now we move the water molecules up'}, {'start': '492.360', 'end': '498.240', 'text': 'and we are going to make a representation'}, {'start': '493.879', 'end': '501.919', 'text': 'now to check the protein.'}, {'start': '498.240', 'end': '503.280', 'text': 'So, protein and apply.  So here'}, {'start': '501.919', 'end': '506.240', 'text': 'we can see both the'}, {'start': '503.280', 'end': '507.680', 'text': 'water molecules and the protein.  And now'}, {'start': '506.240', 'end': '510.440', 'text': "we're just going to make some adjustments to make the"}, {'start': '510.440', 'end': '516.760', 'text': 'visualization a little better.  So we go to the other'}, {'start': '512.959', 'end': '519.919', 'text': "tab, we'll try to adjust the"}, {'start': '516.760', 'end': '519.919', 'text': 'water molecules.'}, {'start': '523.760', 'end': '530.399', 'text': 'in PDM.'}, {'start': '526.240', 'end': '532.880', 'text': "Ah, I'm going to add water now."}, {'start': '530.399', 'end': '535.360', 'text': "Really true.  I'm going to put the protein"}, {'start': '532.880', 'end': '535.360', 'text': 'as a new'}, {'start': '538.399', 'end': '542.120', 'text': 'cartoon.  Now we have a'}, {'start': '540.000', 'end': '543.959', 'text': 'visualization of the protein, as well as the'}, {'start': '542.120', 'end': '546.120', 'text': "water molecules.  I'm just going to reduce"}, {'start': '543.959', 'end': '549.480', 'text': 'the resolution of the water molecules a little'}, {'start': '546.120', 'end': '552.680', 'text': "so that it's not so complex to"}, {'start': '549.480', 'end': '555.640', 'text': 'calculate, ah, calculate B by trying, in'}, {'start': '552.680', 'end': '555.640', 'text': 'fact, this'}, {'start': '556.120', 'end': '559.120', 'text': 'dynamic.'}, {'start': '559.360', 'end': '568.399', 'text': 'Ready.  And now we can load the'}, {'start': '563.560', 'end': '568.399', 'text': 'trajectories into this PDB file.'}, {'start': '568.800', 'end': '574.480', 'text': 'So we'}, {'start': '571.120', 'end': '577.880', 'text': 'select it here, load the other file'}, {'start': '574.480', 'end': '577.880', 'text': 'which would be'}, {'start': '577.920', 'end': '583.279', 'text': 'BCD accounts, click load and now the program will'}, {'start': '581.680', 'end': '587.519', 'text': 'load the entire trajectory.  So it is already'}, {'start': '583.279', 'end': '591.279', 'text': 'being loaded and it is being'}, {'start': '587.519', 'end': '593.399', 'text': 'viewed frame by frame until the last'}, {'start': '591.279', 'end': '595.720', 'text': 'frame that was selected for 2'}, {'start': '593.399', 'end': '597.839', 'text': 'nanosuns.  From here we can already'}, {'start': '595.720', 'end': '600.720', 'text': 'see the formation of the water channel.'}, {'start': '597.839', 'end': '604.160', 'text': 'So we see here internally in the'}, {'start': '600.720', 'end': '608.279', 'text': 'protein this channel being formed and'}, {'start': '604.160', 'end': '608.279', 'text': 'being continuous over time, which was already'}, {'start': '608.720', 'end': '614.800', 'text': 'expected.  And just wait'}, {'start': '611.160', 'end': '617.000', 'text': 'now for a few more'}, {'start': '614.800', 'end': '620.160', 'text': 'seconds and we will have the entire'}, {'start': '617.000', 'end': '623.279', 'text': 'trajectory loaded.'}, {'start': '620.160', 'end': '628.279', 'text': "Ready.  And now I'm going to say a little bit of"}, {'start': '623.279', 'end': '630.519', 'text': "time and I'm going to lock the protein so that"}, {'start': '628.279', 'end': '634.360', 'text': "it's in an interesting way to"}, {'start': '630.519', 'end': '637.079', 'text': "visualize.  So here I'm going to"}, {'start': '634.360', 'end': '638.920', 'text': 'zoom in and play it again.  So now'}, {'start': '637.079', 'end': '641.279', 'text': 'from scratch it is showing the'}, {'start': '638.920', 'end': '643.240', 'text': 'trajectory of molecular dynamics and'}, {'start': '641.279', 'end': '646.040', 'text': 'we can see the formation of this'}, {'start': '643.240', 'end': '649.880', 'text': 'internal channel in the membrane for the passage'}, {'start': '646.040', 'end': '652.000', 'text': 'of water.  So the molecular dynamics'}, {'start': '649.880', 'end': '655.000', 'text': 'match what was expected of this'}, {'start': '652.000', 'end': '655.000', 'text': 'protein.'}, {'start': '656.000', 'end': '663.399', 'text': 'Is it a coincidence?  So, ah, that'}, {'start': '659.399', 'end': '663.399', 'text': "'s basically it.  S"}]