bigginlab / ABFE_workflow

This is a SnakeMake based workflow for ABFE calculations that can be easily scaled in a high-throughput manner via Slurm for example.
GNU General Public License v3.0
42 stars 13 forks source link

Extend the workflow for membrane proteins #9

Closed ale94mleon closed 2 months ago

ale94mleon commented 1 year ago

Hi, me again, short question: could be possible to use the workflow for membrane proteins? If yes, how? (Just some first "idea-steps" to figure it out where to look in the code). I will be happy to help on it if needed. Best, Alejandro.

ale94mleon commented 1 year ago

Hello, on this fork I have been working on:

In reference to #5, the installation process is not perfect. I have tried to install on different machines, and different problems arise.

The class used during the building system process (abfe.scripts.preparation.system_builder.MakeInputs) takes advantage of the already saw components of the system. In this way: protein, membrane and cofactor are only processing one time. However I also implemented a command line interface that could be used to call MakeInputs and been integrated with the snakemake philosophy. How it works for now is: it builds all the systems and then the snakemake files are creating.

Where I need help is on changing the mdp options in a clean way (probably, this is going to be done at snakemake level). I think that the most important options that should be added are:

tcoupl                                   = v-rescale      
tc_grps                                  = SOLU MEMB SOLV 
tau_t                                    = 1.0 1.0 1.0    
ref_t                                    = 298.15 298.15 298.15
pcoupl                                   = Parrinello-Rahman; or c-rescale that could be used for equilibration and production  
pcoupltype                               = semiisotropic  
tau_p                                    = 5.0            
compressibility                          = 4.5e-5  4.5e-5 
ref_p                                    = 1.0     1.0  

For that, we will need to create an index file SOLU = protein+ligand; MEMB = membrane and SOLV = solvent + ions. I though on copy and paste complex_equil_workflow and complex_fep_workflow to complex_equil_workflow_memb and complex_fep_workflow_memb; but it will be a lot of almost redundant files. In addition, the Snakemake process must identify if it is a membrane system in order to use one or the other mdp files. The last could be guess from the config: if config['input_membrane_pdb_path']

IAlibay commented 1 year ago

Regarding preparing membrane systems - I would much prefer if this was done outside of the scope of this workflow. Sufficiently embedding and equilibrating such a system is beyond the scope of what should be afforded by this workflow. It's much better if the scope stays on "things which we have defined answers for", rather than trying to reach to do everything.

I spoke to @RiesBen about this a couple weeks back, my answer here is that there should be an entry point to the workflow where folks just pass in a set of pre-prepared files (ITPs, GRO, and TPR) and we then go from there, rather than enforcing a PDB & SDF as the sole entry point.

IAlibay commented 1 year ago

@ale94mleon - sorry please don't interpret my comment above as killing your ideas. I think the rest of it is completely valid, we do need a way to change mdp settings on the fly + if you have scripts to automate part of the "setting up a membrane system" then that's also valid to have around. We just shouldn't put it directly in the "core" ABFE pipeline (i.e. it's a bit of an "unknown" whilst running the ABFE is more of a "known").

I'll re-open and I'm happy to discuss this further if you agree / disagree.

ale94mleon commented 1 year ago

Oh, no, I just close it because membrane system is not one of the main aims of the workflow. I totally agree respect to the "specific cares" that must be taken into account for these complex systems. I, indeed, touched a little some "core functionalities" in order to pass a membrane. However, this is only an optional parameter. Which means that without membrane it works just as expected.