Abstract Sifter version 8: Focus on the chemical literature

preprint OA: closed CC-BY-4.0

Abstract

Effective research depends on building on the knowledge found in the scientific literature. Designed to streamline literature tasks, the EPA’s Abstract Sifter literature tool, now at version 8, has been continually extended and enhanced since its introduction in 2017[1]. Early enhancements to the tool have primarily focused on core tasks common to all researchers. For example, citation retrieval from PubMed has been made faster and the returned citation threshold increased to 10,000. Features that allow deeper examination of the literature have been introduced as well. A functionality called Term-mapping allows for fast, dynamic relevancy ranking of returned citations. MeSH substances, such as proteins, genes, and chemicals, can now be extracted from a retrieved corpus of citations, ranked by frequency and explored through the MeSHMine functionality. Features that facilitate user engagement with publications have also been improved: formatting and colorization ease reviewing of the abstract text and the tagging and noting citations functionality has been streamlined. Version 8 introduced multiple features that break new ground in working with chemical literature. For example, chemical entity extraction from scientific publications has been streamlined through download of PDFs and automated table extraction. Following entity extraction, the chemical names can be used as inputs to retrieve EPA’s chemical identifiers, the DSSTox chemical IDs (DTXSIDs). Once these identifiers have been retrieved, a wealth of chemical information is available through built-in functions accessing EPA’s Computational Toxicology and Exposure application programming interface (CTX-APIs) [2]. This new functionality allows researchers to build on the EPA’s efforts in chemical data assembly and curation. The Abstract Sifter version 8 is a valuable tool for researchers endeavoring to understand chemicals and their effects on the environment and biological systems.
Full text 133,066 characters · extracted from preprint-html · click to expand
Abstract Sifter version 8: Focus on the chemical... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/14-260" }, "headline": "Abstract Sifter version 8: Focus on the chemical literature", "datePublished": "2025-03-04T09:57:42", "dateModified": "2025-03-04T09:57:42", "author": [ { "@type": "Person", "name": "Nancy C. Baker" }, { "@type": "Person", "name": "Thomas B. Knudsen" }, { "@type": "Person", "name": "Antony J. Williams" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": "Effective research depends on building on the knowledge found in the scientific literature. Designed to streamline literature tasks, the EPA’s Abstract Sifter literature tool, now at version 8, has been continually extended and enhanced since its introduction in 2017[1]. Early enhancements to the tool have primarily focused on core tasks common to all researchers. For example, citation retrieval from PubMed has been made faster and the returned citation threshold increased to 10,000. Features that allow deeper examination of the literature have been introduced as well. A functionality called Term-mapping allows for fast, dynamic relevancy ranking of returned citations. MeSH substances, such as proteins, genes, and chemicals, can now be extracted from a retrieved corpus of citations, ranked by frequency and explored through the MeSHMine functionality. Features that facilitate user engagement with publications have also been improved: formatting and colorization ease reviewing of the abstract text and the tagging and noting citations functionality has been streamlined. Version 8 introduced multiple features that break new ground in working with chemical literature. For example, chemical entity extraction from scientific publications has been streamlined through download of PDFs and automated table extraction. Following entity extraction, the chemical names can be used as inputs to retrieve EPA’s chemical identifiers, the DSSTox chemical IDs (DTXSIDs). Once these identifiers have been retrieved, a wealth of chemical information is available through built-in functions accessing EPA’s Computational Toxicology and Exposure application programming interface (CTX-APIs) [2]. This new functionality allows researchers to build on the EPA’s efforts in chemical data assembly and curation. The Abstract Sifter version 8 is a valuable tool for researchers endeavoring to understand chemicals and their effects on the environment and biological systems." } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/14-260", "name": "Abstract Sifter version 8: Focus on the chemical literature" } } ] } Home Browse Abstract Sifter version 8: Focus on the chemical literature ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Baker NC, Knudsen TB and Williams AJ. Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.12688/f1000research.160617.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. Close Copy Citation Details Export Export Citation Sciwheel EndNote Ref. Manager Bibtex ProCite Sente EXPORT Select a format first Track Share ▬ ✚ Software Tool Article Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] Nancy C. Baker https://orcid.org/0000-0002-8351-9435 1 , Thomas B. Knudsen 2 , Antony J. Williams https://orcid.org/0000-0002-2668-4821 3 Nancy C. Baker https://orcid.org/0000-0002-8351-9435 1 , Thomas B. Knudsen 2 , Antony J. Williams https://orcid.org/0000-0002-2668-4821 3 PUBLISHED 04 Mar 2025 Author details Author details 1 ParlezChem, Hillsborough, North Carolina, USA 2 Department of Intelligent Systems Engineering, Luddy School of Informatics Computing and Engineering, Indiana University, Bloomington, Indiana, USA 3 Center for Computational Toxicology and Exposure, Office of Research and Development, U.S. Environmental Protection Agency, Research Triangle Park, North Carolina, USA Nancy C. Baker Roles: Conceptualization, Methodology, Project Administration, Software, Writing – Original Draft Preparation, Writing – Review & Editing Thomas B. Knudsen Roles: Funding Acquisition, Project Administration, Supervision, Writing – Review & Editing Antony J. Williams Roles: Funding Acquisition, Project Administration, Supervision, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Cheminformatics gateway. Abstract Effective research depends on building on the knowledge found in the scientific literature. Designed to streamline literature tasks, the EPA’s Abstract Sifter literature tool, now at version 8, has been continually extended and enhanced since its introduction in 2017[1]. Early enhancements to the tool have primarily focused on core tasks common to all researchers. For example, citation retrieval from PubMed has been made faster and the returned citation threshold increased to 10,000. Features that allow deeper examination of the literature have been introduced as well. A functionality called Term-mapping allows for fast, dynamic relevancy ranking of returned citations. MeSH substances, such as proteins, genes, and chemicals, can now be extracted from a retrieved corpus of citations, ranked by frequency and explored through the MeSHMine functionality. Features that facilitate user engagement with publications have also been improved: formatting and colorization ease reviewing of the abstract text and the tagging and noting citations functionality has been streamlined. Version 8 introduced multiple features that break new ground in working with chemical literature. For example, chemical entity extraction from scientific publications has been streamlined through download of PDFs and automated table extraction. Following entity extraction, the chemical names can be used as inputs to retrieve EPA’s chemical identifiers, the DSSTox chemical IDs (DTXSIDs). Once these identifiers have been retrieved, a wealth of chemical information is available through built-in functions accessing EPA’s Computational Toxicology and Exposure application programming interface (CTX-APIs) [2]. This new functionality allows researchers to build on the EPA’s efforts in chemical data assembly and curation. The Abstract Sifter version 8 is a valuable tool for researchers endeavoring to understand chemicals and their effects on the environment and biological systems. READ ALL READ LESS Keywords Literature mining, knowledge mining, PubMed, DSSTox, drug discovery, toxicology Corresponding Author(s) Nancy C. Baker ( [email protected] ) Close Corresponding author: Nancy C. Baker Competing interests: NCB is a literature informatics consultant with ParlezChem. Grant information: Research in this publication was supported by the U.S. Environmental Protection Agency. The views expressed in this paper are those of the authors and do not necessarily represent the views or policies of the U.S. Environmental Protection Agency. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Baker NC et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Baker NC, Knudsen TB and Williams AJ. Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.12688/f1000research.160617.1 ) First published: 04 Mar 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.12688/f1000research.160617.1 ) Latest published: 04 Mar 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.12688/f1000research.160617.1 ) Introduction Efficient and effective use of biomedical literature helps ensure that researchers are finding and building on previously published research. For nearly 10 years, the EPA’s Center for Computational Toxicology and Exposure (CCTE) has been developing the Abstract Sifter (AS) tool to support its research and has made the tool publicly available. 1 The novel design of the AS combines API calls for delivering public data with the versatility of a Windows Excel macro-enabled workbook. The technologies that AS relies on – Microsoft Excel, its associated Visual Basic for Applications (VBA) programming language, and available public APIs – have themselves improved over the years. For example, the richness of Excel’s capabilities has expanded, an increasing number of APIs have been released to the public, and APIs deliver more data over time. This combination gives the researcher, reader, and practitioner a wealth of easily navigable information to build on. This publication reviews the features of AS with a focus on the enhancements added in version 8, the latest version. The content is organized according to the literature tasks that the tool facilitates. These tasks include querying PubMed and retrieving citations, building a corpus of articles, and the important task of ranking them by relevancy using the sifting and term-mapping functionalities. User engagement with documents and how the AS facilitates this task with colorization of text, tagging, and note-taking is also covered. We present a new functionality -data extraction- and demonstrate how the user can extract tables and text and convert them into data for analysis or for feeding into new studies using AS. The section regarding data extraction highlights the new emphasis on extracting chemical entities. The collection of chemical entities is followed by discussion of chemical sets: how to build, extract, expand, and analyze them. With the new diverse functions in AS, keeping the user experience positive has been a priority. Many of the new functions have been packaged into a new custom EPA ribbon. The ribbon has options to hide or unhide sheets to streamline and unclutter the AS workbook ( Figure 1 ). Figure 1. Abstract Sifter version 8 introduces a new EPA Custom ribbon that organizes the new functionality. The Choose view section hides or unhides certain sheets to help the user simplify the workplace. To see the sheets discussed here, toggle the sheets hidden/shown or manually unhide a sheet of interest. This publication is not a how-to guide and for specific instructions the reader is encouraged to refer to the user guide or watch any of the available videos. Abstract Sifter version 8 with the user guide is available at https://tinyurl.com/abstractsifter . The ReadMe sheet of the Abstract Sifter has links to how-to videos. Searching on YouTube with “abstract sifter” will retrieve video demonstrations from the user community. Methods Implementation AS is an Excel macro-enabled workbook. ( https://www.microsoft.com/en-us/microsoft-365/excel ) It contains VBA code that retrieves data from public API-enabled data sources (e.g., PubMed and PubChem). VBA routines also control user interaction through menus, forms, formatting, and navigation. AS contains specialized sheets with specific functionality attached to them. The core sheets introduced in AS version 1 were Main, Abstract, Log, Notes, and Landscape. Version 8 adds additional sheets for the newly introduced functionality: ToxPrint and Bioassay sheets. Additional sheets are created when the user executes particular functions (e.g., Tiles and ChemLists). The new EPA custom ribbon ( Figure 1 ) helps with navigation of the expanded functionality and additional sheets. Operation The AS requires Microsoft Excel running on a Windows platform. The BioAssay and Toxprints functionality require Excel 2007 or newer versions. Some formatting options require Excel 2013 or newer versions. Users whose site requires a signed certificate should contact the first author. Use cases Querying PubMed, retrieving, and ranking citations The Main sheet of AS offers the most direct interaction with PubMed content. In this worksheet a user enters a query that gets sent to the NCBI NLM e-utility APIs to retrieve the results. Each returned citation is inserted into one row of the Main sheet. The record limit for one query’s retrieval is 10,000 records, but larger corpora can be built by running multiple queries and appending the results through selecting the Append option before running another query. Any duplicate records can be deleted using a function called from a button on the Main sheet. There is no limit to the number of queries that can be run. Each query that is run to completion is recorded on the Log sheet along with the number of records returned, date and time run, and the time elapsed to retrieve the records. Double-clicking on a row on the Log sheet will rerun the query. Inserting natural language titles and abstracts into rows in a spreadsheet treats these elements like data and, as a result, built-in Excel capabilities facilitate sorting and filtering of the results. Even with the built-in Excel filtering, finding relevant records in a large corpus is a challenge. For many literature projects the goal of the user may be exploratory: reading and learning, exploring nascent ideas and adjusting course following the exploration. AS facilitates, encourages, and helps organize dynamic exploratory research. Using previous versions of AS, a researcher’s exploration of a literature corpus was enabled through the “sifting” process. The Main sheet of the AS has three cells where the user can enter a string of characters and the AS, through a built-in formula, will count the occurrences of the string in the titles, abstracts, and keywords of the Main sheet records ( Figure 2 ). Sorting based on these counts ranks the records by that concept. This action can be repeated as often as desired with the combination of the three sifter cells providing visual insight into a citation’s current relevancy. Figure 2. View of the Sifter cells on the Main sheet. A common question from early users of the AS was “Can I sift on more than three terms at a time?”. With the term-mapping functionality, this is possible. Term-mapping allows the user to find, count, and sort on tens or hundreds of terms and then rank the Main sheet corpus by the total number of mapped terms. This functionality starts with the TermMap sheet. Here term lists can be built or downloaded from a collection of starting point terms organized by common chemical literature queries. To describe this feature using text-mining and machine learning terminology, the TermMap sheet can be seen as a feature set and the count of the features will indicate a record’s relevance. In the example shown in Figure 3 , the simple query “chlorpyrifos” was run (accessed 09/20/2024) and the resulting 6900 PubMed records inserted on to the Main sheet. On the TermMap sheet, the term list for “environmental fate” was selected, downloaded, and then mapped to the chlorpyrifos articles using the “Map!” Button ( Figure 3a ) Following mapping, the Main Sheet articles can be ranked by the total number of included fate concepts and the most relevant articles regarding environmental fate rise to the top. The TermMap sheet makes this easy: double-clicking on the column A value writes this term prefixed with “TX:” to the Main sheet’s B3 sifter cell and sorts. In the second example, a term list related to “analytical methods” used for the purpose of chemical identification and measurement was mapped ( Figure 3b ). Double-clicking on “chemid” ranks the entire corpus by the number of listed chemical identification terms found in each citation. Figure 3. a and b. Examples of ranking citations by term mapping. The term-mapping functionality is a powerful way to quickly find relevant articles of interest. With term-mapping, the user is no longer reliant on long complex queries to find a subset of articles. Instead, the user can use simple queries less prone to error and then apply term-mapping to rank the corpus by the desired features. Using AS there is no need to employ computationally expensive and often opaque machine learning technologies. Working with literature citations: Reading, tagging, note-taking, curating notes Using AS, researchers can read and engage with article content in several ways: skimming titles and abstracts, filtering and screening articles of interest, attaching categorization tags, and adding notes summarizing an aspect of the article that can be referred to later or shared with colleagues. The AS facilitates all these forms of engagement through the Notes functionality. Taking notes, either from the Main sheet or from the Abstract sheet, copies a citation’s information to a row on the Notes sheet. The user can then add tags or text to the record or click on the Yes , No or Maybe categorization button. The Notes sheet therefore provides a place to store selected citations and build a corpus of publications. Double-clicking on a row in the Notes sheet activates the Notes curation form ( Figure 4 ). AS version 8 introduces several enhancements to notes curation, including usability features (e.g., larger font, adding line feeds, colorization), drag and drop tagging and noting, and PDF retrieval. The curation form includes a function from Unpaywall 3 that checks to see if the PDF is open access and, if so, can be downloaded with a local link added to the Notes row. The Notes curation form is the entry point to curating data from the article itself. Clicking on the Data Curate button will create a new sheet specific for that article named with the PubMed ID and part of the first author’s name. Here, on this dedicated sheet, the user can extract, store, and work with data from a publication. Figure 4. Double-click on a row on the Notes sheet to work with Notes curation form. New importing and exporting functions have been added. Functions are available through Main and Note sheet buttons that import from and export citations to various formats including RIS (Research Information Systems), a format that can be used as input into citation management software such as EndNote. Citation information and notes can be exported as a text file which can then be worked into text for a manuscript. Extracting chemical entities from the literature A common task in biomedical research is to find the chemical entities associated with a particular disease or biological process and then conduct further research on those chemicals. Named entity extraction (NER) is the task of finding entities like chemicals in scientific literature, extracting the entity name from the text, and associating that name with an external unique identifier that maps to the entity contained within a public database. Because of the importance of entity extraction, several scientific groups have been extracting chemical entities from scientific articles and making them available to the community. Foremost among the groups working in this domain is the US National Library of Medicine (NLM), the organization responsible for the development of its MeSH term annotations. 4 , 5 MeSH terms are a controlled vocabulary in a tree structure that are attached to most PubMed citations. MeSH annotations encompass many types of entities including diseases, anatomical terms, proteins, methods, and chemicals. PubChem, another database under the NLM and the National Center for Biotechnology Information (NCBI), uses various automated and deposition-based methods to identify chemicals in publications, associate them with PubChem identifiers, and make them available. 6 – 8 The US EPA has recently started an effort to curate chemicals from publications. This project has the goal of extracting chemical entities and, using a combination of expert curation and computational methods, associate the chemical name (or other identifiers) with the DTXSID. 9 The DTXSID is the primary identifier associated with the chemical registration database hosting data associated with many of the applications from the Center for Computational Toxicology and Exposure (CCTE), including the CompTox Chemicals Dashboard (referred to henceforth as CCTE Dashboard). 10 The publication identifier and the associated DTXSIDs are stored in a database for the purposes of search and retrieval via one or more software applications. The project was originally initiated with the intention of assembling documented analytical methods assembled from various sources, extracting chemicals within the documents, and making the analytical methods searchable by chemicals identifiers and structures. AMOS, the Analytical Method and Open Spectra database, is the web-based application delivering over 6,000 methods indexed by chemical structure. AMOS is intended to be released to the community in the near future. AS version 8 and AMOS both use the new CCTE publicly accessible CTX-APIs. 2 The documentation is provided here: https://api-ccte.epa.gov/docs/index.html . MeSH Mining AS implements several approaches to entity extraction. The first approach, MeSH Mine, extracts MeSH substance annotations from a corpus of citations on the Main sheet. MeSH terms are a controlled vocabulary of terms maintained by NLM and attached to PubMed citations. The methods used to find and assign MeSH terms have evolved over the years from manual annotation by subject experts to a growing reliance on automated text-mining. 4 , 5 The MeSH vocabulary encompasses two types of chemical terms. The first type, called Descriptors, includes chemical families and chemical names that are a part of the MeSH tree branch for chemicals; however, most chemicals are entered as the second type of terms – Supplemental concepts – into MeSH and have a mapping back to a chemical or chemical family in the MeSH tree. In the example in Figure 5 , a section of the Organic Chemicals branch is shown. On the right is a subset of the chemicals mapped to Glutaral, a chemical in the branch. Collectively, the chemical descriptors and chemical supplementary concepts are called substances. Figure 5. A section of the MeSH tree showing chemicals and chemical families. On the right, an illustration of how chemical entities are mapped to a chemical or family on the MeSH tree. In PubMed, the MeSH term annotations can be viewed by clicking on the MeSH Terms link to the right of the page ( Figure 6 ). For example, the annotations include chemicals, chemical families, study methods (Biological Assay) and species (Photobacterium). Figure 6. In PubMed, the MeSH term and substance annotations are found by clicking on the link to the right. With AS, MeSH substance terms can be extracted from the retrieved and downloaded citations, organized, counted and placed on a new sheet: MeSHMine. To understand the power of this functionality an example query can be executed on the Main sheet query form: Cornea [majr] AND chemicals. The query results in over 2600 entries written to the Main sheet. Clicking on the More things button, followed by Extract MeSH substances buttons prompts AS to search each row on the Main sheet for the MeSH substance terms associated with the citation by NLM, count their occurrences, and write them to the MeSHMine sheet. When this is completed, the MeSHMine sheet holds a wealth of information and helps the researcher navigate through the data. The MeSHMine sheet is organized based on the substance name listed in column A and hyperlinked to the MeSH browser. Flags indicating the class of chemical substance (i.e., organic, inorganic, macromolecule, lipid, protein, etc.) are listed in the columns to the right. The researcher can select a subset of chemicals of interest by sorting or filtering on these columns. MeSH terms are often associated with secondary or qualifier terms that indicate specific aspects of the substance described in a particular article. AS tracks and counts the occurrences of the “drug therapy” qualifier and the combination of “toxicity” and “adverse effects” qualifiers. The counts of the substance annotated with these qualifiers are listed in columns D and E as shown in Figure 7 . As a result, researchers interested in drugs associated with corneal treatments can sort on column E listing therapeutic use – Ther use , a MeSH qualifier or subheading. Figure 7. The MeSHMine sheet after running MeSH Mine with the cornea and chemicals query. In this example, sorting on therapeutic use sorts many chemical families to the top. The chemical dexamethasone is also sorted to the top and the associated counts show that it is annotated both for its therapeutic use and for its adverse effects. Double-clicking on the Dexamethasone row causes the AS to send the chemical name to sifter cell B3 on the Main sheet and sort by the term counts. The article titles can then be reviewed to see potential roles that the drug may play in corneal diseases ( Figure 8 ). Figure 8. Double-clicking on a row of the MeSHMine sheet writes the corresponding substance to the B3 sifter cell and sorts. Similarly, column D on the MeSHMine sheet can be sorted to see which chemical annotated with toxicity or adverse effects is most annotated with the cornea. Mustard gas is third on the ranked list (not shown) and indeed there is a large literature describing the detrimental effects of this gas on the cornea. The MeSHMine feature is also a powerful tool to identify the genes and proteins associated with a particular biological process. In the next example shown in Figure 9 , the query cornea AND embryonic development has been executed, followed by MeSHMine function to identify what proteins and genes are most associated with the development of the cornea. In Figure 9 , the MeSHMine sheet is sorted by the protein and gene flag and article count. This action reveals the most annotated proteins and genes in the corpus and can provide important insight into biological pathways. Each protein or gene term is hyperlinked to the MeSH browser. Figure 9. Using MeSHMine to find proteins and genes. MeSH mining can reveal entities that the researcher may want to follow up on. A logical next step to investigate entities is to copy the associated list of names to the Landscape sheet and explore their literature records. Figure 10 lists the retrieved article counts showing the relationship between the entities and cornea as well as between the genes. This information can be valuable in, for example, building gene networks. Figure 10. Learn more about the genes and proteins using the Landscape sheet. Working with PDFs Another way to extract entities and identify them is to retrieve or copy entity names such as chemical names from a PDF, Word document or Excel file. AS can use the chemical name in an Excel cell, pulled from another source, and look up additional identifiers for those chemicals. Once retrieved, the EPA DTXSID can be used as input into functions that call a large variety of chemical information. The following example demonstrates extraction of table data from a PDF file and, for the chemicals listed in the tables, using AS to look up DTXSIDs to then retrieve a sample of available information including structural diagrams, SMILES (Simplified Molecular Input Line Entry System) and PubChem identifiers. Consider the example article: https://pubmed.ncbi.nlm.nih.gov/32271623/ . Using AS to query PubMed, the article can be retrieved with a PubMed ID of 32271623[uid] as the query. The record is inserted into the Notes sheet and double clicking on the row brings up the record in the Notes curation form. In order to see whether the article pdf is open access, and to retrieve it if it is, the user can click on “Get pdf info” to Download. To create an Excel worksheet for the data in the PDF, a user clicks on “Data curate”. A new worksheet is inserted with a label constructed from the PubMed ID and the first author. These steps are illustrated in Figure 11 . Figure 11. Steps in creating a curation sheet. In this example, the 32271623_GABAL sheet is where the user can copy and paste any data or text related to this article. Alternatively, the user can tell AS to extract tables and figures from the PDF. To use this AS function, user clicks on Extract tables or Extract Image (see Figure 12 ) on the EPA custom ribbon. This example shows how to extract a table from a pdf where the publication contains a list of chemicals for which unique DTXSID identifiers can be extracted for the chemicals and then used to obtain other associated chemical data. Figure 12. Working with PDFs group on EPA Custom ribbon. Clicking on the Extract tables button results on the custom ribbon tells the AS to look for the pdf with the hyperlink in cell B5 and open it using Microsoft Word. As Word opens the PDF, it converts text in tables into table objects. The AS reads the rows and columns of the table objects and writes the results to the curation sheet. It should be noted that tables embedded in PDFs can vary significantly in how they are formatted and Microsoft Word cannot always accurately convert complex tables into Excel rows and columns. Formatting characters are sometimes missed, leading to concatenated data. As a result, the extracted data in the curation sheet should be reviewed by manual inspection and compared to the PDF to ensure accurate conversion. In this example the PDF is well formed, and the extracted data shown in Figure 13 are accurate. Figure 13. Data extracted from the PDF. Chemical entity identification The data extracted from the PDF in the previous section has chemical names and CAS registry numbers but lacks the EPA DTXSIDs that will link them to chemical data such as InChI keys and SMILES. The process of retrieving DTXSIDs is controlled through functions available through the EPA custom ribbon ( Figure 1 ). The functions available through the EPA ribbon work in a similar fashion: the user selects the cells for the output, clicks on the menu selection for the function and then enters the column with the corresponding input value. The input values used to retrieve the DTXSIDs are generally chemical names or CAS registry numbers. Figure 14 shows the three steps associated with running the ribbon functions. Figure 14. Basic steps in retrieving chemical data using functions on the EPA custom ribbon. The functions that retrieve chemical information and place it in the specified cells are calling the EPA’s CTX-APIs. 2 These APIs retrieve from the DSSTox database, the same data repository used in the CCTE Dashboard. 9 , 10 Chemical entity identification is important because the chemical identifier gives the AS fast and accurate access to other data specific to that chemical, like properties and structural information. The AS makes the process of moving from chemical names to a structured data set easier. Figure 15 , for example, shows how a simple list of chemical names can be enhanced with chemical data from the DSSTox database once the DTXSID (column A) has been retrieved. The columns with the blue headers on the right have been retrieved through the AS functions. The example includes structural data and external identifiers with hyperlinks. The User Guide and available training videos walk through the steps in greater detail. Figure 15. Sample of the types of data that can be retrieved using the EPA custom ribbon functions. Figure 16 shows the variety of data accessible from DSSTox database via the CTX-APIs. Figure 16. Function menus for selected ribbon groups in the EPA custom ribbon. AS also retrieves data from PubChem, the chemical repository developed by the National Institute of Health. 6 , 7 Figure 17 shows the list of PubChem functions with input values. A third source of information is Common Chemistry, a database made available by Chemical Abstracts Service (part of the American Chemical Society) accessed through their API. 11 Figure 17. PubChem functions on the EPA custom ribbon. EPA chemical lists Another important feature of AS is the DSSTox chemical list retrieval functionality. This feature is a direct way to import sets of chemicals into Excel and produces results very similar to the chemical list retrieval functionality on the CCTE Dashboard. The EPA has made over 500 chemical lists available to the public. These include chemicals tested by the EPA (e.g., https://comptox.epa.gov/dashboard/chemical-lists/TOXCAST ), lists of chemicals by use (e.g., https://comptox.epa.gov/dashboard/chemical-lists/SWISSPEST ), and lists of chemicals based on structural moieties (e.g., https://comptox.epa.gov/dashboard/chemical-lists/PFASOECD ). On the CCTE Dashboard, the chemicals in a selected list can be downloaded with selected additional data fields. In AS, the list of chemical lists can be retrieved by clicking on the icon in the EPA Custom ribbon. From there, the list can be searched and sorted, and a single list can be retrieved by double-clicking the name. Each chemical comes with the DTXSID identifier, making retrieval of additional data (e.g., SMILES or structure diagram) straightforward. This sequence of events is illustrated in Figure 18 . Figure 18. Steps in retrieving chemical list of lists and then the chemicals in the list. More ways to get chemicals from publications Many research groups, including the EPA, extract chemical names from publications, associate those chemical names with unique identifiers, and make them available to other researchers through various means, including as downloadable datasets and via APIs. Table 1 summarizes some of the projects that extract and identify chemicals from scientific publications and make them available to users. It is worth noting that many of these projects deliver more information than just chemical substances, but for the purposes of this publication the focus is chemical entities. Table 1. Projects that extract and identify chemical entities from publications and make them accessible through API calls. Project Organization Chemical identifier Corpora Coverage Method Available in AS v8? Reference PubMed MeSH term annotation NLM NCBI MeSH substance identifier PubMed 37 million PubMed/Medline records; estimated 15 million citations have chemicals Historically - expert curated; Currently - automated text mining Yes 4 , 5 PubChem NLM NCBI PubChem substance and compound identifiers PubMed Unknown Automated text-mining; some deposition Yes, by article 6 , 7 Chemfindable EPA CCTE DTXSID PubMed, Methods documents, Fact sheets In progress Expert curation, some automated identification Only for PubMed publications. More planned for AS v9 PubTator NLM NCBI MeSH identifier PubMed abstracts; PMC full text 35 million abstracts; 6 million full text articles Automated text-mining No, planned for AS v9 12 Europe PMC EMBL EBI ChEBI ID PubMed; some PubAg, dissertations, preprints 45 million abstracts and publications Various. See https://europepmc.org/Annotations No, planned for AS v9 13 Comparative Toxicogenomics Database NC State MeSH substance uid PubMed >149,000 PubMed articles Expert curated No, planned for AS v9 14 AS version 8 delivers the chemical entities from several of the projects listed in Table 1 . Using the MeSH Mine feature, all chemical or substance MeSH terms are extracted from the corpus of citations on each project’s Main sheet, collected, counted, and written to the MeSHMine sheet with hyperlinks to the MeSH Browser and double-click navigation to the citations on the Main sheet. In contrast, access to chemicals associated with PubChem and the DSSTox database is performed at the single article level. Figure 19a and 19b indicate how this functionality works. With a single article loaded into the Abstract sheet and using the Chemical Lists section of the EPA custom ribbon, DSSTox curated chemicals are accessed by selecting “Get curated EPA DSSTox chemicals”. This retrieved a total of 19 chemicals for the selected article. The number of publications that have associated chemicals that can be retrieved by end users is growing but still under 1000. Figure 19b shows retrieval of PubChem linked chemicals. Figures 19. a and b. On the Abstract sheet how to retrieve chemicals associated with the article. (a) shows chemicals curated by EPA. (b) shows text-mined chemicals from PubChem. Understanding sets of chemicals The last section reviewed the approach to extract chemicals from publications and how to download existing lists of chemicals from the EPA DSSTox database through CTX-API calls. This section reviews approaches to gain insight into sets of chemicals, whatever their origin. The AS provides insight into biological activity of chemicals through ToxCast and Tox21 assay data 15 – 17 and insight into chemical structure through ToxPrint data 18 and chemical structure diagrams. The bioassay and ToxPrint data are displayed in a matrix format with one chemical per row and the associated data in columns. This matrix format lets the AS take advantage of similarity metrics and column sorting to make the data more accessible. Bioassay hit calls A subset of the Bioassay sheet is displayed in Figure 20 . Users can build sheets by providing the chemicals (with DTXSIDs) in column A, then specifying which assays to retrieve hit calls for ( Figure 21 ). More detailed guidance is provided in the user guide. Figure 20. Sections of the Bioassay sheet. Figure 21. There are four ways to select assays. Shown here is how to select by gene symbol (A) and by assay platform (B). The matrix format of the Bioassay sheet can be challenging to interpret, but the AS provides functions to ameliorate these challenges. For example, if the hit call portion of the sheet is large and hit calls are sparse, it is difficult to view a chemical’s results. Therefore, the AS Bioassay button menus allow for sorting by a selected chemical, an option that sorts the columns to order all assays with positive hit calls to the left of the sheet where they can be easily viewed together. The chemical used to perform sorting on is inserted in row 7 below the header rows, shown in Figure 20 as the chemical Retinol. After sorting, Retinol’s positive hit calls in this set of assays are easy to view. This figure also shows that the similarity function has been run (also available in the Bioassay section of the ribbon) and below Retinol are the chemicals in this set that have bioassay hits similar to Retinol. More detail regarding how this similarity metric is calculated can be found in the user guide. The AS is primarily a literature tool so even the Bioassay sheet provides a way to query PubMed. When links between a chemical and a gene are indicated by a positive hit call – or not indicated by a positive hit call – queries to PubMed can be conducted quickly to support or check the bioassay evidence. Double-clicking on any cell in the hit call region causes the AS to construct a query from the chemical name and the genes associated with the assay. This query is placed in the main query form, ready to be executed, and the results are sent to the Main sheet for browsing. Using another menu option on the EPA Custom ribbon, the chemicals and genes can be sent to the Landscape sheet ( Figure 22 ). The user can then get an overview of the literature relationship between the chemicals and genes and navigate to the relationships of interest. Figure 22. Through the menu option shown, the chemicals and genes associated with the assays are written to the Landscape sheet where queries can be run to visualize article counts and run the queries. ToxPrints The second matrix formatted set of functions is accessible through the ToxPrints sheet. ToxPrints are a set of 729 structural fragments that can be used for structure-based analyses. 18 For all chemicals in DSSTox, ToxPrints have been pre-computed and the EPA CTX-APIs can retrieve and deliver these ToxPrints to AS. In version 8 of AS, a sheet called ToxPrints has been added to house the retrieved data. The user inputs DTXSID chemical identifiers into column A then, by clicking on the EPA custom menu option, retrieves the ToxPrints. The data are binary: 1 = yes, the chemical has a specific chemical ToxPrint; 0 = the chemical does not have the ToxPrint. For a set of chemicals, the ToxPrint data matrix can be very sparse – with 729 possible ToxPrints a chemical will generally only contain a small number. Similar to the Bioactivity sheet, the ToxPrint sheet has functionality that sorts the columns by a selected chemical so that the user can inspect the Toxprints associated with that chemical without scrolling interminably to the right. Comparing one chemical to the others is possible visually by viewing colorized patterns of 0s and 1s, but the AS can also calculate the Tanimoto distance between the row 6 chemical and the rest of the set. The sorting and Tanimoto calculation are functions available through the EPA custom ribbon. Figure 23 shows a fully populated ToxPrint sheet. In this example the ToxPrint columns are sorted for All-Trans-Retinoic acid and the Tanimoto similarity of all the chemicals compared to All-Trans-Retinoic acid has been calculated and placed in column F. Additional functionality includes methods to calculate the enrichments of ToxPrints associated with binary endpoints. Interested readers will find this functionality described in the user guide. Figure 23. Populated Toxprint sheet with sections shown. Similarity metrics from the Row 6 chemical have been calculated. Chemical structure diagrams Chemical structure diagrams are an important way to visualize chemicals. The AS version 8 has two ways to retrieve structure diagrams, both accessible from the ribbon group shown in Figure 24 . The first method works like other chemical data retrieval and inserts the structure figure in a cell associated with the DTXSID in the same row. The Tiles option creates a new sheet called Tiles and on it arranges the chemical diagrams in rows of five, a format that makes visual comparison easier and is more suited for presentations or publications. Additional options include adding chemical names and additional data and coloring the tile borders. The User Guide should be consulted for a step-by-step description of this functionality. Figure 24. Two ways to retrieve chemical structural diagrams. Discussion New research in a particular scientific domain rests on effective use of previous work. The Abstract Sifter tool handles the challenges of finding relevant information in the 37 million citations encompassed by PubMed. AS contributes to advancing new research with increased efficiency and better results. Using AS, large complex corpora of retrieved PubMed citations can be built. With term-mapping, the size of the corpora is not a barrier to finding relevant citations quickly and ranking the citations with high accuracy and confidence. The rankings are transparent and reproducible. The dynamic nature of querying, sifting, and term-mapping means that the researcher can work through ideas and hypotheses without being penalized by lost time. The recording of queries on the Log sheet lets a researcher keep track of this exploration and provides a convenient way to rerun earlier queries. Note-taking functionality helps researchers keep track of their thoughts, opinions, intentions, and screening decisions. While the AS is a powerful tool for research in any biomedical domain, AS version 8 has been enhanced to make it more valuable for chemical research. In the example discussed above, the MeSHMine functionality lets the researcher find the chemical substances linked to a given disease. Chemicals linked causally to the disease, treating the disease, and the genes and proteins playing a role in disease mechanisms can all be mined and displayed with counts and navigation shortcuts. Exploring the chemical substances linked to a disease is an effective introduction to a disease state and the evidence accumulated by previous researchers. These literature mining methods and concepts are translatable to other research problems. The researcher who builds on prior work will often need to take the chemicals from a publication and include them in future work. Version 8 of the Abstract Sifter makes chemical name extraction much easier and the functions that call the CTX-APIs make it possible to assign the unique DTXSIDs to chemical names. Version 8 of AS streamlines the entire process of finding past studies of chemicals and building sets of chemicals for new studies. Chemicals are often analyzed in sets. Studying them in sets is a powerful methodology because – as long as a unique identifier like the DTXSID is established – many external data points such as structural features can be brought to bear in the search for patterns, relationships, cause and effect, and ultimately understanding. AS is a useful tool for building chemical sets. Chemicals used in publications can be extracted and matched with their unique DTXSIDs and more data points retrieved. If the chemicals are in ToxCast or Tox21, their results in the assays can be evaluated and compared visually or mathematically through distance metrics. Structural diversity of a set of chemicals can be investigated through the ToxPrints functionality or through the innovative ways to visualize chemical structures. Using the Landscape sheet, published effects of chemicals can be visualized and navigated. There is an irony in the trend to study chemicals in sets. In a publication, the more chemicals studied, the less likely the names of the chemicals will be in the title, abstract, or keywords of the publication, the sections of the publication available to a search engine. Chemical lists will more likely be in the text or tables in the body of the PDF or in supplemental information. Except for PubMed Central (PMC) articles, the PDF and supplemental information are outside the reach of a search engine and therefore the chemicals are not findable. This means that a researcher aiming to assemble data about a certain chemical could miss important publications and information about that chemical. While the researchers who study chemicals increasingly adopt methods that let them study more than one chemical at a time, the less useful this information is: if it can’t be found, it can’t be used. The efforts of NLM, European PMC, and the EPA to curate, extract, and store chemical entities from publications represent valuable progress in resolving this issue. AS and its related EPA projects will continue to increase the size of its curation repository and the ways to deliver chemical information. The AS depends on the platform and resources it is built upon. Microsoft Excel is a powerful tool on its own and, as the foundation for AS, the user gets strong data-handling capabilities in addition to a familiar and intuitive user experience. Microsoft regularly improves and extends Excel. The VBA programming language makes the delivery and navigation of information to the Excel front end possible, and the contributions of a community of programmers ease the technical challenges. The ability to use API calls to rich databases and bring data back to the familiar Excel sheets is possible because of the vision and work of governmental organizations like NLM and the EPA. As with version 8, future versions of the AS will streamline literature tasks. Plans for future development include retrieval from repositories other than PubMed including European PubMed Central and technical documents. The tool will continue to be applied to EPA projects to find innovative ways to extract and deliver chemical information. The Abstract Sifter draws on rich resources to make a powerful tool that can accelerate the pace and thoroughness of research, particularly in the chemical domain. Disclosures This paper does not necessarily represent the views or policies of the U.S. Environmental Protection Agency. Software availability Abstract Sifter version 8 available at: The Abstract Sifter tool, user guide, and any future updates: https://www.parlezchem.com/abstract-sifter/ Software source code available at https://doi.org/10.5281/zenodo.14726582 Software licensed under Creative Commons Attribution 4.0 International. Acknowledgements The authors thank Asif Rashid for technical support regarding the CompTox API. We also thank Erik Tyler Carr and Troy Ferland for their reviews of the manuscript. References 1. Baker N, Knudsen T, Williams A: Abstract Sifter: A Comprehensive Front-End System to Pubmed. F1000Res. 2017; 6 : 2164. PubMed Abstract | Publisher Full Text | Free Full Text 2. EPA, US: (accessed Accessed: October 30). Reference Source 3. Else H: How Unpaywall Is Transforming Open Science. Nature. 2018; 560 (7718): 290–291. PubMed Abstract | Publisher Full Text 4. Medicine, National Library of. "Pubmed and Mesh.". (accessed 10/31/2024). Reference Source 5. Lipscomb CE: Medical Subject Headings (Mesh). Bull. Med. Libr. Assoc. 2000; 88 (3): 265–266. PubMed Abstract 6. Kim S, Thiessen PA, Cheng T, et al. : Literature Information in Pubchem: Associations between Pubchem Records and Scientific Articles. J. Cheminform. 2016; 8 : 32. PubMed Abstract | Publisher Full Text | Free Full Text 7. Kim S, Chen J, Cheng T, et al. : Pubchem 2023 Update. Nucleic Acids Res. 2023; 51 (D1): D1373–D1380. PubMed Abstract | Publisher Full Text | Free Full Text 8. Sayers EW, Bolton EE, Brister JR, et al. : Database Resources of the National Center for Biotechnology Information in 2023. Nucleic Acids Res. 2023; 51 (D1): D29–D38. PubMed Abstract | Publisher Full Text | Free Full Text 9. Grulke CM, Williams AJ, Thillanadarajah I, et al. : Epa’s Dsstox Database: History of Development of a Curated Chemistry Resource Supporting Computational Toxicology Research. Comput. Toxicol. 2019; 12 : 100096. PubMed Abstract | Publisher Full Text | Free Full Text 10. Williams AJ, Grulke CM, Edwards J, et al. : The Comptox Chemistry Dashboard: A Community Data Resource for Environmental Chemistry. J. Cheminform. 2017; 9 (1): 61. PubMed Abstract | Publisher Full Text | Free Full Text 11. Jacobs A, Williams D, Hickey K, et al. : Cas Common Chemistry in 2021: Expanding Access to Trusted Chemical Information for the Scientific Community. J. Chem. Inf. Model. 2022; 62 (11): 2737–2743. PubMed Abstract | Publisher Full Text | Free Full Text 12. Wei CH, Allot A, Lai PT, et al. : Pubtator 3.0: An Ai-Powered Literature Resource for Unlocking Biomedical Knowledge. Nucleic Acids Res. 2024; 52 (W1): W540–W546. PubMed Abstract | Publisher Full Text | Free Full Text 13. Rosonovski S, Levchenko M, Ide-Smith M, et al. : Searching and Evaluating Publications and Preprints Using Europe Pmc. Curr. Protoc. 2023; 3 (3): e694. PubMed Abstract | Publisher Full Text | Free Full Text 14. Davis AP, Wiegers TC, Sciaky D, et al. : Comparative Toxicogenomics Database’s 20th Anniversary: Update 2025. Nucleic Acids Res. 2024; 53 : D1328–D1334. PubMed Abstract | Publisher Full Text | Free Full Text 15. Kavlock R, Chandler K, Houck K, et al. : Update on Epa’s Toxcast Program: Providing High Throughput Decision Support Tools for Chemical Risk Management. Chem. Res. Toxicol. 2012; 25 (7): 1287–1302. PubMed Abstract | Publisher Full Text 16. Tice RR, Austin CP, Kavlock RJ, et al. : Improving the Human Hazard Characterization of Chemicals: A Tox21 Update. Environ. Health Perspect. 2013; 121 (7): 756–765. PubMed Abstract | Publisher Full Text | Free Full Text 17. Richard AM, Judson RS, Houck KA, et al. : Toxcast Chemical Landscape: Paving the Road to 21st Century Toxicology. Chem. Res. Toxicol. 2016; 29 (8): 1225–1251. PubMed Abstract | Publisher Full Text 18. Yang C, Tarkhov A, Marusczyk J, et al. : New Publicly Available Chemical Query Language, Csrml, to Support Chemotype Representations for Application to Data Mining and Modeling. J. Chem. Inf. Model. 2015; 55 (3): 510–528. PubMed Abstract | Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 04 Mar 2025 ADD YOUR COMMENT Comment Author details Author details 1 ParlezChem, Hillsborough, North Carolina, USA 2 Department of Intelligent Systems Engineering, Luddy School of Informatics Computing and Engineering, Indiana University, Bloomington, Indiana, USA 3 Center for Computational Toxicology and Exposure, Office of Research and Development, U.S. Environmental Protection Agency, Research Triangle Park, North Carolina, USA Nancy C. Baker Roles: Conceptualization, Methodology, Project Administration, Software, Writing – Original Draft Preparation, Writing – Review & Editing Thomas B. Knudsen Roles: Funding Acquisition, Project Administration, Supervision, Writing – Review & Editing Antony J. Williams Roles: Funding Acquisition, Project Administration, Supervision, Writing – Review & Editing Competing interests NCB is a literature informatics consultant with ParlezChem. Grant information Research in this publication was supported by the U.S. Environmental Protection Agency. The views expressed in this paper are those of the authors and do not necessarily represent the views or policies of the U.S. Environmental Protection Agency. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Article Versions (1) version 1 Published: 04 Mar 2025, 14:260 https://doi.org/10.12688/f1000research.160617.1 Copyright © 2025 Baker NC et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Baker NC, Knudsen TB and Williams AJ. Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.12688/f1000research.160617.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS track receive updates on this article Track an article to receive email alerts on any updates to this article. TRACK THIS ARTICLE Share Open Peer Review Current Reviewer Status: ? Key to Reviewer Statuses VIEW HIDE Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Version 1 VERSION 1 PUBLISHED 04 Mar 2025 Views 0 Cite How to cite this report: Moseley HNB. Reviewer Report For: Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.5256/f1000research.176540.r407559 ) The direct URL for this report is: https://f1000research.com/articles/14-260/v1#referee-response-407559 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 02 Sep 2025 Hunter N B Moseley , University of Kentucky, Lexington, USA Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.176540.r407559 This manuscript presents a new version of the Abstract Sifter VBA macro-based Excel workbook for pulling chemical information from PubMed abstracts. The manuscript presents the functionality provided by the software in a fairly descriptive and organized manner. However, there ... Continue reading READ ALL This manuscript presents a new version of the Abstract Sifter VBA macro-based Excel workbook for pulling chemical information from PubMed abstracts. The manuscript presents the functionality provided by the software in a fairly descriptive and organized manner. However, there are significant issues with enabling the software to run in a trusted environment. Major Issues: 1) Given the limitations of running macros in Excel based on “Trust Center” settings, the authors should mention the requirements and steps needed for Abstract Sifter V8 to run. The authors are encouraged to take the steps to digitally sign the macros in ASv8, which is one of the Macro Settings options for allowing VBA macros to operate, without allowing all macros to operate. 2) Under the methods section, provide a table of the macros implemented in ASv8 with a description of what each macro does. Please provide the actual code for the VBA macros in a form that does not require “Enabling Macros” in Excel in order to review your code. These could be text files added to the Zenodo item and named to identify the specific macro or it could just be supplemental material with this manuscript. 3) The version of ASv8 on Zenodo appears to be prepopulated with information from a query run for fipronil in the Main worksheet. Does “Query PubMed” macro erase this upon use? This reviewer is assuming it does, but has not enabled Macros to find out, due to the scary message in Microsoft’s Trust Center warning not to enable Macros. 4) Is the DSSTox database a (scientific) “repository” as stated on page 13? A repository generally promotes preservation, versioning, provenance, and deposition. A database or knowledgebase does not necessarily support these types of functions. Minor Issues: Across multiple figures, added text and boxes should be in a color that makes it clear they are not part of the screen capture. Often a bright red is used for this purpose. Page 4, line 1 under “Operation”: Remove “The” before “AS”. Page 4, line 1 under “Querying…”: add comma after “In this worksheet”. Page 4, paragraph 2, line 3 under “Querying…”: add comma after “For many literature projects”. Page 5, paragraph 2, line 3: add comma after “Using AS”. Page 6, last paragraph: define DTXSID at first use. A quick google search brought up “Distributed Structure Searchable Toxicity Substance Identifier”. This definition does not match the definition in the Abbreviations section; however, the google search may be wrong or old. Page 8, paragraph 2, line 5: a Mesh qualifier is usually in all caps and thus should be “THER USE”. Page 9, paragraph 2, line 2: add comma after “Word document”. Page 9, paragraph 3, line 1: grammatically incorrect sentence, but not sure how to fix it. Page 10, paragraph 2, line 2: add “the” before “user clicks”. Page 11, paragraph 2, line 4: add comma after “In this example”. Page 11, paragraph 3, line 4: add comma after “for the function”. Page 13, paragraph 2, line 3: replace “data set” with “dataset”. Figure 18: Suggest embellishing the figure legend to describe the steps and identify the order of the steps. Figure 19: Figure legend looks incomplete. Not sure why it is starting “a and b. On the Abstract…”. Feels like something was accidentally cut and/or pasted. Page 16, under “Understanding sets of chemicals”: Would suggest coming the first and second sentence for a better transition sentence. Could start with “While the last section reviewed…, this section reviews approaches…” Page 17, paragraph 2, line 1: remove “The” before “AS” and add comma after “literature tool”. Page 17, paragraph 2, line 3: remove “the” before “AS”, which is on the next line. Page 17, paragraph 3, line 5: move the comma after “then” before “then”. Page 18, paragraph 1, line 5: remove “the” before “AS”. Page 19, paragraph 1, line 1: remove “The” before “AS”. Page 19, paragraph 3, line 1: add “a” before “large complex corpora”. Page 19, paragraph 4, line 1: remove “the” before “AS”. Page 19, paragraph 6, line 1: remove dashes and use commas, starting with putting a comma before “because”. Page 20, paragraph 3, line 1: remove “The” before “AS”. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Partly Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Partly Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Partly Competing Interests: No competing interests were disclosed. Reviewer Expertise: scientific programming; bioinformatics, cheminformatics; systems biology I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Moseley HNB. Reviewer Report For: Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.5256/f1000research.176540.r407559 ) The direct URL for this report is: https://f1000research.com/articles/14-260/v1#referee-response-407559 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Respond or Comment COMMENT ON THIS REPORT Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 04 Mar 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Reviewer Reports Invited Reviewers 1 Version 1 04 Mar 25 read Hunter N B Moseley , University of Kentucky, Lexington, USA Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Moseley H. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 02 Sep 2025 | for Version 1 Hunter N B Moseley , University of Kentucky, Lexington, USA 0 Views copyright © 2025 Moseley H. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions This manuscript presents a new version of the Abstract Sifter VBA macro-based Excel workbook for pulling chemical information from PubMed abstracts. The manuscript presents the functionality provided by the software in a fairly descriptive and organized manner. However, there are significant issues with enabling the software to run in a trusted environment. Major Issues: 1) Given the limitations of running macros in Excel based on “Trust Center” settings, the authors should mention the requirements and steps needed for Abstract Sifter V8 to run. The authors are encouraged to take the steps to digitally sign the macros in ASv8, which is one of the Macro Settings options for allowing VBA macros to operate, without allowing all macros to operate. 2) Under the methods section, provide a table of the macros implemented in ASv8 with a description of what each macro does. Please provide the actual code for the VBA macros in a form that does not require “Enabling Macros” in Excel in order to review your code. These could be text files added to the Zenodo item and named to identify the specific macro or it could just be supplemental material with this manuscript. 3) The version of ASv8 on Zenodo appears to be prepopulated with information from a query run for fipronil in the Main worksheet. Does “Query PubMed” macro erase this upon use? This reviewer is assuming it does, but has not enabled Macros to find out, due to the scary message in Microsoft’s Trust Center warning not to enable Macros. 4) Is the DSSTox database a (scientific) “repository” as stated on page 13? A repository generally promotes preservation, versioning, provenance, and deposition. A database or knowledgebase does not necessarily support these types of functions. Minor Issues: Across multiple figures, added text and boxes should be in a color that makes it clear they are not part of the screen capture. Often a bright red is used for this purpose. Page 4, line 1 under “Operation”: Remove “The” before “AS”. Page 4, line 1 under “Querying…”: add comma after “In this worksheet”. Page 4, paragraph 2, line 3 under “Querying…”: add comma after “For many literature projects”. Page 5, paragraph 2, line 3: add comma after “Using AS”. Page 6, last paragraph: define DTXSID at first use. A quick google search brought up “Distributed Structure Searchable Toxicity Substance Identifier”. This definition does not match the definition in the Abbreviations section; however, the google search may be wrong or old. Page 8, paragraph 2, line 5: a Mesh qualifier is usually in all caps and thus should be “THER USE”. Page 9, paragraph 2, line 2: add comma after “Word document”. Page 9, paragraph 3, line 1: grammatically incorrect sentence, but not sure how to fix it. Page 10, paragraph 2, line 2: add “the” before “user clicks”. Page 11, paragraph 2, line 4: add comma after “In this example”. Page 11, paragraph 3, line 4: add comma after “for the function”. Page 13, paragraph 2, line 3: replace “data set” with “dataset”. Figure 18: Suggest embellishing the figure legend to describe the steps and identify the order of the steps. Figure 19: Figure legend looks incomplete. Not sure why it is starting “a and b. On the Abstract…”. Feels like something was accidentally cut and/or pasted. Page 16, under “Understanding sets of chemicals”: Would suggest coming the first and second sentence for a better transition sentence. Could start with “While the last section reviewed…, this section reviews approaches…” Page 17, paragraph 2, line 1: remove “The” before “AS” and add comma after “literature tool”. Page 17, paragraph 2, line 3: remove “the” before “AS”, which is on the next line. Page 17, paragraph 3, line 5: move the comma after “then” before “then”. Page 18, paragraph 1, line 5: remove “the” before “AS”. Page 19, paragraph 1, line 1: remove “The” before “AS”. Page 19, paragraph 3, line 1: add “a” before “large complex corpora”. Page 19, paragraph 4, line 1: remove “the” before “AS”. Page 19, paragraph 6, line 1: remove dashes and use commas, starting with putting a comma before “because”. Page 20, paragraph 3, line 1: remove “The” before “AS”. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Partly Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Partly Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Partly Competing Interests No competing interests were disclosed. Reviewer Expertise scientific programming; bioinformatics, cheminformatics; systems biology I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (0) Moseley HNB. Peer Review Report For: Abstract Sifter version 8: Focus on the chemical literature [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 (Chem Inf Sci):260 ( https://doi.org/10.5256/f1000research.176540.r407559) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-260/v1#referee-response-407559 Alongside their report, reviewers assign a status to the article: Approved - the paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations - A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved - fundamental flaws in the paper seriously undermine the findings and conclusions Adjust parameters to alter display View on desktop for interactive features Includes Interactive Elements View on desktop for interactive features Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Stay Updated Sign up for content alerts and receive a weekly or monthly email with all newly published articles Register with F1000Research Already registered? Sign in Not now, thanks close PLEASE NOTE If you are an AUTHOR of this article, please check that you signed in with the account associated with this article otherwise we cannot automatically identify your role as an author and your comment will be labelled as a “User Comment”. If you are a REVIEWER of this article, please check that you have signed in with the account associated with this article and then go to your account to submit your report, please do not post your review here. If you do not have access to your original account, please contact us . All commenters must hold a formal affiliation as per our Policies . The information that you give us will be displayed next to your comment. User comments must be in English, comprehensible and relevant to the article under discussion. We reserve the right to remove any comments that we consider to be inappropriate, offensive or otherwise in breach of the User Comment Terms and Conditions . Commenters must not use a comment for personal attacks. When criticisms of the article are based on unpublished data, the data should be made available. I accept the User Comment Terms and Conditions Please confirm that you accept the User Comment Terms and Conditions. Affiliation ✕ refresh Please enter your institution. Note: To add your institution or organisation, start typing the name and then select the correct name from the list. Where applicable, the name will appear in both the original language and in English. Do not paste in the name. If the name does not appear in the drop-down list, we will display the information you have entered. ✕ refresh Country/Region * USA UK Canada China France Germany Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Cuba Cyprus Czech Republic Democratic Republic of the Congo Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Federated States of Micronesia Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo (Serbia and Montenegro) Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Minor Outlying Islands of the United States Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Is South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand The Gambia The Netherlands Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu UK USA Uganda Ukraine United Arab Emirates United States Virgin Islands Uruguay Uzbekistan Vanuatu Venezuela Vietnam Wallis and Futuna West Bank and Gaza Strip Western Sahara Yemen Zambia Zimbabwe Please select your country/region. You must enter a comment. Competing Interests Please disclose any competing interests that might be construed to influence your judgment of the article's or peer review report's validity or importance. Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Please state your competing interests The comment has been saved. An error has occurred. Please try again. Cancel Post var lTitle = "Abstract Sifter version 8: Focus on the chemical...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-260/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-260/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-260/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Baker NC et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/14-260/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/14-260", templates : { twitter : "Abstract Sifter version 8: Focus on the chemical literature. Baker NC et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-260/v1" } }; if (typeof(addthis) != "undefined"){ addthis.addEventListener('addthis.ready', checkCount); addthis.addEventListener('addthis.menu.share', checkCount); } $(".f1r-shares-twitter").attr("href", "https://twitter.com/intent/tweet?text=" + addthis_share.templates.twitter); $(".f1r-shares-facebook").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + addthis_share.url); $(".f1r-shares-linkedin").attr("href", addthis_config.services_custom[0].url); $(".f1r-shares-reddit").attr("href", addthis_config.services_custom[2].url); $(".f1r-shares-mendelay").attr("href", addthis_config.services_custom[1].url); function checkCount(){ setTimeout(function(){ $(".addthis_button_expanded").each(function(){ var count = $(this).text(); if (count !== "" && count != "0") $(this).removeClass("is-hidden"); else $(this).addClass("is-hidden"); }); }, 1000); } close How to cite this report {{reportCitation}} Cancel Copy Citation Details $(function(){R.ui.buttonDropdowns('.dropdown-for-downloads');}); $(function(){R.ui.toolbarDropdowns('.toolbar-dropdown-for-downloads');}); $.get("/articles/acj/160617/176540") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "176540"); $(document).ready(function() { $( "#frame1" ).on('load', function() { var mydiv = $(this).contents().find("div"); var h = mydiv.height(); console.log(h) }); var tooltipLivingFigure = jQuery(".interactive-living-figure-label .icon-more-info"), titleLivingFigure = tooltipLivingFigure.attr("title"); tooltipLivingFigure.simpletip({ fixed: true, position: ["-115", "30"], baseClass: 'small-tooltip', content:titleLivingFigure + " " }); tooltipLivingFigure.removeAttr("title"); $("body").on("click", ".cite-living-figure", function(e) { e.preventDefault(); var ref = $(this).attr("data-ref"); $(this).closest(".living-figure-list-container").find("#" + ref).fadeIn(200); }); $("body").on("click", ".close-cite-living-figure", function(e) { e.preventDefault(); $(this).closest(".popup-window-wrapper").fadeOut(200); }); $(document).on("mouseup", function(e) { var metricsContainer = $(".article-metrics-popover-wrapper"); if (!metricsContainer.is(e.target) && metricsContainer.has(e.target).length === 0) { $(".article-metrics-close-button").click(); } }); var articleId = $('#articleId').val(); if($("#main-article-count-box").attachArticleMetrics) { $("#main-article-count-box").attachArticleMetrics(articleId, { articleMetricsView: true }); } }); var figshareWidget = $(".new_figshare_widget"); if (figshareWidget.length > 0) { window.figshare.load("f1000", function(Widget) { // Select a tag/tags defined in your page. In this tag we will place the widget. _.map(figshareWidget, function(el){ var widget = new Widget({ articleId: $(el).attr("figshare_articleId") //height:300 // this is the height of the viewer part. [Default: 550] }); widget.initialize(); // initialize the widget widget.mount(el); // mount it in a tag that's on your page // this will save the widget on the global scope for later use from // your JS scripts. This line is optional. //window.widget = widget; }); }); } close Error Close Add Reset F1000.MICROSERVICES.AFFILIATION = ''; $(document).ready(function () { $('.js-affiliations-form').each((index, form) => { new AffiliationForm({ formId: form.id, institutionErrorSelector: '.comment-enter-institution', departmentErrorSelector: '.comment-enter-department', placeSelector: '.js-add-comment-place', stateSelector: '.js-add-comment-state', zipCodeSelector: '.js-add-comment-zipcode', countrySelector: '.js-add-comment-country', countryErrorSelector: '.comment-enter-country', }); }); }); $(document).ready(function () { var reportIds = { "407558": 0, "407559": 10, "407556": 0, "407557": 0, "407554": 0, "407555": 0, "407552": 0, "407553": 0, "410510": 0, "410511": 0, "410508": 0, "410509": 0, "410506": 0, "410507": 0, "410514": 0, "410515": 0, "410512": 0, "410513": 0, "372893": 0, "372892": 0, "372895": 0, "372894": 0, "372891": 0, "372900": 0, "376103": 0, "376102": 0, "372897": 0, "372896": 0, "372899": 0, "372898": 0, "376109": 0, "376108": 0, "376111": 0, "376110": 0, "376105": 0, "376104": 0, "376107": 0, "376106": 0, "387405": 0, "387404": 0, "387407": 0, "387406": 0, "387403": 0, "404822": 0, "387412": 0, "404823": 0, "404820": 0, "404821": 0, "387409": 0, "387408": 0, "404819": 0, "387411": 0, "387410": 0, "385245": 0, "404828": 0, "385247": 0, "385246": 0, "404826": 0, "404827": 0, "404824": 0, "404825": 0, "383589": 0, "402022": 0, "385253": 0, "383588": 0, "402023": 0, "385252": 0, "383591": 0, "402020": 0, "383590": 0, "402021": 0, "385254": 0, "402018": 0, "385249": 0, "402019": 0, "385248": 0, "383587": 0, "402016": 0, "385251": 0, "383586": 0, "402017": 0, "385250": 0, "383593": 0, "383592": 0, "383595": 0, "402024": 0, "383594": 0, "402025": 0, "407550": 0, "407551": 0, }; $(".referee-response-container,.js-referee-report").each(function(index, el) { var reportId = $(el).attr("data-reportid"), reportCount = reportIds[reportId] || 0; $(el).find(".comments-count-container,.js-referee-report-views").html(reportCount); }); var uuidInput = $("#article_uuid"), oldUUId = uuidInput.val(), newUUId = "f0486989-60af-43aa-b4c2-10294a381617"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "[email protected]", infoEmail: "[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });

Text is read by the "Ask this paper" AI Q&A widget below. Extraction quality varies by source — PMC NXML preserves structure cleanly, OA-HTML may include some navigation residue, and OA-PDF can have broken hyphenation. The publisher copy (via DOI) is the canonical version.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2025) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00
unpaywall
last seen: 2026-05-30T02:00:01.510937+00:00
License: CC-BY-4.0