Exploring Promiscuous Tetrahydrocannabinol (THC) Chemical Space

Sulstice
4 min readDec 28, 2022

--

Cannabinoids are interesting avenues of virtual chemical space exploration because of the legalization across the country allowing for more research to be funded. Cannabinoids are studied in the context of medicine and specifically how tetrahydrocannabinol (THC) and other derivatives alleviate pain. Given it’s popularity, can we use THC as a starting template in exploring other derivatives? And lastly, how do we know those new compounds are viable chemicals to synthesize that would benefit the population.

Here’s the Full Code for this mission

Let’s start off with designing a new set of compounds within reason for exploring chemical space.

thc_smiles = 'CCCCC1=CC(=C2C3C=C(CCC3C(OC2=C1)(C)C)C)O'

When evaluating the structure the alcohol would be the easiest thing to replace because of its location out of the rings for a cheminformatician. However, most modifications on THC compounds seem to be on pyran group and modifying the connection point to the oxgyen. Let’s look at some examples:

Cannabichromene

cannabichromene = 'CCCCCC1=CC(=C2C=CC(OC2=C1)(C)CCC=C(C)C)O'

With the ring on the alkene completely opening up and appending an alkene on the pyran. It could be a potentially good Michael acceptor which might make it susceptible as a cannabis covalent warhead.

Or here is another:

cannabidivarin = 'CCCC1=CC(=C(C(=C1)O)C2C=C(CCC2C(=C)C)C)O'

So now the pyran is broken and we have a terminal alkene in place. So let’s focus there. Let’s break the Pyran ring in our smiles string and give it a virtual site point, that way if we want to expand into THC chemical space we can branch from here.

thc_smiles_truncated = 'CCCCC1=CC(O)=C(C(O)=C1)C2C=C(C)CCC2C[*:1]'

Awesome, so we want to expand chemical space this way and it would be useful to have a list of common r group replacements. Fortunately, I wrote it one into Global-Chem:

python -m pip install global-chem

And the code to pull Common R Group Replacements:

from global_chem import GlobalChem

gc = GlobalChem()

gc.build_global_chem_network()
r_group_fragments_smiles = list(gc.get_node_smiles('common_r_group_replacements').values())
print (r_group_fragments_smiles)

>>> ['O', 'OC', 'N', 'Cl', 'F', 'CC', 'C#N', ... ]

So let’s create a list of all possible combinations where we don’t want to impact the original string and we want to keep the non-isomeric form for now:

from rdkit import Chem

combinations = []

for replacement in r_group_fragments_smiles:
try:
replacement_molecule = Chem.ReplaceSubstructs(
Chem.MolFromSmiles(thc_smiles_truncated),
Chem.MolFromSmiles('[*:1]'),
Chem.MolFromSmiles(replacement)
)

replacement_smiles = Chem.MolToSmiles(
replacement_molecule[0],
isomericSmiles=False,
canonical=False
)

combinations.append(replacement_smiles)
except:
continue

print (len(combinations))

>>> 385

Great. Well now we can start to see the range of diversity of chemical combinations we created:

from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw

molecule = Chem.MolFromSmiles(combinations[10])
molecule

So we have a possible list of 385 new cannabinoid compounds but how do we know if any of these compounds are actually useful. A key skill of any cheminformatician is selecting compounds. So let’s select, one of the first screening tests I do is passing it through the Tox Alerts for small molecules, this gives me an idea into the toxicity capacity of the chemical list I just generated.

And we can upload our SDF file of all our compounds, give it 10–15 minutes and we should see our results:

Where and these compounds can be possible toxic. What is interesting is the promiscuity. We want to expand chemical space into off-target effects to capture the extend of the cannabinoid reach. So let’s have a look into what is considered promiscious. Here’s a good drawing tool to take the list of SMILES from the download and view:

http://cdb.ics.uci.edu/cgibin/Smi2DepictWeb.py

There’s a lot of analysis that can be done here in filtering compounds based on different needs. Right now, that we have this data, what can we do with it?

Going to take a pause here and let y’all have fun with exploring cannabis chemical space.

--

--

Sulstice
Sulstice

No responses yet