luancarvalhomartins / PyAutoFEP

PyAutoFEP: an automated FEP workflow for GROMACS integrating enhanced sampling methods
166 stars 76 forks source link

add_ligand_to_solvated_receptor() got an unexpected keyword argument 'index_data' when pre_solvated=True #113

Closed AzraelXu closed 1 year ago

AzraelXu commented 1 year ago

I hope this message finds you well. I am currently facing an issue when i prepare_dual_topology.py --config_file=step2.ini and I suspect it might be related to indexing.

**================ Working on i6-i2================

i6→i2

Traceback (most recent call last):

File "/home/xqx/software/PyAutoFEP/prepare_dual_topology.py", line 4409, in add_ligand_to_solvated_receptor(merged_data, arguments.structure,

TypeError: add_ligand_to_solvated_receptor() got an unexpected keyword argument 'index_data'**

However, even after commenting out the line "index = receptor_data/index.ndx," the problem persists. I have enclosed the force field and related files along with this message for your reference.

Could you kindly take a look and provide some guidance on this matter? Your expertise and insights would be greatly appreciated.

Thank you in advance for your help.

Best regards,

Xu

amber14sb.ff.zip

nlrp3.zip

xy21hb commented 1 year ago

btw, what is this ndx for? In the manual, the explanation is a bit blurry.

AzraelXu commented 1 year ago

btw, what is this ndx for? In the manual, the explanation is a bit blurry.

Thank you for your input. NDX is Valid GROMACS compatible index (NDX) file, the use of the ndx file in GROMACS to keep track of atomic indices within a system. Initially, I had followed the manual's suggestion to use the ndx file while solvating the system ,as it's mentioned that 'gmx makendx' guesses the groups present in the structure file. However, in an attempt to troubleshoot the issue, I decided to exclude the use of this ndx file. Surprisingly, even after doing so, I encountered the same error. This has left me puzzled and seeking further assistance. Any insights or suggestions you can provide would be greatly valued

xy21hb commented 1 year ago

Yes, I understand the use of ndx in Gromacs, but not sure about the specific use in PyAutoFEP.

I guess it is working, but your itp file is missing. I checked your files carefully but could not continue without this file,

image image

AzraelXu commented 1 year ago

Yes, I understand the use of ndx in Gromacs, but not sure about the specific use in PyAutoFEP.

I guess it is working, but your itp file is missing. I checked your files carefully but could not continue without this file,

image image

Thank you very much for taking the time to review my situation. Following the manual's advice that '#include directives will not be followed,' I neglected to include 'no_checks' as well. At the moment, I am in the process of testing whether adding 'no_checks' will potentially resolve this issue. I will keep you updated on the progress. Your assistance and insights have been invaluable image

AzraelXu commented 1 year ago

Despite applying the 'no_checks' approach, I'm still encountering the same error. In my further attempts to address the issue, I placed 'ADP_GMX.itp' (where 'MOL' was modified to 'ADP'), 'posre.itp,' and 'posre_ligand.itp' in the same location within 'topol.top.' Unfortunately, this did not resolve the issue either.

I confirmed that I was able to successfully replicate the FXR tutorial. However, due to the presence of 'ADP' in my system, I followed the System Loader method. Considering the complexities involving 'ADP,' would you kindly shed some light on potential factors that might be causing this persistent error? Your insights would be immensely helpful in resolving this @luancarvalhomartins

image

topol.zip

xy21hb commented 1 year ago

Per your question, you could add "selection_method=mdanalysis" line to step2.ini, and install MDAnalysis. Then you can continue with no ease.

However, you will still get errors since your topologies are inconsistent, see in topol.top, you use

include "amber99sb-ildn.ff/forcefield.itp"

but your ff dir is amber14sb.ff

Make sure everything is consistent before you go to FEP.

AzraelXu commented 1 year ago

Per your question, you could add "selection_method=mdanalysis" line to step2.ini, and install MDAnalysis. Then you can continue with no ease.

However, you will still get errors since your topologies are inconsistent, see in topol.top, you use #include "amber99sb-ildn.ff/forcefield.itp" but your ff dir is amber14sb.ff

Make sure everything is consistent before you go to FEP.

Thank you very much for pointing out the inconsistency in my topol.top force field, I have made the necessary changes to rectify it. Additionally, I followed your suggestion and added the 'selection_method=mdanalysis' line to the step2.ini file, and subsequently installed MDAnalysis. Unfortunately, despite these efforts, I'm still encountering the same error. I also attempted to resolve the issue by deleting the 'progress.pkl' file, yet the error persists.

image

Given these steps, I'm reaching out to inquire if there are any other potential solutions you could recommend. Your insights have been invaluable in troubleshooting this matter, and I'm hoping to identify the underlying cause of this persistent error.

Thank you once again for your assistance."

Best regards,

Xu fep_nlrp3.zip

xy21hb commented 1 year ago

Comment out the "index_data" line in step2.ini, and you will pass PyAutoFEP. But still you will see errors about your topologies from GROMACS, until you merge and fix your ligand topol.top. There, the problem is none of PyAutoFEP's business. Then run prep_dual_top....py with --no_checks,

image

AzraelXu commented 1 year ago

Comment out the "index_data" line in step2.ini, and you will pass PyAutoFEP. But still you will see errors about your topologies from GROMACS, until you merge and fix your ligand topol.top. There, the problem is none of PyAutoFEP's business. Then run prep_dual_top....py with --no_checks,

image

I truly appreciate your advice. Following your suggestion, I commented out the index file and ran the simulation. This led to a different process than what you had experienced, yet it ultimately resulted in the same error outcome. I'm now wondering whether this issue could potentially be related to MDAnalysis. Is there a possibility that this error is originating from MDAnalysis itself?

image

Your expertise would be greatly valued in helping me understand if MDAnalysis might be a contributing factor to this persistent error. Thank you once again for your support and guidance.

Best regards, Xu image

xy21hb commented 1 year ago

Could you pip install MDAnalysis, rather than conda install it? Those warnings are from deprecated Numpy, but I am not sure about the index_data problem if you already have commented out.

AzraelXu commented 1 year ago

Could you pip install MDAnalysis, rather than conda install it? Those warnings are from deprecated Numpy, but I am not sure about the index_data problem if you already have commented out.

I indeed commented out the index file as you suggested. image

I also reinstalled the Conda environment and all the required packages. The previous Numpy error disappeared, but unfortunately, the same end error is persisting.

image

During the troubleshooting process, there was one successful run; however, upon extracting the 'bash.bin' archive, only a partial set of executable files was present. Furthermore, after this instance, I encountered the same error once again. This has been quite frustrating for me. image

The intermittent nature of the issue, along with the incomplete 'bash.bin' extraction, has added to my perplexity. I'm determined to find a resolution to this problem and would greatly appreciate any further insights you could provide.

Thank you for your understanding and continued assistance.

Best regards,

Xu

nlrp3.zip

luancarvalhomartins commented 1 year ago

Sorry for the tardiness and thank you very much for the investigation.

  1. When using pre_solvated=True, an input index file is used to determine the protein atoms. When it is absent, PyAutoFEP will try to autogenerate one.
  2. In general, using --no_checks is dangerous.
  3. There was a bug in the add_ligand_to_solvated_receptor that I just fixed and will be commited in minute.
  4. If you repeatedly run prepare_dual_topology.py in the same dir using output_hidden_temp_dir=False, overwritting will occur and problematic stuff may happen. I am adding an error for that case.
luancarvalhomartins commented 1 year ago

(Keeping open for now to track the fix)

AzraelXu commented 1 year ago

(Keeping open for now to track the fix)

Thank you for taking the time to fix this bug. I've pulled the latest code from git and tried preparing the dual topology files again, but I'm still encountering an error..Could this issue be related to my Biopython version?

image

I uninstalled and reinstalled Biopython, but when I tried regenerating the topology, it prompted me with 'No module named 'MDAnalysis''.

image

However, I encountered issues while installing MDAnalysis, and you can find more details in the 'mda_error.log'.

mda_error.log

Consequently, I commented out the 'selection_method = mdanalysis', but the error persists.

image

nlrp3_adp.zip

All the necessary preparation files are included in the compressed archive 'nlrp3_adp.zip'. Since the system involves ADP, I had to resort to using the pre_solvation method. I'm really in need of assistance with this, and I'm hoping for your help.

xy21hb commented 1 year ago
  1. Try to install old version Biopython
  2. Use pip install MDAnalysis, not mamba
  3. I dont understand your "Since the system involves ADP, I had to resort to using the pre_solvation method", what is relationship between a/another ligand and pre_solvation?

From: Xu QiXuan @.> Sent: Wednesday, August 30, 2023 8:55 AM To: luancarvalhomartins/PyAutoFEP @.> Cc: xy21hb @.>; Comment @.> Subject: Re: [luancarvalhomartins/PyAutoFEP] add_ligand_to_solvated_receptor() got an unexpected keyword argument 'index_data' when pre_solvated=True (Issue #113)

(Keeping open for now to track the fix)

Thank you for taking the time to fix this bug. I've pulled the latest code from git and tried preparing the dual topology files again, but I'm still encountering an error..Could this issue be related to my Biopython version?

[image]https://user-images.githubusercontent.com/71536738/264210502-c819018d-52ec-4c31-a0da-7b930b2fce90.png

I uninstalled and reinstalled Biopython, but when I tried regenerating the topology, it prompted me with 'No module named 'MDAnalysis''.

[image]https://user-images.githubusercontent.com/71536738/264242796-5b8e717b-9197-4369-969b-31661f88455b.png

However, I encountered issues while installing MDAnalysis, and you can find more details in the 'mda_error.log'.

mda_error.loghttps://github.com/luancarvalhomartins/PyAutoFEP/files/12472543/mda_error.log

Consequently, I commented out the 'selection_method = mdanalysis', but the error persists.

[image]https://user-images.githubusercontent.com/71536738/264252993-332ad7d0-6023-4f3a-887c-4176d919973e.png

nlrp3_adp.ziphttps://github.com/luancarvalhomartins/PyAutoFEP/files/12472553/nlrp3_adp.zip

All the necessary preparation files are included in the compressed archive 'nlrp3_adp.zip'. Since the system involves ADP, I had to resort to using the pre_solvation method. I'm really in need of assistance with this, and I'm hoping for your help.

— Reply to this email directly, view it on GitHubhttps://github.com/luancarvalhomartins/PyAutoFEP/issues/113#issuecomment-1698599730, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADM4TWSD2X34XPSNQ3ZFOHTXX3PUXANCNFSM6AAAAAA3ZTBBHY. You are receiving this because you commented.Message ID: @.***>

AzraelXu commented 1 year ago

Thank you for your guidance. I did try using 'pip install', but it failed. image Due to ADP not being a standard protein component, I'm unable to utilize automated system building methods. image

  1. Try to install old version Biopython 2. Use pip install MDAnalysis, not mamba 3. I dont understand your "Since the system involves ADP, I had to resort to using the pre_solvation method", what is relationship between a/another ligand and pre_solvation?
AzraelXu commented 1 year ago

I have successfully installed MDAnalysis and set selection_method = mdanalysis, but I'm still encountering errors.

image

When I revert selection_method to the default setting, I still face issues. Should the pre-generated system include the molecule specified in poses_reference_pose_superimpose?

image

dual_fail_data.zip

luancarvalhomartins commented 1 year ago

OK, the error in the first print is quite odd. Let me take a deeper look into that. Regarding the second one, no passing a pre-solvated system containing no ligands is accepted (but mind the scientific impact of that). Is that error from line prepare_dual_topology.py:2740?

Would you mind attaching the input data that you used in the last print? I was not able to do so using the the https://github.com/luancarvalhomartins/PyAutoFEP/files/12472553/nlrp3_adp.zip file because your solv_revise.pdb seems to have residue numbering isseas starting at line 67575.

AzraelXu commented 1 year ago

OK, the error in the first print is quite odd. Let me take a deeper look into that. Regarding the second one, no passing a pre-solvated system containing no ligands is accepted (but mind the scientific impact of that). Is that error from line prepare_dual_topology.py:2740?

Would you mind attaching the input data that you used in the last print? I was not able to do so using the the https://github.com/luancarvalhomartins/PyAutoFEP/files/12472553/nlrp3_adp.zip file because your solv_revise.pdb seems to have residue numbering isseas starting at line 67575.

Thank you very much for your prompt response and for taking the time to review my issue. I appreciate your assistance.

nlrp3_adp.zip

I have attached all the relevant files for your reference. My pre-dissolved system does not include the ligand that needs to be calculated (I have checked the manual, and it seems to suggest that the ligand for calculation will be automatically added) image

Upon thorough inspection, it appears that the topology was converted from the AMBER format. Could this conversion process be the root cause of the problem?

Best regards, Xu

luancarvalhomartins commented 1 year ago

prepare_dual_topology.py should work fine for a pre-solvated system both with or without a ligand. As for the input topology, as long as the topology is well-formatted and GROMACS-compatible, it should work.

Thank you for your data, I am working on it right now.

AzraelXu commented 1 year ago

prepare_dual_topology.py should work fine for a pre-solvated system both with or without a ligand. As for the input topology, as long as the topology is well-formatted and GROMACS-compatible, it should work.

Thank you for your data, I am working on it right now.

Thank you very much for taking a look, and we eagerly await your good news. If you have any questions or need further assistance, please feel free to contact us anytime. Wishing you all the best!

luancarvalhomartins commented 1 year ago

One of the problems is that your config file asks for a 4-point water molecule (tip4p) but your input structure and topology describes a 3-point one (looks like TIP3P).

Nevertheless, the real issue seems to be the make_ndx step. Hope I can commit a fix by tomorrow or Friday.

Again, thank you very much for reporting!

AzraelXu commented 1 year ago

Dear Luan Carvalho Martins,

I hope this message finds you well. I wanted to express my gratitude for your assistance in addressing the issue at hand. Your expertise and willingness to help have been greatly appreciated.

Please don't feel rushed in resolving the problem; I understand that you have a busy schedule. Take your time to thoroughly investigate the root cause when it's convenient for you.

Once again, thank you for your support. Your dedication to this matter is truly commendable.

Best regards,

Xu

AzraelXu commented 1 year ago

Dear Luan Carvalho Martins,

I hope this message finds you well. I previously reached out to you with some inquiries regarding the use of the make_ndx tool. I would like to inquire about the current status of the issues I encountered and whether they have been resolved. Any updated information regarding the make_ndx process would be greatly appreciated.

Additionally, I am quite interested in the "Charged perturbations" section. I would like to know if this functionality is now available for use and if there are any related documentation or guides that I can refer to.

Any information you can provide on the above-mentioned issues would be greatly appreciated. Your assistance is crucial to my ongoing work.

Please feel free to reply to contact me using the provided contact information. I look forward to hearing from you.

Thank you once again for your time and assistance.

Best regards,

Xu

luancarvalhomartins commented 1 year ago

Regarding the pre-solvated system I have just committed a patch that should solve your issue. I tested using your input files, but I had to do some changes. First, you must use a 3-point water molecule if your input structure/topology uses a 3-point water molecule, eg.: buildsys_water = tip3p. Also, your input topology does not contain anions. It seems you did not add ions to your system (which is fine for PyAutoFEP, just making sure that is what you want). I had to add an CL ion to the topology so that genion can neutralize the water system.

Modifications I did to your input (download it here: 20230921_issue113_data.tar.gz):

On another note, I observed that your are passing Amber99sb-ILDN as a custom force field, but your topology don't import anything form it. It should be safe remove the extrafiles. When using FF already present in GROMACS, you don't need the FF directory.

Regarding charged perturbations Altrought the code is partially written, I was not able to test it (and untested code is broken code). Parts of it were ported to the main tree (mostly improved topology handling in all_classes.py), but the bulk of it was not. I would love to be able to finish the implementation, however that is something that I won't have time to do in the near future. A few months ago I accepted a position in industry, so now I can only code for PyAutoFEP in my spare time (coding it was part of my work in academia).

I am currently working on porting the documentation to Sphinx, which is not super complex, but is taking me some time. After finishing that, I would like to try to have a website for PyAutoFEP. Maybe I will pay someone to do that instead of doing it myself.

Charged perturbations are something that would be great to finish and finishing it should not be a behemoth task. I cannot provide you any ETA for such function, however. Sorry about that. I would really need a helping coding hand to complete the implementation in a short time.

AzraelXu commented 1 year ago

Dear Luan Carvalho Martins,

I would like to express my sincere gratitude for your assistance in resolving this issue. I am also looking forward to the contributions you will make in the field of charged perturbations. If I were a coding expert, I would certainly do my best to assist you, but unfortunately, that's not my expertise. I genuinely hope that your homepage will be updated to reflect your work on charged perturbations.

Sincerely,

Xu