CINXE.COM
CellProfiler 3.0: Next-generation image processing for biology | PLOS Biology
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/terms/" xmlns:doi="http://dx.doi.org/" lang="en" xml:lang="en" itemscope itemtype="http://schema.org/Article" class="no-js"> <head prefix="og: http://ogp.me/ns#"> <link rel="stylesheet" href="/resource/css/desktop/metrics.css?79f248ebefa43b7800a14562e5049ab4"/> <!-- allows for extra head tags --> <!-- hello --> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600"> <link media="print" rel="stylesheet" type="text/css" href="/resource/css/print.css"/> <script type="text/javascript"> var siteUrlPrefix = "/plosbiology/"; </script> <script src="/resource/js/vendor/modernizr-v2.7.1.js" type="text/javascript"></script> <script src="/resource/js/vendor/detectizr.min.js" type="text/javascript"></script> <link rel="shortcut icon" href="/resource/img/favicon.ico" type="image/x-icon"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="canonical" href="https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2005970" /> <meta name="description" content="Author summary The “big-data revolution” has struck biology: it is now common for robots to prepare cell samples and take thousands of microscopy images. Looking at the resulting images by eye would be extremely tedious, not to mention subjective. Thus, many biologists find they need software to analyze images easily and accurately. The third major release of our free open-source software CellProfiler is designed to help biologists working with images, whether a few or thousands. Researchers can download an online example workflow (that is, a “pipeline”) or create their own from scratch. Pipelines are easy to save, reuse, and share, helping improve scientific reproducibility. In this release, we’ve added the capability to find and measure objects in three-dimensional (3D) images. We’ve also made changes to CellProfiler’s underlying code to make it faster to run and easier to install, and we’ve added the ability to process images in the cloud and using neural networks (deep learning). We’ve also added more explanations to CellProfiler’s settings to help new users get started. We hope these changes will make CellProfiler an even better tool for current users and will provide new users better ways to get started doing quantitative image analysis." /> <meta name="citation_abstract" content="CellProfiler has enabled the scientific research community to create flexible, modular image analysis pipelines since its release in 2005. Here, we describe CellProfiler 3.0, a new version of the software supporting both whole-volume and plane-wise analysis of three-dimensional (3D) image stacks, increasingly common in biomedical research. CellProfiler’s infrastructure is greatly improved, and we provide a protocol for cloud-based, large-scale image processing. New plugins enable running pretrained deep learning models on images. Designed by and for biologists, CellProfiler equips researchers with powerful computational tools via a well-documented user interface, empowering biologists in all fields to create quantitative, reproducible image analysis workflows."> <meta name="keywords" content="Image processing,Image analysis,Computer software,Deep learning,Open source software,Blastocysts,Biologists,Cell staining" /> <meta name="citation_doi" content="10.1371/journal.pbio.2005970"/> <meta name="citation_author" content="Claire McQuin"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Allen Goodman"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Vasiliy Chernyshev"/> <meta name="citation_author_institution" content="Skolkovo Institute of Science and Technology, Skolkovo, Moscow Region, Russia"/> <meta name="citation_author_institution" content="Moscow Institute of Physics and Technology, Dolgoprudny, Moscow Region, Russia"/> <meta name="citation_author" content="Lee Kamentsky"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Beth A. Cimini"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Kyle W. Karhohs"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Minh Doan"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Liya Ding"/> <meta name="citation_author_institution" content="Allen Institute for Cell Science, Seattle, Washington, United States of America"/> <meta name="citation_author" content="Susanne M. Rafelski"/> <meta name="citation_author_institution" content="Allen Institute for Cell Science, Seattle, Washington, United States of America"/> <meta name="citation_author" content="Derek Thirstrup"/> <meta name="citation_author_institution" content="Allen Institute for Cell Science, Seattle, Washington, United States of America"/> <meta name="citation_author" content="Winfried Wiegraebe"/> <meta name="citation_author_institution" content="Allen Institute for Cell Science, Seattle, Washington, United States of America"/> <meta name="citation_author" content="Shantanu Singh"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Tim Becker"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Juan C. Caicedo"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_author" content="Anne E. Carpenter"/> <meta name="citation_author_institution" content="Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America"/> <meta name="citation_title" content="CellProfiler 3.0: Next-generation image processing for biology"/> <meta itemprop="name" content="CellProfiler 3.0: Next-generation image processing for biology"/> <meta name="citation_journal_title" content="PLOS Biology"/> <meta name="citation_journal_abbrev" content="PLOS Biology"/> <meta name="citation_date" content="Jul 3, 2018"/> <meta name="citation_firstpage" content="e2005970"/> <meta name="citation_issue" content="7"/> <meta name="citation_volume" content="16"/> <meta name="citation_issn" content="1545-7885"/> <meta name="citation_publisher" content="Public Library of Science"/> <meta name="citation_pdf_url" content="https://journals.plos.org/plosbiology/article/file?id=10.1371/journal.pbio.2005970&type=printable"> <meta name="citation_article_type" content="Methods and Resources"> <meta name="dc.identifier" content="10.1371/journal.pbio.2005970" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="plosbiology"/> <meta name="twitter:title" content="CellProfiler 3.0: Next-generation image processing for biology" /> <meta property="twitter:description" content="Author summary The “big-data revolution” has struck biology: it is now common for robots to prepare cell samples and take thousands of microscopy images. Looking at the resulting images by eye would be extremely tedious, not to mention subjective. Thus, many biologists find they need software to analyze images easily and accurately. The third major release of our free open-source software CellProfiler is designed to help biologists working with images, whether a few or thousands. Researchers can download an online example workflow (that is, a “pipeline”) or create their own from scratch. Pipelines are easy to save, reuse, and share, helping improve scientific reproducibility. In this release, we’ve added the capability to find and measure objects in three-dimensional (3D) images. We’ve also made changes to CellProfiler’s underlying code to make it faster to run and easier to install, and we’ve added the ability to process images in the cloud and using neural networks (deep learning). We’ve also added more explanations to CellProfiler’s settings to help new users get started. We hope these changes will make CellProfiler an even better tool for current users and will provide new users better ways to get started doing quantitative image analysis." /> <meta property="twitter:image" content="https://journals.plos.org/plosbiology/article/figure/image?id=10.1371/journal.pbio.2005970.g004&size=inline" /> <meta property="og:type" content="article" /> <meta property="og:url" content="https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2005970"/> <meta property="og:title" content="CellProfiler 3.0: Next-generation image processing for biology"/> <meta property="og:description" content="Author summary The “big-data revolution” has struck biology: it is now common for robots to prepare cell samples and take thousands of microscopy images. Looking at the resulting images by eye would be extremely tedious, not to mention subjective. Thus, many biologists find they need software to analyze images easily and accurately. The third major release of our free open-source software CellProfiler is designed to help biologists working with images, whether a few or thousands. Researchers can download an online example workflow (that is, a “pipeline”) or create their own from scratch. Pipelines are easy to save, reuse, and share, helping improve scientific reproducibility. In this release, we’ve added the capability to find and measure objects in three-dimensional (3D) images. We’ve also made changes to CellProfiler’s underlying code to make it faster to run and easier to install, and we’ve added the ability to process images in the cloud and using neural networks (deep learning). We’ve also added more explanations to CellProfiler’s settings to help new users get started. We hope these changes will make CellProfiler an even better tool for current users and will provide new users better ways to get started doing quantitative image analysis."/> <meta property="og:image" content="https://journals.plos.org/plosbiology/article/figure/image?id=10.1371/journal.pbio.2005970.g004&size=inline"/> <!-- DoubleClick overall ad setup script --> <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> <!-- DoubleClick ad slot setup script --> <script id="doubleClickSetupScript" type='text/javascript'> googletag.cmd.push(function() { googletag.defineSlot('/75507958/PBIO_728x90_ATF', [728, 90], 'div-gpt-ad-1458247671871-0').addService(googletag.pubads()); googletag.defineSlot('/75507958/PBIO_160x600_BTF', [160, 600], 'div-gpt-ad-1458247671871-1').addService(googletag.pubads()); var personalizedAds = window.plosCookieConsent && window.plosCookieConsent.hasConsented('advertising'); googletag.pubads().setRequestNonPersonalizedAds(personalizedAds ? 0 : 1); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); </script> <script type="text/javascript"> var WombatConfig = WombatConfig || {}; WombatConfig.journalKey = "PLoSBiology"; WombatConfig.journalName = "PLOS Biology"; WombatConfig.figurePath = "/plosbiology/article/figure/image"; WombatConfig.figShareInstitutionString = "plos"; WombatConfig.doiResolverPrefix = "https://dx.plos.org/"; </script> <script type="text/javascript"> var WombatConfig = WombatConfig || {}; WombatConfig.metrics = WombatConfig.metrics || {}; WombatConfig.metrics.referenceUrl = "http://lagotto.io/plos"; WombatConfig.metrics.googleScholarUrl = "https://scholar.google.com/scholar"; WombatConfig.metrics.googleScholarCitationUrl = WombatConfig.metrics.googleScholarUrl + "?hl=en&lr=&q="; WombatConfig.metrics.crossrefUrl = "https://www.crossref.org"; </script> <script defer="defer" src="/resource/js/defer.js?13928eb59791c3cc61cf"></script><script src="/resource/js/sync.js?13928eb59791c3cc61cf"></script> <script src="/resource/js/vendor/jquery.min.js" type="text/javascript"></script> <script type="text/javascript" src="https://widgets.figshare.com/static/figshare.js"></script> <script src="/resource/js/vendor/fastclick/lib/fastclick.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.js" type="text/javascript"></script> <script src="/resource/js/vendor/underscore-min.js" type="text/javascript"></script> <script src="/resource/js/vendor/underscore.string.min.js" type="text/javascript"></script> <script src="/resource/js/vendor/moment.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery-ui-effects.min.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.tooltip.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.dropdown.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.tab.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.reveal.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.slider.js" type="text/javascript"></script> <script src="/resource/js/util/utils.js" type="text/javascript"></script> <script src="/resource/js/components/toggle.js" type="text/javascript"></script> <script src="/resource/js/components/truncate_elem.js" type="text/javascript"></script> <script src="/resource/js/components/tooltip_hover.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery.dotdotdot.js" type="text/javascript"></script> <!--For Google Tag manager to be able to track site information --> <script> dataLayer = [{ 'mobileSite': 'false', 'desktopSite': 'true' }]; </script> <title>CellProfiler 3.0: Next-generation image processing for biology | PLOS Biology</title> </head> <body class="article plosbiology"> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-TP26BH" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script> (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= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-TP26BH'); </script> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MQQMGF" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(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= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MQQMGF');</script> <!-- End Google Tag Manager --> <!-- New Relic --> <script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),P=t(15),S=t(10),M=t("ee"),N=M.get("tracer"),C=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),S.on(p,r),M.on(d,o),b.on(l,o),S.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),P.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),N.buffer([u,"no-"+u]),S.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(S,"new-jsonp"),a(S,"jsonp-end"),a(S,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,C(!0)),w[v]("load",i,C(!0)),w[v]("popstate",function(){i(0,U>1)},C(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=NREUM.o.REQ,y=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof y&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;"string"==typeof i?n=i:"object"==typeof i&&i instanceof g?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n);var s=(""+(i&&i instanceof g&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}),u.on("fetch-done",function(t,e){this.endTime=a.now(),this.params||(this.params={}),this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?p("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&p("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(c&&c<r.startTime)return;p("lcp",[r])}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||p("cls",[t])})}function a(t){if(t instanceof v&&!g){var e=Math.round(t.timeStamp),n={type:t.type};e<=l.now()?n.fid=l.now()-e:e>l.offset&&e<=Date.now()?(e-=l.offset,n.fid=l.now()-e):e=l.now(),g=!0,p("timing",["fi",e,n])}}function s(t){"hidden"===t&&(c=l.now(),p("pageHide",[c]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var c,f,u,d,p=t("handle"),l=t("loader"),h=t(31),m=t(23),v=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){f=new PerformanceObserver(r);try{f.observe({entryTypes:["paint"]})}catch(w){}u=new PerformanceObserver(o);try{u.observe({entryTypes:["largest-contentful-paint"]})}catch(w){}d=new PerformanceObserver(i);try{d.observe({type:"layout-shift",buffered:!0})}catch(w){}}if("addEventListener"in document){var g=!1,y=["click","keydown","mousedown","pointerdown","touchstart"];y.forEach(function(t){document.addEventListener(t,a,m(!1))})}h(s)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!P++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1212.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var P=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"804283",trustKey:"804283",agentID:"402703674",licenseKey:"cf99e8d2a3",applicationID:"402703674"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"cf99e8d2a3", // Modified this value from the generated script, to pass prod vs dev applicationID: window.location.hostname.includes('journals.plos.org') ? "402703674" : "402694889", sa:1} </script> <!-- End New Relic --> <header> <div id="topslot" class="head-top"> <a id="skip-to-content" tabindex="0" class="button" href="#main-content"> Skip to main content </a> <div class="center"> <div class="title">Advertisement</div> <!-- DoubleClick Ad Zone --> <div class='advertisement' id='div-gpt-ad-1458247671871-0' style='width:728px; height:90px;'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1458247671871-0'); }); </script> </div> </div> </div> <div id="user" class="nav" data-user-management-url="https://community.plos.org"> </div> <div id="pagehdr"> <nav class="nav-main"> <h1 class="logo"> <a href="/plosbiology/.">PLOS Biology</a> </h1> <section class="top-bar-section"> <ul class="nav-elements"> <li class="menu-section-header has-dropdown " id="browse"> <span class="menu-section-header-title"> Browse </span> <ul class="menu-section dropdown " id="browse-dropdown-list"> <li> <a href="/plosbiology/issue" >Current Issue</a> </li> <li> <a href="/plosbiology/volume" >Journal Archive</a> </li> <li> <a href="/plosbiology/s/collections" >Collections</a> </li> <li> <a href="/plosbiology/s/find-and-read-articles" >Find and Read Articles</a> </li> </ul> </li> <li class="multi-col-parent menu-section-header has-dropdown" id="publish"> Publish <div class="dropdown mega "> <ul class="multi-col" id="publish-dropdown-list"> <li class="menu-section-header " id="submissions"> <span class="menu-section-header-title"> Submissions </span> <ul class="menu-section " id="submissions-dropdown-list"> <li> <a href="/plosbiology/s/submission-guidelines" >Submission Guidelines</a> </li> <li> <a href="/plosbiology/s/figures" >Figures</a> </li> <li> <a href="/plosbiology/s/tables" >Tables</a> </li> <li> <a href="/plosbiology/s/supporting-information" >Supporting Information</a> </li> <li> <a href="/plosbiology/s/latex" >LaTeX</a> </li> <li> <a href="/plosbiology/s/what-we-publish" >What We Publish</a> </li> <li> <a href="/plosbiology/s/preprints" >Preprints</a> </li> <li> <a href="/plosbiology/s/revising-your-manuscript" >Revising Your Manuscript</a> </li> <li> <a href="/plosbiology/s/submit-now" >Submit Now</a> </li> </ul> </li> <li class="menu-section-header " id="policies"> <span class="menu-section-header-title"> Policies </span> <ul class="menu-section " id="policies-dropdown-list"> <li> <a href="/plosbiology/s/best-practices-in-research-reporting" >Best Practices in Research Reporting</a> </li> <li> <a href="/plosbiology/s/human-subjects-research" >Human Subjects Research</a> </li> <li> <a href="/plosbiology/s/animal-research" >Animal Research</a> </li> <li> <a href="/plosbiology/s/competing-interests" >Competing Interests</a> </li> <li> <a href="/plosbiology/s/disclosure-of-funding-sources" >Disclosure of Funding Sources</a> </li> <li> <a href="/plosbiology/s/licenses-and-copyright" >Licenses and Copyright</a> </li> <li> <a href="/plosbiology/s/data-availability" >Data Availability</a> </li> <li> <a href="/plosbiology/s/complementary-research" >Complementary Research</a> </li> <li> <a href="/plosbiology/s/materials-software-and-code-sharing" >Materials, Software and Code Sharing</a> </li> <li> <a href="/plosbiology/s/ethical-publishing-practice" >Ethical Publishing Practice</a> </li> <li> <a href="/plosbiology/s/authorship" >Authorship</a> </li> <li> <a href="/plosbiology/s/corrections-expressions-of-concern-and-retractions" >Corrections, Expressions of Concern, and Retractions</a> </li> </ul> </li> <li class="menu-section-header " id="manuscript-review-and-publication"> <span class="menu-section-header-title"> Manuscript Review and Publication </span> <ul class="menu-section " id="manuscript-review-and-publication-dropdown-list"> <li> <a href="/plosbiology/s/editorial-and-peer-review-process" >Editorial and Peer Review Process</a> </li> <li> <a href="/plosbiology/s/reviewer-guidelines" >Guidelines for Reviewers</a> </li> <li> <a href="/plosbiology/s/accepted-manuscripts" >Accepted Manuscripts</a> </li> <li> <a href="/plosbiology/s/comments" >Comments</a> </li> </ul> </li> </ul> <div class="calloutcontainer"> <h3 class="callout-headline">Submit Your Manuscript</h3> <div class="action-contain"> <p class="callout-content"> <em>PLOS Biology</em> provides an Open Access platform to showcase your best research and commentary across all areas of biological science. </p> <p class="button-contain special"> <a class="button button-default" href="/plosbiology/s/submit-now"> Submit Now </a> </p> </div> <!-- opens in siteMenuCalloutDescription --> </div> </div> </li> <li class="menu-section-header has-dropdown " id="about"> <span class="menu-section-header-title"> About </span> <ul class="menu-section dropdown " id="about-dropdown-list"> <li> <a href="/plosbiology/static/publish" >Why Publish with PLOS Biology</a> </li> <li> <a href="/plosbiology/s/journal-information" >Journal Information</a> </li> <li> <a href="/plosbiology/s/staff-editors" >Staff Editors</a> </li> <li> <a href="/plosbiology/s/editorial-board" >Editorial Board</a> </li> <li> <a href="/plosbiology/s/publishing-information" >Publishing Information</a> </li> <li> <a href="https://plos.org/publication-fees" >Publication Fees</a> </li> <li> <a href="https://plos.org/press-and-media" >Press and Media</a> </li> <li> <a href="/plosbiology/s/contact" >Contact</a> </li> </ul> </li> <script src="/resource/js/vendor/jquery.hoverIntent.js" type="text/javascript"></script> <script src="/resource/js/components/menu_drop.js" type="text/javascript"></script> <script src="/resource/js/components/hover_delay.js" type="text/javascript"></script> <li id="navsearch" class="head-search"> <form name="searchForm" action="/plosbiology/search" method="get"> <fieldset> <legend>Search</legend> <label for="search">Search</label> <div class="search-contain"> <input id="search" type="text" name="q" placeholder="SEARCH" required/> <button id="headerSearchButton" type="submit" aria-label="Submit search"> <i title="Submit search" class="search-icon"></i> </button> </div> </fieldset> <input type="hidden" name="filterJournals" value="PLoSBiology"/> </form> <a id="advSearch" href="/plosbiology/search"> advanced search </a> <script src="/resource/js/components/placeholder_style.js" type="text/javascript"></script> </li> </ul> </section> </nav> </div> </header> <main id="main-content"> <div class="set-grid"> <header class="title-block"> <script src="/resource/js/components/signposts.js" type="text/javascript"></script> <ul id="almSignposts" class="signposts"> <li id="loadingMetrics"> <p>Loading metrics</p> </li> </ul> <script type="text/template" id="signpostsGeneralErrorTemplate"> <li id="metricsError">Article metrics are unavailable at this time. Please try again later.</li> </script> <script type="text/template" id="signpostsNewArticleErrorTemplate"> <li></li><li></li><li id="tooSoon">Article metrics are unavailable for recently published articles.</li> </script> <script type="text/template" id="signpostsTemplate"> <li id="almSaves"> <%= s.numberFormat(saveCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#savedHeader">Save</a> <p class="saves-tip" data-js-tooltip-hover="target"><a href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#savedHeader">Total Mendeley and Citeulike bookmarks.</a></p> </div> </li> <li id="almCitations"> <%= s.numberFormat(citationCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#citedHeader">Citation</a> <p class="citations-tip" data-js-tooltip-hover="target"><a href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#citedHeader">Paper's citation count computed by Dimensions.</a></p> </div> </li> <li id="almViews"> <%= s.numberFormat(viewCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#viewedHeader">View</a> <p class="views-tip" data-js-tooltip-hover="target"><a href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#viewedHeader">PLOS views and downloads.</a></p> </div> </li> <li id="almShares"> <%= s.numberFormat(shareCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#discussedHeader">Share</a> <p class="shares-tip" data-js-tooltip-hover="target"><a href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970#discussedHeader">Sum of Facebook, Twitter, Reddit and Wikipedia activity.</a></p> </div> </li> </script> <div class="article-meta"> <div class="classifications"> <p class="license-short" id="licenseShort">Open Access</p> <p class="peer-reviewed" id="peerReviewed">Peer-reviewed</p> <div class="article-type" data-js-tooltip-hover="trigger"> <p class="article-type-tooltip" id="artType">Methods and Resources</p> <div class="type-desc" data-js-tooltip-hover="target"> <p>Methods and Resources report novel methods, substantial improvements to current methodologies, or informational datasets. </p> <p><a href="/plosbiology/s/journal-information" class="type-seeall"> See Journal Information » </a></p> </div> </div> </div> </div> <div class="article-title-etc"> <div class="title-authors"> <h1 id="artTitle"><?xml version="1.0" encoding="UTF-8"?>CellProfiler 3.0: Next-generation image processing for biology</h1> <ul class="author-list clearfix" data-js-tooltip="tooltip_container" id="author-list"> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="0" class="author-name" > Claire McQuin <span class="contribute"> </span>,</a> <div id="author-meta-0" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Formal analysis, Software, Writing – original draft, Writing – review & editing </p> <p id="authAffiliations-0"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose0"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="1" class="author-name" > Allen Goodman <span class="contribute"> </span>,</a> <div id="author-meta-1" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Investigation, Software </p> <p id="authAffiliations-1"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose1"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="2" class="author-name" > Vasiliy Chernyshev <span class="contribute"> </span>,</a> <div id="author-meta-2" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Data curation, Investigation, Methodology, Software, Validation, Visualization, Writing – review & editing </p> <p id="authAffiliations-2"><span class="type">Affiliations</span> Skolkovo Institute of Science and Technology, Skolkovo, Moscow Region, Russia, Moscow Institute of Physics and Technology, Dolgoprudny, Moscow Region, Russia </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose2"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="3" class="author-name" > Lee Kamentsky <span class="contribute"> </span>,</a> <div id="author-meta-3" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Software </p> <p id="authAffiliations-3"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose3"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="4" class="author-name" > Beth A. Cimini <span class="contribute"> </span>,</a> <div id="author-meta-4" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Investigation, Methodology, Project administration, Software, Validation, Writing – review & editing </p> <p id="authAffiliations-4"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose4"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="5" class="author-name" > Kyle W. Karhohs <span class="contribute"> </span>,</a> <div id="author-meta-5" class="author-info" data-js-tooltip="tooltip_target"> <p> <span class="contribute"> </span> Contributed equally to this work with: Claire McQuin, Allen Goodman, Vasiliy Chernyshev, Lee Kamentsky, Beth A. Cimini, Kyle W. Karhohs </p> <p class="roles" id="authRoles"> <span class="type">Roles</span> Investigation, Methodology, Software </p> <p id="authAffiliations-5"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose5"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="6" class="author-name" > Minh Doan,</a> <div id="author-meta-6" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Methodology, Software, Writing – original draft, Writing – review & editing </p> <p id="authAffiliations-6"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose6"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="7" class="author-name" > Liya Ding,</a> <div id="author-meta-7" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Data curation, Methodology, Software, Validation, Writing – review & editing </p> <p id="authAffiliations-7"><span class="type">Affiliation</span> Allen Institute for Cell Science, Seattle, Washington, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose7"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="8" class="author-name" > Susanne M. Rafelski,</a> <div id="author-meta-8" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Methodology, Project administration, Resources, Supervision, Writing – review & editing </p> <p id="authAffiliations-8"><span class="type">Affiliation</span> Allen Institute for Cell Science, Seattle, Washington, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose8"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="9" class="author-name" > Derek Thirstrup,</a> <div id="author-meta-9" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Data curation, Methodology, Software, Validation, Writing – review & editing </p> <p id="authAffiliations-9"><span class="type">Affiliation</span> Allen Institute for Cell Science, Seattle, Washington, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose9"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="10" class="author-name" > Winfried Wiegraebe,</a> <div id="author-meta-10" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Methodology, Resources, Supervision </p> <p id="authAffiliations-10"><span class="type">Affiliation</span> Allen Institute for Cell Science, Seattle, Washington, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose10"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="11" class="author-name" > Shantanu Singh,</a> <div id="author-meta-11" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Resources, Software, Writing – review & editing </p> <p id="authAffiliations-11"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose11"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="12" class="author-name" > Tim Becker,</a> <div id="author-meta-12" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Investigation, Software, Visualization, Writing – review & editing </p> <p id="authAffiliations-12"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose12"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="13" class="author-name" > Juan C. Caicedo,</a> <div id="author-meta-13" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Software, Writing – review & editing </p> <p id="authAffiliations-13"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose13"> ⨯ </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="14" class="author-name" > Anne E. Carpenter <span class="email"> </span></a> <div id="author-meta-14" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Funding acquisition, Project administration, Resources, Supervision, Writing – original draft, Writing – review & editing </p> <p id="authCorresponding-14"> <span class="email">* E-mail:</span> <a href="mailto:anne@broadinstitute.org">anne@broadinstitute.org</a></p> <p id="authAffiliations-14"><span class="type">Affiliation</span> Imaging Platform, Broad Institute of Harvard and MIT, Cambridge, Massachusetts, United States of America </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose14"> ⨯ </a> </div> </li> </ul> <script src="/resource/js/components/tooltip.js" type="text/javascript"></script> </div> <div id="floatTitleTop" data-js-floater="title_author" class="float-title" role="presentation"> <div class="set-grid"> <div class="float-title-inner"> <h1><?xml version="1.0" encoding="UTF-8"?>CellProfiler 3.0: Next-generation image processing for biology</h1> <ul id="floatAuthorList" data-js-floater="floated_authors"> <li data-float-index="1">Claire McQuin, </li> <li data-float-index="2">Allen Goodman, </li> <li data-float-index="3">Vasiliy Chernyshev, </li> <li data-float-index="4">Lee Kamentsky, </li> <li data-float-index="5">Beth A. Cimini, </li> <li data-float-index="6">Kyle W. Karhohs, </li> <li data-float-index="7">Minh Doan, </li> <li data-float-index="8">Liya Ding, </li> <li data-float-index="9">Susanne M. Rafelski, </li> <li data-float-index="10">Derek Thirstrup </ul> </div> <div class="logo-close" id="titleTopCloser"> <img src="/resource/img/logo-plos.png" style="height: 2em" alt="PLOS" /> <div class="close-floater" title="close">x</div> </div> </div> </div> <ul class="date-doi"> <li id="artPubDate">Published: July 3, 2018</li> <li id="artDoi"> <a href="https://doi.org/10.1371/journal.pbio.2005970">https://doi.org/10.1371/journal.pbio.2005970</a> </li> <li class="flex-spacer"></li> </ul> </div> <div> </div> </header> <section class="metrics-body"> <ul class="article-tabs"> <li class="tab-title " id="tabArticle"> <a href="/plosbiology/article?id=10.1371/journal.pbio.2005970" class="article-tab-1">Article</a> </li> <li class="tab-title " id="tabAuthors"> <a href="/plosbiology/article/authors?id=10.1371/journal.pbio.2005970" class="article-tab-2">Authors</a> </li> <li class="tab-title active" id="tabMetrics"> <a href="/plosbiology/article/metrics?id=10.1371/journal.pbio.2005970" class="article-tab-3">Metrics</a> </li> <li class="tab-title " id="tabComments"> <a href="/plosbiology/article/comments?id=10.1371/journal.pbio.2005970" class="article-tab-4">Comments</a> </li> <li class="tab-title" id="tabRelated"> <a class="article-tab-5" id="tabRelated-link">Media Coverage</a> <script>$(document).ready(function() { $.getMediaLink("10.1371/journal.pbio.2005970").then(function (url) { $("#tabRelated-link").attr("href", url) } ) })</script> </li> </ul> <div class="main cf" id="pjax-container"> <script type="text/template" id="metricsTileTemplate"> <% if (url) { %> <div id="<%= source_name %>OnArticleMetricsTab" class="metrics_tile"> <a href="<%= url %>"><img id="<%= source_name %>ImageOnArticleMetricsTab" src="<%= imgSrc %>" alt="<%= linkText %> <%= name %>" class="metrics_tile_image"/></a> <div class="metrics_tile_footer" onclick="location.href=<%= url %>"> <a href="<%= url %>"><%= linkText %></a></div> </div> <% } else { %> <div id="<%= source_name %>OnArticleMetricsTab" class="metrics_tile_no_link"> <img id="<%= source_name %>ImageOnArticleMetricsTab" src="<%= imgSrc %>" alt="<%= linkText %> <%= name %>" class="metrics_tile_image"/> <div class="metrics_tile_footer_no_link"><%= linkText %></div> </div> <% } %> </script> <script type="text/template" id="citedSectionNoDataTemplate"> No related citations found <br/> Search for citations in <a href="<%= googleLink %>">Google Scholar</a> </script> <script type="text/template" id="viewedSectionNoDataTemplate"> Viewed data is not available. Please try again later. </script> <script type="text/template" id="viewedSectionNewArticleErrorTemplate"> This article was only recently published. Although we update our data on a daily basis (not in real time), there may be a 48-hour delay before the most recent numbers are available. </script> <script type="text/template" id="viewedHighchartTooltipTemplate"> <table id="mini" cellpadding="0" cellspacing="0"> <tr> <td></td> <td colspan="1">Views in <%= formattedDate %></td> <td colspan="1">Views through <%= formattedDate %></td> </tr> <tr> <td>HTML</td> <td class="data1"><%= monthHTML %></td> <td class="data1"><%= cumulativeHTML %></td> </tr> <tr> <td>PDF</td> <td class="data1"><%= monthPDF %></td> <td class="data1"><%= cumulativePDF %></td> </tr> <tr> <td>XML</td> <td class="data1"><%= monthPDF %></td> <td class="data1"><%= cumulativeXML %></td> </tr> </table> </script> <script type="text/template" id="pageViewsSummary"> <div id="pageViewsSummary"> <div id="left"> <div class="header">Total Article Views</div> <div class="totalCount"> <%= total %></div> <div class="pubDates"> <%= pubDatesFrom %> (publication date) <br>through <%= pubDatesTo %> * </div> </div> <div id="right"> <table id="pageViewsTable"> <tbody> <tr> <th nowrap="">HTML Page Views</th> <th nowrap="">PDF Downloads</th> <th nowrap="">XML Downloads</th> <th>Total</th> </tr> <tr> <td> <%= totalHTML %></td> <td> <%= totalPDF %></td> <td> <%= totalXML %></td> <td class="total"> <%= total %></td> </tr> <tr class="percent"> <td colspan="5"><b> <%= totalViewsPDFDownloads %> %</b> of article views led to PDF downloads </td> </tr> </tbody> </table> </div> </div> </script> <div id="article-metrics" data-showTooltip="true"> <h2 id="viewedHeader">Viewed <span id="chartSpinner"> <img class="spinner" src="/resource/img/loading_small.gif" class="loading" /> </span> </h2> <div id="usage"></div> <div id="views"></div> <a id="citations" name="citations"></a> <h2 id="citedHeader" class="topstroke">Cited <span id="relatedCitesSpinner"> <img class="spinner" src="/resource/img/loading_small.gif" class="loading" /> </span> </h2> <div id="relatedCites"></div> <div id="socialNetworksOnArticleMetricsPage"> <a id="other" name="other"></a> <h2 id="savedHeader" class="topstroke">Saved <span id="relatedBookmarksSpinner"> <img class="spinner" src="/resource/img/loading_small.gif" class="loading" /> </span> </h2> <div id="relatedBookmarks"></div> </div> <h2 id="discussedHeader" class="topstroke">Discussed <span id="relatedBlogPostsSpinner"> <img class="spinner" src="/resource/img/loading_small.gif" class="loading" /> </span> </h2> <div id="relatedBlogPosts" style="display:none;"> <div id="notesAndCommentsOnArticleMetricsTab" class="metrics_tile"> <a href="/plosbiology/article/comments?id=10.1371/journal.pbio.2005970"> <img id="notesAndCommentsImageOnArticleMetricsTab" src="/resource/img/logo-comments.png" alt="0 Comments and Notes" class="metrics_tile_image"/> </a> <div class="metrics_tile_footer" onclick="location.href='/plosbiology/article/comments?id=10.1371/journal.pbio.2005970';"> <a href="/plosbiology/article/comments?id=10.1371/journal.pbio.2005970">0</a> </div> </div> </div> <div> Powered by <a href="https://plos.altmetric.com/details/doi/10.1371/journal.pbio.2005970">Altmetric</a> </div> <div>Questions or concerns about usage data? <a href="mailto:webmaster@plos.org">Please let us know.</a></div> </div><!--end article-metrics--> </div><!-- end main --> </section> <aside class="article-aside"> <!--[if IE 9]> <style> .dload-xml {margin-top: 38px} </style> <![endif]--> <div class="dload-menu"> <div class="dload-pdf"> <a href="/plosbiology/article/file?id=10.1371/journal.pbio.2005970&type=printable" id="downloadPdf" target="_blank">Download PDF</a> </div> <div data-js-tooltip-hover="trigger" class="dload-hover"> <ul class="dload-xml" data-js-tooltip-hover="target"> <li><a href="/plosbiology/article/citation?id=10.1371/journal.pbio.2005970" id="downloadCitation">Citation</a></li> <li><a href="/plosbiology/article/file?id=10.1371/journal.pbio.2005970&type=manuscript" id="downloadXml">XML</a> </li> </ul> </div> </div> <div class="aside-container"> <div class="print-article" id="printArticle" data-js-tooltip-hover="trigger"> <a href="#" onclick="window.print(); return false;" class="preventDefault" id="printBrowser">Print</a> </div> <div class="share-article" id="shareArticle" data-js-tooltip-hover="trigger"> Share <ul data-js-tooltip-hover="target" class="share-options" id="share-options"> <li><a href="https://www.reddit.com/submit?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970" id="shareReddit" target="_blank" title="Submit to Reddit"><img src="/resource/img/icon.reddit.16.png" width="16" height="16" alt="Reddit">Reddit</a></li> <li><a href="https://www.facebook.com/share.php?u=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970&t=CellProfiler 3.0: Next-generation image processing for biology" id="shareFacebook" target="_blank" title="Share on Facebook"><img src="/resource/img/icon.fb.16.png" width="16" height="16" alt="Facebook">Facebook</a></li> <li><a href="https://www.linkedin.com/shareArticle?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970&title=CellProfiler 3.0: Next-generation image processing for biology&summary=Checkout this article I found at PLOS" id="shareLinkedIn" target="_blank" title="Add to LinkedIn"><img src="/resource/img/icon.linkedin.16.png" width="16" height="16" alt="LinkedIn">LinkedIn</a></li> <li><a href="https://www.mendeley.com/import/?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970" id="shareMendeley" target="_blank" title="Add to Mendeley"><img src="/resource/img/icon.mendeley.16.png" width="16" height="16" alt="Mendeley">Mendeley</a></li> <li><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970&text=%23PLOSBiology%3A%20CellProfiler 3.0: Next-generation image processing for biology" target="_blank" title="share on Twitter" id="twitter-share-link"><img src="/resource/img/icon.twtr.16.png" width="16" height="16" alt="Twitter">Twitter</a></li> <li><a href="mailto:?subject=CellProfiler 3.0: Next-generation image processing for biology&body=I%20thought%20you%20would%20find%20this%20article%20interesting.%20From%20PLOS Biology:%20https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pbio.2005970" id="shareEmail" rel="noreferrer" aria-label="Email"><img src="/resource/img/icon.email.16.png" width="16" height="16" alt="Email">Email</a></li> <script src="/resource/js/components/tweet140.js" type="text/javascript"></script> </ul> </div> </div> <!-- Crossmark 2.0 widget --> <script src="https://crossmark-cdn.crossref.org/widget/v2.0/widget.js"></script> <a aria-label="Check for updates via CrossMark" data-target="crossmark"> <img alt="Check for updates via CrossMark" width="150" src="https://crossmark-cdn.crossref.org/widget/v2.0/logos/CROSSMARK_BW_horizontal.svg"> </a> <!-- End Crossmark 2.0 widget --> <div class="related-articles-container"> <h3> Related PLOS Articles </h3> <ul class="related-articles"> <li> <b> has COMPANION </b> </li> <li> <?xml version="1.0" encoding="UTF-8"?>Bioimage informatics: Investing in software usability is essential <ul class="related-article-links"> <li class="related-article-link-page"> <a href="/plosbiology/article?id=10.1371/journal.pbio.3002213">View Page</a> </li> <!-- Annotations and issue images do not have printables. They can be filtered by doi. --> <li class="related-article-link-download"> <a href="/plosbiology/article/file?type=printable&id=10.1371/journal.pbio.3002213" target="_blank" title="PDF opens in new window">PDF</a> </li> </ul> </li> </ul> </div> <div class="aside-container collections-aside-container"><!-- React Magic --></div> <div class="skyscraper-container"> <div class="title">Advertisement</div> <!-- DoubleClick Ad Zone --> <div class='advertisement' id='div-gpt-ad-1458247671871-1' style='width:160px; height:600px;'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1458247671871-1'); }); </script> </div> </div> <div class="subject-areas-container"> <h3>Subject Areas <div id="subjInfo">?</div> <div id="subjInfoText"> <p>For more information about PLOS Subject Areas, click <a href="https://github.com/PLOS/plos-thesaurus/blob/master/README.md" target="_blank" title="Link opens in new window">here</a>.</p> <span class="inline-intro">We want your feedback.</span> Do these Subject Areas make sense for this article? Click the target next to the incorrect Subject Area and let us know. Thanks for your help! </div> </h3> <ul id="subjectList"> <li> <a class="taxo-term" title="Search for articles about Image processing" href="/plosbiology/search?filterSubjects=Image+processing&filterJournals=PLoSBiology&q=">Image processing</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Image processing"><p class="taxo-explain">Is the Subject Area <strong>"Image processing"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Image analysis" href="/plosbiology/search?filterSubjects=Image+analysis&filterJournals=PLoSBiology&q=">Image analysis</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Image analysis"><p class="taxo-explain">Is the Subject Area <strong>"Image analysis"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Computer software" href="/plosbiology/search?filterSubjects=Computer+software&filterJournals=PLoSBiology&q=">Computer software</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Computer software"><p class="taxo-explain">Is the Subject Area <strong>"Computer software"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Deep learning" href="/plosbiology/search?filterSubjects=Deep+learning&filterJournals=PLoSBiology&q=">Deep learning</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Deep learning"><p class="taxo-explain">Is the Subject Area <strong>"Deep learning"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Open source software" href="/plosbiology/search?filterSubjects=Open+source+software&filterJournals=PLoSBiology&q=">Open source software</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Open source software"><p class="taxo-explain">Is the Subject Area <strong>"Open source software"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Blastocysts" href="/plosbiology/search?filterSubjects=Blastocysts&filterJournals=PLoSBiology&q=">Blastocysts</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Blastocysts"><p class="taxo-explain">Is the Subject Area <strong>"Blastocysts"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Biologists" href="/plosbiology/search?filterSubjects=Biologists&filterJournals=PLoSBiology&q=">Biologists</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Biologists"><p class="taxo-explain">Is the Subject Area <strong>"Biologists"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Cell staining" href="/plosbiology/search?filterSubjects=Cell+staining&filterJournals=PLoSBiology&q=">Cell staining</a> <span class="taxo-flag"> </span> <div class="taxo-tooltip" data-categoryname="Cell staining"><p class="taxo-explain">Is the Subject Area <strong>"Cell staining"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> </ul> </div> <div id="subjectErrors"></div> </aside> </div> <script type="text/javascript"> var ArticleData = { doi: '10.1371/journal.pbio.2005970', title: '<article-title xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">CellProfiler 3.0: Next-generation image processing for biology<\/article-title>', date: 'Jul 03, 2018' }; </script> <script src="/resource/js/components/show_onscroll.js" type="text/javascript"></script> <script src="/resource/js/components/pagination.js" type="text/javascript"></script> <script src="/resource/js/vendor/spin.js" type="text/javascript"></script> <script src="/resource/js/pages/article.js" type="text/javascript"></script> <script src="/resource/js/pages/article_references.js" type="text/javascript"></script> <script src="/resource/js/pages/article_sidebar.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.dropdown.js" type="text/javascript"></script> <script src="/resource/js/components/table_open.js" type="text/javascript"></script> <script src="/resource/js/components/tooltip_hover.js" type="text/javascript"></script> <script src="/resource/js/vendor/hover-enhanced.js" type="text/javascript"></script> <script src="/resource/js/highcharts.js" type="text/javascript"></script> <script src="/resource/js/util/utils.js" type="text/javascript"></script> <script src="/resource/js/util/utils.js" type="text/javascript"></script> <script src="/resource/js/components/metric_tile.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_tab_component.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_discussed_section.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_saved_section.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_cited_section.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_viewed_section.js" type="text/javascript"></script> <script src="/resource/js/components/metrics_render.js" type="text/javascript"></script> </main> <footer id="pageftr"> <div class="row"> <div class="block x-small"> <ul class="nav nav-secondary"> <li class="ftr-header"><a href="https://plos.org/publications/journals/">Publications</a></li> <li><a href="/plosbiology/" id="ftr-bio">PLOS Biology</a></li> <li><a href="/climate/" id="ftr-climate">PLOS Climate</a></li> <li><a href="/complexsystems/" id="ftr-complex-systems">PLOS Complex Systems</a></li> <li><a href="/ploscompbiol/" id="ftr-compbio">PLOS Computational Biology</a></li> <li><a href="/digitalhealth/" id="ftr-digitalhealth">PLOS Digital Health</a></li> <li><a href="/plosgenetics/" id="ftr-gen">PLOS Genetics</a></li> <li><a href="/globalpublichealth/" id="ftr-globalpublichealth">PLOS Global Public Health</a></li> </ul> </div> <div class="block x-small"> <ul class="nav nav-secondary"> <li class="ftr-header"> </li> <li><a href="/plosmedicine/" id="ftr-med">PLOS Medicine</a></li> <li><a href="/mentalhealth/" id="ftr-mental-health">PLOS Mental Health</a></li> <li><a href="/plosntds/" id="ftr-ntds">PLOS Neglected Tropical Diseases</a></li> <li><a href="/plosone/" id="ftr-one">PLOS ONE</a></li> <li><a href="/plospathogens/" id="ftr-path">PLOS Pathogens</a></li> <li><a href="/sustainabilitytransformation/" id="ftr-sustainabilitytransformation">PLOS Sustainability and Transformation</a></li> <li><a href="/water/" id="ftr-water">PLOS Water</a></li> </ul> </div> <div class="block xx-small"> <ul class="nav nav-tertiary"> <li> <a href="https://plos.org" id="ftr-home">Home</a> </li> <li> <a href="https://blogs.plos.org" id="ftr-blog">Blogs</a> </li> <li> <a href="https://collections.plos.org/" id="ftr-collections">Collections</a> </li> <li> <a href="mailto:webmaster@plos.org" id="ftr-feedback">Give feedback</a> </li> <li> <a href="/plosbiology/lockss-manifest" id="ftr-lockss">LOCKSS</a> </li> </ul> </div> <div class="block xx-small"> <ul class="nav nav-primary"> <li><a href="https://plos.org/privacy-policy" id="ftr-privacy">Privacy Policy</a></li> <li><a href="https://plos.org/terms-of-use" id="ftr-terms">Terms of Use</a></li> <li><a href="https://plos.org/advertise/" id="ftr-advertise">Advertise</a></li> <li><a href="https://plos.org/media-inquiries" id="ftr-media">Media Inquiries</a></li> <li><a href="https://plos.org/contact" id="ftr-contact">Contact</a></li> </ul> </div> </div> <div class="row"> <p> <img src="/resource/img/logo-plos-footer.png" alt="PLOS" class="logo-footer"/> <span class="footer-non-profit-statement">PLOS is a nonprofit 501(c)(3) corporation, #C2354500, based in San Francisco, California, US</span> </p> <div class="block"> </div> </div> <script src="/resource/js/global.js" type="text/javascript"></script> </footer> </body> </html>