proteneer / timemachine

Differentiate all the things!
Other
138 stars 17 forks source link

Implement BCCs with SMIRNOFF bond patterns #158

Closed proteneer closed 4 years ago

proteneer commented 4 years ago

I mean, they're called bond charge corrections already right? So we might as well as just try to use the bond charge information.

87 parameters in total

    <Bond smirks="[#6X4:1]-[#6X4:2]" id="b1" k="620.0" length="1.526"/>
    <Bond smirks="[#6X4:1]-[#6X3:2]" id="b2" k="634.0" length="1.51"/>
    <Bond smirks="[#6X4:1]-[#6X3:2]=[#8X1+0]" id="b3" k="634.0" length="1.522"/>
    <Bond smirks="[#6X3:1]-[#6X3:2]" id="b4" k="820.0" length="1.45"/>
    <Bond smirks="[#6X3:1]:[#6X3:2]" id="b5" k="938.0" length="1.40"/>
    <Bond smirks="[#6X3:1]=[#6X3:2]" id="b6" k="1098.0" length="1.35"/>
    <Bond smirks="[#6:1]-[#7:2]" id="b7" k="734.0" length="1.47"/>
    <Bond smirks="[#6X3:1]-[#7X3:2]" id="b8" k="854.0" length="1.38"/>
    <Bond smirks="[#6X4:1]-[#7X3:2]-[#6X3]=[#8X1+0]" id="b9" k="674.0" length="1.449"/>
    <Bond smirks="[#6X3:1](=[#8X1+0])-[#7X3:2]" id="b10" k="980.0" length="1.335"/>
    <Bond smirks="[#6X3:1]-[#7X2:2]" id="b11" k="820.0" length="1.39"/>
    <Bond smirks="[#6X3:1]:[#7X2,#7X3+1:2]" id="b12" k="960.0" length="1.34"/>
    <Bond smirks="[#6X3:1]=[#7X2,#7X3+1:2]" id="b13" k="1060.0" length="1.30"/>
    <Bond smirks="[#6:1]-[#8:2]" id="b14" k="640.0" length="1.410"/>
    <Bond smirks="[#6X4:1]-[#8X2H0:2]" id="b15" k="640.0" length="1.370"/>
    <Bond smirks="[#6X3:1]-[#8X2:2]" id="b16" k="700.0" length="1.326"/>
    <Bond smirks="[#6X3:1]-[#8X2H1:2]" id="b17" k="900.0" length="1.364"/>
    <Bond smirks="[#6X3a:1]-[#8X2H0:2]" id="b18" k="900.0" length="1.323"/>
    <Bond smirks="[#6X3:1](=[#8X1])-[#8X2H0:2]" id="b19" k="640.0" length="1.340"/>
    <Bond smirks="[#6:1]=[#8X1+0,#8X2+1:2]" id="b20" k="1140.0" length="1.229"/>
    <Bond smirks="[#6X3:1](~[#8X1])~[#8X1:2]" id="b21" k="1312.0" length="1.250"/>
    <Bond smirks="[#6X3:1]:[#8X2+1:2]" id="b22" k="1140.0" length="1.28"/>
    <Bond smirks="[#6X2:1]-[#6:2]" id="b23" k="700.0" length="1.440"/>
    <Bond smirks="[#6X2:1]-[#6X4:2]" id="b24" k="700.0" length="1.468"/>
    <Bond smirks="[#6X2:1]=[#6X3:2]" id="b25" k="1098.0" length="1.35"/>
    <Bond smirks="[#6:1]#[#7:2]" id="b26" k="700.0" length="1.188"/>
    <Bond smirks="[#6X2:1]#[#6X2:2]" id="b27" k="700.0" length="1.188"/>
    <Bond smirks="[#6X2:1]-[#8X2:2]" id="b28" k="700.0" length="1.326"/>
    <Bond smirks="[#6X2:1]-[#7:2]" id="b29" k="854.0" length="1.38"/>
    <Bond smirks="[#6X2:1]=[#7:2]" id="b30" k="854.0" length="1.17"/>
    <Bond smirks="[#6X2:1]=[#16:2]" id="b31" k="854.0" length="1.54"/>
    <Bond smirks="[#7:1]-[#7:2]" id="b32" k="760.0" length="1.40"/>
    <Bond smirks="[#7X3:1]-[#7X2:2]" id="b33" k="680.0" length="1.33"/>
    <Bond smirks="[#7X2:1]-[#7X2:2]" id="b34" k="680.0" length="1.33"/>
    <Bond smirks="[#7:1]:[#7:2]" id="b35" k="680.0" length="1.33"/>
    <Bond smirks="[#7:1]=[#7:2]" id="b36" k="680.0" length="1.30"/>
    <Bond smirks="[#7:1]#[#7:2]" id="b37" k="760.0" length="1.27"/>
    <Bond smirks="[#7:1]-[#8X2:2]" id="b38" k="600.0" length="1.40"/>
    <Bond smirks="[#7:1]~[#8X1:2]" id="b39" k="700.0" length="1.30"/>
    <Bond smirks="[#8X2:1]-[#8X2:2]" id="b40" k="600.0" length="1.46"/>
    <Bond smirks="[#16:1]-[#6:2]" id="b41" k="474.0" length="1.810"/>
    <Bond smirks="[#16:1]-[#1:2]" id="b42" k="548.0" length="1.336"/>
    <Bond smirks="[#16:1]-[#16:2]" id="b43" k="332.0" length="2.038"/>
    <Bond smirks="[#16:1]-[#9:2]" id="b44" k="750.0" length="1.6"/>
    <Bond smirks="[#16:1]-[#17:2]" id="b45" k="460.0" length="2.0"/>
    <Bond smirks="[#16:1]-[#35:2]" id="b46" k="340.0" length="2.2"/>
    <Bond smirks="[#16:1]-[#53:2]" id="b47" k="150.0" length="2.6"/>
    <Bond smirks="[#16X2,#16X1-1,#16X3+1:1]-[#6X4:2]" id="b48" k="474.0" length="1.81"/>
    <Bond smirks="[#16X2,#16X1-1,#16X3+1:1]-[#6X3:2]" id="b49" k="600.0" length="1.74"/>
    <Bond smirks="[#16X2:1]-[#7:2]" id="b50" k="600.0" length="1.69"/>
    <Bond smirks="[#16X2:1]-[#8X2:2]" id="b51" k="600.0" length="1.60"/>
    <Bond smirks="[#16X2:1]=[#8X1,#7X2:2]" id="b52" k="600.0" length="1.44"/>
    <Bond smirks="[#16X4,#16X3!+1:1]-[#6:2]" id="b53" k="454.0" length="1.750"/>
    <Bond smirks="[#16X4,#16X3:1]~[#7:2]" id="b54" k="530.0" length="1.71"/>
    <Bond smirks="[#16X4,#16X3:1]-[#8X2:2]" id="b55" k="600.0" length="1.596"/>
    <Bond smirks="[#16X4,#16X3:1]~[#8X1:2]" id="b56" k="600.0" length="1.44"/>
    <Bond smirks="[#16:1]=[#6:2]" id="b57" k="600.0" length="1.7"/>
    <Bond smirks="[#15:1]-[#1:2]" id="b58" k="400.0" length="1.4"/>
    <Bond smirks="[#15:1]~[#6:2]" id="b59" k="320.0" length="1.90"/>
    <Bond smirks="[#15:1]-[#7:2]" id="b60" k="600.0" length="1.65"/>
    <Bond smirks="[#15:1]=[#7:2]" id="b61" k="800.0" length="1.5"/>
    <Bond smirks="[#15:1]~[#8X2:2]" id="b62" k="460.0" length="1.610"/>
    <Bond smirks="[#15:1]~[#8X1:2]" id="b63" k="1050.0" length="1.480"/>
    <Bond smirks="[#15:1]~[#9:2]" id="b64" k="600.0" length="1.639"/>
    <Bond smirks="[#16:1]-[#15:2]" id="b65" k="300.0" length="2.1"/>
    <Bond smirks="[#15:1]=[#16X1:2]" id="b66" k="460.0" length="1.98"/>
    <Bond smirks="[#6:1]-[#9:2]" id="b67" k="772.0" length="1.359"/>
    <Bond smirks="[#6X4:1]-[#9:2]" id="b68" k="734.0" length="1.380"/>
    <Bond smirks="[#6:1]-[#17:2]" id="b69" k="386.0" length="1.727"/>
    <Bond smirks="[#6X4:1]-[#17:2]" id="b70" k="464.0" length="1.766"/>
    <Bond smirks="[#6:1]-[#35:2]" id="b71" k="344.0" length="1.890"/>
    <Bond smirks="[#6X4:1]-[#35:2]" id="b72" k="318.0" length="1.944"/>
    <Bond smirks="[#6:1]-[#53:2]" id="b73" k="342.0" length="2.075"/>
    <Bond smirks="[#6X4:1]-[#53:2]" id="b74" k="296.0" length="2.166"/>
    <Bond smirks="[#7:1]-[#9:2]" id="b75" k="340.0" length="1.4"/>
    <Bond smirks="[#7:1]-[#17:2]" id="b76" k="300.0" length="1.8"/>
    <Bond smirks="[#7:1]-[#35:2]" id="b77" k="220.0" length="2.0"/>
    <Bond smirks="[#7:1]-[#53:2]" id="b78" k="160.0" length="2.1"/>
    <Bond smirks="[#15:1]-[#9:2]" id="b79" k="880.0" length="1.6"/>
    <Bond smirks="[#15:1]-[#17:2]" id="b80" k="340.0" length="2.0"/>
    <Bond smirks="[#15:1]-[#35:2]" id="b81" k="270.0" length="2.2"/>
    <Bond smirks="[#15:1]-[#53:2]" id="b82" k="140.0" length="2.6"/>
    <Bond smirks="[#6X4:1]-[#1:2]" id="b83" k="680.0" length="1.090"/>
    <Bond smirks="[#6X3:1]-[#1:2]" id="b84" k="734.0" length="1.080"/>
    <Bond smirks="[#6X2:1]-[#1:2]" id="b85" k="800.0" length="1.056"/>
    <Bond smirks="[#7:1]-[#1:2]" id="b86" k="868.0" length="1.010"/>
    <Bond smirks="[#8:1]-[#1:2]" id="b87" k="1106.0" length="0.960"/>

One disadvantage of this method though is that we won't be able to lower the norm of the avg charge.

jchodera commented 4 years ago

I've you're using an ML framework anyway, why not just train a more powerful graph convolutional model that you could fit along with your other parameters? See our example.

proteneer commented 4 years ago

What’s the size of parameter space in your graphical models?

On Tue, Mar 3, 2020 at 5:39 PM John Chodera notifications@github.com wrote:

I've you're using an ML framework anyway, why not just train a more powerful graph convolutional model that you could fit along with your other parameters? See our example http://www.choderalab.org/publications/2019/9/17/graph-nets-for-partial-charge-prediction .

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/proteneer/timemachine/issues/158?email_source=notifications&email_token=AARM2FAEVVJO5FTTAMF566TRFWBJDA5CNFSM4LAU4EF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENVOKYA#issuecomment-594208096, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARM2FCFLDQCKTUFDFWEN4TRFWBJDANCNFSM4LAU4EFQ .

-- Yutong Zhao

jchodera commented 4 years ago

What’s the size of parameter space in your graphical models?

@yuanqing-wang and @maxentile can comment on the technical details!

chuantian commented 4 years ago

In the paper, the DFT was computed with dielectric permittivity =4 (I suppose doing so to make the resulted charge in between gas-phase and solvent-phase), which reminds me how charges in ff03 amber force field (Duan et al.) were trained. This might suggest a reasonable combination of GraphNet with ff03? @jchodera

yuanqing-wang commented 4 years ago

What’s the size of parameter space in your graphical models?

The number of tunable weights? Around a few thousand would do.

proteneer commented 4 years ago

We're now going to directly port over the excellent patterns being developed by @SimonBoothroyd as part of the openforcefield recharge project.

proteneer commented 4 years ago

This first pass is done.