Function Repository Resource:

MoleculePrincipalMomentPlot

Source Notebook

Visualize the distribution of molecule shapes in a 2D scatter plot

Contributed by: Jason Biggs

ResourceFunction["MoleculePrincipalMomentPlot"][mols]

returns a ternary scatter plot for mols using the normalized principal moments ratios as coordinates.

Details and Options

mols should be a list of valid Molecule objects.
The x- and y-coordinates of the scatter plot are taken to be the normalized principal moments ratio, {I1/I3,I2/I3} and fit within the triangle {{0,1},{1/2,1/2},{1,1}}.
The vertices of the triangle represent the extremes in molecular shape: the rod, disc and sphere. With the default option VertexLabelsAutomatic, they are visually depicted using 3D models of the molecules 1, 3-butadiyne, benzene and adamantane.
Linear molecules will tend towards the upper-left corner of the triangle, planar molecules toward the bottom and sphere-like molecules in the upper-right.
3D plots for the individual molecules are shown using tooltips. Use the option "Tooltips"False to disable this and speed up the plot.

Examples

Basic Examples (1) 

Create 300 molecules from SMILES strings and generate a principal moments plot:

In[1]:=
mols = Map[
   Molecule, {"OC(=O)CC[C@H]1COc2c(O1)ccc(c2C(=O)O)CNCc1ccccc1C(=O)NCc1ccccc1", "CN(C[C@@H](Oc1ccc(cc1)c1nn(c2c1cccn2)CC(=O)O)C)C", "CCC[C@H](PCC(C)(C)C)C", "O=N(=O)c1ccc2c3c1c1ccccc1c1c3c(cc2)ccc1", "COC(=O)c1c(C)cc(cc1O)Oc1cc(C)cc(c1O)O", "CC[C@@H](C(=O)OC(=O)[C@@H]1C[C@@H](C1)C)C", "CCCCCCCCc1ccccc1", "O=C[C@@H]([C@H](CC(=O)C(=O)O)O)O", "O=C(ON1C(=O)CCC1=O)c1ccc(O)c(I)c1", "O=C(C1c2cccc(c2C(=O)c2c1cccc2O)O)C=C(C)C", "CCCC[N@H+]([C@H]1CC1(C)C)O", "CCCC[C@@H]1[C@@H]2C[C@H]([C@@H]3N1CCCC3)CN1[C@@H]2CCCC1", "CC1(C)C[C@H]1[C@@H]1OC1(C)C", "O=C(NO)[C@H]1CCCN1S(=O)(=O)CCc1ccccc1", "NC(=O)C(=O)NSSSNC(=O)C(N)=O", "O=C(C[C@@H]1[C@@H](COP(=O)(O)O)O[C@H]([C@@H]1O)n1ccc(=O)[nH]c1=O)NC[C@H]1O[C@H]([C@@H]([C@@H]1O)O)n1ccc(=O)[nH]c1=O", "CC[C@]1(C)O[C@@H]1CCC(C)(C)C", "CC(C/C=C\\C(C)(C)C)(C)C", "C[C@H](CC(=O)c1ccc(-c2ccc(F)cc2F)cc1)C(=O)O", "O[C@@H]1O[C@H](COS(=O)(=O)O)[C@H]([C@@H]([C@H]1N)O)O", "OC(=O)C[C@@H]1CC[C@@](C1(C)C)(C)O", "CNC(=O)Oc1ccc(c(c1)C)N(C)C",
     "OC(=O)[C@H]1NCSC1(C)C", "CCC[C@H](OC(=O)C)C", "NCCCNCCCCN([N+](N=O)O)CCCN", "CC[C@@H]([C@@H]1O[C@@H]1[C@@H]1C[C@H]1C)C", "Brc1cnc(c(c1)C)CCCCNC1=NC=C(C(=O)[NH+]1)Cc1ccc(nc1)C", "N[C@H](CCS(=O)(=O)Oc1ccccc1)CCc1ccccc1", "CC(OCC(=O)OC(=O)COC(C)C)C", "CC(/C=C/C1CCC1)(C)C", "CCCCCS(=O)(=O)O", "COc1ccc(cc1CN(c1ccc2c(c1)c(N)nc(n2)N)C)OC", "CCCCCCCCCC(=O)N[C@H](C(=O)O)CCO", "CC1(CC1)N[C@H]1CC1(C)C", "COC(=O)c1ccccc1/C(=C\\1/C=C(Br)C(=O)C(=C1)Br)/c1cc(Br)c(c(c1)Br)O", "NC(=O)CN1C[C@@H](CC1=O)c1ccccc1", "Oc1c(F)cccc1I", "OC[C@H]1NC(=O)[C@H](C(C)C)N(c2c3c(C1)c[nH]c3c(cc2)[C@](CC/C=C(\\C)/C)(C=C)C)C", "COc1ccc(cc1)/C=C/C(=O)N[C@@H]1CCN2[C@H]1CCC2", "CCC[C@H](S)C", "Nc1nccc(Nc2cc(-c3cc4ccccc4o3)c3[nH]ncc3c2)n1", "CC[C@H]1OC(=O)[C@H](C)[C@@H](O)[C@H](C)[C@@H](O)[C@](C[C@H](C(=O)[C@@H]([C@H]([C@]1(C)O)O)C)C)(C)O", "Oc1cc2[OH+]c3cc(O)c(cc3C(=O)c2c(c1)O)O", "O[C@H]1CC[C@H]2[C@H](C1)OC1=CC(=O)C=C[C@H]1C2", "SC[C@H](C(=O)N)NC(=O)C", "CCCC(=O)OC(=O)C1(C)CCC1", "CCC[C@H](C(=O)OC(=O)[C@H]1CC1(C)C)C", "OC(=O)c1ccc(o1)c1ccc(cc1)N(=O)=O", "COC(=O)[C@H]1[C@@H](O)C[C@@H]2CC[C@H]1N2C", "O=N(=O)c1ccc(c(c1)O)O", "OC[C@H]1O[C@H](C[C@@H]1NC(=O)C)n1cc(C)c(=O)[nH]c1=O", "CS/C=C/CCN=C=S", "NC(=O)/C=C/C(=O)N", "N=c1sn(c(n1)c1ccccc1)C", "FCCCN1CN(C2(C1=O)CCN(CC2)CCCC(=O)c1ccc(cc1)F)c1ccccc1", "FC(OC(F)(F)F)(OC(F)(F)F)F", "Brc1ccc2c(c1)[C@H](CCS2(=O)=O)OC(=O)[C@@H]1NC[C@@]2(C1)C(=O)Nc1c2cccc1", "O=N(=O)c1cc(cc(c1NNc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O)N(=O)=O)N(=O)=O", "Cc1nc(c(s1)c1ccnc(n1)Nc1ccc(c(c1)Cl)N(C)C)C", "O=C1C=C[N+]([C@@H]2O[C@@H](COP(=O)(O)O)[C@@H](O)[C@H]2O)C(=O)[NH+]1", "CCCC(=O)N[C@H]1CC[C@@H]1C", "C1CCC=CC=CC1", "O=Nc1cc(C)ccc1NC", "CC1(C)[C@H](C(=O)O)N2C(=O)[C@@H](NC(=O)COc3ccccc3)[C@H]2[S@@]1=O", "CC(=O)N[C@H]1C(=O)O[C@H](C)[C@@H]1C", "CCCCCCCCCCCCCC(=O)Oc1ccc2c(c1)cccc2", "C/C=C/C=C/C=C/C=C/C=C/C=N/CCCC", "OC[C@@H]1C=C[C@@H](O1)[N+]1C=C(C)C(=O)[NH+]C1=O", "OC(=O)CCCCCCCCCCCn1cncc1", "O=C(O)c1cccc2cccc(C(=O)O)c12", "CC(C)=CCC/C(C)=C/CC/C(C)=C\\CC/C(C)=C/COP(=O)(O)O", "COc1cc(Br)c(cc1C[C@@H](N)C)OC", "CC[C@@]1(C)CCCC1(C)C", "CC[C@@H](S)C", "Oc1cccc(c1)[C@H]1C[C@]1(N)C(=O)O", "CCC(SC(C)(C)C)(C)C", "Nc1ccc(nn1)/C=C/c1ccc(o1)N(=O)=O", "C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43CO)[C@@H]1CC[C@@H]2C(=O)CO", "CC[C@@H](c1cccc(O)c1)[C@@H](CC)c1cccc(O)c1", "O=C([C@H]1CC1(C)C)S[C@@H]1CCC1(C)C", "COc1cc(OC)c(S(=O)(=O)N2c3ccccc3C[C@H]2C)cc1NC(C)=O", "O[C@@H]1Cc2c3c1c1ccc4c(c1cc3ccc2C)cccc4", "COc1c2N(C)[C@H]3[C@](c2cc(c1OC)Cl)(O)C[C@]12N3C(=O)[C@](C)(SS1)N(C2=O)C", "O=C(N[C@H]1C(=O)N2[C@H]1SC([C@H]2C(=O)O)(C)C)COc1ccc(cc1)O",
     "CS[C@@H](C)[C@H](N)C(=O)O", "OC(=O)C(=N)/C=C/c1c(cnc(c1O)C)COP(=O)(O)O", "O=C1C[C@@H](C)[C@]2([C@H](C1)CC[C@H](C2)C(=C)C)C", "NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)CC[C@H]2N)[C@H](F)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O", "CCCC[S@@](=O)[C@@H]1CCC1(C)C", "COc1ccnc(c1)NC(=S)N1CCN(CC1)c1ncc(cc1Cl)C(F)(F)F", "Cc1ncc([nH]1)N(=O)=O", "C[C@H]1C/C=C/[C@H]2[C@H](O)C(=C)[C@H]([C@@H]3[C@@]2([C@@H](/C=C/[C@](C1)(C)O)O)C(=O)N[C@H]3Cc1ccccc1)C", "Ic1cc(I)c(c(c1O)I)O", "CCCCCC(=O)CC(=O)CCc1ccc(O)c(OC)c1", "C/C=C1\\CN2[C@@H]3C[C@H]1[C@H](C(=O)OC)[C@H]2Cc1c3[nH]c2ccccc12",
     "CCCC(=S)[C@H]1CC1(C)C", "CCCC/N=C(\\N)[NH+]O", "CCCN(N(C1(C)CC1)C)C", "COC(=O)[C@@H]1[C@H]2C[C@H]3C4=Nc5c([C@@]14CCN3C/C/2=C\\C)cccc5", "CCC[C@H](/N=N/C(CCC)(C)C)C", "N#Cc1ccccc1OC[C@H](CNC(C)(C)C)O", "CCCCCCC/C=C/C(=O)NCCSCCC1CCCCC1", "FC1(F)C(F)(F)C(F)(F)[C@@]2([C@@](C1(F)F)(F)C(F)(F)C(C2(F)F)(F)F)F", "CCCSC[C@@H](C(=O)O)N", "COc1ccc2c(c1)CN(CCS2)C(=O)CCN1CCC(CC1)Cc1ccccc1", "CC1(C)CC[C@@H]1N[C@@H]1CCC1(C)C", "CCC[C@@H]1O[C@@H]1C(C)(C)C", "CO[C@H]1[C@H]([C@@]2(C)O[C@@H]2CC=C(C)C)[C@]2(CC[C@H]1OC(N)=O)CO2", "CC(CCSC(=O)[C@@H]1C[C@@H]1C)C", "Cc1ccc2c3c1CCc3c1c(c2C)c2ccccc2cc1", "CCCCCCCCCCCCCCC(CC(=O)O)(C)C", "ClC1=C(Cl)C(=O)C(C(=C1Cl)Cl)(Cl)Cl", "Nc1ccc2c(c1)[OH+]C(=O)C=C2C(F)(F)F", "CC[C@H](/C=C/CC(C)(C)C)C", "CCc1nc(nc(n1)CC)NS(=O)(=O)c1ccc(cc1)N", "OC[C@@H]1OC[C@H]([C@@H]([C@H]1O)O)O", "CCCCCCCCCC(=O)c1cc(OC)cc(OC)c1", "C[C@H]1CC[C@@H]1C(=O)N(C)C", "C[N+]1C(=O)C=C(c2c1cccc2)OCc1nnn(c1)[C@@H]1C[C@H]2CC[C@@H](C1)[N+]2(C)C", "CO[C@@H]1[C@H](O)O[C@@H](C)[C@@H](O)[C@H]1O", "CC[C@@H](I)C", "CCC(/N=N/C1CC1)(C)C", "Nc1nn(cc1c1ccc2c(c1)CCNC2=O)c1cccc(c1)c1ccc2c(c1)[nH]cc2", "CCCCCCCCC(=O)O[C@@H](COP(=O)(O)O)COC(=O)CCCCCC", "CCN1C[C@]2(CO)CC[C@@H]([C@]34[C@H]1[C@H](C[C@H]23)[C@@]1(OC)C[C@@H]([C@H]2C[C@@H]4[C@@H]1[C@H]2O)OC)O", "C[C@@H]1C[C@@H](C1)P[C@@H]1C[C@H]1C", "O=C([C@@H]1CCCC[C@@H]1c1nnn[nH]1)N1CCc2c([C@H]1CN1C(=O)c3c(C1=O)cccc3)cccc2", "NC(=N)c1ccc(cc1)OCCOCCOc1ccc(cc1)C(=N)N", "CCCCCPC(C)(C)C", "O[C@H]1CCCCCc2cc(O)cc(c2C(=O)O[C@@H](CCC1)C)O",
     "COC[C@H](CO)O", "CC(=O)/C=C\\c1ccc2c(c1)OCO2", "ClCC(=O)[C@@]1(O)[C@H](C)C[C@@H]2[C@]1(C)C[C@H](O)[C@]1([C@H]2CCC2=CC(=O)C=C[C@]12C)Cl", "CN(CCOc1cc(C)c(cc1C(C)C)OC(=O)C)C", "CN(CCC(P(=O)(O)O)(P(=O)(O)O)O)CCCOc1ccccc1", "CCCCP(CCC)C", "BN",
     "C=C1C/C(=C/C)C(=O)O[C@@H]2CCN3CC=C(COC(=O)[C@]1(C)OC(C)=O)[C@H]23", "OCc1cc(O)c2c(c1)[OH+]c1c(C2=O)c(C(=O)OC)c(cc1)O", "O=C1NCCc2c1nc1ccccc1c2Oc1ccccc1", "C[C@@H]1CC[C@H]1[N@H+](O)C1(C)CC1", "CCC/C(=C\\[C@@H]1C[C@H]1C)/C", "CN[C@H](C(=O)N[C@H](C(=O)N1CCC[C@H]1c1sc2c(n1)c(ccc2)c1ccccc1)C1CCCCC1)C", "CCN([C@H]1c2ccccc2NC(=O)c2c1cccc2)CC", "OCc1c(cccc1N(=O)=O)N(=O)=O", "COc1cc(cc(c1O)O)[C@@H]1Oc2cc(O)cc(c2C(=O)[C@H]1O)O", "CC(C)c1cc(-c2cc(N3C[C@H](O)[C@@H](O)C3)ccc2O)nc(N)n1", "OC(=O)[C@@H]([C@H](C(=O)O)O)F", "C[C@H]1CC[C@@H]1[C@@H]1O[C@H]1C1CC1", "ONC(=O)c1ccc(cc1)NC(=O)[C@@H](c1ccccc1)C(C)C", "OC[C@H]1C[C@@H]([C@H](O1)c1nc2c([nH]1)c(N)ncn2)O", "Oc1ccc(c(c1)CNc1ccc(cc1)C(=O)N)O", "CCCCCCC[C@H](c1c(O)cccc1O)C/C=C/CCCC", "O=C(N[C@@H](Cc1ccc(O)cc1)C(=O)O)OCc1ccccc1", "Nc1nc[n+](c2c1nc[nH]2)CCO", "CC(=C[C@@H]1CC[C@H]([C@@H]2C1=C(C)CC2)C)C", "CCOc1cc(ccc1OC(C)C)[C@H](C(=O)NS(=O)(=O)c1cccc(c1)S(=O)(=O)N)Nc1ccc2c(c1)ccnc2", "CC[C@H]1O[C@H]1[C@H]1CC[C@H]1C", "C[C@H](C(=O)NCC(=O)O)S", "OC[C@H]1OC(=O)[C@@H]([C@@H]([C@@H]1O)O)NC(=O)C", "CCC(COC1(C)CC1)(C)C", "O=C1CN2Cc3c(ccc(Cl)c3Cl)NC2=N1", "[Na][Cs]", "N[C@@H]1NC(=O)N[C@@H]2[NH2+]NC[C@@H]12", "CCCCCCCCCCC/C=C(/C=C/C=C/C=C/C(=O)O)\\O", "Cc1nc(NCCC[C@H](N)C(=O)O)nc(C)c1O", "OC(=O)CCc1onc(n1)c1ccccc1", "C=C[C@]1(O)CN2CC[C@@H]1C[C@H]2[C@@H](O)c1ccnc2ccc(OC)cc12", "CCC[C@H]([C@H]1O[C@@H]1[C@@H]1C[C@@H](C1)C)C", "NCC[C@@H](C(=O)N)NC(=O)[C@H](CCCNC(=N)NN(=O)=O)N", "COCCCl", "COc1cc2c(cc1OC)OC[C@@H]1[C@H]2C(=O)c2c(O1)c1C[C@H](Oc1cc2)C(C)C",
     "CC[C@@H]([C@@H]1O[C@@H]1C1CCC1)C", "O=C(/C=C\\c1ccc(O)cc1)c1ccccc1", "Brc1n[nH]c(=O)[nH]c1=O", "COc1cc2c3cc1Oc1c(OC)c(OC)cc4c1[C@@H](Cc1ccc(O)c(c1)-c1cc(ccc1OC)C[C@H]3N(C)CC2)[N@@+](C)(O)CC4", "OC(=O)CCP(CCC(=O)O)CCC(=O)O", "CCS(=O)(=O)Nc1cccc(N2CCN(CCCCN3C(=O)[C@@H]4CCCN4C3=O)CC2)c1", "CC1=C[C@]23[C@H]([C@@H]1C)C=C([C@H]2COC(=O)[C@]13CO1)C(=O)O", "CCC(C(=O)OC(=O)C[C@@H]1C[C@H]1C)(C)C", "BrCC(=O)OCCOC(=O)CBr", "C[C@H](N)[C@H]1[C@H](O)C[C@@]2(C)[C@@H]3CC[C@@H]4C(=CC3=CC[C@]12C)CC[C@H](N(C)C)C4(C)C", "O=C1c2c([nH]c[n+]2c2c([N+]1C(C)(C)C)cccc2)c1noc(n1)C1CC1", "CC(=O)N[C@@H]1[C@@H](CO)O[C@@H]([N+]2C=CC(=O)[NH+]C2=O)[C@@H]1O",
     "COc1cc(ccc1OCCCN1CCN(CC1)c1ccccc1F)NC(=O)C", "CCOc1ccccc1O[C@H](c1ccccc1)[C@@H]1OCCNC1", "COc1ccc2c(c1)[OH+]C(=O)C=C2CC(=O)O", "O=C1C(c2ccccc2)C(=O)c2c1cccc2", "C[C@@H]1CC[C@H]1NC(=O)C1CCCC1", "COc1c(Cl)cc(cc1N(=O)=O)Cl", "CCOc1ccc(cc1)CNc1nc2cc(ccc2nc1C(=O)O)C(F)(F)F", "CC(C)(C)[S](C)(C)=O", "O[C@H](CNCCCl)[C@@H](O)[C@H](O)[C@H](O)CNCCCl", "O=C1CCCCCCCCCOCCCCCO1", "COc1ccc(cc1)Nc1ccn(n1)c1ccccc1", "COc1csc(c1)c1scc(c1)OC", "C[C@@H]1C[C@H]1O[C@H]1CC1(C)C", "CCCCCC#CCCCCC#CCC#CCCCC(=O)O", "C[C@H]1[C@H](O)C(=O)CC[N@@H+]1CCC(=O)O", "CCCCN(c1c(OC)nn2c1scc2c1c(OC)cc(cc1OC)COCC)C1CCOCC1", "CC1=CC(=O)/C(=C(/NCCc2ccc(cc2)O)\\C)/C(=O)O1", "CC(C)CCC(=O)OC(=O)[C@@H]1CC[C@H]1C", "CCC(/N=N/C(C)(C)C)(C)C", "O=C[C@H](Cc1c[nH]c2c1ccc(c2O)NNc1ccccc1)N", "CCCCC/C=C\\C/C=C\\C/C=C\\CCCCCCC(=O)O", "CC/N=N/[C@H]1CC[C@@H]1C", "N[C@@H](c1ccccc1)CC(=O)O", "O=C1OC[C@@H]2[C@@H](C1)CCCC2", "C[C@@H]1CC[C@H]1C(=O)Br", "c1ccc(nc1)[C@H]1CO1", "N[C@@H](Cc1ccc(Oc2cc(C[C@H](N)C(=O)O)ccc2O)cc1)C(=O)O", "CCCCCCCCCCCCCC1CCCCC1", "CS/C(=C\\N(=O)=O)/NSCC[C@H]1CC[C@@H](O1)CN(C)C", "NC1=NC(=O)[N+]([C@@H]2O[C@H](CO[P@@](=O)(O)OP(=O)(O)O)[C@@H](O)/C2=C\\F)C=C1", "CCC(=O)Br", "COOC", "CCCS(=O)CCC", "CC(CC[C@H]1O[C@H]1CCC(C)(C)C)C", "NC(=O)[C@H]1O[C@H]([C@@H]([C@H]([C@@H]1O)O)O)[N+]1C=C(F)C(=O)[NH+]C1=O", "COc1cc2c(cc1OC)CN(/C(N)=N/CCOc1ccccc1OC)CC2", "O=CCC(=O)c1ccc(F)cc1", "CC1=NC=C(CO)/C(=C/NNC(=O)c2ccncc2)C1=O", "C[C@@H]1C(=O)O[C@H]2[C@H]1CCC(=C1[C@@H]2C(=CC1=O)C)C", "COCc1c(OC)cc2[oH+]c(C)cc(=O)c2c1O", "C[C@H]1C[C@H]([C@@H]2C[C@H]3[C@@H](C[C@@H]2F)C(=O)[C@H](C(=O)O)C[N@H+]3C2CC2)C[C@@H](C)N1", "CC1([N@H+](O)C2CCCCC2)CCC1", "C/C=C/CCC(=O)c1c(C)c(O)c(O)c(C)c1O", "O=C(c1ccc(cc1)CNc1nccc(n1)c1cccnc1)Nc1ccccc1N", "OC[C@H]1O[C@H]([C@@H]([C@@H]1O)O)N1C[C@@H]2[C@H]3[C@H]1NCN[C@H]3[N@@H+](N[C@@H]2N)C", "O[C@H]1Cc2c([C@@H]([C@H]1O)O)ccc1c2c2ccccc2cc1",
     "O=[N+]([O-])c1ccc(CCl)cc1", "Fc1ccc(cc1)C[C@@H]1CCN(CC1)CC[S@](=O)c1ccc2c(c1)oc(=O)[nH]2", "COCCNCCOc1ccc(cc1)n1cc(c2c1ncnc2N)c1cccc(c1)OC", "CC[C@@]1(C(=O)NC(=O)N(C1=O)C)c1ccc(cc1)O", "O=C1c2cccc(c2c2c1cccc2)c1nc2c([nH]1)ccnc2", "N#Cc1c(NC(=O)c2ccccc2F)sc2c1CCCC2", "O=C(C1(C)CC1)OC1CCCCC1", "OCCN(c1ccc(c(c1)N(=O)=O)NC)CCO", "CCCCCCCCCCC(C)C", "CC(C)[C@H]1O[C@@H]1C(C)(C)C", "CC(=O)OC[C@H](C(=C)C)CC=C(C)C", "NC(=O)NC[C@@H](C(=O)O)I", "Oc1cc(O)cc(c1)c1oc2c(c1)cc1c(c2)OC([C@@H](C1)O)(C)C", "O[C@@H]1O[C@H](C(=O)O)[C@H]([C@@H]([C@H]1F)O)O", "NC[C@@H](c1ccc(c(c1Cl)O)O)O", "CC1=N[C@H]([C@@H](S1)C)C", "COc1ccc2c(c1)CC[C@@H]1[C@@H]2CC[C@]2([C@]31C[C@@H]3C[C@@H]2O)C", "OC[C@@H]1O[C@H]([C@@H]([C@@H]1O)O)n1cnc2c1ncnc2NCCc1ccccc1", "SC[C@H](C(=O)N[C@H](C(=O)N[C@H](C(=O)N)C)Cc1ccccc1)CC(C)C", "CC(C[C@@H](C(=O)NCC(=O)NCC(=O)O)N)C", "OC[C@H]([C@H]([C@@H]([C@@H](CN[C@H](C(=O)O)CCC(=O)O)O)O)O)O", "C[C@H]1C[C@@H]1OC(=O)C1CC1", "COc1cc(CCN2CCN(CC2)CCCc2ccccc2)ccc1OC", "CC(=C)c1ccc(c(c1)O)C", "CC(C)c1ccc2c(c1)CC[C@H]1[C@@](C)(C(=O)O)CCC[C@]21C", "C[C@H]1O[C@H](O[C@@H]2C[C@@H]3C(=O)O[C@@H]4[C@@H](O)[C@H](O)C[C@H]5C(=O)O[C@@H]([C@@H]2O)[C@@H]3[C@@H]45)[C@@H](O)[C@@H](O)[C@@H]1O", "O[C@@H]1[C@@H]2[C@H]([C@H]([C@H]1[C@@H]([C@@H]2O)O)O)O", "NCc1ccc2c(c1)OCO2", "CCCCCCCCCC(=O)C1=C(O)C(=C)OC1=O", "O=C1C[C@@H](CC(=O)[C@H]1Sc1ccccc1N(=O)=O)c1ccccc1", "C[C@@H]1CC[C@H]1/C=C/C1CC1", "COc1c(O)cc(c2c1[OH+]C(=CC2=O)c1ccccc1)O", "S=C(C1(C)CC1)C1CCC1", "CC(C)(C)CC(=S)[C@@H]1CC1(C)C", "CC[C@@H](C)O[C@H]1CC[C@H]1C", "CCC(=O)S[C@H]1CC[C@@H]1C", "C=C[C@@H]([C@]12CO[C@](OC1)(OC2)c1ccc(cc1)C#N)C", "COc1c(C)c(OC(=O)c2c(C)c(C)c(c(c2O)C)OC(=O)c2c(C)c(C)c(c(c2OC)C)O)c(c(c1C(=O)O)C)C", "CC(N(P(OCc1ccccc1)OCc1ccccc1)C(C)C)C", "N[C@@H](CC(=O)N1CCCCCN1C(=O)c1ccccc1)Cc1cc(F)c(F)cc1F", "CN(c1ccc(cc1)N/N=C/1\\C=CC(=O)C=C1)C", "CCCC(C(=O)N(C)C)(C)C", "OC(=O)[C@H]1O[C@@H](O[C@@H]2CC[C@]3([C@@H](C2)CC[C@@H]2[C@@H]3CC[C@]3([C@H]2CCC3=O)C)C)[C@@H]([C@H]([C@@H]1O)O)O", "CC1=C[N+](C(=O)[NH+]C1=O)[C@@H]1O[C@@H]([C@H]2[C@@H]1O2)CO[P@@](=O)(O[P@](=O)(OP(=O)(O)O)O)O", "Oc1cccc(c1)C(=O)C", "C[C@](O)(c1ccc(C(=O)N(C2CC2)C2CCN(CC3(C(N)=O)CC3)CC2)cc1)C(F)(F)F", "O=Cc1c2[OH+]C(=CC(=O)c2c(c(c1O)C)O)c1ccccc1", "CN1CCN(CC1)C(=O)O[C@@H]1c2nccnc2C(=O)N1c1ccc(cn1)Cl", "CCCC[C@H](/C=C\\C/C=C\\C/C=C\\C/C=C\\CCCC(=O)O)O", "O=C(c1ccc(cc1)O)O[C@H]1C[C@@H]2C([C@@]1(C)CC2)(C)C", "OC[C@@H]([C@@H]([C@H]([C@@H]([C@H](C(=O)C(=O)O)O)O)O)O)O", "CCC(/N=N/C1CC(C1)(C)C)(C)C", "C[P@](=O)(F)OC1CCCCC1", "CCC[C@@H]1O[C@@H]1C1CCC1", "COc1cc2C=C([OH+]C(=O)c2c(c1)O)[C@H](C(=O)O)C", "Cc1cc(O)c([N+](=O)[O-])c([N+](=O)[O-])c1[N+](=O)[O-]", "OCCONC(=O)c1cc2n(C)cnc2c(c1Nc1ccc(cc1F)Br)F", "CC(C)C[C@H](C[P@@](=O)(O)[C@@H](N)CCc1ccccc1)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(N)=O", "O[C@@H](CN1CCCc2c(C1=O)c(C)c([nH]2)/C=C/1\\C(=O)Nc2c1cc(F)cc2)CN1CCOCC1", "CCCC(=O)C1=C(O)C(=C(C(C1=O)(C)C)O)Cc1c(OC)cc(c(c1O)C(=O)CCC)O", "NCCCCCCCCN", "CCCCCCCCO[C@@H]1O[C@H](CO)[C@H]([C@@H]([C@@H]1O)O)O", "O=C1C=CN=N1", "OCC(=O)O[C@@H]1C[C@@](C)(C=C)[C@@H](O)[C@@H]([C@]23[C@@H]([C@@]1(C)[C@H](C)CC2)C(=O)CC3)C", "CC(=C[C@@H]1CC[C@H]1C)C", "CC[C@@]1(c2ccncc2)CCC(=O)NC1=O", "O[C@H]1[C@H](O)O[C@@H]([C@H]1O)COP1(=O)OO1", "CCC[C@@H](SC(=O)CCC)C", "C1N2CN3CN1CN(C2)C3", "OC[C@@]1(O)C[C@@]23C[C@H]1CC[C@H]3[C@]1([C@H](C(=O)[C@@H]2O)C(C)(C)CCC1)C"}];
In[2]:=
ResourceFunction["MoleculePrincipalMomentPlot"][mols]
Out[2]=

Options (3) 

Points in the scatter plot have tooltips showing the corresponding molecule as a 3D graphic:

In[3]:=
mols = Molecule /@ {"(2,5-dichlorophenyl)sulfanylmethylsulfanyl-dimethoxy-sulfanylidene-phosphorane", "(2S,6R)-2,6-dimethyl-4-[2-methyl-3-[4-(2-methylbutan-2-yl)phenyl]propyl]morpholine", "1-(2-diethoxyphosphorylsulfanylethylsulfanyl)ethane", "bis(3-hydroxyprop-1-ynyl)mercury", "pentyl prop-2-enoate", "1-propoxypropane", "cyclooctanecarbaldehyde", "4-[2-(4-hydroxy-3,5-ditert-butyl-phenyl)sulfanylpropan-2-ylsulfanyl]-2,6-ditert-butyl-phenol", "3,3,4,4-tetramethylhexane", "[4-[(4-methoxyphenyl)methylideneamino]phenyl] acetate"};
In[4]:=
Count[ResourceFunction["MoleculePrincipalMomentPlot"][
  mols], _Tooltip, Infinity]
Out[4]=

Use the option "Tooltips"False to eliminate the tooltips:

In[5]:=
Count[ResourceFunction["MoleculePrincipalMomentPlot"][mols, "Tooltips" -> False], _Tooltip, Infinity]
Out[5]=

MoleculePrincipalMomentPlot will take options for MoleculePlot3D and apply them to the insets and tooltips:

In[6]:=
ResourceFunction["MoleculePrincipalMomentPlot"][mols, PlotTheme -> "SpaceFilling"]
Out[6]=

Display the plot without vertex labels:

In[7]:=
ResourceFunction["MoleculePrincipalMomentPlot"][mols, VertexLabels -> None]
Out[7]=

It is possible to use different images for the vertex labels. First create a list of three expressions:

In[8]:=
corners = MoleculePlot3D[Molecule@#1, IncludeHydrogens -> False, PlotTheme -> "Tubes"] & /@ {"Buta-1,3-diyne", "benzene", "adamantane"}
Out[8]=

Then give these to the VertexLabels option:

In[9]:=
ResourceFunction["MoleculePrincipalMomentPlot"][mols, VertexLabels -> corners]
Out[9]=

Applications (2) 

Import the GDB-9 molecular database as an EntityStore:

In[10]:=
EntityRegister[ResourceData["GDB-9 Database"]]
Out[10]=

Write a helper function to convert these entities to Molecule objects:

In[11]:=
gdbMolecule[ent_] := Quiet[Molecule@
   DeleteMissing@
    EntityValue[
     ent, {"VertexTypes", "EdgeRules", "EdgeTypes", "FormalCharges", "IsomericSMILES", "NonStandardIsotopeNumbers", "VertexCoordinates", "AtomPositions"}, "PropertyAssociation"], Molecule::valenc]
In[12]:=
mols = ResourceFunction["DynamicMap"][gdbMolecule, RandomEntity["GDB9Chemical", 10000]];
In[13]:=
ResourceFunction["MoleculePrincipalMomentPlot"][mols]
Out[13]=

Publisher

JasonB

Source Metadata

License Information