2020-11-24 19:21:58 +01:00
<!DOCTYPE html>
< html lang = "en" itemscope itemtype = "http://schema.org/WebPage" >
< head >
< meta charset = "utf-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1.0" >
< title > Dataset - QUEST: a database of highly-accurate excitation energies< / title >
< meta name = "description" content = "function adjustSticky() { const height = $("nav").height() $("thead.sticky tr th ").css("top", height) } window.onload = async () = { window.browser = bowser.getParser(window.navigator.userAgent); $("input[type='checkbox']").trigger("change") $("input[type='number'].range").trigger("change") adjustSticky(); $(window).resize(adjustSticky) var slist = $("#SelectList") getAllSelect().each(function () { $("").text($('label[for="' + $(this).attr('id') + '"]').text()).appendTo(slist) }) $('[data-needbrowser],[data-neednotbrowser]').each(function () { function test(key, value) { switch (key) { case "" >
< meta name = "author" content = "M. Véril" / > < script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "QUEST: a database of highly-accurate excitation energies",
2020-11-25 00:24:34 +01:00
"url": "https:\/\/lcpq.github.io\/QUESTDB_website\/"
2020-11-24 19:21:58 +01:00
}
< / script > < script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "Organization",
"name": "",
2020-11-25 00:24:34 +01:00
"url": "https:\/\/lcpq.github.io\/QUESTDB_website\/"
2020-11-24 19:21:58 +01:00
}
< / script >
< script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"item": {
2020-11-25 00:24:34 +01:00
"@id": "https:\/\/lcpq.github.io\/QUESTDB_website\/",
2020-11-24 19:21:58 +01:00
"name": "home"
}
},{
"@type": "ListItem",
"position": 3,
"item": {
2020-11-25 00:24:34 +01:00
"@id": "https:\/\/lcpq.github.io\/QUESTDB_website\/dataset\/",
2020-11-24 19:21:58 +01:00
"name": "Dataset"
}
}]
}
< / script > < script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "Article",
"author": {
"name" : "M. Véril"
},
"headline": "Dataset",
"description" : "function adjustSticky() { const height = $(\u0022nav\u0022).height() $(\u0022thead.sticky tr th \u0022).css(\u0022top\u0022, height) } window.onload = async () = { window.browser = bowser.getParser(window.navigator.userAgent); $(\u0022input[type=\u0027checkbox\u0027]\u0022).trigger(\u0022change\u0022) $(\u0022input[type=\u0027number\u0027].range\u0022).trigger(\u0022change\u0022) adjustSticky(); $(window).resize(adjustSticky) var slist = $(\u0022#SelectList\u0022) getAllSelect().each(function () { $(\u0022\u0022).text($(\u0027label[for=\u0022\u0027 \u002b $(this).attr(\u0027id\u0027) \u002b \u0027\u0022]\u0027).text()).appendTo(slist) }) $(\u0027[data-needbrowser],[data-neednotbrowser]\u0027).each(function () { function test(key, value) { switch (key) { case \u0022",
"inLanguage" : "en",
2020-12-11 10:45:33 +01:00
"wordCount": 2247 ,
2020-11-24 19:21:58 +01:00
"datePublished" : "0001-01-01T00:00:00",
"dateModified" : "0001-01-01T00:00:00",
2020-11-25 00:24:34 +01:00
"image" : "https:\/\/lcpq.github.io\/QUESTDB_website\/img\/TOC_JPCL.png",
2020-11-24 19:21:58 +01:00
"keywords" : [ "" ],
2020-11-25 00:24:34 +01:00
"mainEntityOfPage" : "https:\/\/lcpq.github.io\/QUESTDB_website\/dataset\/",
2020-11-24 19:21:58 +01:00
"publisher" : {
"@type": "Organization",
2020-11-25 00:24:34 +01:00
"name" : "https:\/\/lcpq.github.io\/QUESTDB_website\/",
2020-11-24 19:21:58 +01:00
"logo" : {
"@type" : "ImageObject",
2020-11-25 00:24:34 +01:00
"url" : "https:\/\/lcpq.github.io\/QUESTDB_website\/img\/TOC_JPCL.png",
2020-11-24 19:21:58 +01:00
"height" : 60 ,
"width" : 60
}
}
}
< / script >
< meta property = "og:title" content = "Dataset" / >
< meta property = "og:description" content = "function adjustSticky() { const height = $("nav").height() $("thead.sticky tr th ").css("top", height) } window.onload = async () = { window.browser = bowser.getParser(window.navigator.userAgent); $("input[type='checkbox']").trigger("change") $("input[type='number'].range").trigger("change") adjustSticky(); $(window).resize(adjustSticky) var slist = $("#SelectList") getAllSelect().each(function () { $("").text($('label[for="' + $(this).attr('id') + '"]').text()).appendTo(slist) }) $('[data-needbrowser],[data-neednotbrowser]').each(function () { function test(key, value) { switch (key) { case "" >
2020-11-25 00:24:34 +01:00
< meta property = "og:image" content = "https://lcpq.github.io/QUESTDB_website/img/TOC_JPCL.png" / >
< meta property = "og:url" content = "https://lcpq.github.io/QUESTDB_website/dataset/" / >
2020-11-24 19:21:58 +01:00
< meta property = "og:type" content = "website" / >
< meta property = "og:site_name" content = "QUEST: a database of highly-accurate excitation energies" / >
< meta name = "twitter:title" content = "Dataset" / >
< meta name = "twitter:description" content = "function adjustSticky() { const height = $("nav").height() $("thead.sticky tr th ").css("top", height) } window.onload = async () = { window.browser = bowser.getParser(window.navigator.userAgent); …" >
2020-11-25 00:24:34 +01:00
< meta name = "twitter:image" content = "https://lcpq.github.io/QUESTDB_website/img/TOC_JPCL.png" / >
2020-11-24 19:21:58 +01:00
< meta name = "twitter:card" content = "summary" / >
< meta name = "twitter:site" content = "@LCPQ_UMR5626" / >
< meta name = "twitter:creator" content = "@LCPQ_UMR5626" / >
2020-12-18 11:56:59 +01:00
< meta name = "generator" content = "Hugo 0.79.0" / >
2020-11-25 00:24:34 +01:00
< link rel = "alternate" href = "https://lcpq.github.io/QUESTDB_website/index.xml" type = "application/rss+xml" title = "QUEST: a database of highly-accurate excitation energies" > < link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" integrity = "sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin = "anonymous" >
2020-11-24 19:21:58 +01:00
< link rel = "stylesheet" href = "https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity = "sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin = "anonymous" >
2020-11-25 00:24:34 +01:00
< link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity = "sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin = "anonymous" > < link rel = "stylesheet" href = "https://lcpq.github.io/QUESTDB_website/css/main.css" / > < link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" / >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" / > < link rel = "stylesheet" href = "https://lcpq.github.io/QUESTDB_website/css/syntax.css" / > < link rel = "stylesheet" href = "https://lcpq.github.io/QUESTDB_website/css/codeblock.css" / > < link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.css" integrity = "sha384-h/L2W9KefUClHWaty3SLE5F/qvc4djlyR4qY3NUV5HGQBBW7stbcfff1+I/vmsHh" crossorigin = "anonymous" >
2020-11-24 19:21:58 +01:00
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/default-skin/default-skin.min.css" integrity = "sha384-iD0dNku6PYSIQLyfTOpB06F2KCZJAKLOThS5HRe8b3ibhdEQ6eKsFf/EeFxdOt5R" crossorigin = "anonymous" > < script src = "https://unpkg.com/popper.js@1" > < / script >
< link rel = "stylesheet" href = "https://unpkg.com/tippy.js@6/dist/backdrop.css" / >
< link rel = "stylesheet" href = "https://unpkg.com/tippy.js@6/themes/light.css" / >
< script src = "https://unpkg.com/@popperjs/core@2" > < / script >
< script src = "https://unpkg.com/tippy.js@6" > < / script >
< script type = "text/x-mathjax-config" >
MathJax.Ajax.config.path["mhchem"] =
"https://cdnjs.cloudflare.com/ajax/libs/mathjax-mhchem/3.3.2";
MathJax.Hub.Config({
TeX: {
extensions: ["[mhchem]/mhchem.js"]
}
});
< / script >
< script src = "https://cdn.plot.ly/plotly-latest.min.js" > < / script >
2020-11-25 00:24:34 +01:00
< script src = "https://lcpq.github.io/QUESTDB_website/js/MathJaxUtils.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/MathJaxPolyfill.js" > < / script >
2020-11-24 19:21:58 +01:00
< script type = "text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" onload="MathJaxPolyfillInit()">
< / script >
2020-11-25 00:24:34 +01:00
< script src = "https://lcpq.github.io/QUESTDB_website/js/pubUtils.js" > < / script >
2020-11-24 19:21:58 +01:00
< script src = "https://unpkg.com/simple-statistics@7.0.2/dist/simple-statistics.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/bowser@2.5.3/es5.min.js" > < / script >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.13.1/js-yaml.min.js" > < / script >
2020-12-07 11:16:42 +01:00
< script src = "https://cdn.jsdelivr.net/npm/jszip@3.5.0/dist/jszip.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/file-saver@2.0.2/dist/FileSaver.min.js" > < / script >
2020-11-24 19:21:58 +01:00
< / head >
< body >
< nav class = "navbar navbar-default navbar-fixed-top navbar-custom" >
< div class = "container-fluid" >
< div class = "navbar-header" >
< button type = "button" class = "navbar-toggle" data-toggle = "collapse" data-target = "#main-navbar" >
< span class = "sr-only" > Toggle navigation< / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< / button >
2020-11-25 00:24:34 +01:00
< a class = "navbar-brand" href = "https://lcpq.github.io/QUESTDB_website/" > QUEST: a database of highly-accurate excitation energies< / a >
2020-11-24 19:21:58 +01:00
< / div >
< div class = "collapse navbar-collapse" id = "main-navbar" >
< ul class = "nav navbar-nav navbar-right" >
< li >
2020-11-25 00:24:34 +01:00
< a title = "Home" href = "https://lcpq.github.io/QUESTDB_website/" > Home< / a >
2020-11-24 19:21:58 +01:00
< / li >
< li >
2020-11-25 00:24:34 +01:00
< a title = "Dataset" href = "https://lcpq.github.io/QUESTDB_website/dataset" > Dataset< / a >
2020-11-24 19:21:58 +01:00
< / li >
< li >
2020-11-26 00:30:13 +01:00
< a title = "Subsets" href = "https://lcpq.github.io/QUESTDB_website/subsets" > Subsets< / a >
2020-11-24 19:21:58 +01:00
< / li >
< li >
2020-11-26 00:30:13 +01:00
< a title = "References" href = "https://lcpq.github.io/QUESTDB_website/references" > References< / a >
2020-11-24 19:21:58 +01:00
< / li >
< / ul >
< / div >
< div class = "avatar-container" >
< div class = "avatar-img-border" >
2020-11-25 00:24:34 +01:00
< a title = "QUEST: a database of highly-accurate excitation energies" href = "https://lcpq.github.io/QUESTDB_website/" >
< img class = "avatar-img" src = "https://lcpq.github.io/QUESTDB_website/img/TOC_JPCL.png" alt = "QUEST: a database of highly-accurate excitation energies" / >
2020-11-24 19:21:58 +01:00
< / a >
< / div >
< / div >
< / div >
< / nav >
< div class = "pswp" tabindex = "-1" role = "dialog" aria-hidden = "true" >
< div class = "pswp__bg" > < / div >
< div class = "pswp__scroll-wrap" >
< div class = "pswp__container" >
< div class = "pswp__item" > < / div >
< div class = "pswp__item" > < / div >
< div class = "pswp__item" > < / div >
< / div >
< div class = "pswp__ui pswp__ui--hidden" >
< div class = "pswp__top-bar" >
< div class = "pswp__counter" > < / div >
< button class = "pswp__button pswp__button--close" title = "Close (Esc)" > < / button >
< button class = "pswp__button pswp__button--share" title = "Share" > < / button >
< button class = "pswp__button pswp__button--fs" title = "Toggle fullscreen" > < / button >
< button class = "pswp__button pswp__button--zoom" title = "Zoom in/out" > < / button >
< div class = "pswp__preloader" >
< div class = "pswp__preloader__icn" >
< div class = "pswp__preloader__cut" >
< div class = "pswp__preloader__donut" > < / div >
< / div >
< / div >
< / div >
< / div >
< div class = "pswp__share-modal pswp__share-modal--hidden pswp__single-tap" >
< div class = "pswp__share-tooltip" > < / div >
< / div >
< button class = "pswp__button pswp__button--arrow--left" title = "Previous (arrow left)" >
< / button >
< button class = "pswp__button pswp__button--arrow--right" title = "Next (arrow right)" >
< / button >
< div class = "pswp__caption" >
< div class = "pswp__caption__center" > < / div >
< / div >
< / div >
< / div >
< / div >
< header class = "header-section " >
< div class = "intro-header no-img" >
< div class = "container" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1" >
< div class = "page-heading" >
< h1 > Dataset< / h1 >
< hr class = "small" >
< / div >
< / div >
< / div >
< / div >
< / div >
< / header >
< div class = "container" role = "main" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1" >
< article role = "main" class = "blog-post" >
2020-11-25 00:24:34 +01:00
< link rel = "stylesheet" type = "text/css" href = "https://lcpq.github.io/QUESTDB_website/css/modal.css" / >
< link rel = "stylesheet" type = "text/css" href = "https://lcpq.github.io/QUESTDB_website/css/form.css" / >
< link rel = "stylesheet" type = "text/css" href = "https://lcpq.github.io/QUESTDB_website/css/table.css" / >
< link rel = "stylesheet" type = "text/css" href = "https://lcpq.github.io/QUESTDB_website/css/emoji.css" / >
< script src = "https://lcpq.github.io/QUESTDB_website/js/data.js" type = "text/javascript" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/loadAllData.js" type = "text/javascript" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/getFullDataPath.js" type = "text/javascript" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/getTextFromFile.js" type = "text/javascript" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/trueTypeOf.js" type = "text/javascript" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/uniq.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/processingIndicator.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/noNan.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/websiteFile.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/PubliData.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/nestedCheckbox.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/selectSelectAll.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/numberRangeChange.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/DebugMode.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/numberUtils.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/indexDB.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/ArrayExtensions.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/mhchemCE.js" > < / script >
< link rel = "stylesheet" href = "https://lcpq.github.io/QUESTDB_website/css/ChemDoodleWeb.css" type = "text/css" >
< script type = "text/javascript" src = "https://lcpq.github.io/QUESTDB_website/js/ChemDoodleWeb.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/Geometry.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/GeometriesLoader.js" > < / script >
< script src = "https://lcpq.github.io/QUESTDB_website/js/GeometryParseMetadataExtension.js" > < / script >
2020-12-07 16:47:34 +01:00
< script src = "https://lcpq.github.io/QUESTDB_website/js/tableToCSV.js" > < / script >
2020-11-24 19:21:58 +01:00
< script >
function adjustSticky() {
const height = $("nav").height()
$("thead.sticky > tr > th ").css("top", height)
}
window.onload = async () => {
window.browser = bowser.getParser(window.navigator.userAgent);
$("input[type='checkbox']").trigger("change")
$("input[type='number'].range").trigger("change")
adjustSticky();
$(window).resize(adjustSticky)
var slist = $("#SelectList")
getAllSelect().each(function () {
$("< li / > ").text($('label[for="' + $(this).attr('id') + '"]').text()).appendTo(slist)
})
$('[data-needbrowser],[data-neednotbrowser]').each(function () {
function test(key, value) {
switch (key) {
case "Engine":
return value.some((v) => browser.isEngine(v))
break;
case "Browser":
return value.some((v) => browser.isBrowser(v))
case "Platform":
return value.some((v) => browser.isPlatform(v))
case "OS":
return value.some((v) => browser.isOS(v))
default:
return true
break;
}
}
const needdata = $(this).data("needbrowser")
const neednotdata = $(this).data("neednotbrowser")
const need = ((needdata == null) ? true : Object.entries(needdata).every(kv => test(kv[0], kv[1])))
const neednot = ((neednotdata == null) ? true : Object.entries(neednotdata).some(kv => !test(kv[0], kv[1])))
if (need & & neednot) {
$(this).show()
} else {
$(this).hide()
}
})
var cbextl = $("#cb_exTypeList")
var extl = $("#exTypeList")
var vertkindtl = $("#exVertKindList")
for (const [name, value] of VertExcitationKinds.All) {
$("< li / > ").text(name).appendTo(vertkindtl)
}
for (const [name, value] of excitationTypes.All) {
var txt = value.description.string
if (value.description.isLaTeX) {
txt = MathJaxUtils.getMathJaxString(txt)
}
$("< li / > ").text(txt).appendTo(extl)
var cbli = $("< li / > ")
if (!DebugMode.Enabled & & value == (1 < < 31 ) ) {
cbli.hide()
}
$("< input / > ", { type: "checkbox", id: "cb_" + name, name: name, value: Number(value) }).change(nestedCheckbox_change).appendTo(cbli);
$('< label / > ', { 'for': 'cb_' + name, text: txt }).appendTo(cbli);
cbextl.append(cbli);
}
await MathJax.typesetPromise();
delete (cbextl)
delete (extl)
delete (vertkindtl)
window.publiCache = new Map()
await loadFiles()
}
async function loadFiles() {
const db = await indexDB.loadAsync()
const data = await loadAllData()
processingIndicator.isActive = true
window.defaultDats = []
for (const sub of Object.values(data)) {
for (const exSet of uniq(sub.map(d => d.set))) {
const subset = sub.filter(d => d.set.isSameSet(exSet))
for (mol of uniq(subset.map(d => d.molecule))) {
const submol = subset.filter(d => d.molecule === mol)
const source = submol.find((d) => {
if (db.sets.get(d.set.name)[d.set.index] === "10.1021/acs.jctc.8b01205") {
return d.method.name === "CASPT2" & & d.method.basis === "aug-cc-pVDZ"
} else {
return d.method.isTBE
}
})
if (source !== undefined) {
for (const dat of submol.filter((d) => d !== source)) {
dat.CopyExcitationsTypeFrom(source)
}
}
}
}
window.defaultDats = window.defaultDats.concat(sub)
}
await indexDB.loadAsync()
window.defaultDats = window.defaultDats.sort((datfA, datfB) => {
const exSetA = datfA.set
const exSetB = datfB.set
if (exSetA.isSameSet(exSetB)) {
return exSetA.index-exSetB.index
}
else {
setNames = Array.from(window.indexDB.sets.keys())
return setNames.indexOf(exSetA.name)-setNames.indexOf(exSetB.name)
}
})
processingIndicator.isActive = false
await reloadGeoms()
reloadCustomFiles()
}
async function reloadGeoms(){
processingIndicator.isActive = true
window.geoms = await GeometriesLoader.loadForAsync(uniq(window.defaultDats.map(d=>{
return {
set:d.set.name,
molecule:d.molecule
}
})))
processingIndicator.isActive = false
reloadSizeSelector()
}
function reloadSizeSelector() {
if (window.geoms & & window.dats) {
const nHnums=window.geoms.map((g)=>{
return g.molecule.atoms.count((a)=>a.label!=="H")
})
const nHmin = ss.min(nHnums)
const nMin=$("#nHmin")
nMin.attr("min",nHmin)
const nHmax = ss.max(nHnums)
const nMax=$("#nHmax")
nMax.attr("max",nHmax)
var init = nMin.attr("data-init")
if (typeof init !== undefined & & init !== false) {
nMin.removeAttr("data-init")
nMin.val(nHmin)
updateNumberRange(nMin[0])
}
init = nMax.attr("data-init")
if (typeof init !== undefined & & init !== false) {
nMin.removeAttr("data-init")
nMax.val(nHmax)
updateNumberRange(nMax[0])
}
const mols = uniq(window.geoms.map(g=>g.parseMetadata().molecule))
const shownHunknow=window.dats.some((d)=>!mols.includes(d.molecule))
const nHUnknowDiv = $("#cb_nHUnknow").parent()
if (shownHunknow) {
nHUnknowDiv.show()
}
else{
nHUnknowDiv.hide()
}
}
}
async function reloadCustomFiles() {
processingIndicator.isActive = true
2020-12-11 10:45:33 +01:00
window.customDats = []
window.dats = window.defaultDats
2020-11-24 19:21:58 +01:00
const kinds = new Map([["file_abs", VertExcitationKinds.Absorbtion], ["file_fluo", VertExcitationKinds.Fluorescence]])
for (const el of $('#form_dat > fieldset > fieldset > div > input[type="file"')) {
if (kinds.has(el.name)) {
2020-12-11 10:45:33 +01:00
const kind=kinds.get(el.name)
2020-11-24 19:21:58 +01:00
for (const f of el.files) {
2020-12-11 10:45:33 +01:00
const dat = await VertDataFile.loadAsync(f, kind)
window.customDats.push(dat)
2020-11-24 19:21:58 +01:00
}
}
}
2020-12-11 10:45:33 +01:00
for (const defdat of window.defaultDats) {
if (defdat.method.isTBE) {
for (const custdat of window.customDats) {
if (custdat.molecule===defdat.molecule) {
custdat.CopyExcitationsTypeFrom(defdat)
}
}
}
}
window.dats=window.defaultDats.concat(window.customDats)
2020-11-24 19:21:58 +01:00
processingIndicator.isActive = false
reloadSizeSelector()
reloadSelect("sets")
2020-12-07 11:16:42 +01:00
refreshExportGeoms()
2020-11-24 19:21:58 +01:00
}
async function clearSelect(BeforeName = null) {
var selects = ((BeforeName == null) ? getAllSelect() : getAllSelectAfter(BeforeName, true))
selects.add($('#sel_ref'))
selects.each(function () {
$(this).empty()
})
}
function getAllSelect() {
return $('#form_dat > fieldset > fieldset > div > select')
}
function getAllSelectAfter(Name, include = false) {
const selects = getAllSelect()
var index = selects.index($(`[name="${Name}"]`))
if (!include) {
index++
}
return selects.slice(index)
}
function getAllSelectBefore(Name, include = false) {
const selects = getAllSelect()
var index = selects.index($(`[name="${Name}"]`))
if (include) {
index++
}
return selects.slice(0, index)
}
async function reloadNextSelect(e) {
const afters = getAllSelectAfter(e.target.name)
const isLast = afters.length == 0
if (!isLast) {
await reloadSelect(afters.prop("name"))
}
if (afters.prop("name") ==="molecule"){
selectSelectAll(afters.first())
}
}
function getAllVals(select) {
return $(select).val()
}
async function reloadSelect(name) {
clearSelect(name)
var selects = getAllSelectBefore(name, true)
var currentselect = selects.last()
selects = selects.slice(0, selects.length - 1)
var AllValsCache = new Map()
selects.each(function() {
AllValsCache.set(this.name,getAllVals(this))
})
var AAllValsCache = Array.from(AllValsCache)
var vals = uniq(window.dats.filter(d => {
return AAllValsCache.every(([k,v]) => {
return v.indexOf(getSelectValue(d, k)) !== -1
})
}).map((d) => getSelectValue(d, name)))
if (name!="sets") {
vals = vals.sort((a,b)=>{
a = textSelctor(a)
b = textSelctor(b)
if (a === b) {
return 0
}
else {
switch (name) {
case "method":
if (a.startsWith("TBE") & & b.startsWith("TBE")) {
return (a === "TBE" ? -1 : 1)
}
else if(a.startsWith("TBE")) {
return -1
}
else if (b.startsWith("TBE")) {
return 1
}
else {
return a.localeCompare(b)
}
break;
case "basis":
if (a === "aug-cc-pVTZ") {
return -1
}
else if (b === "aug-cc-pVTZ") {
return 1
}
else {
return a.localeCompare(b)
}
case "sets":
return 0
default:
return a.localeCompare(b)
}
}
})
}
textSelctor = function (value) {
switch (name) {
case "sets":
if (value==="") {
return "Unnamed set"
}
case "molecule":
return mhchemCE.extract(value)
break;
default:
return value.toString()
}
}
valueSelector = function (value) {
if (typeof value === 'object') {
return JSON.stringify(value)
}
else {
return value
}
}
for (const val of vals) {
if (val !== null) {
$("< option / > ", {
value: valueSelector(val)
}).text(textSelctor(val)).appendTo(currentselect)
}
}
}
function getSelectValue(data, name) {
switch (name) {
case "method":
return data.method.name
break;
case "basis":
return data.method.basis
break;
case "sets":
return data.set.name
break;
default:
return data[name]
break;
}
}
async function reloadStat() {
processingIndicator.isActive = true
var stb = $("#stat_table > tbody")
$("#graph_div").empty()
$(stb).empty()
var refstr = $("#sel_ref option:selected").val()
var sdatdic = new Map()
for (const d of window.filtData) {
const key = JSON.stringify(d.method)
const SetName = d.set.name
if (!(sdatdic.has(key))) {
sdatdic.set(key, new Map())
}
2020-12-11 10:45:33 +01:00
const myT1s = T1ref.get(d.molecule)
2020-11-24 19:21:58 +01:00
for (const exc of d.excitations) {
var allowT1 = false
const T1Key = JSON.stringify((exc.initial, exc.final))
const T1range = filterParams.T1
if (T1range.min === 0 & & T1range.max === 100) {
allowT1 = true
} else if (myT1s.has(T1Key)) {
const T1Val = myT1s.get(T1Key)
if (T1range.min < = T1Val & & T1Val < = T1range.max) {
allowT1 = true
}
}
const key2 = JSON.stringify([d.molecule, exc.initial, exc.final, exc.VertExcitationKind])
const keydic = sdatdic.get(key)
if ((!exc.isUnsafe || window.filterParams.unsafe) & & ((exc.type & window.filterParams.exType) !== 0) & & ((exc.VertExcitationKind & window.filterParams.exVertKind) !== 0) & & allowT1) {
if (!(keydic.has(key2))) {
keydic.set(key2, exc.value)
}
}
}
}
var sdic = new Map()
for (const [key, sdat] of sdatdic) {
for (const [key2, exval] of sdat) {
if (!(sdic.has(key))) {
sdic.set(key, [])
}
sdic.get(key).push(exval - ((sdatdic.has(refstr)) ? sdatdic.get(refstr).get(key2) : NaN))
}
}
sdic.delete(refstr)
var graphdat = []
for (const [keystr, vals] of sdic) {
row = $("< tr / > ")
key = JSON.parse(keystr)
Reflect.setPrototypeOf(key, method.prototype)
th = $("< th / > ", { scope: "column" })
const meth = key
2020-12-08 13:44:18 +01:00
const span = $("< span / > ",{"data-csvtext":meth.toString()}).text(meth.toString("\n").split('-').join('\u2011'))
th.clone().append(span).appendTo(row)
2020-11-24 19:21:58 +01:00
const noNanVals = (vals.every((v) => Number.isNaN(v))) ? vals : (vals.filter((v) => !Number.isNaN(v)))
const avals = noNanVals.map(v => Math.abs(v))
th.clone().text(noNanVals.length).appendTo(row)
for (const val of [ss.min(noNanVals), ss.max(noNanVals), ss.mean(noNanVals), ss.mean(avals), ss.median(noNanVals), ss.median(avals), ss.rootMeanSquare(noNanVals), ss.variance(noNanVals), ss.standardDeviation(noNanVals)]) {
$("< td / > ").text(noNanFixed(val, 2)).appendTo(row)
}
$(stb).append(row)
var box = {
x: noNanVals,
amean: ss.mean(avals).toFixed(3),
name: `${key.toString()} MAE : ${ss.mean(avals).toPrecision(4)} eV` ,
type: 'box',
boxmean: 'sd'
};
graphdat.push(box)
}
var layout = {
paper_bgcolor: 'rgba(0,0,0,0)',
plot_bgcolor: 'rgba(0,0,0,0)',
gap: 0,
legend: {
traceorder: 'reversed',
},
xaxis: {
title: {
text: 'Error (eV)',
}
},
bgcolor: '#E2E2E2',
bordercolor: '#FFFFFF',
borderwidth: 2,
// autosize: false,
width: 1275,
height: 750,
margin: {
l: 0,
r: 10,
// b: 15,
t: 20,
pad: 0,
},
}
Plotly.newPlot('graph_div', graphdat, layout);
processingIndicator.isActive = false
}
async function reloadContent() {
window.filterParams = {
unsafe: $("#cb_unsafe").prop("checked"),
exType: Array.from(Array.from($("#cb_exTypeList>li>input[type=checkbox]:checked")).map(el => parseInt(el.value))).reduce((pv, cv) => pv + cv, 0),
exVertKind: Array.from(Array.from($("#cb_exVertKindList>li>input[type=checkbox]:checked")).map(el => parseInt(el.value))).reduce((pv, cv) => pv + cv, 0),
T1: {
min: parseFloat($("#T1min").val()),
max: parseFloat($("#T1max").val())
},
nHnum: {
min: parseInt($("#nHmin").val(),10),
max: parseInt($("#nHmax").val(),10),
allowUnknow:$("#cb_nHUnknow").is(':checked')
}
}
window.publiCache.clear()
processingIndicator.isActive = true
window.filtData = window.dats
//Filter with select
getAllSelect().each(function () {
const prop = $(this).attr("name")
const values = getAllVals(this)
window.filtData = window.filtData.filter((d) => {
if (typeof values == "undefined" || values == null) {
return false
}
return values.includes(getSelectValue(d, prop))
delete (val)
})
})
// Filter with molSize
const allowednHSize=window.filterParams.nHnum
window.filtData=window.filtData.filter((d)=>{
const geom=window.geoms.find((g)=>{
const met=g.parseMetadata()
return met.molecule === d.molecule & & JSON.stringify(met.method) === JSON.stringify(d.geometry)
})
if (geom) {
const size = geom.molecule.atoms.count(a=>a.label!=="H")
return (allowednHSize.min < = size & & size < = allowednHSize.max)
}
else {
return allowednHSize.allowUnknow
}
})
window.T1ref = new Map()
var exSets = new uniq(window.filtData.map((d) => d.set))
var mols = new Set(window.filtData.map((d) => d.molecule))
for (const exSet of exSets) {
const DOI= await exSet.getDOIAsync()
if (DOI!=null) {
publiCache.set(DOI,await PubliData.loadAsync(DOI))
}
const setName = exSet.name
for (const mol of mols) {
2020-12-11 10:45:33 +01:00
window.T1ref.set(mol, new Map())
var TBESortdat = window.dats.filter((d)=> d.molecule === mol).sort((d1, d2) => {
2020-11-24 19:21:58 +01:00
if (d1.method.isTBE & & !d2.method.isTBE) {
return -1
} else if (!d1.method.isTBE & & d2.method.isTBE) {
return 1
} else if (d1.method.isTBE & & d2.method.isTBE) {
if (d1.method.name === "TBE" & & d2.method.name === "TBE(Full)") {
return -1
} else if (d1.method.name === "TBE(Full)" & & d2.method.name === "TBE") {
return 1
}
else {
return 0
}
}
})
if (TBESortdat.length > 0 & & TBESortdat[0].method.isTBE) {
for (const exc of TBESortdat[0].excitations) {
2020-12-11 10:45:33 +01:00
window.T1ref.get(mol).set(JSON.stringify((exc.initial, exc.final)), exc.T1)
2020-11-24 19:21:58 +01:00
}
}
}
}
$(sel_ref).empty()
for (const me of uniq(window.filtData.map(d => d.method))) {
op = $("< option / > ", {
value: JSON.stringify(me)
}).text(me)
if (me.name.includes("TBE")) {
$(sel_ref).prepend(op)
}
else {
$(sel_ref).append(op)
}
}
$(sel_ref).prop("selectedIndex", 0);
var data = $("#data")
$(data).empty();
if (window.filtData.length > 0) {
var PreviousSetName = undefined
var CurrentsetName = undefined
for (const exSet of exSets) {
paperdata = window.filtData.filter((d) => {
return d.set.name === exSet.name & & d.set.index === exSet.index
})
var methods = uniq(paperdata.map(d => d.method))
const sortedMethods = methods.sort((a, b) => {
if (a.isTBE & & !b.isTBE) {
return -1
}
else if (a.isTBE & & b.isTBE) {
if (a.basis !== "CBS" & & b.basis === "CBS") {
return -1
}
else {
return 1
}
}
else if (!a.isTBE & & b.isTBE) {
return 1
}
else {
return 0
}
})
var div = $('< div / > ').appendTo(data)
CurrentsetName = exSet.name
if (PreviousSetName !== CurrentsetName) {
$("< h1 / > ").text(CurrentsetName).appendTo(div)
}
var doi= await exSet.getDOIAsync()
if (publiCache.has(doi)) {
const publiDat = publiCache.get(doi)
$("< h2 / > ").append($("< a > ",{href:publiDat.URL,target:"_blank"}).text(publiDat.title)).appendTo(div)
}
var table = $("< table / > ").addClass("datatable").appendTo(div)
2020-12-07 16:47:34 +01:00
$(table).before($("#stat_table").prevAll("button:first").clone())
2020-11-24 19:21:58 +01:00
var head = $("< tr / > ")
$("< thead / > ").addClass("sticky").append(head).appendTo(table)
var tbody = $("< tbody / > ").appendTo(table)
var th = $("< th / > ", { scope: "column" })
head.append(["Molecule", "Transition"].map(x => th.clone().text(x)))
2020-12-08 13:44:18 +01:00
head.append(sortedMethods.map(x => {
const span = $("< span / > ",{"data-csvtext":x.toString()}).text(x.toString("\n").split('-').join('\u2011'))
return th.clone().append(span)
}))
2020-11-24 19:21:58 +01:00
adjustSticky();
datadic = new Map()
for (const dat of paperdata) {
const setName = dat.set.name
const key1 = dat.molecule;
2020-12-11 10:45:33 +01:00
const myT1s = T1ref.get(dat.molecule)
2020-11-24 19:21:58 +01:00
if (!datadic.has(key1)) {
datadic.set(key1, new Map())
}
const key3 = JSON.stringify(dat.method)
for (const ex of dat.excitations) {
Reflect.setPrototypeOf(ex.type, excitationType.prototype)
var allowT1 = false
const T1Key = JSON.stringify((ex.initial, ex.final))
const T1range = filterParams.T1
if (T1range.min === 0 & & T1range.max === 100) {
allowT1 = true
} else if (myT1s.has(T1Key)) {
const T1Val = myT1s.get(T1Key)
if (T1range.min < = T1Val & & T1Val < = T1range.max) {
allowT1 = true
}
}
if (((window.filterParams.exType & ex.type) !== 0) & & ((window.filterParams.exVertKind & ex.VertExcitationKind) !== 0) & & allowT1) {
const key2 = JSON.stringify([ex.initial, ex.final, ex.type, ex.VertExcitationKind])
if (!datadic.get(key1).has(key2)) {
datadic.get(key1).set(key2, new Map())
}
datadic.get(key1).get(key2).set(key3, [ex.value, ex.isUnsafe])
}
}
}
for (const [molecule, moldat] of datadic.entries()) {
var printmol = true;
for (const [jsonex, exdat] of moldat.entries()) {
const ex = JSON.parse(jsonex)
Reflect.setPrototypeOf(ex[0], state.prototype)
Reflect.setPrototypeOf(ex[1], state.prototype)
Reflect.setPrototypeOf(ex[2], excitationType.prototype)
Reflect.setPrototypeOf(ex[3], VertExcitationKind.prototype)
var tr = $("< tr / > ")
if (printmol) {
$("< th / > ", { scope: "row", rowspan: moldat.size }).text((mhchemCE.test(molecule) ? MathJaxUtils.getMathJaxString(molecule.toString()) : molecule)).appendTo(tr)
printmol = false
}
var Vertkindtext = ""
if (ex[3].Value == VertExcitationKinds.Fluorescence.Value) {
Vertkindtext = String.raw`[\mathrm{F}]`
}
desctex = ""
if (ex[2].description.string) {
desctex = "(" + ex[2].description.string + ")"
}
$("< th / > ", { scope: "rowgroup" }).text(MathJaxUtils.getMathJaxString(String.raw`${ex[0].toLaTeX()} \rightarrow ${ex[1].toLaTeX()} ${Vertkindtext} ${desctex}`)).appendTo(tr)
var entries = Array.from(exdat.entries())
for (const method of sortedMethods) {
td = $("< td / > ").addClass("NumberCell")
kv = entries.find(x => {
return JSON.stringify(method) == x[0]
})
if (kv !== undefined) {
const [val, unsafe] = kv[1]
if (unsafe) {
2020-12-07 16:47:34 +01:00
td.append($("< span / > ", { title: "unsafe value", role: "img", "aria-label": "Warning", "data-csvtext":"(Unsafe)"}).addClass("emoji").text('⚠'))
2020-11-24 19:21:58 +01:00
}
if (unsafe & & !filterParams.unsafe) {
td.append($("< s / > ").append(val.toString()))
}
else {
td.append(val.toString())
}
}
tr.append(td)
}
tbody.append(tr)
}
}
PreviousSetName = CurrentsetName
}
await MathJax.typesetPromise()
}
await reloadRef()
}
async function reloadRef() {
$(sel_ref).empty()
for (const el of uniq(window.filtData.map(d => d.method))) {
op = $("< option / > ", {
value: JSON.stringify(el)
}).text(el)
if (el.name.includes("TBE")) {
$(sel_ref).prepend(op)
}
else {
$(sel_ref).append(op)
}
}
$(sel_ref).prop("selectedIndex", 0);
$(sel_ref).trigger("change")
}
async function submitdat() {
if (!DebugMode.Enabled) {
window.onbeforeunload = () => { return ''; }
}
await reloadContent();
}
2020-12-07 11:16:42 +01:00
2020-12-07 16:47:34 +01:00
function exportTableToCSV(table,title = null,allowTitleOverride = false) {
const tableCaption = $(table).find('caption').text()
if (tableCaption !== "" & & (title === null || allowTitleOverride)) {
title = tableCaption
}
const csv = tableToCSV(table)
const blob = new Blob([csv],{type:"text/csv"})
saveAs(blob,`${title}.csv`)
}
function OnExportTable(event) {
const table=$(event.target).nextAll('table:first')
exportTableToCSV(table,"table")
}
2020-12-07 11:16:42 +01:00
function refreshExportGeoms() {
const vals=$("#mol_select").val()
const disable = vals === null || vals.length===0
$("#btn_export_geoms").prop("disabled",disable)
}
2020-12-07 16:47:34 +01:00
2020-12-07 11:16:42 +01:00
async function moleculeSelectionChanged(event) {
refreshExportGeoms()
await reloadNextSelect(event)
}
async function exportGeoms() {
2020-12-08 13:45:10 +01:00
const folderName = "molecules"
2020-12-07 11:16:42 +01:00
var mols = new Set($("#mol_select").val())
if (mols.size!==0) {
const zip = JSZip();
2020-12-08 13:45:10 +01:00
const root=zip.folder(folderName)
2020-12-07 11:16:42 +01:00
const geomDic=new Map()
for (const geom of window.geoms) {
const molecule =geom.parseMetadata().molecule
if (mols.has(molecule)) {
if (!geomDic.has(molecule)) {
2020-12-07 15:42:48 +01:00
geomDic.set(molecule,new Set())
2020-12-07 11:16:42 +01:00
}
2020-12-07 15:42:48 +01:00
geomDic.get(molecule).add(geom.toXYZ())
2020-12-07 11:16:42 +01:00
}
}
for (const [molecule,geometries] of geomDic) {
2020-12-07 15:42:48 +01:00
const xyz=Array.from(geometries).join("\n\n")
2020-12-07 11:16:42 +01:00
var blob=new Blob([xyz],{type: 'chemical/x-xyz'})
2020-12-08 13:45:10 +01:00
root.file(`${mhchemCE.extract(molecule).toLowerCase().replace(" ","_")}.xyz`,blob)
2020-12-07 11:16:42 +01:00
}
const zipFile = await zip.generateAsync({type: 'blob'})
2020-12-08 13:45:10 +01:00
saveAs(zipFile, `${folderName}.zip`)
2020-12-07 11:16:42 +01:00
}
}
2020-11-24 19:21:58 +01:00
< / script >
< script >
function getAbsFilesName(){
var files=["abs/acetaldehyde_ADC(2)_aug-cc-pVTZ.dat","abs/acetaldehyde_ADC(2)_aug-cc-pVTZ_addon.dat","abs/acetaldehyde_ADC(2.5)_aug-cc-pVTZ.dat","abs/acetaldehyde_ADC(2.5)_aug-cc-pVTZ_addon.dat","abs/acetaldehyde_ADC(3)_aug-cc-pVTZ.dat","abs/acetaldehyde_ADC(3)_aug-cc-pVTZ_addon.dat","abs/acetaldehyde_CC2_aug-cc-pVTZ.dat","abs/acetaldehyde_CC2_aug-cc-pVTZ_addon.dat","abs/acetaldehyde_CC3(Full)_aug-cc-pVQZ.dat","abs/acetaldehyde_CC3_6-31+G(d).dat","abs/acetaldehyde_CC3_aug-cc-pVDZ.dat","abs/acetaldehyde_CC3_aug-cc-pVQZ.dat","abs/acetaldehyde_CC3_aug-cc-pVTZ.dat","abs/acetaldehyde_CC3_aug-cc-pVTZ_addon.dat","abs/acetaldehyde_CCSDR(3)_aug-cc-pVTZ.dat","abs/acetaldehyde_CCSDT-3_aug-cc-pVTZ.dat","abs/acetaldehyde_CCSDT_6-31+G(d).dat","abs/acetaldehyde_CCSDT_aug-cc-pVDZ.dat","abs/acetaldehyde_CCSDT_aug-cc-pVTZ.dat","abs/acetaldehyde_CCSD_aug-cc-pVTZ.dat","abs/acetaldehyde_CIS(D)_aug-cc-pVTZ.dat","abs/acetaldehyde_CIS(D∞)_aug-cc-pVTZ.dat","abs/acetaldehyde_EOM-MP2_aug-cc-pVTZ.dat","abs/acetaldehyde_FCI_aug-cc-pVDZ.dat","abs/acetaldehyde_FCI_aug-cc-pVTZ.dat","abs/acetaldehyde_SCS-CC2_aug-cc-pVTZ.dat","abs/acetaldehyde_SOS-ADC(2)_[Q-Chem]_aug-cc-pVTZ.dat","abs/acetaldehyde_SOS-ADC(2)_[TM]_aug-cc-pVTZ.dat","abs/acetaldehyde_SOS-CC2_aug-cc-pVTZ.dat","abs/acetaldehyde_STEOM-CCSD_aug-cc-pVTZ.dat","abs/acetaldehyde_TBE(Full)_CBS.dat","abs/acetaldehyde_TBE_aug-cc-pVTZ.dat","abs/acetaldehyde_exp.dat","abs/acetone_ADC(2)_aug-cc-pVTZ.dat","abs/acetone_ADC(2)_aug-cc-pVTZ_addon.dat","abs/acetone_ADC(2.5)_aug-cc-pVTZ.dat","abs/acetone_ADC(2.5)_aug-cc-pVTZ_addon.dat","abs/acetone_ADC(3)_aug-cc-pVTZ_addon.dat","abs/acetone_CC2_aug-cc-pVTZ.dat","abs/acetone_CC2_aug-cc-pVTZ_addon.dat","abs/acetone_CC3(Full)_aug-cc-pVQZ.dat","abs/acetone_CC3_6-31+G(d).dat","abs/acetone_CC3_aug-cc-pVDZ.dat","abs/acetone_CC3_aug-cc-pVQZ.dat","abs/acetone_CC3_aug-cc-pVTZ.dat","abs/acetone_CC3_aug-cc-pVTZ_addon.dat","abs/acetone_CCSDR(3)_aug-cc-pVTZ.dat","abs/acetone_CCSDT-3_aug-cc-pVTZ.dat","abs/acetone_CCSDTQ_6-31+G(d).dat","abs/acetone_CCSDT_6-31+G(d).dat","abs/acetone_CCSDT_aug-cc-pVDZ.dat","abs/acetone_CCSDT_aug-cc-pVTZ.dat","abs/acetone_CCSD_aug-cc-pVTZ.dat","abs/acetone_CIS(D)_aug-cc-pVTZ.dat","abs/acetone_EOM-MP2_aug-cc-pVTZ.dat","abs/acetone_FCI_6-31+G(d).dat","abs/acetone_NEVPT2_aug-cc-pVTZ.dat","abs/acetone_SCS-CC2_aug-cc-pVTZ.dat","abs/acetone_SOS-ADC(2)_[Q-Chem]_aug-cc-pVTZ.dat","abs/acetone_SOS-ADC(2)_[TM]_aug-cc-pVTZ.dat","abs/acetone_SOS-CC2_aug-cc-pVTZ.dat","abs/acetone_STEOM-CCSD_aug-cc-pVTZ.dat","abs/acetone_TBE(Full)_CBS.dat","abs/acetone_TBE_aug-cc-pVTZ.dat","abs/acetone_exp.dat","abs/acetylene_ADC(2)_aug-cc-pVTZ.dat","abs/acetylene_ADC(2)_aug-cc-pVTZ_addon.dat","abs/acetylene_ADC(2.5)_aug-cc-pVTZ.dat","abs/acetylene_ADC(2.5)_aug-cc-pVTZ_addon.dat","abs/acetylene_ADC(3)_aug-cc-pVTZ.dat","abs/acetylene_ADC(3)_aug-cc-pVTZ_addon.dat","abs/acetylene_CC2_aug-cc-pVTZ.dat","abs/acetylene_CC2_aug-cc-pVTZ_addon.dat","abs/acetylene_CC3(Full)_aug-cc-pV5Z.dat","abs/acetylene_CC3(Full)_aug-cc-pVQZ.dat","abs/acetylene_CC3(Full)_d-aug-cc-pV5Z.dat","abs/acetylene_CC3(Full)_d-aug-cc-pVQZ.dat","abs/acetylene_CC3_6-31+G(d).dat","abs/acetylene_CC3_aug-cc-pVDZ.dat","abs/acetylene_CC3_aug-cc-pVQZ.dat","abs/acetylene_CC3_aug-cc-pVTZ.dat","abs/acetylene_CC3_aug-cc-pVTZ_addon.dat","abs/acetylene_CC3_d-aug-cc-pVQZ.dat","abs/acetylene_CCSDR(3)_aug-cc-pVTZ.dat","abs/acetylene_CCSDT-3_aug-cc-pVTZ.dat","abs/acetylene_CCSDTQ_6-31+G(d).dat","abs/acetylene_CCSDTQ_aug-cc-pVDZ.dat","abs/acetylene_CCSDTQ_aug-cc-pVTZ.dat","abs/acetylene_CCSDT_6-31+G(d).dat","abs/acetylene_CCSDT_aug-cc-pVDZ.dat","abs/acetylene_CCSDT_aug-cc-pVTZ.dat","abs/acetylene_CCSD_aug-cc-pVTZ.dat","abs/acetylene_CIS(D)_aug-cc-pVTZ.dat","abs/acetylene_CIS(D∞)_aug-cc-pVTZ.dat","abs/acetylene_EOM-MP2_aug-cc-pVTZ.dat","abs/acetylene_FCI_aug-cc-pVDZ.dat","abs/acetylene_FCI_aug-cc-pVTZ.dat","abs/acetylene_SCS-CC2_aug-cc-pVTZ.dat","abs/acetylene_SOS-ADC(2)_[Q-Chem]_aug-cc-pVTZ.dat","abs/acetylene_SOS-ADC(2)_[TM]_aug-cc-pVTZ.dat","abs/acetylene_SOS-CC2_aug-cc-pVTZ.dat","abs/acetylene_STEOM-CCSD_aug-cc-pVTZ.dat","
return files
}
function getFluoFilesName(){
var files=["fluo/acetylene_ADC(2)_aug-cc-pVTZ.dat","fluo/acetylene_ADC(2)_aug-cc-pVTZ_addon.dat","fluo/acetylene_ADC(2.5)_aug-cc-pVTZ.dat","fluo/acetylene_ADC(2.5)_aug-cc-pVTZ_addon.dat","fluo/acetylene_ADC(3)_aug-cc-pVTZ.dat","fluo/acetylene_ADC(3)_aug-cc-pVTZ_addon.dat","fluo/acetylene_CC2_aug-cc-pVTZ.dat","fluo/acetylene_CC2_aug-cc-pVTZ_addon.dat","fluo/acetylene_CC3(Full)_aug-cc-pV5Z.dat","fluo/acetylene_CC3(Full)_aug-cc-pVQZ.dat","fluo/acetylene_CC3(Full)_d-aug-cc-pV5Z.dat","fluo/acetylene_CC3(Full)_d-aug-cc-pVQZ.dat","fluo/acetylene_CC3_6-31+G(d).dat","fluo/acetylene_CC3_aug-cc-pVDZ.dat","fluo/acetylene_CC3_aug-cc-pVQZ.dat","fluo/acetylene_CC3_aug-cc-pVTZ.dat","fluo/acetylene_CC3_aug-cc-pVTZ_addon.dat","fluo/acetylene_CC3_d-aug-cc-pVQZ.dat","fluo/acetylene_CCSDR(3)_aug-cc-pVTZ.dat","fluo/acetylene_CCSDT-3_aug-cc-pVTZ.dat","fluo/acetylene_CCSDTQ_6-31+G(d).dat","fluo/acetylene_CCSDTQ_aug-cc-pVDZ.dat","fluo/acetylene_CCSDTQ_aug-cc-pVTZ.dat","fluo/acetylene_CCSDT_6-31+G(d).dat","fluo/acetylene_CCSDT_aug-cc-pVDZ.dat","fluo/acetylene_CCSDT_aug-cc-pVTZ.dat","fluo/acetylene_CCSD_aug-cc-pVTZ.dat","fluo/acetylene_CIS(D)_aug-cc-pVTZ.dat","fluo/acetylene_CIS(D∞)_aug-cc-pVTZ.dat","fluo/acetylene_EOM-MP2_aug-cc-pVTZ.dat","fluo/acetylene_FCI_aug-cc-pVDZ.dat","fluo/acetylene_FCI_aug-cc-pVTZ.dat","fluo/acetylene_SCS-CC2_aug-cc-pVTZ.dat","fluo/acetylene_SOS-ADC(2)_[Q-Chem]_aug-cc-pVTZ.dat","fluo/acetylene_SOS-ADC(2)_[TM]_aug-cc-pVTZ.dat","fluo/acetylene_SOS-CC2_aug-cc-pVTZ.dat","fluo/acetylene_STEOM-CCSD_aug-cc-pVTZ.dat","fluo/acetylene_TBE(Full)_CBS.dat","fluo/acetylene_TBE_aug-cc-pVTZ.dat","fluo/cyanoacetylene_ADC(2)_aug-cc-pVTZ.dat","fluo/cyanoacetylene_ADC(2)_aug-cc-pVTZ_addon.dat","fluo/cyanoacetylene_ADC(2.5)_aug-cc-pVTZ_addon.dat","fluo/cyanoacetylene_ADC(3)_aug-cc-pVTZ_addon.dat","fluo/cyanoacetylene_CC2_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CC2_aug-cc-pVTZ_addon.dat","fluo/cyanoacetylene_CC3(Full)_aug-cc-pVQZ.dat","fluo/cyanoacetylene_CC3_6-31+G(d).dat","fluo/cyanoacetylene_CC3_aug-cc-pVDZ.dat","fluo/cyanoacetylene_CC3_aug-cc-pVQZ.dat","fluo/cyanoacetylene_CC3_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CC3_aug-cc-pVTZ_addon.dat","fluo/cyanoacetylene_CCSDR(3)_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CCSDT-3_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CCSDTQ_6-31+G(d).dat","fluo/cyanoacetylene_CCSDTQ_aug-cc-pVDZ.dat","fluo/cyanoacetylene_CCSDT_6-31+G(d).dat","fluo/cyanoacetylene_CCSDT_aug-cc-pVDZ.dat","fluo/cyanoacetylene_CCSDT_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CCSD_aug-cc-pVTZ.dat","fluo/cyanoacetylene_CIS(D)_aug-cc-pVTZ.dat","fluo/cyanoacetylene_EOM-MP2_aug-cc-pVTZ.dat","fluo/cyanoacetylene_FCI_6-31+G(d).dat","fluo/cyanoacetylene_FCI_aug-cc-pVDZ.dat","fluo/cyanoacetylene_NEVPT2_aug-cc-pVTZ.dat","fluo/cyanoacetylene_SCS-CC2_aug-cc-pVTZ.dat","fluo/cyanoacetylene_SOS-ADC(2)_[Q-Chem]_aug-cc-pVTZ.dat","fluo/cyanoacetylene_SOS-ADC(2)_[TM]_aug-cc-pVTZ.dat","fluo/cyanoacetylene_SOS-CC2_aug-cc-pVTZ.dat","fluo/cyanoacetylene_STEOM-CCSD_aug-cc-pVTZ.dat","fluo/cyanoacetylene_TBE(Full)_CBS.dat","fluo/cyanoacetylene_TBE_aug-cc-pVTZ.dat","fluo/cyanogen_ADC(2)_aug-cc-pVTZ.dat","fluo/cyanogen_ADC(2)_aug-cc-pVTZ_addon.dat","fluo/cyanogen_ADC(2.5)_aug-cc-pVTZ_addon.dat","fluo/cyanogen_ADC(3)_aug-cc-pVTZ_addon.dat","fluo/cyanogen_CC2_aug-cc-pVTZ.dat","fluo/cyanogen_CC2_aug-cc-pVTZ_addon.dat","fluo/cyanogen_CC3(Full)_aug-cc-pVQZ.dat","fluo/cyanogen_CC3(Full)_d-aug-cc-pVQZ.dat","fluo/cyanogen_CC3_6-31+G(d).dat","fluo/cyanogen_CC3_aug-cc-pV5Z.dat","fluo/cyanogen_CC3_aug-cc-pVDZ.dat","fluo/cyanogen_CC3_aug-cc-pVQZ.dat","fluo/cyanogen_CC3_aug-cc-pVTZ.dat","fluo/cyanogen_CC3_aug-cc-pVTZ_addon.dat","fluo/cyanogen_CC3_d-aug-cc-pVQZ.dat","fluo/cyanogen_CCSDR(3)_aug-cc-pVTZ.dat","fluo/cyanogen_CCSDT-3_aug-cc-pVTZ.dat","fluo/cyanogen_CCSDTQ_6-31+G(d).dat","fluo/cyanogen_CCSDTQ_aug-cc-pVDZ.dat","fluo/cyanogen_CCSDT_6-31+G(d).dat","fluo/cyanogen_CCSDT_aug-cc-pVDZ.dat","fluo/cyanogen_CCSDT_aug-cc-pVTZ.dat","fluo/cyanogen_CCSD_aug-cc-pVTZ.dat","fluo/cyanogen_CIS(D)_aug-cc-pVTZ.dat","fluo/cyanogen_EOM-MP2_aug-cc-pVTZ.dat","fluo/cyanogen_FCI_6-31+G(d).dat","fluo/cy
return files
}
< / script >
< noscript >
< p style = "background-color: red; color: white; font-size: 20; font-weight: bold;" >
< span role = "img" aria-label = "Warning" class = "emoji" > ⚠< / span >
< span > This website work only if JavaScript is enable. You must enable
JavaScript.
< a href = "https://www.enable-javascript.com/" target = "_blank" > How to enable JavaScript ?< / a > < / span >
< / p >
< / noscript >
< p >
This page allows you to compare multiple dataset and perform statistical analyses to evaluate the accuracy of a given method.
All fields marked with an asterisk (< span style = "color: red;" > *< / span > ) are mandatory).
< / p >
< form id = "form_dat" action = "javascript:submitdat()" >
< fieldset class = "main" >
< fieldset >
< legend > Import custom files< / legend >
< p >
Import a custom file to compare its data to the reference dataset.
< / p >
< div >
< label for = "absFiles_input" > Import custom absorption data files< / label >
< input type = "file" multiple onchange = "reloadCustomFiles()" id = "absFiles_input" name = "file_abs" > < / input >
< / div >
< div >
< label for = "fluoFiles_input" > Import custom fluorescence data files< / label >
< input type = "file" multiple onchange = "reloadCustomFiles()" id = "fluoFiles_input" name = "file_fluo" > < / input >
< / div >
< / fieldset >
< br >
< fieldset class = "table" >
< legend > Data selection< / legend >
< p > Select parameters. You can use < button
disabled>Select all< / button > to select all items < span hidden
data-needbrowser='{"Engine":["WebKit","Blink"],"Platform":["desktop"]}'> or the shortcut key < kbd
data-needbrowser='{"OS":["MacOS"]}'>⌘< / kbd > < kbd
data-neednotbrowser='{"OS":["MacOS"]}'>Ctrl< / kbd > +< kbd > A< / kbd > < / span >
< / p >
< div style = "display: inline-block;" >
< label for = "DOI_select" class = "required" > Set< / label >
2020-12-07 11:16:42 +01:00
< button class = "selectButton" type = "button" onclick = "selectSelectAll_click(event)" > Select all< / button >
2020-11-24 19:21:58 +01:00
< select multiple id = "DOI_select" required name = "sets" onchange = "reloadNextSelect(event)" > < / select >
< / div >
< div style = "display:inline-block" >
< label for = "mol_select" class = "required" > Molecule< / label >
2020-12-07 11:16:42 +01:00
< button class = "selectButton" type = "button" onclick = "selectSelectAll_click(event)" > Select all< / button >
< select multiple id = "mol_select" required name = "molecule" onchange = "moleculeSelectionChanged(event)" > < / select >
< button id = "btn_export_geoms" class = "selectButton" type = "button" disabled onclick = "exportGeoms()" > Export geometries< / button >
2020-11-24 19:21:58 +01:00
< / div >
< br / >
< div style = "display: inline-block;" >
< label for = "method_select" class = "required" > Method< / label >
2020-12-07 11:16:42 +01:00
< button class = "selectButton" type = "button" onclick = "selectSelectAll_click(event)" > Select all< / button >
2020-11-24 19:21:58 +01:00
< select multiple id = "method_select" required name = "method" onchange = "reloadNextSelect(event)" > < / select >
< / div >
< div style = "display: inline-block;" >
< label for = "basis_select" class = "required" > Basis set< / label >
2020-12-07 11:16:42 +01:00
< button class = "selectButton" type = "button" onclick = "selectSelectAll_click(event)" > Select all< / button >
2020-11-24 19:21:58 +01:00
< select multiple id = "basis_select" required name = "basis" onchange = "reloadNextSelect(event)" > < / select >
< / div >
< / fieldset >
< br >
< fieldset >
< legend class = "required" > Nature of vertical excitations< / legend >
< p > Select the kind of vertical excitations you want to consider< / p >
< ul class = "nestedCbList" style = "padding-left: 0em;" >
< li >
< input type = "checkbox" data-onerequired = "true" checked onchange = "nestedCheckbox_change(event)"
id="cb_fileType_All">< / input >
< label for = "cb_fileType_All" > All< / label >
< / li >
< ul class = "nestedCbList" id = "cb_exVertKindList" >
< li >
< input type = "checkbox" onchange = "nestedCheckbox_change(event)" id = "cb_abs" value = "1" name = "datatype" >
< label for = "cb_abs" > Absorption< / label >
< / li >
< li >
< input type = "checkbox" onchange = "nestedCheckbox_change(event)" id = "cb_fluo" value = "2" name = "datatype" >
< label for = "fluo" > Fluorescence< / label >
< / li >
< / ul >
< / ul >
< / fieldset >
< br >
< fieldset id = "excitationFilter" >
< legend class = "required" > Filters< / legend >
< p > Select nature of the excited states and/or transitions< / p >
< ul class = "nestedCbList" style = "padding-left: 0em;" >
< li >
< input type = "checkbox" data-onerequired = "true" onchange = "nestedCheckbox_change(event)"
id="cb_exType_All">< / input >
< label for = "cb_exType_All" > All< / label >
< / li >
< ul id = "cb_exTypeList" class = "nestedCbList" >
< / ul >
< p > Select if you want to include unsafe reference values in the statistics< / p >
< li id = "li_cb_unsafe" >
< input type = "checkbox" id = "cb_unsafe" name = "unsafe" >
< label for = "cb_unsafe" > Unsafe< / label >
< / li >
< / fieldset >
< br >
< fieldset >
< legend > Molecule Size< / legend >
< p > Select the molecule size (by the number of non H atoms)< / p >
< input class = "range min" airia-label = "Minimum value" data-init type = "number" id = "nHmin" onchange = "numberRangeChange(event)" >
< span > \(\leq \text{non-H atoms} \leq\)< / span >
< input class = "range max" airia-label = "Maximum value" data-init type = "number" id = "nHmax" onchange = "numberRangeChange(event)" >
< div hidden = true >
< input type = "checkbox" id = "cb_nHUnknow" name = "nHUnknoww" >
< label for = "cb_nHUnknow" > Unknow size< / label >
< / div >
< / fieldset >
< br >
< fieldset >
< legend > \(\mathrm{\%T_1}\)< / legend >
< p > Select the range of single-excitation percentage \(\mathrm{\%T_1}\) of the transitions < / p >
< input class = "range min" airia-label = "Minimum value" type = "number" id = "T1min" onchange = "numberRangeChange(event)"
min="0" value="0">
< span > \(\leq \mathrm{\%T_1} \leq\)< / span >
< input class = "range max" airia-label = "Maximum value" type = "number" id = "T1max" onchange = "numberRangeChange(event)"
max="100" value="100">
< / fieldset >
< br >
< / fieldset >
< input type = "submit" value = "Load" > < / input >
< / form >
< form id = "form_ref" >
< fieldset class = "main" >
< fieldset >
< legend > Reference data for statistical analyses< / legend >
< p > Select a reference from < strong > already selected data< / strong > (by default < abbr
title="Theoretical best estimate">TBE< / abbr > if selected)< / p >
< label for = "sel_ref" > Reference< / label >
< select id = "sel_ref" onchange = "reloadStat()" > < / select >
< / fieldset >
< br >
< / fieldset >
< / form >
< p > List of selected data and their corresponding statistical analysis< / p >
< section id = "data" >
< / section >
< section >
2020-12-07 16:47:34 +01:00
< button onclick = "OnExportTable(event)" > Export as CSV< / button >
2020-11-24 19:21:58 +01:00
< table id = "stat_table" class = "datatable" >
< thead class = "sticky" >
< th scope = "col" > Method< / th >
< th scope = "col" > Count< / th >
< th scope = "col" > Min< / th >
< th scope = "col" > Max< / th >
< th scope = "col" > < abbr title = "Mean signed error" > MSE< / abbr > < / th >
< th scope = "col" > < abbr title = "Mean absolute error" > MAE< / abbr > < / th >
< th scope = "col" > Median< / th >
< th scope = "col" > Absolute Median< / th >
< th scope = "col" > < abbr title = "Root-mean square error " > RMSE< / abbr > < / th >
< th scope = "col" > Variance< / th >
< th scope = "col" > < abbr title = "Standard deviation of the errors" > SDE< / abbr > < / th >
< / thead >
< tbody >
< / tbody >
< / table >
2020-12-07 11:14:56 +01:00
< div id = "graph_div" > < / div >
2020-11-24 19:21:58 +01:00
< / section >
< div class = "modal" >
< div class = "content" >
< span > Please Wait…< / span >
< br / >
< progress > < / progress >
< / div >
< / div >
< / article >
< / div >
< / div >
< / div >
< div class = "page-meta" >
< / div >
< footer >
< div class = "container" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1" >
< ul class = "list-inline text-center footer-links" >
< li >
< a href = "mailto:mveril@irsamc.ups-tlse.fr" title = "Email me" >
< span class = "fa-stack fa-lg" >
< i class = "fas fa-circle fa-stack-2x" > < / i >
< i class = "fas fa-envelope fa-stack-1x fa-inverse" > < / i >
< / span >
< / a >
< / li >
< li >
< a href = "https://github.com/LCPQ/QUESTDB_website" title = "GitHub" >
< span class = "fa-stack fa-lg" >
< i class = "fas fa-circle fa-stack-2x" > < / i >
< i class = "fab fa-github fa-stack-1x fa-inverse" > < / i >
< / span >
< / a >
< / li >
< li >
< a href = "https://twitter.com/LCPQ_UMR5626" title = "Twitter" >
< span class = "fa-stack fa-lg" >
< i class = "fas fa-circle fa-stack-2x" > < / i >
< i class = "fab fa-twitter fa-stack-1x fa-inverse" > < / i >
< / span >
< / a >
< / li >
< / ul >
< p class = "credits copyright text-muted" >
M. Véril
• ©
0001
•
2020-11-25 00:24:34 +01:00
< a href = "https://lcpq.github.io/QUESTDB_website/" > QUEST: a database of highly-accurate excitation energies< / a >
2020-11-24 19:21:58 +01:00
< / p >
< p class = "credits theme-by text-muted" >
2020-12-18 11:56:59 +01:00
< a href = "https://gohugo.io" > Hugo v0.79.0< / a > powered • Theme < a href = "https://github.com/halogenica/beautifulhugo" > Beautiful Hugo< / a > adapted from < a href = "https://deanattali.com/beautiful-jekyll/" > Beautiful Jekyll< / a >
2020-11-24 19:21:58 +01:00
< / p >
< / div >
< / div >
< / div >
< / footer > < script src = "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.js" integrity = "sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin = "anonymous" > < / script >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/contrib/auto-render.min.js" integrity = "sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin = "anonymous" > < / script >
< script src = "https://code.jquery.com/jquery-1.12.4.min.js" integrity = "sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin = "anonymous" > < / script >
< script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity = "sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin = "anonymous" > < / script >
2020-11-25 00:24:34 +01:00
< script src = "https://lcpq.github.io/QUESTDB_website/js/main.js" > < / script > < script > renderMathInElement ( document . body ) ; < / script > < script src = "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.js" integrity = "sha384-QELNnmcmU8IR9ZAykt67vGr9/rZJdHbiWi64V88fCPaOohUlHCqUD/unNN0BXSqy" crossorigin = "anonymous" > < / script >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe-ui-default.min.js" integrity = "sha384-m67o7SkQ1ALzKZIFh4CiTA8tmadaujiTa9Vu+nqPSwDOqHrDmxLezTdFln8077+q" crossorigin = "anonymous" > < / script > < script src = "https://lcpq.github.io/QUESTDB_website/js/load-photoswipe.js" > < / script >
2020-11-24 19:21:58 +01:00
< / body >
< / html >