{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: pylab import has clobbered these variables: ['nanmean']\n", "`%matplotlib` prevents importing * from pylab and numpy\n" ] } ], "source": [ "import os\n", "import re\n", "import sys\n", "import dataset\n", "from scipy.stats import nanmean\n", "from scipy.optimize import curve_fit\n", "import math\n", "#import numpy\n", "#import matplotlib.pyplot as plt\n", "%pylab inline\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def au2kcal(x):\n", " if type(x) is not list: \n", " x = [ x ]\n", " islist=0\n", " if x==[None]:\n", " return None\n", " else:\n", " islist=1\n", " for i in range(len(x)):\n", " x[i]=x[i]*627.50960803\n", " if not islist:\n", " x=x[0]\n", " return x" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def extapolateTau(taus,energies,errors):\n", " def func(x, a,b):\n", " if type(x) is not list: \n", " x = [ x ]\n", " islist=0\n", " else:\n", " islist=1\n", " res=[0]*len(x)\n", " for i in range(len(x)):\n", " res[i]=a*x[i]+b\n", " if islist==0:\n", " res=res[0]\n", " return res\n", " \n", " popt, pcov = curve_fit(func, taus, energies, sigma=errors, absolute_sigma=True, check_finite=True)\n", " perr = np.sqrt(np.diag(pcov))\n", " \n", "# plt.figure()\n", "# plt.errorbar(taus, au2kcal(energies), yerr=au2kcal(errors), fmt='ro')\n", "# t=arange(0.0, 0.01, 0.001)\n", "# s = au2kcal(func(t,popt[0],popt[1]))\n", "# plt.plot(t, s)\n", "# plt.autoscale(enable=True, axis=u'both', tight=True)\n", "# ax=plt.gca().get_ybound()\n", "# plt.ylim([ax[0],ax[0]+10])\n", "# plt.show()\n", " \n", " return[popt[1],perr[1]]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def extapolateTauQuad(taus,energies,errors):\n", " def func(x, a,b,c):\n", " if type(x) is not list: \n", " x = [ x ]\n", " islist=0\n", " else:\n", " islist=1\n", " res=[0]*len(x)\n", " for i in range(len(x)):\n", " res[i]=a*x[i]**2+b*x[i]+c\n", " if islist==0:\n", " res=res[0]\n", " return res\n", " \n", " popt, pcov = curve_fit(func, taus, energies, sigma=errors, absolute_sigma=True, check_finite=True)\n", " perr = np.sqrt(np.diag(pcov))\n", " \n", "# plt.figure()\n", "# plt.errorbar(taus, au2kcal(energies), yerr=au2kcal(errors), fmt='ro')\n", "# t=arange(0.0, 0.01, 0.001)\n", "# s = au2kcal(func(t,popt[0],popt[1],popt[2]))\n", "# plt.plot(t, s)\n", "# plt.autoscale(enable=True, axis=u'both', tight=True)\n", "# ax=plt.gca().get_ybound()\n", "# plt.ylim([ax[0],ax[0]+10])\n", "# plt.show()\n", " \n", " return[popt[2],perr[2]]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "moleculeDB='3dMLBE20_JTCT11-2036_2015.db' #/home/kdd/test/3dMLBE20_JTCT11-2036_2015.db'\n", "jobDB='jobDB.db'#/home/kdd/test/jobDB.db'\n", "#get list of compounds\n", "with dataset.connect('sqlite:///'+moleculeDB) as DB3d:\n", " compoundList=[]\n", " compoundListMol=[]\n", " for table in ['atoms', 'dimers']:\n", " for molecule in DB3d[table]:\n", " if table=='atoms':\n", " compoundList.append(molecule['atom'])\n", " elif table=='dimers':\n", " compoundList.append(molecule['compound'])\n", " compoundListMol.append(molecule['compound'])\n", "compoundListMol=['VH','CrH','FeH','CoH','CuH','ZnH','VO','CrO','ZnO','MnS','ZnS','TiCl','VCl','CrCl','MnCl','FeCl','CoCl','NiCl','CuCl','ZnCl']\n", "compoundList=['Ti','V','Cr','Mn','Fe','Co','Ni','Cu','Zn','H','O','S','Cl']+compoundListMol" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "dfttypList=['none','PBE','B3LYP','B97-1','M06']\n", "typList=['DFT','EMIN_casino','DMC_casino', 'EMIN_qwalk','DMC_qwalk']\n", "dtList=[0.002,0.005,0.008]\n", "energy=numpy.zeros((len(compoundList),len(dfttypList)*len(typList)))\n", "error=numpy.zeros((len(compoundList),len(dfttypList)*len(typList)))\n", "variance=numpy.zeros((len(compoundList),len(dfttypList)*len(typList)))\n", "dissocEnergy=numpy.zeros((len(compoundListMol),len(dfttypList)*len(typList)))\n", "dissocError=numpy.zeros((len(compoundListMol),len(dfttypList)*len(typList)))\n", "dissocEnergyQuad=numpy.zeros((len(compoundListMol),len(dfttypList)*len(typList)))\n", "dissocErrorQuad=numpy.zeros((len(compoundListMol),len(dfttypList)*len(typList)))\n", "dissocEnergyExp=numpy.zeros(len(compoundListMol))\n", "energyExtrap=numpy.zeros((len(compoundList),3*len(dfttypList)*len(typList)))\n", "errorExtrap=numpy.zeros((len(compoundList),3*len(dfttypList)*len(typList)))\n", "dissocEnergyExtrap=numpy.zeros((len(compoundListMol),3*len(dfttypList)*len(typList)))\n", "dissocErrorExtrap=numpy.zeros((len(compoundListMol),3*len(dfttypList)*len(typList)))\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dft energy results \n", "typ=0\n", "for compound in range(len(compoundList)):\n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='gamessCasinoInt'\n", " jobRecord['compound']=compoundList[compound] \n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " result=DBdata['data'].find_one(**jobRecord)\n", "\n", " if result['status']=='Done':\n", " energy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['energy'])\n", " error[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['error'])\n", " variance[compound,dfttyp+len(dfttypList)*typ]=result['variance']\n", " else:\n", " energy[compound,dfttyp+len(dfttypList)*typ]=None\n", " error[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " variance[compound,dfttyp+len(dfttypList)*typ]=None\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#get emin energy results\n", "typ=1\n", "for compound in range(len(compoundList)):\n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='casino'\n", " jobRecord['qmctyp']='vmc'\n", " jobRecord['compound']=compoundList[compound]\n", " jobRecord['Nu']=4\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=2\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " for result in results:\n", " \n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue \n", "\n", " if energy[compound,dfttyp+len(dfttypList)*typ]!=0:\n", " sys.exit(\"something wrong here: two energies found for one entry.\")\n", " if result['status']=='Done':\n", " energy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['energy'])\n", " error[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['error'])\n", " variance[compound,dfttyp+len(dfttypList)*typ]=result['variance']\n", " else:\n", " energy[compound,dfttyp+len(dfttypList)*typ]=None\n", " error[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " variance[compound,dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get emin energy results qwalk\n", "typ=3\n", "for compound in range(len(compoundList)):\n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='qwalk'\n", " jobRecord['qmctyp']='vmc'\n", " jobRecord['compound']=compoundList[compound]\n", " jobRecord['Nu']=3\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=4\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " \n", "\n", " if energy[compound,dfttyp+len(dfttypList)*typ]!=0:\n", " sys.exit(\"something wrong here: two energies found for one entry.\")\n", " if result['status']=='Done':\n", " energy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['energy'])\n", " error[compound,dfttyp+len(dfttypList)*typ]=au2kcal(result['error'])\n", " variance[compound,dfttyp+len(dfttypList)*typ]=result['variance']\n", " else:\n", " energy[compound,dfttyp+len(dfttypList)*typ]=None\n", " error[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " variance[compound,dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dmc energy results extrapolated to tau=0 and at tau=[0.002,0.005,0.008]\n", "typ=2\n", "for compound in range(len(compoundList)):\n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='casino'\n", " jobRecord['qmctyp']='vmc_dmc'\n", " jobRecord['compound']=compoundList[compound]\n", " jobRecord['Nu']=4\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=2\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " resultsExtrap=[]\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " \n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", " \n", " if len(resultsExtrap)<2:\n", " energy[compound,dfttyp+len(dfttypList)*typ]=None\n", " error[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " else: #extrapolate to zero Time\n", "# print([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))])\n", "# print([resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))])\n", "# print([resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " [energy[compound,dfttyp+len(dfttypList)*typ], error[compound,dfttyp+len(dfttypList)*typ]]=\\\n", " au2kcal(extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))]))\n", " #non extrapolated results\n", " energyExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ):len(dtList)*(dfttyp+len(dfttypList)*typ)+len(dtList)]=None\n", " errorExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ):len(dtList)*(dfttyp+len(dfttypList)*typ)+len(dtList)]=None\n", " for i in range(len(resultsExtrap)):\n", " if resultsExtrap[i]['dt']==dtList[0]:\n", " dt=0\n", " elif resultsExtrap[i]['dt']==dtList[1]:\n", " dt=1\n", " elif resultsExtrap[i]['dt']==dtList[2]:\n", " dt=2\n", " energyExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ)+dt]=au2kcal(resultsExtrap[i]['energy'])\n", " errorExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ)+dt]=au2kcal(resultsExtrap[i]['error'])\n", " " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dmc energy results extrapolated to tau=0 and at tau=[0.002,0.005,0.008]\n", "typ=4\n", "for compound in range(len(compoundList)):\n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='qwalk'\n", " jobRecord['qmctyp']='vmc_dmc'\n", " jobRecord['compound']=compoundList[compound]\n", " jobRecord['Nu']=3\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=4\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " resultsExtrap=[]\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " \n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", " \n", " if len(resultsExtrap)<2:\n", " energy[compound,dfttyp+len(dfttypList)*typ]=None\n", " error[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " else: #extrapolate to zero Time\n", "# print([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))])\n", "# print([resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))])\n", "# print([resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " [energy[compound,dfttyp+len(dfttypList)*typ], error[compound,dfttyp+len(dfttypList)*typ]]=\\\n", " au2kcal(extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))]))\n", " #non extrapolated results\n", " energyExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ):len(dtList)*(dfttyp+len(dfttypList)*typ)+len(dtList)]=None\n", " errorExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ):len(dtList)*(dfttyp+len(dfttypList)*typ)+len(dtList)]=None\n", " for i in range(len(resultsExtrap)):\n", " if resultsExtrap[i]['dt']==dtList[0]:\n", " dt=0\n", " elif resultsExtrap[i]['dt']==dtList[1]:\n", " dt=1\n", " elif resultsExtrap[i]['dt']==dtList[2]:\n", " dt=2\n", " energyExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ)+dt]=au2kcal(resultsExtrap[i]['energy'])\n", " errorExtrap[compound,len(dtList)*(dfttyp+len(dfttypList)*typ)+dt]=au2kcal(resultsExtrap[i]['error'])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self._edgecolors == str('face'):\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAEBCAYAAACQWtgnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VPW9//HXF2LYISxVjCgBJUILwiUsBQLMEECRxSso\nWMtqey2tXBBaFPeBthTw2oCI2nrVIAK/Wq0gErQsmSC2LMVSxV4Ero65RvYSQDCQkO/vj5kcskwg\nCcnMkHk/H488mDNnmc8cTjLvOed7vl9jrUVEREREJJrVCncBIiIiIiLhplAsIiIiIlFPoVhERERE\nop5CsYiIiIhEPYViEREREYl6CsUiIiIiEvViwl0AgDFG/cKJiIiISEhYa03J5yIiFAOov2QRERER\nqW7GlMrDgJpPiIiIiIgoFIuIiIhcibxeL61btyYlJYW+ffvy8ssv4/P5qFWrFjt37gTg0KFDxMTE\nsHnzZgDWrFlDcnIyLpeL4cOHc+zYsWqprW/fvgC4XC4KCgqKzduxYweLFi2q8tc8d+4cP/rRjyq9\nfsQ0nyjkmTgRfL7KbyAhAU9aWtBZXq+XCRMmcNNNN3Hu3DkmTpxISkoKbdu2ZceOHSQlJXHo0CGu\nu+46Nm3aRL9+/VizZg3z588nJiaGRo0akZaWRvPmzStfXxFTp07l2WefLffyZ86cYfr06fzud7+r\nktcv6ic/+QmpqanUr1+/yrctIiISzfZu2wY5OZXfQFwciT17lnraGMOECROYM2cO+fn5jBkzhg4d\nOpCUlMTbb79NUlISq1evJikpCYDs7GxSU1PZuHEjderUISsri7y8vMrXVQ7Bmio8//zzpKamVvlr\nxcbG0qxZM/bv389NN91U4fUjLhTj8+HJzKz06p6LzIu0g6cigRhgxYoVjBgxospev6gRI0awcuXK\ny/qGJSIiIkHk5JB47lylV997kUBdeE9WTEwMM2bMYPHixbRv3549e/YAsGHDBgYOHIi1lvT0dCZN\nmkSdOnUAuOGGG4Juc+vWrdx///20bdsWn8/Hrl27uP3220lPT+exxx7jzJkzpKamMmTIENatW8fo\n0aM5dOgQxhhWrVpFXFxcqRpXrFjBjh07SE1NJTs721mmU6dOtG/fnn/+858sXbqUbt26MWfOHN59\n912uuuoqli9fTkJCQtDllixZwuuvv05BQQGLFy+mR48eDBgwgDVr1jB9+vQK7+eoaz5xuQdPy5Yt\nS21z9+7d9O7dG5fLxeLFi8nPz2fgwIEkJyczYsQI8vLy2L9/P7169WLAgAHMmzcPKH5p4cEHH6RL\nly68+OKLAKxdu5akpCS6devGunXrAEhPT8flclVonWDLbdmyhd69e9OzZ09+//vfO8utXbu2ane2\niIiIhEzLli05evQoAO3bt2fbtm3Uq1eP2NhYAA4fPsw111xzye3MnTuX9PR0li9fzldffQVAYmIi\ne/fuJSsrixMnTvD1119z/fXXA/Daa6+RmZnJuHHjWLlyZantrVixgu3bt5Oamsrhw4eLheYjR46w\nfPlyXnrpJZYtW0Z2djZbtmxh+/btLFiwgF/96ldBlzt8+DDr1q3jr3/9K+vWrWP27NkAtGnTxsl0\nFRV1obioqjp4Zs2aRVpaGl6vlylTphATE0N6ejpbtmyhc+fObNiwgc2bNzNlyhQ2bdrErFmziq1v\njGHSpEls376dZcuWATBnzhwyMzPJyMjgySefBODYsWM0aNCgQusEW+6JJ57gz3/+M1u3buUPf/gD\n586do0GDBtXWrkhERESq34EDB2jRogUAd9xxB5MnT2b48OHO/KuvvpqDBw9ecjs5OTm0atWKBg0a\nkJiYCECfPn3IzMwkNjaWevXqsX79evr06cP58+eZPn06breb5557zslVhay1LFiwAI/HA5RuTnHT\nTTcRGxtLfHw8p06dwufz0aVLFwCSkpL4/PPPgy63b98+du/ejdvtZtSoUZw5c6ZyO62IqA7FVXXw\nHDt2zDlojDGcPHmSiRMn4na7efPNNzl69Ch33303H330EWPHjuW9994rtY2OHTsSGxvrBPLatWvT\nsGFDGjVq5DxX2XVKLvfxxx8zfPhwBgwYwJEjRzhy5Eh5dpeIiIhEqPz8fBYtWsTUqVMB6N69O926\ndWPIkCHOMkOHDiUtLY3c3FwAsrKyguacJk2akJ2dzenTp9m3bx8AvXr1YsmSJXTt2pUePXqwcOFC\nevfuzc6dOzl//jwZGRk88MADpW6qM8awdOlSxo4dS25uLi1atCCnSHOQoiHZWktCQgJ///vfAfjb\n3/5G27Ztgy5344030rVrVzIyMsjIyGDDhg0AfP7557Rv375S+zDy2hSHSOHBM2PGDJ5//vliB8+n\nn34K+A+esWPHMnr0aOrWrUtWVhaxsbGlmlA0b96cffv20a5dOwoKCnj//ffp2LEjK1as4PHHH6eg\n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\nERERkaj3/wE3RU85hgNZeQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot DMC energy results results vs min DMC energy \n", "typForPlotList=[2,4]\n", "molPerPlot=min(10, len(compoundList))\n", "colors=['r','g','b','y','c','m']\n", "opac=[1,0.3,0.3]\n", "error_config = {'ecolor': '0.0', 'capsize': 2}\n", "barwidth=1/(len(dfttypList)*len(typForPlotList)*1.0)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "j=0\n", "for i in range(len(compoundList)):\n", " if compoundList[i] in ['H', 'O','S', 'Cl']:\n", " continue\n", " if j%molPerPlot==0:\n", " mycompoundList=[]\n", " fig, ax = plt.subplots(figsize=(12, 3))\n", " mycompoundList.append(compoundList[i])\n", " for tfp in range(len(typForPlotList)):\n", " typForPlot=typForPlotList[tfp]\n", " for dft in [0,1,2,3]:\n", " #print(\"{} {}\".format(compoundList[i], dfttypList[dft]))\n", " #print(\"{}+/-{}\".format(energy[i,typForPlot*(len(dfttypList))+dft]-min([nanmin(energy[i,tt*(len(dfttypList))+0:tt*(len(dfttypList))+5]) for tt in typForPlotList]), error[i,typForPlot*(len(dfttypList))+dft]))\n", " if j==0:\n", " rects=plt.bar(j%molPerPlot+(len(dfttypList)*tfp+dft)*barwidth,\n", " (energy[i,typForPlot*(len(dfttypList))+dft]-min([nanmin(energy[i,tt*(len(dfttypList))+0:tt*(len(dfttypList))+5]) for tt in typForPlotList])), \n", " barwidth,\n", " label=typList[typForPlot]+\"(\"+dfttypList[dft]+\")\",\n", " color=colors[dft],\n", " alpha=opac[tfp],\n", " linewidth=0.5,\n", " )\n", " else:\n", " rects=plt.bar(j%molPerPlot+(len(dfttypList)*tfp+dft)*barwidth,\n", " (energy[i,typForPlot*(len(dfttypList))+dft]-min([nanmin(energy[i,tt*(len(dfttypList))+0:tt*(len(dfttypList))+5]) for tt in typForPlotList])), \n", " barwidth,\n", " color=colors[dft],\n", " alpha=opac[tfp],\n", " linewidth=0.5,\n", " )\n", " errorb=plt.errorbar(j%molPerPlot+(len(dfttypList)*tfp+dft)*barwidth+barwidth/2.0, \n", " (energy[i,typForPlot*(len(dfttypList))+dft]-min([nanmin(energy[i,tt*(len(dfttypList))+0:tt*(len(dfttypList))+5]) for tt in typForPlotList])),\n", " yerr=error[i,typForPlot*(len(dfttypList))+dft],\n", " ecolor='k',\n", " elinewidth=0.5, capsize=2\n", " )\n", " plt.xticks(index+0.4, mycompoundList, rotation=45, ha='right', fontsize=8) \n", " plt.ylabel(r'$\\mathrm{\\mathsf{E_{DMC}-E_{DMC, min}}}$', fontsize=8)#, fontsize=12) \n", " if j" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot DMC energy results for casino vs DMC energy for qwalk for DMC(B3LYP)\n", "typForPlotList=[2]\n", "RefTypForPlotList=[4]\n", "molPerPlot=min(33, len(compoundList))\n", "colors=['r','g','b','y','c','m']\n", "opac=[1,0.3,0.3]\n", "error_config = {'ecolor': '0.0', 'capsize': 2}\n", "barwidth=1/(len(typForPlotList)*1.4)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "j=0\n", "for i in range(len(compoundList)):\n", " #if compoundList[i] in ['H', 'O','S', 'Cl']:\n", " # continue\n", " if j%molPerPlot==0:\n", " mycompoundList=[]\n", " fig, ax = plt.subplots(figsize=(12, 3))\n", " mycompoundList.append(compoundList[i])\n", " for tfp in range(len(typForPlotList)):\n", " typForPlot=typForPlotList[tfp]\n", " RefTypForPlot=RefTypForPlotList[tfp]\n", " for dft in [0,1,2,3]:\n", " #print(\"{} {}\".format(compoundList[i], dfttypList[dft]))\n", " #print(\"{}+/-{}\".format(energy[i,typForPlot*(len(dfttypList))+dft]-min([nanmin(energy[i,tt*(len(dfttypList))+0:tt*(len(dfttypList))+5]) for tt in typForPlotList]), error[i,typForPlot*(len(dfttypList))+dft]))\n", " if j==0:\n", " rects=plt.bar(j%molPerPlot+(len(dfttypList)*tfp)*barwidth,\n", " (energy[i,typForPlot*(len(dfttypList))+dft]-energy[i,RefTypForPlot*(len(dfttypList))+dft]), \n", " barwidth,\n", " label=typList[typForPlot]+\"(\"+dfttypList[dft]+\")\",\n", " color=colors[dft],\n", " alpha=opac[tfp],\n", " linewidth=0.5,\n", " )\n", " else:\n", " rects=plt.bar(j%molPerPlot+(len(dfttypList)*tfp)*barwidth,\n", " (energy[i,typForPlot*(len(dfttypList))+dft]-energy[i,RefTypForPlot*(len(dfttypList))+dft]), \n", " barwidth,\n", " color=colors[dft],\n", " alpha=opac[tfp],\n", " linewidth=0.5,\n", " )\n", " errorb=plt.errorbar(j%molPerPlot+(len(dfttypList)*tfp)*barwidth+barwidth/2.0, \n", " (energy[i,typForPlot*(len(dfttypList))+dft]-energy[i,RefTypForPlot*(len(dfttypList))+dft]),\n", " yerr=error[i,typForPlot*(len(dfttypList))+dft]+error[i,RefTypForPlot*(len(dfttypList))+dft],\n", " ecolor='k',\n", " elinewidth=0.5, capsize=2\n", " )\n", " plt.xticks(index+0.4, mycompoundList, rotation=45, ha='right', fontsize=8) \n", " plt.ylabel(r'$\\mathrm{\\mathsf{E_{DMC}^{casino}-E_{DMC}^{qwalk}}}$', fontsize=8)#, fontsize=12) \n", " if j" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot ratio of correl in emin, dmc for casino\n", "typemin=1\n", "typdmc=2\n", "molPerPlot=min(33, len(compoundList))\n", "colors=['r','g','b','y','c','m']\n", "opac=[1,0.3,0.3]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(len(dfttypList)*1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for i in range(int(ceil(float(len(compoundList))/molPerPlot))):\n", " a=i*molPerPlot\n", " b=min((i+1)*molPerPlot, len(compoundList))\n", " fig, ax = plt.subplots(figsize=(12, 3))\n", " mycompoundList=[]\n", " for j in range(len(dfttypList)):\n", " shift=0\n", " first=1\n", " for ind in range(b-a):\n", " if compoundList[a+ind]in ['H', 'O','S', 'Cl']:\n", " shift+=-1\n", " continue\n", " if j==0:\n", " mycompoundList.append(compoundList[a+ind])\n", " if first:\n", " rects=plt.bar(ind+shift+j*barwidth,\n", " (energy[a+ind,typemin*(len(dfttypList))+j]-energy[a+ind,0])/(energy[a+ind,typdmc*(len(dfttypList))+j]-energy[a+ind,0]), \n", " barwidth,\n", " label=typList[i]+\"_\"+dfttypList[j],\n", " color=colors[j],\n", " alpha=opac[i])\n", " first=0\n", " else:\n", " rects=plt.bar(ind+shift+j*barwidth,\n", " (energy[a+ind,typemin*(len(dfttypList))+j]-energy[a+ind,0])/(energy[a+ind,typdmc*(len(dfttypList))+j]-energy[a+ind,0]), \n", " barwidth,\n", " color=colors[j],\n", " alpha=opac[i]) \n", " plt.axhline(0.9)\n", " plt.axhline(0.85, linestyle='dashed')\n", " plt.axhline(0.95, linestyle='dashed')\n", " plt.xticks(index+0.4, mycompoundList, rotation=45, ha='right')\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'${\\frac{E_\\mathrm{VMC}-E_\\mathrm{HF}}{E_\\mathrm{DMC}-E_\\mathrm{HF}}}$', fontsize=20) \n", " plt.title('Ratio of correlation in emin compared to dmc') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1))#, prop={'size':10})\n", " plt.ylim([0,1])\n", " plt.autoscale(enable=True, axis=u'both', tight=True)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nd+/erFq1CoBrrrmGyspKKisr6dOnT5viZiYXXnghlZWVfPjDH6Z3797MmDGj9lxNXz169OCf/umf\nmDJlymaL1jz55JO1uVRWVnLggQe2KZ+WsNCTJEmStF1buXIlPXv2BAqLr1RVVVFVVcXy5cvbFDci\nmD59em2sO+64o7Z4jIjavt566y0WLFjAxIkTmTt3bu31Q4cOrc2lqqqK5557rk35tISFniRJkqTt\n1uLFi1myZAnDhw8HOu65uA996EMMGzZss0KvI1noSZIkSdpu1BRyGzZsYN68eYwePZqxY8cyZMiQ\nkhR5jcXMzM3OPf/88zz66KMMHjy43XNoDffRkyRJktQ8kzs6ARg1ahQVFRVUVFQwaNAgLrroIiZM\nmAAUplNuaWP3lm783lj7iOC73/0u3//+9wHo1q0bp59+Oueff37t+SeeeILu3btvdt1DDz3Exz/+\n8Rbl0Brh7vObi4gE74kkSZJKKcjMllUcW1FEpHXCtq+48meDvyOnbkqSJElSmbHQkyRJkrTD6tat\nG927d3/f67HHHuvo1NrEqZv1OHVTkiRJpefUTbWdUzclSZIkaQdioSdJkiRJZcZCT5IkSZLKjIWe\nJEmSJJWZrVLoRcTGrdGPJEmSJAkqtlI/2+yKQpIkSZK2LKL0f6V3pc/206oRvYiYExFfiYhjI6Ky\nLQm0ZyxJkiRJpZQlfG3ZgAED6NKlCz169KBXr14MGzaMG2+8sbZAPOuss+jcufNm++FNmTKl9n23\nbt3Yaaedaj/36NGDpUuXNtrfiBEj2G233ejevTtdu3Zl6NChLFiwoPb87NmzGThwID169GD33Xfn\n+OOP56WXXtos39/85je1n8844wy+9KUvbdbHww8/TO/evXn99deZPHkynTp1qu3vE5/4BA8//HCz\n7k19rZ26+efM/EFm/goYHhEnRMTfbwOxJEmSJJWpiGDu3LmsWbOGZcuWMWXKFKZNm8Y555xTe/6y\nyy6jurq69jVp0qTa9wsXLgRg9erVVFdXs2bNGvr169dkfzfccEPt9UcffTSnn3567fnhw4fz+OOP\ns2bNGl599VX22GMP/vEf/3Gz6+uOhF5//fXce++9PPDAAwCsX7+ef/iHf2DatGnstddeRARjxoyh\nurqa1atXM3LkSE4++WQ2bdrU4nvV2kLvuTrvfw18vvhPImJQB8aSJEmStAOoqKhg5MiRzJkzh1mz\n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\njAxli6nqQiEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot ratio of correl in emin, dmc for qwalk\n", "typemin=3\n", "typdmc=4\n", "molPerPlot=min(33, len(compoundList))\n", "colors=['r','g','b','y','c','m']\n", "opac=[1,0.3,0.3]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(len(dfttypList)*1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for i in range(int(ceil(float(len(compoundList))/molPerPlot))):\n", " a=i*molPerPlot\n", " b=min((i+1)*molPerPlot, len(compoundList))\n", " fig, ax = plt.subplots(figsize=(12, 3))\n", " mycompoundList=[]\n", " for j in range(len(dfttypList)):\n", " shift=0\n", " first=1\n", " for ind in range(b-a):\n", " if compoundList[a+ind]in ['H', 'O','S', 'Cl']:\n", " shift+=-1\n", " continue\n", " if j==0:\n", " mycompoundList.append(compoundList[a+ind])\n", " if first:\n", " rects=plt.bar(ind+shift+j*barwidth,\n", " (energy[a+ind,typemin*(len(dfttypList))+j]-energy[a+ind,0])/(energy[a+ind,typdmc*(len(dfttypList))+j]-energy[a+ind,0]), \n", " barwidth,\n", " label=typList[i]+\"_\"+dfttypList[j],\n", " color=colors[j],\n", " alpha=opac[i])\n", " first=0\n", " else:\n", " rects=plt.bar(ind+shift+j*barwidth,\n", " (energy[a+ind,typemin*(len(dfttypList))+j]-energy[a+ind,0])/(energy[a+ind,typdmc*(len(dfttypList))+j]-energy[a+ind,0]), \n", " barwidth,\n", " color=colors[j],\n", " alpha=opac[i]) \n", " plt.axhline(0.9)\n", " plt.axhline(0.85, linestyle='dashed')\n", " plt.axhline(0.95, linestyle='dashed')\n", " plt.xticks(index+0.4, mycompoundList, rotation=45, ha='right')\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'${\\frac{E_\\mathrm{VMC}-E_\\mathrm{HF}}{E_\\mathrm{DMC}-E_\\mathrm{HF}}}$', fontsize=20) \n", " plt.title('Ratio of correlation in emin compared to dmc') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1))#, prop={'size':10})\n", " plt.ylim([0,1])\n", " plt.autoscale(enable=True, axis=u'both', tight=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dissocE for DFT\n", "typ=0\n", "for compound in range(len(compoundListMol)):\n", " \n", " atoms=re.findall('[A-Z][^A-Z]*', compoundListMol[compound])\n", " \n", " experimentMol=DB3d['dimers'].find_one(compound=compoundListMol[compound])\n", " dissocEnergyExp[compound]=experimentMol['De(exp)[kcal/mol]']\n", " experimentAtom=[]\n", " for i in range(len(atoms)):\n", " experimentAtom.append(DB3d['atoms'].find_one(atom=atoms[i]))\n", " \n", " \n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='gamessCasinoInt'\n", " jobRecord['compound']=compoundListMol[compound] \n", "\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " resultMol=DBdata['data'].find_one(**jobRecord)\n", " \n", " resultAtom=[]\n", " for i in range(len(atoms)):\n", " jobRecord['compound']=atoms[i]\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " resultAtom.append(DBdata['data'].find_one(**jobRecord))\n", " if resultMol['status']=='Done' and all( [resultAtom[i]['status']=='Done' for i in range(len(atoms))]):\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMol['energy']+sum(resultAtom[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=0.0\n", " else:\n", " dissocEnergy[compound, dfttyp+len(dfttypList)*typ]=None\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=0.0\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#get dissocE for emin for casino\n", "typ=1\n", "for compound in range(len(compoundListMol)):\n", " atoms=re.findall('[A-Z][^A-Z]*', compoundListMol[compound])\n", " \n", " experimentMol=DB3d['dimers'].find_one(compound=compoundListMol[compound])\n", " dissocEnergyExp[compound]=experimentMol['De(exp)[kcal/mol]']\n", " experimentAtom=[]\n", " for i in range(len(atoms)):\n", " experimentAtom.append(DB3d['atoms'].find_one(atom=atoms[i]))\n", " \n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='casino'\n", " jobRecord['qmctyp']='vmc'\n", " jobRecord['compound']=compoundListMol[compound]\n", " jobRecord['Nu']=4\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=2\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultMol=result\n", " \n", " resultAtom=[]\n", " for i in range(len(atoms)):\n", " jobRecord['compound']=atoms[i]\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultAtom.append(result)\n", " \n", " if resultMol['status']=='Done' and all( [resultAtom[i]['status']=='Done' for i in range(len(atoms))]):\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMol['energy']+sum(resultAtom[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMol['error']*resultMol['error']+sum(resultAtom[i]['error']*resultAtom[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " dissocEnergy[compound, dfttyp+len(dfttypList)*typ]=None\n", " dissocError[compound, dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n", "11\n", "12\n", "13\n", "14\n", "15\n", "16\n", "17\n", "18\n", "19\n" ] } ], "source": [ "#get dissocE for emin for qwalk\n", "typ=3\n", "for compound in range(len(compoundListMol)):\n", " print(compound)\n", " atoms=re.findall('[A-Z][^A-Z]*', compoundListMol[compound])\n", " \n", " experimentMol=DB3d['dimers'].find_one(compound=compoundListMol[compound])\n", " dissocEnergyExp[compound]=experimentMol['De(exp)[kcal/mol]']\n", " experimentAtom=[]\n", " for i in range(len(atoms)):\n", " experimentAtom.append(DB3d['atoms'].find_one(atom=atoms[i]))\n", " \n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='qwalk'\n", " jobRecord['qmctyp']='vmc'\n", " jobRecord['compound']=compoundListMol[compound]\n", " jobRecord['Nu']=3\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=4\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultMol=result\n", " \n", " resultAtom=[]\n", " for i in range(len(atoms)):\n", " jobRecord['compound']=atoms[i]\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultAtom.append(result)\n", " \n", " if resultMol['status']=='Done' and all( [resultAtom[i]['status']=='Done' for i in range(len(resultAtom))]) and len(resultAtom)==2:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMol['energy']+sum(resultAtom[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMol['error']*resultMol['error']+sum(resultAtom[i]['error']*resultAtom[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " dissocEnergy[compound, dfttyp+len(dfttypList)*typ]=None\n", " dissocError[compound, dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dissocE for dmc (zero tau extrap) for casino\n", "typ=2\n", "for compound in range(len(compoundListMol)):\n", " atoms=re.findall('[A-Z][^A-Z]*', compoundListMol[compound])\n", " \n", " experimentMol=DB3d['dimers'].find_one(compound=compoundListMol[compound])\n", " dissocEnergyExp[compound]=experimentMol['De(exp)[kcal/mol]']\n", " experimentAtom=[]\n", " for i in range(len(atoms)):\n", " experimentAtom.append(DB3d['atoms'].find_one(atom=atoms[i]))\n", " \n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='casino'\n", " jobRecord['qmctyp']='vmc_dmc'\n", " jobRecord['compound']=compoundListMol[compound]\n", " jobRecord['Nu']=4\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=2\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " resultsExtrap=[]\n", " resultMol={}\n", " resultMolQuad={}\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", "\n", " if len(resultsExtrap)!=3:\n", " resultMol['status']='Error'\n", " else: #extrapolate to zero Time\n", " [resultMol['energy'], resultMol['error']]=\\\n", " extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultMol['status']='Done'\n", " if len(resultsExtrap)<3:\n", " resultMolQuad['status']='Error'\n", " else:\n", " [resultMolQuad['energy'], resultMolQuad['error']]=\\\n", " extapolateTauQuad([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultMolQuad['status']='Done'\n", " \n", " resultAtom=[]\n", " resultAtomQuad=[]\n", " for i in range(len(atoms)):\n", " resultsExtrap=[]\n", " resultAtomI={}\n", " resultAtomIQuad={}\n", " jobRecord['compound']=atoms[i]\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", "\n", " if len(resultsExtrap)!=3:\n", " resultAtomI['status']='Error'\n", " resultAtom.append(resultAtomI)\n", " else: #extrapolate to zero Time\n", " [resultAtomI['energy'], resultAtomI['error']]=\\\n", " extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultAtomI['status']='Done' \n", " resultAtom.append(resultAtomI)\n", " if len(resultsExtrap)<3:\n", " resultAtomIQuad['status']='Error'\n", " resultAtomQuad.append(resultAtomIQuad)\n", " else:\n", " [resultAtomIQuad['energy'], resultAtomIQuad['error']]=\\\n", " extapolateTauQuad([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultAtomIQuad['status']='Done' \n", " resultAtomQuad.append(resultAtomIQuad)\n", " #print(compoundListMol[compound])\n", " if resultMol['status']=='Done' and all( [resultAtom[i]['status']=='Done' for i in range(len(atoms))]):\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMol['energy']+sum(resultAtom[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMol['error']*resultMol['error']+sum(resultAtom[i]['error']*resultAtom[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " #print(\"{} {} {}\".format(resultMol['status'], resultAtom[0]['status'], resultAtom[1]['status']))\n", " dissocEnergy[compound, dfttyp+len(dfttypList)*typ]=None\n", " dissocError[compound, dfttyp+len(dfttypList)*typ]=None\n", " if resultMolQuad['status']=='Done' and all( [resultAtomQuad[i]['status']=='Done' for i in range(len(atoms))]): \n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMolQuad['energy']+sum(resultAtomQuad[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocErrorQuad[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMolQuad['error']*resultMolQuad['error']+sum(resultAtomQuad[i]['error']*resultAtomQuad[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]=None\n", " dissocErrorQuad[compound,dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#get dissocE for dmc (zero tau extrap) for qwalk\n", "typ=4\n", "for compound in range(len(compoundListMol)):\n", " atoms=re.findall('[A-Z][^A-Z]*', compoundListMol[compound])\n", " \n", " experimentMol=DB3d['dimers'].find_one(compound=compoundListMol[compound])\n", " dissocEnergyExp[compound]=experimentMol['De(exp)[kcal/mol]']\n", " experimentAtom=[]\n", " for i in range(len(atoms)):\n", " experimentAtom.append(DB3d['atoms'].find_one(atom=atoms[i]))\n", " \n", " for dfttyp in range(len(dfttypList)):\n", " jobRecord={}\n", " jobRecord['dfttyp']=dfttypList[dfttyp]\n", " jobRecord['scftyp']='UHF'\n", " jobRecord['basisXMLFiles']='[\"BFD_Library_noPseudoH.xml\", \"aug-cc-pVTZ-DK_Diffuse.xml\"]'\n", " jobRecord['basisNames']='[\"vtz\", \"aug-cc-pVTZ-DK_Diffuse\"]'\n", " jobRecord['executingProgram']='qwalk'\n", " jobRecord['qmctyp']='vmc_dmc'\n", " jobRecord['compound']=compoundListMol[compound]\n", " jobRecord['Nu']=3\n", " jobRecord['Nchi']=4\n", " jobRecord['Nf']=4\n", " jobRecord['slaterGeneratingCode']='gamessCasinoInt'\n", "\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", "\n", " resultsExtrap=[]\n", " resultMol={}\n", " resultMolQuad={}\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", "\n", " if len(resultsExtrap)!=3:\n", " resultMol['status']='Error'\n", " else: #extrapolate to zero Time\n", " [resultMol['energy'], resultMol['error']]=\\\n", " extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultMol['status']='Done'\n", " if len(resultsExtrap)<3:\n", " resultMolQuad['status']='Error'\n", " else:\n", " [resultMolQuad['energy'], resultMolQuad['error']]=\\\n", " extapolateTauQuad([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultMolQuad['status']='Done'\n", " \n", " resultAtom=[]\n", " resultAtomQuad=[]\n", " for i in range(len(atoms)):\n", " resultsExtrap=[]\n", " resultAtomI={}\n", " resultAtomIQuad={}\n", " jobRecord['compound']=atoms[i]\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " results=DBdata['data'].find(**jobRecord)\n", " for result in results:\n", " if result['jastrowFrom']==-1:\n", " continue\n", " elif '_true' in result['symmetry']:\n", " continue\n", " else:\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom=DBdata['data'].find_one(id=result['jastrowFrom'])\n", " if jastrowFrom['qmctyp']!='emin':\n", " continue\n", " with dataset.connect('sqlite:///'+jobDB) as DBdata:\n", " jastrowFrom2=DBdata['data'].find_one(id=jastrowFrom['jastrowFrom'])\n", " if jastrowFrom2['qmctyp']!='varmin':\n", " continue\n", " resultsExtrap.append(result)\n", " for i in reversed(range(len(resultsExtrap))):\n", " if not resultsExtrap[i]['status'] in [\"Done\",\"LargeErrorbar2\", \"BadReblock\"]:\n", " resultsExtrap.pop(i)\n", "\n", " if len(resultsExtrap)!=3:\n", " resultAtomI['status']='Error'\n", " resultAtom.append(resultAtomI)\n", " else: #extrapolate to zero Time\n", " [resultAtomI['energy'], resultAtomI['error']]=\\\n", " extapolateTau([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultAtomI['status']='Done' \n", " resultAtom.append(resultAtomI)\n", " if len(resultsExtrap)<3:\n", " resultAtomIQuad['status']='Error'\n", " resultAtomQuad.append(resultAtomIQuad)\n", " else:\n", " [resultAtomIQuad['energy'], resultAtomIQuad['error']]=\\\n", " extapolateTauQuad([resultsExtrap[i]['dt'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['energy'] for i in range(len(resultsExtrap))],\n", " [resultsExtrap[i]['error'] for i in range(len(resultsExtrap))])\n", " resultAtomIQuad['status']='Done' \n", " resultAtomQuad.append(resultAtomIQuad)\n", " #print(compoundListMol[compound])\n", " if resultMol['status']=='Done' and all( [resultAtom[i]['status']=='Done' for i in range(len(atoms))]):\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMol['energy']+sum(resultAtom[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergy[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocError[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMol['error']*resultMol['error']+sum(resultAtom[i]['error']*resultAtom[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " #print(\"{} {} {}\".format(resultMol['status'], resultAtom[0]['status'], resultAtom[1]['status']))\n", " dissocEnergy[compound, dfttyp+len(dfttypList)*typ]=None\n", " dissocError[compound, dfttyp+len(dfttypList)*typ]=None\n", " if resultMolQuad['status']=='Done' and all( [resultAtomQuad[i]['status']=='Done' for i in range(len(atoms))]): \n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]=au2kcal(-resultMolQuad['energy']+sum(resultAtomQuad[i]['energy'] for i in range(len(atoms))))\n", " #correct energy for SO coupling:\n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]+=(-experimentMol['ESo(fromCAS)[kcal/mol]']+\n", " sum(experimentAtom[i]['E_SO [kcal/mol]'] for i in range(len(atoms))))\n", " dissocErrorQuad[compound,dfttyp+len(dfttypList)*typ]=au2kcal(sqrt(resultMolQuad['error']*resultMolQuad['error']+sum(resultAtomQuad[i]['error']*resultAtomQuad[i]['error'] for i in range(len(atoms)))))\n", " else:\n", " dissocEnergyQuad[compound,dfttyp+len(dfttypList)*typ]=None\n", " dissocErrorQuad[compound,dfttyp+len(dfttypList)*typ]=None" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nF5fLRXR0NL169WLu3LnOWYzp6en4+PiwaNEi5/nt27fj4+PDnDlznLTZs2fTo0cPoqKiiIqK8ni+\nLtx9990VzhysialTp7Jx40bAPR25a9euREVFER4ezoIFC5znFi9eTNeuXenevTu/+c1vnPQpU6bg\ncrlwuVx06dKFX/ziF5XWk5GRQXR0NH5+fnz00UdO+uHDh7nrrrtq1OYajSAaY9KAb4BvgfestWfL\n3P434P/DvYNoDhd2FhURERERkUaoirPba+VSR/21aNGC7OxsAAoKChg9ejQnTpxw9gqJiIjggw8+\nYPx494qxZcuW0bNnTyfwnDVrFps3b2bLli0EBARQWFjIypUrvfcGKrFmzZpa5y0sLCQjI4PZs2cD\n7oA8NTWV6Ohojh8/zk033cSjjz5KQUEBzz33HDk5OQQFBTF27Fg++eQThg8fzty5c53yFi5cyPbt\n2yutKzQ0lMWLFzt1lQoODuYXv/gF27ZtIzo6ulrtrukIYjvgBWvtW6XBoTGmkzFmMtDfWvumtXaC\ntfYNa+1PNSxbRERERESuAq1ateLtt99m4cKFTlpoaCjnzp3jxx9/xFrL2rVrGTZsmDPKOG/ePN54\n4w0CAgIACAwM5OGHqz44YfPmzfTu3ZuoqCj69OnDqVOnyMvLIzY2FpfLRUREhDO6t3//fgYOHIjL\n5SIyMpJNmzYBEBYWxrFjx8jLy6Nbt25MmDCBiIgI4uPjOXXqFABbt2518g0bNoxjx9xHsqelpTFk\nyBCPNpW+lxMnThAYGEizZs349ttv6datG0FBQQAMHjyYVatWVXg/qampPPTQQ5W+19DQUCIjI/Hx\nqRjeJSQksGzZsir7qbyaBohrrbVnyiZYa/dZa+cDNxljNtWwPBERERERuQqFhITg5+fHkSNHnLT7\n7ruPFStWkJmZSXR0NP7+/oB7qqS1lpCQkGqVfe7cOR588EEWLVrE9u3bycjIoHnz5rRr147169eT\nnZ3NypUrmThxIuAOvoYPH052dja5ubm4XC7A85SGb7/9luTkZHbs2EFwcDArVqwAYMyYMbz++uvk\n5ubSv39/nn/+eQA2bdpE7969nfzWWpKSkujZsyfdunXjhRdewBhDly5d2LlzJ3v27KGoqIi//OUv\n7N271+P97Nmzh7y8PG677baadjN9+/YlIyOj2s/XdJOacwDGmDBgHNAC+Buwzlq72BijDWNERERE\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot dissoc energy results\n", "typForPlot=[0,2,4]\n", "molPerPlot=min(11, len(compoundListMol))\n", "colors=['r','g','b','y','c','m']\n", "edgecolors=['r','g','b','y','c','m']\n", "opac=[0.3,1,0.5]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(4*len(typForPlot)*1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for l in range(int(ceil(float(len(compoundListMol))/molPerPlot))):#range(int(len(compoundListMol)/molPerPlot)+1):\n", " a=l*(molPerPlot-1)\n", " b=min((l+1)*(molPerPlot-1), len(compoundListMol))\n", " fig, ax = plt.subplots(figsize=(13, 6))\n", " for i in range(len(typForPlot)):\n", " for j in range(4):\n", " if i==0 and j==0:\n", " continue\n", " rects=plt.bar(index[0:b-a]+(i*(4)+j)*barwidth+0.1*4*len(typForPlot)*barwidth*i,\n", " (dissocEnergy[a:b,typForPlot[i]*(len(dfttypList))+j]-dissocEnergyExp[a:b]), \n", " barwidth,\n", " label=typList[typForPlot[i]]+\"(\"+dfttypList[j]+\")\",\n", " color=colors[j],\n", " alpha=opac[i],\n", " linewidth=1,\n", " yerr=dissocError[a:b,typForPlot[i]*(len(dfttypList))+j],\n", " error_kw=error_config,)\n", " for k in range(b-a):\n", " plt.axvline(x=k, color='0.85')\n", " plt.xticks(index+0.4, compoundListMol[a:b])\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'$E_\\mathrm{dissoc.}-E_\\mathrm{dissoc.}^\\mathrm{exp}$', fontsize=14) \n", " if l==0:\n", " #plt.title('dissoc. energies grouped by molecules and methods') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1), prop={'size':10})#(loc='best',prop={'size':8})\n", " plt.autoscale( enable=True,axis=u'both', tight=True)\n", " ax.text(real(molPerPlot-4)/2.0, 15, \"overbinding\", fontsize=10,color='green',fontweight='bold')\n", " ax.text(real(molPerPlot-4)/2.0, -15, \"underbinding\", fontsize=10,color='green',fontweight='bold')\n", " ylim([-12,12])\n", " xlim([0,molPerPlot-1])\n", " fig.set_size_inches(12,2.5)\n", " #plt.savefig('dissocE'+str(l)+'.svg', format='svg', dpi=300)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nOxwORwLy/28O6bauQgEwAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot difference in dissoc energy results casino vs. qwalk for DMC(B3LYP)\n", "typForPlot=[2]\n", "RefTypForPlot=[4]\n", "molPerPlot=min(20, len(compoundListMol))\n", "colors=['r','g','b','y','c','m']\n", "edgecolors=['r','g','b','y','c','m']\n", "opac=[0.3,1,0.5]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for l in range(int(ceil(float(len(compoundListMol))/molPerPlot))):#range(int(len(compoundListMol)/molPerPlot)+1):\n", " a=l*(molPerPlot-1)\n", " b=min((l+1)*(molPerPlot-1)+1, len(compoundListMol))\n", " fig, ax = plt.subplots(figsize=(13, 6))\n", " for i in range(len(typForPlot)):\n", " for j in [2]:\n", " if i==0 and j==0:\n", " continue\n", " rects=plt.bar(index[0:b-a]+(i*(4))*barwidth+0.1*4*len(typForPlot)*barwidth*i,\n", " (dissocEnergy[a:b,typForPlot[i]*(len(dfttypList))+j]-dissocEnergy[a:b,RefTypForPlot[i]*(len(dfttypList))+j]), \n", " barwidth,\n", " label=typList[typForPlot[i]]+\"(\"+dfttypList[j]+\")\",\n", " color=colors[j],\n", " alpha=opac[i],\n", " linewidth=1,\n", " yerr=sqrt(dissocError[a:b,typForPlot[i]*(len(dfttypList))+j]**2+dissocError[a:b,RefTypForPlot[i]*(len(dfttypList))+j]**2),\n", " error_kw=error_config,)\n", " for k in range(b-a):\n", " plt.axvline(x=k, color='0.85')\n", " plt.xticks(index+0.4, compoundListMol[a:b], fontsize=8)\n", " plt.yticks(fontsize=8)\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'$\\mathrm{\\mathsf{E_{dissoc.}^{casino}-E_{dissoc.}^{qwalk}}}$', fontsize=8) \n", " if l==0:\n", " #plt.title('dissoc. energies grouped by molecules and methods') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1), prop={'size':8})#(loc='best',prop={'size':8})\n", " plt.autoscale( enable=True,axis=u'both', tight=True)\n", " ylim([-2.6,2.6])\n", " xlim([0,molPerPlot])\n", " #fig.set_size_inches(12,2.5)\n", " fig.set_size_inches(3.4,0.7)\n", " plt.savefig('dissocE_casinoVsQwalk'+str(l)+'.svg', format='svg', dpi=600)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nA7K1H31FG2yOAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot dissoc energy results casino vs qwalk for B3LYP\n", "typForPlot=[2,4]\n", "molPerPlot=min(11, len(compoundListMol))\n", "colors=['r','g','b','y','c','m']\n", "edgecolors=['r','g','b','y','c','m']\n", "opac=[1,0.5]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(len(typForPlot)*1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for l in range(int(ceil(float(len(compoundListMol))/molPerPlot))):#range(int(len(compoundListMol)/molPerPlot)+1):\n", " a=l*(molPerPlot-1)\n", " b=min((l+1)*(molPerPlot-1), len(compoundListMol))\n", " fig, ax = plt.subplots(figsize=(13, 6))\n", " for i in range(len(typForPlot)):\n", " for j in [2]:\n", " if i==0 and j==0:\n", " continue\n", " rects=plt.bar(index[0:b-a]+(i)*barwidth+0.1*len(typForPlot)*barwidth*i,\n", " (dissocEnergy[a:b,typForPlot[i]*(len(dfttypList))+j]-dissocEnergyExp[a:b]), \n", " barwidth,\n", " label=typList[typForPlot[i]]+\"(\"+dfttypList[j]+\")\",\n", " color=colors[j],\n", " alpha=opac[i],\n", " linewidth=1,\n", " yerr=dissocError[a:b,typForPlot[i]*(len(dfttypList))+j],\n", " error_kw=error_config,)\n", " for k in range(b-a):\n", " plt.axvline(x=k, color='0.85')\n", " plt.xticks(index+0.4, compoundListMol[a:b], fontsize=8)\n", " plt.yticks(fontsize=8)\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'$\\mathrm{\\mathsf{E_{dissoc.}-E_{dissoc.}^{exp}}}$', fontsize=8) \n", " if l==0:\n", " #plt.title('dissoc. energies grouped by molecules and methods') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1), prop={'size':8})#(loc='best',prop={'size':8})\n", " plt.autoscale( enable=True,axis=u'both', tight=True)\n", " ax.text(real(molPerPlot-4)/2.0, 15, \"overbinding\", fontsize=8,color='green',fontweight='bold')\n", " ax.text(real(molPerPlot-4)/2.0, -15, \"underbinding\", fontsize=8,color='green',fontweight='bold')\n", " ylim([-11,7])\n", " xlim([0,molPerPlot])\n", " #fig.set_size_inches(12,2.5)\n", " fig.set_size_inches(3.4,0.7)\n", " plt.savefig('dissocE_casinoAndQwalk'+str(l)+'.svg', format='svg', dpi=600)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "20\n", "['VH', 'CrH', 'FeH', 'CoH', 'CuH', 'ZnH', 'VO', 'CrO', 'ZnO', 'MnS', 'ZnS', 'TiCl', 'VCl', 'CrCl', 'MnCl', 'FeCl', 'CoCl', 'NiCl', 'CuCl', 'ZnCl']\n", "[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.\n", " 15. 16. 17. 18. 19.]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAACYCAYAAADXyUPLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHbtJREFUeJzt3Xt8FFWa8PHfwyWIAgpxIIAj4GAUAXUXcURRwkUFhfgO\nKDrifUYmOi6+ILr6ooAw7ygq4xWFZUUclPGyjosXHIdLAooX1HFWdLzNjopCEEFZImog5Nk/zulO\npdMh1Z0KdNLP9/PJJ91V1aeequ5++tSpU6dEVTHGGJM5mu3rAIwxxlRnidkYYzKMJWZjjMkwlpiN\nMSbDWGI2xpgMY4nZGGMyjCVmY4zJMJaYjTEmw7RI9QUicjBwHJALlAFvq+rnUQdmjDHZSsJe+Sci\nhwCnAjuBvwHbgTbAEcBBwCpV/bCB4jTGmKyRSmI+UlU/2MP8Xqr6fmSRGWNMlgqdmEMVJtJSVXdF\nVqAxxmShSE7+iUi+f3htFOUZY0w2i6pXxij/f2dE5RljTNaKKjF/ISLXAF9EVJ4xxmStqBLzev9/\nQ0TlGWNM1ooqMZ+kqrOBgojKM8aYrBVVYv5KRK4GSiMqzxhjslbKV/7VYjfQCugaUXnGGJO1QiVm\nEbkSd5XfFlVdkGSRHsDnwLYIYzPGmKwUtimjTFVvA9rWMv8ToCPQM5KojDEmi4VNzD1EZBJwgO8W\nV2M+sBn4e2SRGWNMlgp1SbaInAcMAv6gqqsbPCpjjMliYWvMnYHfAP8UnCgio/3/a/zfpIjjM8aY\nrBO2xtwW1+Pia1XdHJg+GVDcScTdQEtVvaWBYjXGmKwQtsZ8He7ikfOCE1X1Dn9hSZmq3oEbo9kY\nY0w9hE3MpcDRuL7KiEj72AwRGQFU+tqzDflpjDH1FKofs6reDyAiD/hJU4GJ/vH5qnphA8RmjDFZ\nyW7GaowxGSalO5iIyBvAc8Bw4E9+8mhVPaYBYjPGmKyUamIuwPXCEP8fAFVdFXlkxhiTpSK9558x\nxpj6S7uNWUR6RxmIMcYYpz4n//pEFoUxxpg465VhjDEZxhKzMcZkGEvMxhiTYeqTmGsM/ykiLetR\nnjHGGOqRmFU12Y1XR9YjFmOMMaSQmEXkeBFpJiI1xsUQkXz/8MPIIjPGmCyVSo25C/B7YHmSeaP8\n/zPqHZExxmS5OkeXS7jH3/vAWODuhMVi9wLcP8LYjDEmK9WZmP1A+HX5TlVni8hNEcRkjDFZLZUa\nc2tc08e3qvq7hMW2iMjVuAH1jTHG1EPoQYxE5P8D3wJtVHVKg0ZljDFZLNQdTLwX/P+hiTNE5ALc\nycFcVf3XKAIzxphslUpiPhbYDMxNMq8H8DmwLYqgjDEmm6XSXe4NIB+YlWTeJ0BHoGcUQRljTDZL\npcZ8HO7k3oYk86zGbIwxEUmlxtwKaAN8FZsgIqP9w++AXKBtdKEZY0x2SiUx5+Bq2H0CXegO849b\nBJYxxhhTD6kk5t3+YpPvYxedqOod/nGZ/7+9IYI0xphskkpi3ioi1wEVSeapiEwGdkUTljHGZK+U\n7pItIv1U9S0Raa+q3/hpI1T1hbpea4wxJpxUx2P+pf8/NTDt/IhiMcYYQ2rd5RqciPwUuNM/fVtV\nf50wP3z13pgmRFVlX8dg9p5Ua8zHicg04AQRmeYfHx1hPJ8Ap6jqicCBInJs4gKqGv+bNm1atefJ\n/sIsk81lPfLIMzzwQNVffn5+teePPPJMRmxjfn5+RuyvfVGWyT6p1pivBRRY5f8DlEQVjKpuDjz9\nHtgdVdkmubIy6Np1VGDK5GrPN2x4du8HBTz66LOUlVWfNnduVSxt28K4caMwpikKnZhF5HhVLdnD\n/AGq+moUQYlIX6Crqq6LojzT+GTqDwbAunXrWLfOfTSXL19Ofr67s1rfvn3p27fvPovLNB2p1Jg/\nFJHLgP2A9cAO3JWA3YFyYEkUAYlIB+A+4Jy6li0oKKizvDDLWFlVcnNzIyurqcYVTMD33Xcf559f\n9/nvKOMKw87HNB6a5PxBSt3lAESkBXAE0B4oA95X1Z1RBOjLfhaYpqprk8zXadOmxZ8XFBRE+mFu\naMGa1rp16+Jf7n1Z05o791lEulNa6uLauHEdXbq4WDp37ovqpxQV7f0mg0yNK1FhYSHPPPNMpGWW\nlJRQUlISf37zzTcn/fLuiYiotU9nPhFJ+t6m1MYsIucmeU0fkXi5L6nq+vRCBFwtuR8wy5d5g6q+\nFlxgzJgx8eT24osvsnHjRqBxHEYGYywsLOSWW25Ju6wok3yXLn3jSa9fv+rzNmz4NO0Y6ytT42po\niRWOm2++ed8FY/aJlBKzqj7eUIH48v8A/GFPy0SZ3BqzfbEfMrHGv7elclLS9pdJV1r9mEXkSuBJ\n4F7gE1W9IaqARKQz8DzQCzhAVSujKtvUT5gfg6aejGqelJxf60lJ218mXeleYPIT4FxgAXBWdOEA\n8DUwBHg64nJr2NtfisTaVlPs/mVHNKnZW/srWU0/FbV9PktKSrj44ovp2bMnO3fu5JJLLmHo0KEc\ndthhvPHGG/Tr148vv/ySrl27snLlSk455RSeffZZZs2aRYsWLWjbti0LFy4MfXK3LhMmTOCee+4J\nvfx3333HxIkTmTdvXrz5qKKigoEDB3Lrrbeybt06ioqKADjiiCNYsGABJSUlrFixgpkzZzJv3jzK\ny8uZMGEC33//PUOHDmXBggUMGjSIXr16sXv3bp588knWrl1LeXk555xTZ58GIP3EXIpLzg/gbjkV\nGVUtB8oD7dbVBJNZ4vNUk9veTiLVa1u117TqYn18G05TrcHWrOmnprbPp4hw8cUXM2PGDCoqKjj3\n3HPp1asX/fr14+mnn6Zfv34sWbKEfv4kwYYNG7jzzjtZsWIFrVq1Yv369ezaFd3YZ6kkZYDFixdT\nWFgY35YVK1bQrFkzTj/9dLZt28ZRRx3FmjVrALjssst48803Ceamyy+/nMGDB3PRRRcxZ84crrrq\nKlq3bs1pp53GokWLeOKJJ3jggQeYPn06Z599doMn5m+AE4HF/m+vCXsY2ZSlcjgdlTA/BrHY9rRM\npv9ghPmx3rhxXby3SF5eb956y30FOneuStzZ9OMZ6/3RokULJk2axL333suRRx7JBx98ALi+3sOG\nDUNVWbp0KZdeeimtWrUC4NBDD01a5rvvvsv48ePJyclhzJgxXHHFFQwfPpwffviBDh068NRTT/HZ\nZ59x4YUXxhPh9ddfz8knn8xLL71EQUEBxx57LCUlJRQVFVFUVMTzzz/P1KlTERFmzpzJiBEjWLp0\nKYsWLaq2LZWVlVRUVNCqVSuaN28en/fdd9+Rm5vLjh074tOaNWvGDTfcwNVXX01paSlTpkzh008/\njc8/5phjWL58OSJCy5Yt+frrr+nQoUOd+zTdxHyaqo4W99PxOBH1YQ5j8eLp8cdbtmxJu5xM/uJk\nYq0t7I9B2B+MTNzGsML0Fgmzv2r7DH700To++mgdOTlw9NFHNMAWNJy8vDy2bNlCXl4eRx55JK+/\n/jqtW7cmJ8fdQ2Pz5s3079+/znKuv/56Fi5cGL8UX0RYunQpOTk53HTTTSxfvpzS0lKuuuoqxo0b\nV+P1IsKll17KbbfdxuDBgykqKmLGjBmsWrUKVWXIkCGMGDGCrVu3csABB8RfN3ToULZs2UL//v1p\n3bo1AM888wxTpkzhqKOOokePHqxfX73j2fDhw5k1axY33XRTjThWr17N4YcfDkCPHj348MMPGTBg\nQJ3bn2p3udP9wzIROQ0Q3MUlDaVGe0ZBwZh4baVt2/KktZUw9kWtc+vWjWza5OKtraYF0dXaMpm1\nRdf+GezadRSDB7vPYFHRqEbVXa60tJSDDz4YgLPOOovx48czZcoU3nvvPQA6duzIpk2b6ixn69at\n8SsqRYTt27dTVFREaWkpmzZtIj8/n3POOYfp06fzwgsvcMEFFzB8+PBqZfTp04fmzZvHfxSaN29O\nmzZtAOLTEq1cuZJmzZoxefJkXn75ZQYOHEhhYSGFhYVMmDCBZcuWJX1t9+7d6datW/z5smXLKCgo\noFOnTjz44IPx6bU10SZKtcac5/+/BHT2j5enWMYe+YtM/gQcA7woIv8veLFJ2L6tmVgjy83tEv8i\n1rdfbqbuh8b8gxG2uSasxrwv0lFRUcHdd9/NpEmTuP/+++nfvz/HHXccI0aMiCfmM888kwsuuICx\nY8ey3377sX79enJycsjLy6tWVm5uLh9//DGHH344lZWVvPjii/Tp04fFixdz4403UllZSU5ODrNn\nz2bXrl2ccsopNRJzYhKsqKigrKwMVWXnTndNXIcOHdixY0e81hxrljnooIP46quvqKiooEULlybb\ntWvHt99+G6op4tRTT63WRALwySefcMQR4Y6AUu3H/DCAb8I4LNXXh1xHBTCsvuVk6sUcdYk6OUS5\nH8IkmsZ8UUjUR1GZtC/atq3fUeCePneLFi3ilVdeiffK6NKlS3ze/Pnz449FhC5dujBp0iSGDRtG\nixYtaNeuHQ8//HCNMmfNmsVFF11Eq1atGDNmDKNHj+b2229n9erVtGnThvz8fJYsWcKcOXPYtWsX\n5513XnwdiWLTpk6dGu95MWPGDADOOOMMiouLGTlyJOCaMkSE3NxcJk+ezNKlS7nzzjvZuXMn3bp1\nY/r06axZs4ZHH32U115z177deOON1daTLIbKykrKy8tp37597TsyIN3Eei+QD6zFJdET0iynBhGZ\nC/QB3lPVX0VVbjJhazR787B7XzSxhBVVoon6x6cx21u16oY6XzJo0KBqJ7tiEmuLwaEURo4cGU+E\ntenduzevvlp9TLS1a2uM0sDYsWOrPV+9ejUAxcXF8WkrV66sdb3jxo1j4sSJjBw5stprYmLNGEGD\n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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot dissoc energy results abs(casino-exp)-abs(qwalk-exp) for B3LYP\n", "typForPlot=[2]\n", "RefTypForPlot=[4]\n", "molPerPlot=min(20, len(compoundListMol))\n", "colors=['r','g','b','y','c','m']\n", "edgecolors=['r','g','b','y','c','m']\n", "opac=[0.3,1,0.5]\n", "error_config = {'ecolor': '0.3'}\n", "barwidth=1/(1.2)\n", "#barwidth=0.2\n", "index = numpy.arange(molPerPlot)\n", "\n", "for l in range(int(ceil(float(len(compoundListMol))/molPerPlot))):#range(int(len(compoundListMol)/molPerPlot)+1):\n", " a=l*(molPerPlot-1)\n", " b=min((l+1)*(molPerPlot-1)+1, len(compoundListMol))\n", " print a\n", " print b\n", " print compoundListMol[a:b]\n", " fig, ax = plt.subplots(figsize=(13, 6))\n", " for i in range(len(typForPlot)):\n", " for j in [2]:\n", " if i==0 and j==0:\n", " continue\n", " print index[0:b-a]+(i*(4))*barwidth+0.1*4*len(typForPlot)*barwidth*i\n", " rects=plt.bar(index[0:b-a]+(i*(4))*barwidth+0.1*4*len(typForPlot)*barwidth*i,\n", " (abs(dissocEnergy[a:b,typForPlot[i]*(len(dfttypList))+j]-dissocEnergyExp[a:b])-abs(dissocEnergy[a:b,RefTypForPlot[i]*(len(dfttypList))+j]-dissocEnergyExp[a:b])), \n", " barwidth,\n", " label=typList[typForPlot[i]]+\"(\"+dfttypList[j]+\")\",\n", " color=colors[j],\n", " alpha=opac[i],\n", " linewidth=1,\n", " yerr=sqrt(dissocError[a:b,typForPlot[i]*(len(dfttypList))+j]**2+dissocError[a:b,RefTypForPlot[i]*(len(dfttypList))+j]**2),\n", " error_kw=error_config,)\n", " plt.xticks(index+0.4, compoundListMol[a:b], fontsize=8)\n", " plt.yticks(fontsize=8)\n", " #plt.xlabel('Molecules, Methods') \n", " plt.ylabel(r'$\\mathrm{\\mathsf{abs(E_{dissoc.}^{casino}-E_{dissoc.}^{exp})-abs|(E_{dissoc.}^{qwalk}-E_{dissoc.}^{exp})}}$', fontsize=8) \n", " if l==0:\n", " #plt.title('dissoc. energies grouped by molecules and methods') \n", " plt.legend(loc=2,bbox_to_anchor=(1.05, 1), prop={'size':8})#(loc='best',prop={'size':8})\n", " plt.autoscale( enable=True,axis=u'both', tight=True)\n", " ylim([-2.6,2.6])\n", " xlim([0,molPerPlot])\n", " #fig.set_size_inches(12,2.5)\n", " fig.set_size_inches(3.4,0.7)\n", " plt.savefig('dissocE_casinoAndQwalkVsExp'+str(l)+'.svg', format='svg', dpi=600)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VH\n", "[ 0.38369414 12.70239242 5.97063163 5.82404839]\n", "[ 0.27404801 0.30439037 0.2805923 0.29792084]\n", "CrH\n", "[-10.03921751 3.79923606 3.63820576 3.59839676]\n", "[ 0.3102567 0.28723633 0.29553906 0.29706469]\n", "FeH\n", "[ -1.5097563 12.93786664 3.60986216 2.60885935]\n", "[ 0.30022926 0.29612318 0.29995247 0.29523293]\n", "CoH\n", "[-11.14711021 14.63442939 3.8040957 2.66768259]\n", "[ 0.28328224 0.27294249 0.29788765 0.31717434]\n", "CuH\n", "[-2.08185493 -1.9176106 -0.88309309 -1.0774517 ]\n", "[ 0.3001759 0.30056841 0.2942426 0.28137976]\n", "ZnH\n", "[ 4.81860643 4.15511184 4.73191554 4.62210162]\n", "[ 0.27996611 0.27840606 0.28740183 0.30447124]\n", "VO\n", "[-39.27466988 -3.25193655 -10.05333229 -10.57048538]\n", "[ 0.30107727 0.31657737 0.26755746 0.28611255]\n", "CrO\n", "[-46.53584521 -9.81858036 -10.25546526 -10.71312921]\n", "[ 0.3064683 0.31826693 0.30445173 0.2862611 ]\n", "ZnO\n", "[-13.99363907 -8.25531456 -8.69476591 -8.62909161]\n", "[ 0.30146114 0.32342946 0.29974697 0.3095313 ]\n", "MnS\n", "[-21.61591361 -11.71169747 -10.17900189 -11.91864922]\n", "[ 0.32129442 0.2966687 0.32701581 0.29512497]\n", "ZnS\n", "[-7.07009045 -6.53519001 -6.41548264 -6.22895015]\n", "[ 0.29256955 0.31960449 0.28925841 0.29512314]\n", "TiCl\n", "[-5.34624278 -1.05592208 -4.67487035 -3.83347072]\n", "[ 0.3267696 0.29468904 0.29746877 0.32567384]\n", "VCl\n", "[-8.65948524 0.6365585 -4.74290845 -4.95308096]\n", "[ 0.28627621 0.31729921 0.2846827 0.3147634 ]\n", "CrCl\n", "[-16.03875008 -3.39067664 -3.55405295 -4.00416037]\n", "[ 0.28438026 0.30548199 0.28816235 0.28934133]\n", "MnCl\n", "[ 2.55303113 2.08906618 2.86498484 2.60966811]\n", "[ 0.29533558 0.29280698 0.31035605 0.31238674]\n", "FeCl\n", "[ 4.32446305 14.0839022 5.29517159 5.27798608]\n", "[ 0.30523337 0.28666462 0.29746003 0.32764377]\n", "CoCl\n", "[-17.989183 3.83580318 -6.54656893 -6.85350977]\n", "[ 0.31365721 0.29575757 0.31066177 0.3074494 ]\n", "NiCl\n", "[-4.48931678 -4.61366887 -3.17797115 -5.2005684 ]\n", "[ 0.29740409 0.31633277 0.31304793 0.31467872]\n", "CuCl\n", "[-3.82131627 -5.72963884 -4.71730706 -4.71968965]\n", "[ 0.2972887 0.30977089 0.29317962 0.28778674]\n", "ZnCl\n", "[-1.78020959 -2.62884208 -2.14445441 -2.14837735]\n", "[ 0.30268328 0.33643011 0.30486864 0.32181817]\n" ] } ], "source": [ "#print the energy differences for DMC for casino\n", "typ=2\n", "for compound in range(len(compoundListMol)):\n", " print(compoundListMol[compound])\n", " print(dissocEnergy[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4]-dissocEnergyExp[compound])\n", " print(dissocError[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4])" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VH\n", "[ nan nan 4.62365806 nan]\n", "[ nan nan 0.38848136 nan]\n", "CrH\n", "[ nan nan 3.33997893 nan]\n", "[ nan nan 0.38346141 nan]\n", "FeH\n", "[ nan nan 2.58105802 nan]\n", "[ nan nan 0.38002532 nan]\n", "CoH\n", "[ nan nan 3.70874586 nan]\n", "[ nan nan 0.44925193 nan]\n", "CuH\n", "[ nan nan -1.48532889 nan]\n", "[ nan nan 0.30755189 nan]\n", "ZnH\n", "[ nan nan 3.27041051 nan]\n", "[ nan nan 0.37998468 nan]\n", "VO\n", "[ nan nan -9.40628063 nan]\n", "[ nan nan 0.39829587 nan]\n", "CrO\n", "[ nan nan -8.86347194 nan]\n", "[ nan nan 0.39769395 nan]\n", "ZnO\n", "[ nan nan -8.4109913 nan]\n", "[ nan nan 0.42954593 nan]\n", "MnS\n", "[ nan nan -7.71736957 nan]\n", "[ nan nan 0.40042313 nan]\n", "ZnS\n", "[ nan nan -5.2043903 nan]\n", "[ nan nan 0.42232446 nan]\n", "TiCl\n", "[ nan nan -3.45132968 nan]\n", "[ nan nan 0.30266278 nan]\n", "VCl\n", "[ nan nan -4.1479133 nan]\n", "[ nan nan 0.38612591 nan]\n", "CrCl\n", "[ nan nan -1.10718264 nan]\n", "[ nan nan 0.39229565 nan]\n", "MnCl\n", "[ nan nan 4.04950573 nan]\n", "[ nan nan 0.43319615 nan]\n", "FeCl\n", "[ nan nan 6.35286602 nan]\n", "[ nan nan 0.38278424 nan]\n", "CoCl\n", "[ nan nan -5.81471875 nan]\n", "[ nan nan 0.43088082 nan]\n", "NiCl\n", "[ nan nan -1.40394439 nan]\n", "[ nan nan 0.42090521 nan]\n", "CuCl\n", "[ nan nan -3.4933879 nan]\n", "[ nan nan 0.39292428 nan]\n", "ZnCl\n", "[ nan nan -1.1141214 nan]\n", "[ nan nan 0.44981527 nan]\n" ] } ], "source": [ "#print the energy differences for DMC for qwalk\n", "typ=4\n", "for compound in range(len(compoundListMol)):\n", " print(compoundListMol[compound])\n", " print(dissocEnergy[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4]-dissocEnergyExp[compound])\n", " print(dissocError[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4])" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VH\n", "[ -9.74921131 20.61942697 12.40668985 3.97302008]\n", "[ 0. 0. 0. 0.]\n", "CrH\n", "[-18.54812048 5.9613349 8.86437287 9.35095148]\n", "[ 0. 0. 0. 0.]\n", "FeH\n", "[-13.24175061 18.26059341 12.51996226 11.28387463]\n", "[ 0. 0. 0. 0.]\n", "CoH\n", "[-22.87718577 16.71500509 10.68195578 8.64470266]\n", "[ 0. 0. 0. 0.]\n", "CuH\n", "[-28.9415186 3.7081675 2.01316716 2.56068467]\n", "[ 0. 0. 0. 0.]\n", "ZnH\n", "[-2.26066593 0.82610905 1.12397211 -1.943816 ]\n", "[ 0. 0. 0. 0.]\n", "VO\n", "[-112.22469394 21.27378667 -12.26812723 -16.16385189]\n", "[ 0. 0. 0. 0.]\n", "CrO\n", "[-93.15394362 10.14692343 -8.43005838 -0.77224293]\n", "[ 0. 0. 0. 0.]\n", "ZnO\n", "[-82.00833591 -1.24675586 -16.9061561 -10.5459054 ]\n", "[ 0. 0. 0. 0.]\n", "MnS\n", "[-50.56966079 18.91336459 -5.45919562 -4.24965096]\n", "[ 0. 0. 0. 0.]\n", "ZnS\n", "[-40.27173463 1.57492041 -8.8546029 -2.11613007]\n", "[ 0. 0. 0. 0.]\n", "TiCl\n", "[-20.16468378 9.02825162 -4.82560863 -8.41448022]\n", "[ 0. 0. 0. 0.]\n", "VCl\n", "[-23.47155672 8.82414261 -5.42864564 -9.51682976]\n", "[ 0. 0. 0. 0.]\n", "CrCl\n", "[-26.23177245 -1.81546565 -5.06044327 0.24525638]\n", "[ 0. 0. 0. 0.]\n", "MnCl\n", "[-8.37510188 8.18631945 -5.14842206 -9.0579225 ]\n", "[ 0. 0. 0. 0.]\n", "FeCl\n", "[-8.06295186 6.84905036 -2.98324577 -5.27363488]\n", "[ 0. 0. 0. 0.]\n", "CoCl\n", "[-31.54940432 7.29532383 -6.03627323 -2.59690361]\n", "[ 0. 0. 0. 0.]\n", "NiCl\n", "[-72.65680882 -1.00381964 -11.39755922 -8.63969942]\n", "[ 0. 0. 0. 0.]\n", "CuCl\n", "[-28.99980277 -1.45854833 -8.43517135 -1.91678007]\n", "[ 0. 0. 0. 0.]\n", "ZnCl\n", "[ -9.69912854 -3.79249167 -10.12182786 -8.01945029]\n", "[ 0. 0. 0. 0.]\n" ] } ], "source": [ "#print the energy differences for DFT\n", "typ=0\n", "for compound in range(len(compoundListMol)):\n", " print(compoundListMol[compound])\n", " print(dissocEnergy[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4]-dissocEnergyExp[compound])\n", " print(dissocError[compound,typ*(len(dfttypList)):typ*len(dfttypList)+4])" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VH\n", "6.79606666889\n", "CrH\n", "1.49643609084\n", "FeH\n", "3.03968864484\n", "CoH\n", "3.42665800004\n", "CuH\n", "0.70628279025\n", "ZnH\n", "1.38132509168\n", "VO\n", "16.8054668352\n", "CrO\n", "7.62287919273\n", "ZnO\n", "6.43034288666\n", "MnS\n", "11.2151186595\n", "ZnS\n", "4.31799627331\n", "TiCl\n", "7.52077372737\n", "VCl\n", "7.86162613879\n", "CrCl\n", "2.18395421098\n", "MnCl\n", "7.38213613562\n", "FeCl\n", "5.25863762273\n", "CoCl\n", "5.65112483526\n", "NiCl\n", "4.39623921536\n", "CuCl\n", "3.18630175704\n", "ZnCl\n", "2.63201796804\n", "VH\n", "3.20849058739\n", "CrH\n", "0.0868280136181\n", "FeH\n", "4.65118940258\n", "CoH\n", "5.39331470265\n", "CuH\n", "0.448933146694\n", "ZnH\n", "0.250075781418\n", "VO\n", "3.33479281851\n", "CrO\n", "0.365230880865\n", "ZnO\n", "0.193545825153\n", "MnS\n", "0.775912191667\n", "ZnS\n", "0.126010172511\n", "TiCl\n", "1.54630442771\n", "VCl\n", "2.58686653794\n", "CrCl\n", "0.259411896768\n", "MnCl\n", "0.322879882503\n", "FeCl\n", "4.14710394078\n", "CoCl\n", "4.96822430139\n", "NiCl\n", "0.849612898132\n", "CuCl\n", "0.476657184768\n", "ZnCl\n", "0.227423531103\n", "VH\n", "nan\n", "CrH\n", "nan\n", "FeH\n", "nan\n", "CoH\n", "nan\n", "CuH\n", "nan\n", "ZnH\n", "nan\n", "VO\n", "nan\n", "CrO\n", "nan\n", "ZnO\n", "nan\n", "MnS\n", "nan\n", "ZnS\n", "nan\n", "TiCl\n", "nan\n", "VCl\n", "nan\n", "CrCl\n", "nan\n", "MnCl\n", "nan\n", "FeCl\n", "nan\n", "CoCl\n", "nan\n", "NiCl\n", "nan\n", "CuCl\n", "nan\n", "ZnCl\n", "nan\n", "[ 65.38109637 0. 9.40005168 0. nan]\n" ] } ], "source": [ "#calculate variance in the dissoc energy for DFT and DMC after DFT (without HF):\n", "var=zeros(5)\n", "\n", "for typ in [0,2,4]:\n", " n=0\n", " molNan=0\n", " for compound in range(len(compoundListMol)):\n", " if any(np.isnan(dissocEnergy[compound, 1:4])) or any(np.isnan(dissocEnergy[compound, 11:14])):\n", " molNan+=1\n", " continue\n", " else:\n", " var[typ]+=sum((dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]\n", " -mean(dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]))**2)\n", " n+=1\n", " print(compoundListMol[compound])\n", " print(sqrt(sum((dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]\n", " -mean(dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]))**2)/3))\n", " var[typ]=var[typ]/(n*3-n)\n", "\n", "print(var)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "13\n", "13\n", "13\n", "[ 46.24181246 0. 0.53351063 0. nan]\n" ] } ], "source": [ "#calculate variance in the dissoc energy for DFT and DMC after DFT (without HF) and without VO, VH, and FeH, FeCl, CoH, CoCl(bad PBE):\n", "var=zeros(5)\n", "for typ in [0,2,4]:\n", " n=0\n", " molNan=0\n", " for compound in range(len(compoundListMol)):\n", " if any(np.isnan(dissocEnergy[compound, 1:4])) or any(np.isnan(dissocEnergy[compound, 11:14])):\n", " molNan+=1\n", " continue\n", " if 'V' in compoundListMol[compound] or 'Fe' in compoundListMol[compound] or 'Co' in compoundListMol[compound]:\n", " continue\n", " else:\n", " var[typ]+=sum((dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]\n", " -mean(dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]))**2)\n", " n+=1\n", " #print(compoundListMol[compound])\n", " #print(sqrt(sum((dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]\n", " # -mean(dissocEnergy[compound, 1+typ*len(dfttypList):4+typ*len(dfttypList)]))**2)/3))\n", " print(n)\n", " var[typ]=var[typ]/(n*3-n)\n", "\n", "print(var)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#analyze errorbars of dissocEnergy casino\n", "typ=2\n", "boxplot(dissocError[:,typ*len(dfttypList):4+typ*len(dfttypList)])\n", "plt.xticks([1,2,3,4], dfttypList);" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/numpy/lib/function_base.py:3403: RuntimeWarning: Invalid value encountered in median\n", " RuntimeWarning)\n", "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/matplotlib/cbook.py:2028: RuntimeWarning: invalid value encountered in less_equal\n", " wiskhi = np.compress(x <= hival, x)\n", "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/matplotlib/cbook.py:2035: RuntimeWarning: invalid value encountered in greater_equal\n", " wisklo = np.compress(x >= loval, x)\n", "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/matplotlib/cbook.py:2043: RuntimeWarning: invalid value encountered in less\n", " np.compress(x < stats['whislo'], x),\n", "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/matplotlib/cbook.py:2044: RuntimeWarning: invalid value encountered in greater\n", " np.compress(x > stats['whishi'], x)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#analyze errorbars of dissocEnergy qwalk\n", "typ=4\n", "boxplot(dissocError[:,typ*len(dfttypList):4+typ*len(dfttypList)])\n", "plt.xticks([1,2,3,4], dfttypList);" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 35.152901637\n", "20\n", "DFT PBE: 8.37499005305\n", "20\n", "DFT B3LYP: 7.94827286465\n", "20\n", "DFT B97-1: 6.26428939509\n", "20\n", "DFT M06: 5.57065754515\n", "10\n", "DMC_casino none: 11.1736197825\n", "20\n", "DMC_casino PBE: 6.3891722223\n", "20\n", "DMC_casino B3LYP: 5.29770708029\n", "20\n", "DMC_casino B97-1: 5.40296786968\n", "20\n", "DMC_casino M06: nan\n", "0\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: 4.47733269128\n", "20\n", "DMC_qwalk B97-1: nan\n", "0\n", "DMC_qwalk M06: nan\n", "0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/numpy/lib/nanfunctions.py:675: RuntimeWarning: Mean of empty slice\n", " warnings.warn(\"Mean of empty slice\", RuntimeWarning)\n" ] } ], "source": [ "#calculate all mean unsigned errors\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean(abs(dissocEnergy[:,j+i*len(dfttypList)]-dissocEnergyExp))))\n", " print(np.count_nonzero(~np.isnan(dissocEnergy[:,j+i*len(dfttypList)])))\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: -35.152901637\n", "20\n", "DFT PBE: 7.4432819373\n", "20\n", "DFT B3LYP: -3.18726086127\n", "20\n", "DFT B97-1: -2.65844040466\n", "20\n", "DFT M06: -2.05776736496\n", "10\n", "DMC_casino none: -9.96564030787\n", "20\n", "DMC_casino PBE: 0.498264417584\n", "20\n", "DMC_casino B3LYP: -2.30622035775\n", "20\n", "DMC_casino B97-1: -2.68209357927\n", "20\n", "DMC_casino M06: nan\n", "0\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: -1.68471037737\n", "20\n", "DMC_qwalk B97-1: nan\n", "0\n", "DMC_qwalk M06: nan\n", "0\n" ] } ], "source": [ "#calculate all mean signed errors\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean(dissocEnergy[:,j+i*len(dfttypList)]-dissocEnergyExp)))\n", " print(np.count_nonzero(~np.isnan(dissocEnergy[:,j+i*len(dfttypList)])))\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 6.96470755771\n", "20\n", "DFT PBE: 1.58095802527\n", "20\n", "DFT B3LYP: 0.90972092385\n", "20\n", "DFT B97-1: 0.955697485044\n", "20\n", "DMC_casino none: 2.77523549907\n", "20\n", "DMC_casino PBE: 1.03660667931\n", "20\n", "DMC_casino B3LYP: 0.602394815594\n", "20\n", "DMC_casino B97-1: 0.673038129588\n", "20\n", "DMC_qwalk B3LYP: 0.575089488697\n", "20\n" ] } ], "source": [ "#calculate standard deviation of the mean of the errors\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)-1):\n", " mue=nanmean(abs(dissocEnergy[:,j+i*len(dfttypList)]-dissocEnergyExp))\n", " n=0\n", " var=0\n", " for k in range(len(compoundListMol)):\n", " if isnan(dissocEnergy[k,j+i*len(dfttypList)]):\n", " continue\n", " n+=1\n", " var+=(abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k])-mue)**2\n", " if not n==0:\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],sqrt(var/(n-1)/n)))\n", " print(np.count_nonzero(~np.isnan(dissocEnergy[:,j+i*len(dfttypList)])))\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 31.1471190849\n", "20\n", "DFT PBE: 7.07025922815\n", "20\n", "DFT B3LYP: 4.06839565257\n", "20\n", "DFT B97-1: 4.27400908497\n", "20\n", "DFT M06: 6.30097761572\n", "10\n", "DMC_casino none: 12.411230459\n", "20\n", "DMC_casino PBE: 4.63584600175\n", "20\n", "DMC_casino B3LYP: 2.69399151392\n", "20\n", "DMC_casino B97-1: 3.00991801842\n", "20\n", "DMC_casino M06: 0.0\n", "0\n", "DMC_qwalk none: 0.0\n", "0\n", "DMC_qwalk PBE: 0.0\n", "0\n", "DMC_qwalk B3LYP: 2.57187837974\n", "20\n", "DMC_qwalk B97-1: 0.0\n", "0\n", "DMC_qwalk M06: 0.0\n", "0\n" ] } ], "source": [ "#calculate corrected sample standard deviation of the errors\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " mue=nanmean(abs(dissocEnergy[:,j+i*len(dfttypList)]-dissocEnergyExp))\n", " n=0\n", " var=0\n", " for k in range(len(compoundListMol)):\n", " if isnan(dissocEnergy[k,j+i*len(dfttypList)]):\n", " continue\n", " n+=1\n", " var+=(abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k])-mue)**2\n", " \n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],sqrt(var/(n-1))))\n", " print(np.count_nonzero(~np.isnan(dissocEnergy[:,j+i*len(dfttypList)])))\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 37.0677906312\n", "13\n", "DFT PBE: 5.20480554841\n", "13\n", "DFT B3LYP: 7.43388904149\n", "13\n", "DFT B97-1: 5.21792079888\n", "13\n", "DMC_casino none: 10.7833872175\n", "13\n", "DMC_casino PBE: 5.05388889015\n", "13\n", "DMC_casino B3LYP: 5.07165929649\n", "13\n", "DMC_casino B97-1: 5.33105422166\n", "13\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: 4.07010870662\n", "13\n", "DMC_qwalk B97-1: nan\n", "0\n" ] } ], "source": [ "#calculate all mean errors for the mols which are converged in HF, PBE, B3LY and B97-1 and without V..., Fe..., and Co... (bad PBE)\n", "dissocEnergyAllConv=zeros([len(compoundListMol), 5*len(dfttypList)])\n", "for i in range(len(compoundListMol)):\n", " if any([isnan(dissocEnergy[i, j]) for j in range(4)]) or any([isnan(dissocEnergy[i,2*len(dfttypList)+j:2*len(dfttypList)+j]) for j in range(4)]) or any([isnan(dissocEnergy[i,4*len(dfttypList)+j:4*len(dfttypList)+j]) for j in range(4)]) or 'V' in compoundListMol[i] or 'Fe' in compoundListMol[i] or 'Co' in compoundListMol[i]:\n", " dissocEnergyAllConv[i, 0:4]=None\n", " dissocEnergyAllConv[i,2*len(dfttypList):2*len(dfttypList)+4]=None\n", " dissocEnergyAllConv[i,4*len(dfttypList):4*len(dfttypList)+4]=None\n", " else:\n", " dissocEnergyAllConv[i, 0:4]=dissocEnergy[i, 0:4]\n", " dissocEnergyAllConv[i,2*len(dfttypList):2*len(dfttypList)+4]=dissocEnergy[i,2*len(dfttypList):2*len(dfttypList)+4]\n", " dissocEnergyAllConv[i,4*len(dfttypList):4*len(dfttypList)+4]=dissocEnergy[i,4*len(dfttypList):4*len(dfttypList)+4]\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(4):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean(abs(dissocEnergyAllConv[:,j+i*len(dfttypList)]-dissocEnergyExp))))\n", " print(np.count_nonzero(~np.isnan(dissocEnergyAllConv[:,j+i*len(dfttypList)])))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT B97-1: 8.70567837338\n", "13\n", "DFT B97-1: 1.39433496056\n", "13\n", "DFT B97-1: 1.31712363107\n", "13\n", "DFT B97-1: 1.09764295768\n", "13\n", "DMC_casino B97-1: 1.91374292355\n", "13\n", "DMC_casino B97-1: 0.954506203032\n", "13\n", "DMC_casino B97-1: 0.904363654183\n", "13\n", "DMC_casino B97-1: 0.904550669716\n", "13\n" ] } ], "source": [ "#calculate standard deviation of the mean of the errors without V..., Fe..., and Co...(bad PBE)\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)-1):\n", " mue=nanmean(abs(dissocEnergy[:,j+i*len(dfttypList)]-dissocEnergyExp))\n", " n=0\n", " var=0\n", " for k in range(len(compoundListMol)):\n", " if isnan(dissocEnergy[k,j+i*len(dfttypList)])or any([isnan(dissocEnergy[k,2*len(dfttypList)+j:2*len(dfttypList)+j]) for j in range(4)]) or 'V' in compoundListMol[k] or 'Fe' in compoundListMol[k] or 'Co' in compoundListMol[k]:\n", " continue\n", " n+=1\n", " var+=(abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k])-mue)**2\n", " if not n==0:\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],sqrt(var/(n-1)/n)))\n", " print(n)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 17.7001654363\n", "7\n", "DFT PBE: 3.50041499013\n", "7\n", "DFT B3LYP: 5.96109790465\n", "7\n", "DFT B97-1: 4.08185574256\n", "7\n", "DFT M06: 4.39833883986\n", "4\n", "DMC_casino none: 5.77235242814\n", "7\n", "DMC_casino PBE: 5.51606111246\n", "7\n", "DMC_casino B3LYP: 4.24619557648\n", "7\n", "DMC_casino B97-1: 4.23013333378\n", "7\n", "DMC_casino M06: nan\n", "0\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: 3.51312350073\n", "7\n", "DMC_qwalk B97-1: nan\n", "0\n", "DMC_qwalk M06: nan\n", "0\n" ] } ], "source": [ "#calculate mean errors for single Det character mols:\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean([abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k]) for k in range(len(compoundListMol)) if compoundListMol[k] in ['CuCl', 'ZnH', 'ZnS', 'ZnCl', 'CrCl', 'MnCl', 'FeCl']])))\n", " print(np.count_nonzero(~np.isnan([dissocEnergy[k,j+i*len(dfttypList)]for k in range(len(compoundListMol)) if compoundListMol[k] in ['CuCl', 'ZnH', 'ZnS', 'ZnCl', 'CrCl', 'MnCl', 'FeCl']])))\n" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 44.5505288219\n", "13\n", "DFT PBE: 10.9997612408\n", "13\n", "DFT B3LYP: 9.0182901508\n", "13\n", "DFT B97-1: 7.43944597722\n", "13\n", "DFT M06: 6.35220334869\n", "6\n", "DMC_casino none: 14.0819945118\n", "13\n", "DMC_casino PBE: 6.85930897375\n", "13\n", "DMC_casino B3LYP: 5.86390558235\n", "13\n", "DMC_casino B97-1: 6.03449415824\n", "13\n", "DMC_casino M06: nan\n", "0\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: 4.99652225543\n", "13\n", "DMC_qwalk B97-1: nan\n", "0\n", "DMC_qwalk M06: nan\n", "0\n" ] } ], "source": [ "#calculate mean errors for multi Det character mols:\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean([abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k]) for k in range(len(compoundListMol)) if not compoundListMol[k] in ['CuCl', 'ZnH', 'ZnS', 'ZnCl', 'CrCl', 'MnCl', 'FeCl']])))\n", " print(np.count_nonzero(~np.isnan([dissocEnergy[k,j+i*len(dfttypList)]for k in range(len(compoundListMol)) if not compoundListMol[k] in ['CuCl', 'ZnH', 'ZnS', 'ZnCl', 'CrCl', 'MnCl', 'FeCl']])))\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFT none: 30.7171523752\n", "11\n", "DFT PBE: 10.2249667418\n", "11\n", "DFT B3LYP: 6.40856284863\n", "11\n", "DFT B97-1: 6.49119876679\n", "11\n", "DFT M06: 3.37869528595\n", "6\n", "DMC_casino none: 11.664227758\n", "11\n", "DMC_casino PBE: 5.3158910789\n", "11\n", "DMC_casino B3LYP: 5.30934743392\n", "11\n", "DMC_casino B97-1: 5.5019006771\n", "11\n", "DMC_casino M06: nan\n", "0\n", "DMC_qwalk none: nan\n", "0\n", "DMC_qwalk PBE: nan\n", "0\n", "DMC_qwalk B3LYP: 4.68146656287\n", "11\n", "DMC_qwalk B97-1: nan\n", "0\n", "DMC_qwalk M06: nan\n", "0\n" ] } ], "source": [ "#calculate mean errors for mols with exp error <1.2kcal/mol (['FeH', 'NiCl', 'CuCl', 'CoH', 'CrO', ZnH', 'ZnO', 'ZnS', 'ZnCl'])\n", "for i in [0,2,4]:#range(len(typList)):\n", " for j in range(len(dfttypList)):\n", " print(\"{} {}: {}\".format(typList[i],dfttypList[j],nanmean([abs(dissocEnergy[k,j+i*len(dfttypList)]-dissocEnergyExp[k]) for k in range(len(compoundListMol)) if not compoundListMol[k] in ['FeH', 'NiCl', 'CuCl', 'CoH', 'CrO','ZnH', 'ZnO', 'ZnS', 'ZnCl']])))\n", " print(np.count_nonzero(~np.isnan([dissocEnergy[k,j+i*len(dfttypList)]for k in range(len(compoundListMol)) if not compoundListMol[k] in ['FeH', 'NiCl', 'CuCl', 'CoH', 'CrO','ZnH', 'ZnO', 'ZnS', 'ZnCl']])))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.8" } }, "nbformat": 4, "nbformat_minor": 0 }