I sincerely appreciate your detailed and thoughtful explanation. Your guidance has been incredibly helpful, and I now have a much clearer understanding of the best approach.
1) Use the hbonds command to extract hydrogen bonds.
2) Use contacts (sidechain & :ala,val,leu,ile,phe,trp) overlapCutoff -0.4 saveFile all_contacts.txt to extract interactions among nonpolar atoms.
3) Remove entries from all_contacts.txt where the overlap is 0 or a small positive value, to exclude unfavorable interactions.
4) Combine the results from steps (1) and (3), convert them into .pb format, and visualize them in ChimeraX. Alternatively, they can be displayed separately with different colors for clarity.
Would it be correct to interpret that these multiple pseudobonds collectively represent a hydrophobic interaction?
If there are any other refinements or insights you would recommend, I would be very grateful to hear them.
Once again, I truly appreciate your time and support. Your kind and detailed advice has been invaluable, and I’m very thankful for your help.
Dear Kenshiro Tabata,
I see a couple of issues with your approach:
(1) you are not considering the electrostatic characteristics of the polar interactions. Even if there is a good contact distance between two atoms, they may be electrostatically repulsive and thus unfavorable if both are negatively charged or both are positively
charged. So you may want to run "hbonds" to get favorable polar interactions, which are primarily H-bonding.
<
https://rbvi.ucsf.edu/chimerax/docs/user/commands/hbonds.html>
(2) it is not just the VDW overlap cutoff that is different for the "contacts" and "clashes" calculations, but also the "hbAllowance" which is default 0.4 for clashes. This is to allow H-bonding atom pairs to come closer than otherwise expected because of
their favorable H-bonding, without being counted as a clash. Your understanding is basically correct, except for this small modification. The "hbAllowance" is explained here:
<
https://rbvi.ucsf.edu/chimerax/docs/user/commands/clashes.html#hbondAllowance>
It may not be necessary to run both "contacts" and "clashes" (which are the same except for those two distance-related parameters). Instead we suggest running only a contacts calculation and then filtering the out the clashing results by the overlap value.
The overlap cutoff value of 0 in your command is rather restrictive, you may want to allow a small positive to allow for flexibility, but that is your choice.
However, since (1) above already includes the favorable polar results, you may want to restrict the contacts calculation to only nonpolar atoms. It is a judgment call how you want to define nonpolar atoms, but some possibilities are:
- carbon atoms only, e.g. specified in command line as C
- alpha-carbons + sidechains of nonpolar amino acids (another judment call as to which ones you include), for example specified in command line as (sidechain & :ala,val,leu,ile,phe,trp)
<
https://rbvi.ucsf.edu/chimerax/docs/user/commands/atomspec.html#builtin>
If you only include nonpolar atoms in the contacts calculation the hbAllowance parameter is irrelevant. So your command could be something like
contacts C overlapCutoff -0.4 saveFile all_contacts.txt
- OR -
contacts (sidechain & :ala,val,leu,ile,phe,trp) overlapCutoff -0.4 saveFile all_contacts.txt
However, if you were still planning to include all kinds of atoms in the contacts calculation, including polar, you should probably run with hbAllowance 0.4, e.g.
contacts overlapCutoff -0.4 hbAllowance 0.4 saveFile all_contacts.txt
After you run the contacts calculation, then you'd edit all_contacts.txt and deletel the rows that have overlap greater than what you want to consider favorable before reformatting into a pb file.
I hope this helps,
Elaine
-----
Elaine C. Meng, Ph.D.
UCSF Chimera(X) team
Department of Pharmaceutical Chemistry
University of California, San Francisco
> On Mar 6, 2025, at 9:31 AM, 田畑 健士郎 via ChimeraX-users <chimerax-users@cgl.ucsf.edu> wrote:
>
> Subject: Inquiry About Favorable Contacts and Display Methods in ChimeraX
> Dear ChimeraX Developers,
> My name is Kenshiro Tabata. I hope this email finds you well. I am currently using ChimeraX to analyze the effects of point mutations on protein structure, particularly in cases where a larger side chain (e.g., methionine) is replaced by a smaller one (e.g.,
valine). In such cases, I expect that interactions with the opposing amino acids may be reduced due to the decreased side-chain volume. To investigate this, I would like to ask for your guidance regarding the interpretation and visualization of favorable contacts.1)
Understanding Favorable Contacts
> I understand that the contacts command identifies all types of interactions, whereas the clashes command detects only unfavorable interactions. Based on this, I interpreted the positive VDW overlap as indicating unfavorable (repulsive) interactions, while
an overlap between 0 and -0.4 represents favorable (attractive) interactions.
> Could you confirm if this understanding is correct?2) Best Approach for Displaying Only Favorable Contacts
> To analyze how the mutation affects interactions, I would like to display only favorable contacts. Below is the approach I have considered:
> Proposed Approach
> • Retrieve all interactions (favorable, neutral, and unfavorable) using the contacts commandcontacts overlapCutoff -0.4 saveFile all_contacts.txt
>
> • Retrieve only neutral and unfavorable interactionscontacts overlapCutoff 0 saveFile non_favorable_contacts.txt
>
> • Compute the difference between these two sets using Python, extract only favorable contacts, and format them into a ChimeraX pseudobond file# File paths
> all_contacts_path = "all_contacts.txt"
> non_favorable_contacts_path = "non_favorable_contacts.txt"
> favorable_contacts_path = "favorable_contacts.pb"
>
> # Read files
> with open(all_contacts_path, "r") as f:
> all_contacts = set(f.readlines())
>
> with open(non_favorable_contacts_path, "r") as f:
> non_favorable_contacts = set(f.readlines())
>
> # Extract favorable contacts
> favorable_contacts = all_contacts - non_favorable_contacts
>
> # Convert to ChimeraX pseudobond file format
> with open(favorable_contacts_path, "w") as f:
> f.write("; Pseudobond file for favorable contacts\n")
> f.write("; radius = 0.1\n; color = green\n; dashes = 6\n")
> for line in favorable_contacts:
> parts = line.strip().split()
> if len(parts) >= 4:
> atom1 = f"/{parts[0]}:{parts[1]}@{parts[2]}"
> atom2 = f"/{parts[3]}:{parts[4]}@{parts[5]}"
> f.write(f"{atom1} {atom2}\n")
>
> • Load the extracted favorable contacts into ChimeraX for visualizationopen favorable_contacts.pb
>
> Would this be an appropriate approach? Alternatively, is there a simpler or more precise way to achieve this in ChimeraX?
> I appreciate your time and assistance, and I look forward to your advice.
> Best regards,
> Kenshiro Tabata
> _______________________________________________
> ChimeraX-users mailing list -- chimerax-users@cgl.ucsf.edu
> To unsubscribe send an email to chimerax-users-leave@cgl.ucsf.edu
> Archives:
https://mail.cgl.ucsf.edu/mailman/archives/list/chimerax-users@cgl.ucsf.edu/