Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coupled Homology #290

Closed
wants to merge 73 commits into from
Closed

Coupled Homology #290

wants to merge 73 commits into from

Conversation

electronicsbyjulie
Copy link
Contributor

This is mutually exclusive with #286 and #289 as there would be many conflicts due to copied code.

Trying something different. If we can do homologous conformational changes to ORs based on the OR51E2 cryo-EM, then why not for the mTAAR9 cryo-EMs and various other experimental models of coupled GPCRs. The placement of the G protein can be part of the homology model.

@electronicsbyjulie
Copy link
Contributor Author

The IDs of the removed PDBs are:

2ydo
3rfm
5g53
2rh1
4ldo
P38405

@electronicsbyjulie
Copy link
Contributor Author

It is downloading the PDBs, opening the receptors and alpha subunits, uprighting the assemblies, and outputing them beautifully to example coupled PDBs.

Next step will be to examine the mTAAR9-hGNAS2 examples having different ligands, and see how much they vary in order to estimate whether "soft" docks will be necessary. Soft docking is far more CPU intensive than normal docking. A small variance between models may mean that soft docking would not be important, but ORs have "softer" binding pockets than TAARs.

Then there will have to be some kind of layer between the coupled PDBs and the PrimaryDock app, or else a new feature internal to the app, to do the conformational change of the OR in parallel to the coupled PDB and its inactive counterpart. This functionality will first apply the changes to activate the inactive OR for a given G protein, then fine-tune the receptor's shape to optimize G protein contact, optimize internal contacts such as Y6.55-D/E45.51, and minimize clashes. Finally, the custom tuned receptor will be ready for dock.

@primaryodors
Copy link
Owner

The results are looking great!

Recall that we want to create coupled versions of the odor receptor PDBs and store them in the pdbs/coupled/ folder, then do docking against those. The idea is for the coupled models to be reusable for all ligands. Therefore, they wouldn't be generated on the fly by a function of bin/primarydock.

@electronicsbyjulie
Copy link
Contributor Author

This is almost ready, just have to figure out how best to fit in reshaping the receptors to minimize internal clashes and clashes with the G protein.

It's making promising looking predictions so far. I'm thinking of readying this for merge and starting on a UI feature that would display predictions on the odorant page in the web app.

@electronicsbyjulie
Copy link
Contributor Author

Test succeeded.

@electronicsbyjulie electronicsbyjulie marked this pull request as ready for review July 11, 2023 03:21
@@ -699,12 +714,6 @@ AminoAcid::AminoAcid(const char letter, AminoAcid* prevaa, bool minintc)
Atom* CA = get_atom("CA");
Atom* CB = get_atom("CB");

if (CA && CB)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does deleting this block have a favorable effect on clashes in peptides?

@@ -1958,12 +1969,57 @@ void AminoAcid::hydrogenate(bool steric_only)
if (!oxt->get_bond_between(C)) oxt->bond_to(C, 1);
}

int i, j, k, l, n;

if (residue_no == 349)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like some debug code didn't get removed.

@@ -328,7 +335,7 @@
#define _dbg_null_flexions 0
#define _dbg_repack 0
#define _dbg_multiflex 0
#define _dbg_homology 0
#define _dbg_homology 1
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All debug constants are to be turned off for production.

@@ -1170,7 +1170,7 @@ Bond* Atom::get_bond_by_idx(int bidx)

void Atom::consolidate_bonds()
{

//
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? If it is not in use, we should remove it.

return anomaly;
}

float InteratomicForce::covalent_bond_radius(Atom* a, Atom* b, float cardinality)
{
if (!read_forces_dat && !reading_forces) read_all_forces();
InteratomicForce** retval = new InteratomicForce*[16];
init_nulls(retval, 16);
/*InteratomicForce** retval = new InteratomicForce*[16];
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should remove this dead code.

IF %motif > 0 THEN ECHO "Found PMLNPLIYSLRNKD motif at " %motif

SEARCH 1 %SEQLENA "XXXXXXXXXX$" %motif
IF %motif > 0 THEN ECHO "Found KLFNKRISS motif at " %motif
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should just say terminal motif or XXXX$ motif, rather than assuming the sequence.

@@ -4,7 +4,7 @@ Point pt is not in bounding box [pt1, pt2].
Point pt3 is in bounding box [pt1, pt2].
Points pt and pt1 are 90 degrees apart relative to [0,0,0].
SCoord v from point pt5 has r=3.55809, theta=60.6047, phi=246.371.
Point pt6 from SCoord v is 3.57628e-07 Angstroms from pt5.
Point pt6 from SCoord v is 3.52537e-07 Angstroms from pt5.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be rounded down to zero, or else just indicated that it's less than some threshold value?

SCRIPTING.md Outdated Show resolved Hide resolved
@@ -47,6 +47,8 @@
"6.40" => "HCMDENQ",
];

$gprots = [ "hGNAL", "hGNAS2", "hGNAQ", "hGNAO1" ];
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be preferable to make this a dynamic list vs. hard coded.

Feel free to open an issue if this would be more than a quick 15 minute task.

@@ -71,7 +73,52 @@ function load_viewer(obj)
$("[type=file]", embdd.contentDocument).hide();
var filediv = $("#filediv", embdd.contentDocument)[0];

<?php if (file_exists("../pdbs/coupled/$fam/{$rcpid}_hGNAL.pdb")) { ?>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't rely on GNAL being always present; if any G protein coupled model exists, it should trigger the appearance of the dropdown.

@primaryodors
Copy link
Owner

Not wanting to wait for the requested changes on this ticket, the 3 letter fix has been added to stable so that the current stable branch is no longer broken.

printf "${RED}TAAR test FAILED: bad contacts.${NC}\n"
else
printf "${GRN}TAAR test succeeded.${NC}\n"
if [ -z "$TAARPDB" ]; then
printf "${RED}TAAR test FAILED: bad PDB data.${NC}\n"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's also add the 3 letter test to the d-limonene test dock.

@primaryodors
Copy link
Owner

PR rejected.

@primaryodors primaryodors deleted the ssepeq-coupled-homology branch July 13, 2023 00:33
@electronicsbyjulie electronicsbyjulie restored the ssepeq-coupled-homology branch July 13, 2023 00:42
Repository owner deleted a comment from electronicsbyjulie Jul 13, 2023
@primaryodors primaryodors deleted the ssepeq-coupled-homology branch September 27, 2023 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

vdW bond distance is too large.
2 participants