MorphoCloud: Democratizing Access to... | 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/15-53" }, "headline": "MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis", "datePublished": "2026-01-14T07:45:16", "dateModified": "2026-01-14T07:45:16", "author": [ { "@type": "Person", "name": "A. Murat Maga" }, { "@type": "Person", "name": "Jean-Christophe Fillion-Robin" } ], "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": " Background The digitization of biological specimens has revolutionized morphology, generating massive 3D datasets such as microCT scans. While open-source platforms like 3D Slicer and SlicerMorph have democratized access to advanced visualization and analysis software, a significant “compute gap” persists. Processing high-resolution 3D data requires high-end GPUs and substantial RAM, resources that are frequently unavailable at Primarily Undergraduate Institutions (PUIs) and other educational settings. This “digital divide” prevents many researchers and students from utilizing the very data and software that have been made open to them. Methods We present MorphoCloud, a platform designed to bridge this hardware barrier by providing on-demand, research-grade computing environments via a web browser. MorphoCloud utilizes an “IssuesOps” architecture, where users manage their remote workstations entirely through GitHub Issues using natural-language commands (e.g., /create, /unshelve). The technology stack leverages GitHub Issues and Actions for front-end and orchestration respectively, JetStream2 for backend compute, and Apache Guacamole to deliver a high-performance, GPU-accelerated desktop experience to any modern browser. Results The platform enables a streamlined lifecycle for remote instances, which come pre-configured with the SlicerMorph ecosystem, R/RStudio, and AI-assisted segmentation tools like NNInteractive and MEMOs. Users have access to a persistent storage volume that is decoupled from the instance. For educational purposes, MorphoCloud supports “Workshop” instances that allow for bulk provisioning and stay online continuously for short-term events. This identical environment ensures that instructors can conduct complex 3D workflows without the typical troubleshooting delays caused by heterogeneous student hardware. Conclusion MorphoCloud demonstrates that true scientific accessibility requires not just open data and software, but also open infrastructure. By abstracting the complexities of cloud administration into a simple, command-driven interface, MorphoCloud empowers researchers at under-resourced institutions to engage in high-performance morphological analysis and AI-assisted segmentation. " } { "@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/15-53", "name": "MorphoCloud: Democratizing Access to High-Performance Computing for..." } } ] } Home Browse MorphoCloud: Democratizing Access to High-Performance Computing for... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Maga AM and Fillion-Robin JC. MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.12688/f1000research.176328.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 MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] A. Murat Maga https://orcid.org/0000-0002-7921-9018 1,2 * , Jean-Christophe Fillion-Robin 3 * A. Murat Maga https://orcid.org/0000-0002-7921-9018 1,2 * , Jean-Christophe Fillion-Robin 3 * * Equal contributors PUBLISHED 14 Jan 2026 Author details Author details 1 Pediatrics, University of Washington, Seattle, Washington, 98152, USA 2 Center for Developmental Biology and Regenerative Medicine, Seattle Children's Research Institute, Seattle, Washington, 98101, USA 3 Kitware Inc, Clifton Park, NY, 12065, USA A. Murat Maga Roles: Conceptualization, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Jean-Christophe Fillion-Robin Roles: Investigation, Methodology, Resources, Software, Validation, Visualization, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Bioinformatics gateway. Abstract Background The digitization of biological specimens has revolutionized morphology, generating massive 3D datasets such as microCT scans. While open-source platforms like 3D Slicer and SlicerMorph have democratized access to advanced visualization and analysis software, a significant “compute gap” persists. Processing high-resolution 3D data requires high-end GPUs and substantial RAM, resources that are frequently unavailable at Primarily Undergraduate Institutions (PUIs) and other educational settings. This “digital divide” prevents many researchers and students from utilizing the very data and software that have been made open to them. Methods We present MorphoCloud, a platform designed to bridge this hardware barrier by providing on-demand, research-grade computing environments via a web browser. MorphoCloud utilizes an “IssuesOps” architecture, where users manage their remote workstations entirely through GitHub Issues using natural-language commands (e.g., /create, /unshelve). The technology stack leverages GitHub Issues and Actions for front-end and orchestration respectively, JetStream2 for backend compute, and Apache Guacamole to deliver a high-performance, GPU-accelerated desktop experience to any modern browser. Results The platform enables a streamlined lifecycle for remote instances, which come pre-configured with the SlicerMorph ecosystem, R/RStudio, and AI-assisted segmentation tools like NNInteractive and MEMOs. Users have access to a persistent storage volume that is decoupled from the instance. For educational purposes, MorphoCloud supports “Workshop” instances that allow for bulk provisioning and stay online continuously for short-term events. This identical environment ensures that instructors can conduct complex 3D workflows without the typical troubleshooting delays caused by heterogeneous student hardware. Conclusion MorphoCloud demonstrates that true scientific accessibility requires not just open data and software, but also open infrastructure. By abstracting the complexities of cloud administration into a simple, command-driven interface, MorphoCloud empowers researchers at under-resourced institutions to engage in high-performance morphological analysis and AI-assisted segmentation. READ ALL READ LESS Keywords 3D digital morphology, cloud computing, 3D visualization, morphometrics, image analysis Corresponding Author(s) A. Murat Maga ( [email protected] ) Close Corresponding author: A. Murat Maga Competing interests: No competing interests were disclosed. Grant information: MorphoCloud and its related services are created by funding from the U.S. National Science Foundation (DBI/2301405) and the National Institutes of Health (HD104435). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2026 Maga AM and Fillion-Robin JC. 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: Maga AM and Fillion-Robin JC. MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.12688/f1000research.176328.1 ) First published: 14 Jan 2026, 15 :53 ( https://doi.org/10.12688/f1000research.176328.1 ) Latest published: 14 Jan 2026, 15 :53 ( https://doi.org/10.12688/f1000research.176328.1 ) Introduction The harnessing 3D data in biological sciences The last decade has witnessed a paradigm shift in biological data collection. Over the years, the NSF Biology Directorate has made significant investments in the 3D digitization of biological specimens held in natural history collections. Initiatives like oVert 1 (OpenVertebrates) and MorphoSource 2 have generated and published hundreds of terabytes of high-resolution 3D data, ranging from surface models to high resolution Computed Tomography (CT) scans. These projects have successfully democratized access to data , ensuring that a researcher in a remote location or a rural institution can download the same digital specimens as a curator at a major natural history museum. Bridging the software gap: SlicerMorph While the digitization of specimens removed physical barriers, a significant “software barrier” remained. Historically, interacting with 3D biological data required expensive, proprietary visualization software. Furthermore, the workflows were fragmentary, necessitating serial use of 4-5 different software packages to accomplish the tasks of importing data from scanners, visualizing, segmenting and analyzing them. This fragmented workflow with incompatible formats and proprietary software created significant data management challenges, as the same specimen was being represented in 4-5 different formats and data representation in various stages of the pipeline. These formats were incompatible with each other, making going back and forth through the workflow to change and improve very difficult, if not impossible. To overcome these challenges we devised the SlicerMorph project. 3 3D Slicer (aka Slicer) was chosen as the primary platform to develop the extension because Slicer was already a very capable application, providing in a single platform visualization, processing and analysis of 3D volumetric data. 4 , 5 Missing functionality could be added on thanks to its open-source and modular nature. SlicerMorph extended the existing core functionality of Slicer with generic (ImageStack) and vendor specific (SkyscanReconImport, GEVolImport) functionality to import imagestacks from microCT and other modalities; implemented the Generalized Procrustes Analysis (GPA) for visualizing shape variation and other geometric morphometrics modules (e.g., PseudoLMGenerator, PlaceGridLandmarks, ProjectSemiLMs), as well as fully automated landmarking tools like ALPACA and MALPACA. 6 – 9 Within in the SlicerMorph extension, there are additional modules that provide convenience functions such as segmenting endocranial space in mammalian skulls (SegmentEndocranium), alignment and registration of 3D models (FastModelAlign), acquiring high-resolution 3D renderings (HiResScreenCapture). SlicerMorph team continues to work with the other Slicer developers to incorporate changes into the core functionality of the Slicer, such as the new markups infrastructure that enabled landmarking functionality, help diagnose and resolve issues regarding using and interacting large datasets in Slicer including rendering, segmentation and saving, as well as adding new functionalities to (e.g., ColorizeVolume). At this juncture, all fundamental digital morphology tasks such as importing, visualizing, segmenting, and analyzing can be done completely within Slicer. For domain specific inferential statistics on morphometric data, SlicerMorphR R library provides convenient import of SlicerMorph’s GPA results into the R ecosystem with a single line of code. At the same time SlicerMorph project has grown from a single extension to an ecosystem of integrated extensions that work together for complex workflows. For example, now SlicerMorph’s Photogrammetry extension 10 , 11 allows converting large number of photographs into 3D textured models, which can then be landmarked using the existing tools in Slicer, which in return can be fed into SlicerMorph’s Dense Correspondence Analysis (DeCA) toolkit that simultaneously create 3D template of models and sample dense semi-landmarks, 12 , 13 and finally the new output can be can be analyzed with the GPA module in the SlicerMorph extension proper. Mouse Multi Organ Segmentation (MEMOs) extension uses deep-learning to rapidly segment 50 structures diceCT scans of mouse embryos. 14 Segments generated by MEMOs can be immediately fine-tuned with the Slicer’s Segment Editor. ScriptEditor extension allows taking example python codes from Slicer’s Script Repository and tweaking it for the user’s specific needs all inside the Slicer’s environment with support for code auto complete and function discovery and help documentation. The emerging MorphoDepot extension allows teams, whether they are geographically separate collaborators, or instructor and students in a class, to work jointly on the same segmentation using the well-established fork-and-contribute model of open-source development. All in all, it is now possible to conduct all digital morphology tasks entirely within the Slicer platform, and maintain full control over the workflow. Any unique functionality that is currently not available can be implemented rapidly, thanks to the growing number of AI-assisted coding platforms that are trained on the fully open Slicer source code, documentation and its Application Programming Interface (API). The compute gap Despite the availability of open data and open software, a final barrier prevents the full democratization of this science: the hardware gap. While the application can be free, the computational cost of running it is not. Processing high-resolution microCT scans requires workstations with high-end GPUs and large amounts of RAM. Particularly for segmentation a typical rule of thumb is 4-8 times more physical memory than the size of the dataset. A “typical” high-resolution microCT scan can easily be 2048 voxels (or more) in each dimension. If the intensities in this image are represented by 16-bit data, it means simply importing this data as a 3D array would require 16GB of physical memory. During the segmentation, necessities of having multiple copies of this array mean transient memory usage can be as large as 60-100GB, which often exceeds resources on personal computing devices. This large resource requirement, coupled with the need to have data-center grade GPUs to benefit from emerging AI technologies to process and segment large microCT datasets creates a “digital divide.” Research-intensive universities often have high performance computing environments, which can be leveraged to accomplish these tasks by their faculty and students. Also, often there are shared computer labs with relatively modern and powerful workstations, since computationally heavy courses are fairly common in such institutions. On the other hand, Primarily Undergraduate Institutions (PUIs) and other teaching focused institutions may lack such resources. An instructor who wants to incorporate existing 3D morphological data to supplement their curriculum, not only tasked with identifying which datasets to use, but where and how students will access these resources. The MorphoCloud mission ACCESS is a program established and funded by the U.S. National Science Foundation to help researchers and educators, with or without supporting grants, to utilize the nation’s advanced computing systems and services, at no cost. 15 However, most of the resources within the ACCESS program are traditional high-performance computing environments that are set to be used as queue-based batch work systems and are not conducive to the interactive computing that is necessary for digital morphology. Alternative to these HPC systems are cloud farms that provide virtual machines that come in many different configurations and can be “rented” on demand. While cloud farms may offer cost-effective solutions to “rent” powerful computers without investing significant sums of capital equipment, they have their own challenges. These virtual computers need to be configured from the bare operating system, meaning the “tenant” needs to configure the network, install all the software they need and maintain it securely. The second challenge is, commercial cloud farms charge rent by the minute the virtual computer is online, regardless of if the computer is actively being used or simply sitting idle. So, any computer that is not being used needs to be turned off and “shelved” to avoid charges. Any “run-away” or “stray” virtual machine has the potential to rack up charges in thousands of dollars (or exhaust the educational credits) until it is discovered and turned off. While there are orchestration tools and technologies to avoid such situations, these are jobs for full-time system administrators, which are hard to come by at most PIUs and other non-research focused academic institutions, and are not tasks most morphologists or researchers in related fields are familiar with or have the bandwidth to acquire the skills. JetStream2 is a public cloud farm that is part of the ACCESS program funded by NSF. 16 Like any resource in the ACCESS program, any US researcher can request allocation on the JetStream2 at no cost. However, they still need to accept the responsibility to provision their own instances with the software, and keep tabs on their running instance not to exhaust their resources. So, the challenges associated with commercial cloud vendors still apply to JetStream, only the cost aspect of it is changed. Here we introduce the MorphoCloud, an “IssuesOp” based platform built on the JetStream2 and allows users to provision and manage powerful remote workstations (aka instances) with simple commands. 17 Our aim is to bridge the compute gap by providing “one-click” access to modern, research-grade computing infrastructure without requiring users to become system administrators. Created instances can be accessible via web browser and already come with the Slicer and SlicerMorph ecosystem preinstalled, enabling research and teaching activities to commence at the very moment the instance is online. Methods The core design philosophy of MorphoCloud is “IssuesOps”—a command-driven interface. MorphoCloud uses the Github Issues as the primary means to request, get approved and control the instances. Users interact with the system by typing natural-looking commands (e.g., /create, /unshelve, /renew ) as comments on an issue. This approach provides a simple, collaborative, and persistent record of all interactions. There are only two requirements to use MorphoCloud instances: A public ORCID, and a Github account, both of which are free to acquire. Overview of MorphoCloud technology stack MorphoCloud uses existing, established open-source projects to facilitate the functionality. These are: • Frontend (User Interface): GitHub Issues. The issue tracker serves as the dashboard, where users request resources and receive status updates via bot comments. • Orchestration : GitHub Actions. These workflows parse user comments, validate permissions, and execute the necessary logic. Crucially, the workflows run on a Self-Hosted Runner that resides within the JetStream2 cloud network, allowing direct, secure communication with the OpenStack API. • Backend (Compute): OpenStack running on JetStream2. This provides the raw virtualization layer. • Provisioning : Cloud-Init and Ansible. When an instance is spawned, a custom user-data script bootstraps the environment. It installs Ansible in a virtual environment and pulls a specific configuration playbook from the Exosphere repository 18 customized for the MorphoCloud to set up the remote desktop environment. • Delivery : Apache Guacamole. A clientless remote desktop gateway that renders the desktop environment to HTML5. This allows users to access their high-performance instance via any modern web browser, bypassing local hardware limitations. Security model Security is managed through a “vendorized” workflow approach. The complex logic resides in a central repository (MorphoCloudWorkflow), while user projects (eg. MorphoCloudInstances) import these workflows. Sensitive credentials (SSH keys, OpenStack API tokens) are stored as GitHub Repository Secrets, never exposed in the issue comments, and only accessible to repository owners. Access control to the managed instances is enforced via a defined list of administrators who must approve instance creation and management requests using the/approve command. This flexible design allows anyone who obtains their own allocation on the JetStream2 to fork the MorphoCloudWorkflow repository, customize it for their own use cases (e.g., different software tools and/or user interface) and deploy it for their own community. Step-by-step instructions for creating custom deployments similar to MorphoCloud can be found on the MorphoCloudWorkflow repository. 19 Results This is the lifecycle of a MorphoCloud instance from an individual user’s perspective: 1. Request and Approval: User opens a new Issue using a standardized template identifying themselves via their ORCID profile, briefly explaining their project, and choosing an instance type ( Table 1 ). The MorphoCloud team reviews the request to make sure the request fits in the MorphoCloud intended usage and approves it often within a few hours. If there are concerns or clarifications needed, more comments are added to the user’s specific github issue. 2. Instance Initialization : An approved user can initialize the process by issuing /create , command, which starts provisioning the instance with all the necessary software, along with the user’s persistent storage volume. The issue page displays each provisioning stage so that the user can see the progress (or notice errors). The same page is where all the commands are issues to manage the instance ( Table 2 ). 3. Notification : Once an instance is ready and online, the system indicates that provisioning is completed, and sends the user an email with access credentials. 4. Access to remote desktop : User can access the instance via a web browser by clicking the access URL and entering the provided credentials ( Figure 1 ). Alternatively, the user can connect to the instance via the VNC protocol for a slightly more performant and more native-like experience. Command line access to the instance via SSH protocol is also a possibility. 5. Shelving and Unshelving: An active instance stays online up to four hours, unless the user chooses to further extend their session. Users can extend their sessions four hours at a time by clicking an icon on the remote desktop. An inactive remote desktop session will “shelve” itself automatically at the end of the last four-hour extension. Alternatively, when done, the user can shelve their own instance by typing the command /shelve on their issue’s page. A shelved instance can be made online again by entering the /unshelve command on the issue page. Unshelving is much faster than fully provisioning the instance and often the instance is online within a few minutes after the command is entered. A new email with access credentials is sent to the user each time as those may change after shelving and unshelving. If the credential email is not received or lost for any reason, it can be re-requested via/email command. 6. Instance expiration and renewal: Each instance has a life span of 60 days, after which the instance expires and gets deleted automatically. 60-day countdown starts from the time /create command is issued by the user. As the life span is nearing, a remainder email is sent to the user about the upcoming expiration. The user then can issue the /renew command to extend the life span for another 60 days. If the user takes no action, both the instance and their persistent storage volume will be deleted at the end of the 60 days. 7. Additional commands for troubleshooting: Due to reasons beyond our control (e.g., networking lost during provisioning, faulty host or GPU), instances may be left in an inaccessible state. In such cases, additional commands such as /delete_instance can be issued by the user to purge the instance and reprovision their own instance by reissuing the/create command. This is often the simplest and fastest solution to regaining access and is harmless since this command only removes the instance and the user’s persistent storage volume is untouched. Table 1. Available instance types, specifications and use cases. g3.l is the default instance type on the MorphoCloud. Flavor RAM Cores GPU Storage Use cases g3.l* 60GB 16 A100 (20GB) 100GB General purpose morphology and morphometrics g3.xl 125GB 32 A100 (40GB) 100GB Photogrammetry, NNInteractive, AI applications m3.xl 250GB 64 None 100GB Computationally intense tasks that don’t require GPU; eg., Image registration with ANTsPy r3.l 500GB 64 None 100GB Image registration with larger dataset r3.xl 1000GB 128 None 100GB Image registration with larger dataset Table 2. List of most commonly used commands as “IssuesOps”. Command Function /create Provision a new instance (one time only, unless its deleted) /shelve Suspend (turn off ) instance (after 4h, instance auto-shelves) /unshelve Bring a shelved instance online again /renew Extend the instance by another 60 days (one time only) /email Resend access email (valid only if the instance is online) /delete_instance Delete an instance (only used as a troubleshooting step) Figure 1. Apache Guacamole (Web browser access) interface. A: Side panel allows copy/paste text into the remote session, browse and download files on the remote server and adjust screen zoom levels. B: Shortcuts to commonly used applications and to MyData storage volume. C: Displays list of available applications (searchable) D: Right mouse click brings desktop context menu, including changing screen resolution and other visual desktop settings. E: Icons for extending the current session for another 4 hours and the 3D Slicer applications. Users can extend their session as many times as they want from this shortcut. To support instructors offering short courses and workshops centered on the SlicerMorph ecosystem, MorphoCloud also includes a “Workshop” instance request type. The primary purpose of the workshop instance type is to bulk provision many instances and distribute the access credentials to participants prior to the event. Moreover, these instances do not automatically shelve themselves after four hours of inactivity, but remain online continuously. However, their life span is much shorter. Workshop instances can only be requested for up to five days (plus 24h of grace period for setup). The course organizer makes the request on behalf of participants, receives the access credential emails for all instances created for the event, and is responsible for distributing them to the participants. Data management As briefly mentioned above, the instances and where the user data is stored is decoupled by design. Instances are considered “ephemeral” and as such can be deleted and recreated to troubleshoot or to upgrade the base software tools deployed. Therefore, we advise the MorphoCloud users not to store any critical data on the boot disk of the instance, but instead store everything in their private, persistent storage volume. This 100GB volume is mapped as an external disk under the /media/volume/MyData . Primary document root for Slicer and other applications also points to this folder. Apache Guacamole interface (aka the web browser connection) provides a convenient utility to traverse the remote file system and to download individual files by double clicking them ( Figure 1 ). Similarly, while using the Guacamole interface, if the user drags and drop a file from their own local computer to the remote desktop, the file will be automatically uploaded to the remote computer and will be placed under the persistent storage. For bulk data ingress and egress onto the instance using standard SFTP and SCP protocols is suggested. Use cases MorphoCloud is designed primarily to be used by people who need intermittent access to powerful computers to process large 3D datasets interactively and cannot justify investing significant capital expense for sporadic usage of a technology that gets depreciated and outdated quickly ( Figure 2A - 2B ). Figure 2. Screenshots of MorphoCloud instances running different Slicer extensions. A. Rendering of textured 3D model reconstructed through SlicerMorph Photogrammetry extension, with landmarks created via PlaceLandmarkGrid module in SlicerMorph extension. B. 3D Volume rendering of a stained bumblebee on a g3.xl instance. Dataset is 1824x1836x2023 voxels (16-bit) and is 12.5GB in size. C. Interactive segmentation of molar tooth row as separate segments using NNInteractive extension. User prompts the tool for the regions to keep and regions to remove in a segment. The result shown required 8 prompts (clicks) and took less than 2 minutes to generate. D. MorphoDepot collaborative segmentation framework (displaying search results). MorphoCloud is also particularly useful is intense short courses and workshops focused on digital morphology and related fields, as it isolates a lot of the technological complexity associated with running such events. Traditionally in such events participants are expected to bring their own computing devices. Undoubtedly these computers are a heterogeneous mixture of operating systems, hardware configurations and restrictions (e.g., devices centrally managed by IT departments). The time spent on troubleshooting one-off challenges faced by the participants can easily derail the schedule. Because MorphoCloud provides an identical environment to all users, once instructors run their workflow on their instances, they can be confident that it will work for everyone as intended. For such events, instructors can provision all the nodes the day before the activity, distribute the access credentials to the user on the day of the event, and because the only software requirement from the user’s side is a web browser, the event can proceed in a timely fashion. Because workshop instances do not auto-shelve themselves in time of activity, once they are provisioned, they are guaranteed to stay online throughout the event. However, again there is no procedure guarantee sufficient resources will be available at the time of provisioning. That is why the workshops are given a 24h grace period to launch their instances. In our experience the default g3.l flavor of MorphoCloud is often consistently available for events up to 35 participants ( Table 1 ). Another issue that such event organizers must be mindful of is that JetStream2 engineering team have scheduled and (occasionally) emergency maintenance of the system. Depending on the type of the maintenance the system might be partially or completely unavailable to the users. We advise checking the JS2’s planned outage calendar, or getting in touch with the admins, before planning such an event. Another use case MorphoCloud proved to be very convenient is using AI-assisted technologies in digital morphology. While pre-trained deep-learning networks—ranging from fully automated pipelines to interactive, promptable models ( Figure 2C )— offer transformative potential for processing CT data, their practical implementation is hindered by a “multi-layered cake” of software dependencies. The deployment of open-source AI tools requires a precise alignment of several distinct architectural layers. At the foundation, the hardware-driver interface (e.g., NVIDIA CUDA) must be exactly compatible with the computational frameworks (such as PyTorch or TensorFlow). Above this, a complex lattice of mathematical and image-processing libraries must be version-matched to the specific segmentation tool. As such, just obtaining the right environment to test a new AI tool can itself be a large time sink. MorphoCloud mitigates these complexities by providing the correct and current software stack that is tested with the Slicer. By hosting these “layered cakes” in a pre-configured, cloud-based infrastructure, often all the user needs to do is to install the extension from the Slicer’s catalogue, and test its functionality in a few minutes. Finally, MorphoCloud instances allows quick start with the collaborative segmentation framework MorphoDepot. MorphoDepot is a distributed, github based platform to share and collaborate on segmentation using open-source 3D Slicer biomedical image computing platform. 20 Its primary goal is to use github infrastructure to manage multi-person segmentation projects, particularly in context of classroom assignments. A repository is used to manage segmentation of a specimen (e.g. a microCT of a fish) and issues are assigned to people to work on parts of the segmentation. Pull requests are used to manage review and integration of segmentation tasks. The Slicer extension uses git behind the scenes, but most of the project management is done from within Slicer ( Figure 2D ). Discussion It should be noted that because it uses a shared, national resource (JetStream2) as the backend, there is no guarantee that at a specific time of the day, there will be sufficient resources available for everyone who would like to use MorphoCloud. In formal teaching settings like academic classes, MorphoCloud is best utilized as an asynchronous tool to supplement the curricular activities, as there is no reservation system on the JetStream2 to allow pre-reserving instances for a specific time for everyone in that class. The workshop instance types mitigate some of the issues by allowing the organizer create the instances prior to the workshop and keep them online, but these are limited to short-term events. Unfortunately for a semester long course this feature is not sufficient. For such use cases, it is best for the instructor to obtain their own JetStream2 allocation from the ACCESS, deploy their own service and customize the MorphoCloudWorkflow by changing the instance expiration time. There are few things to emphasize. After the approval, instance creation is not automatic; as explained above, the user needs to initiate that via the /create command. Provisioning an instance from is similar to configuring a brand-new computer from scratch; it takes time. The time from issuing the /create command and the instance becoming online is at least 15 minutes and can be substantially longer. The primary factor that affects the wait time is the number of tasks in the queue that needs to happen before the system can get to the specific /create command. Given that it currently takes about 15 minutes to provision an instance, if 4-5 users issue the /create command more or less at the same time, it may take more than an hour for the last instance to be created. This is why there is a 24h grace period to the workshop. Our suggestion is the event organizer provision the instances the day before the event to have ample time for all the provisioning to take place. Also if the workshop requires additional software beyond what is provided on the MorphoCloud Instances ( Table 3 ), it needs to be installed by users. Table 3. List of applications installed on the MorphoCloud. Additionally, users have admin rights on their own instances. 3D Slicer (following extensions are pre-installed, more can be installed by the user). SlicerMorph: ImageStacks, GPA, ALPACA, PseudoLMGenerator, FastModelAlign and others DeCA: Morphometrics via dense correspondence analysis Photogrammetry: Generate textured 3D models from photographs MorphoDepot: Collaborative segmentation workflows MEMOs: AI based organ segmentation for E15 mouse embryos ANTsPy: ANTs diffeomorphic image registration and analysis library NNInteractive: AI assisted promptable interactive segmentation PyTorch: GPU accelerated tensor library for AI tools R and Rstudio Python3 MorphoCloud demonstrates that accessibility is about more than just open data; it requires open infrastructure. By abstracting away the complexity of cloud computing, we empower researchers at under-resourced institutions to participate fully in the era of big data biology. Software availability - Source code available from: https://github.com/MorphoCloud/MorphoCloudWorkflow https://github.com/MorphoCloud/MorphoCloudInstances - Archived software available in Zenodo from these DOIs: https://doi.org/10.5281/zenodo.18156936 (MorphoCloudWorkflow) https://doi.org/10.5281/zenodo.18156916 (MorphoCloudInstances) - License: BSD2 Data availability This study does not rely on or generate any data. Acknowledgements The platform runs on cyberinfrastructure made available by the U.S. National Science Foundation: Jetstream2 (OAC/2005506) and Exosphere (TI/2229642) through allocation BIO180006 from the Advanced Cyberinfrastructure Coordination Ecosystem: Services & Support (ACCESS) program, also supported by U.S. National Science Foundation (2138259, 2138286, 2138307, 2137603, and 2138296). Initial development of the SlicerMorph extension was supported by the U.S. National Science Foundation (DBI/1759883). References 1. Blackburn DC, et al. : Increasing the impact of vertebrate scientific collections through 3D imaging: The openVertebrate (oVert) Thematic Collections Network. Bioscience. Mar. 2024; 74 (3): 169–186. PubMed Abstract | Publisher Full Text | Free Full Text 2. Boyer DM, Gunnell GF, Kaufman S, et al. : MORPHOSOURCE: ARCHIVING AND SHARING 3-D DIGITAL SPECIMEN DATA. The Paleontological Society Papers. Sept. 2016; 22 : 157–181. Publisher Full Text 3. Welcome to SlicerMorph Project. SlicerMorph.github.io. Accessed: Nov. 26, 2018. Reference Source 4. Fedorov A, et al. : 3D Slicer as an image computing platform for the Quantitative Imaging Network. Magn. Reson. Imaging. Nov. 2012; 30 (9): 1323–1341. PubMed Abstract | Publisher Full Text | Free Full Text 5. Kikinis R, Pieper SD, Vosburgh KG: 3D Slicer: A Platform for Subject-Specific Image Analysis, Visualization, and Clinical Support. Intraoperative Imaging and Image-Guided Therapy. New York, NY: Springer; 2014; pp. 277–289. Publisher Full Text 6. Rolfe S, Davis C, Maga AM: Comparing semi-landmarking approaches for analyzing three-dimensional cranial morphology. Am. J. Phys. Anthropol. 2021; 175 (1): 227–237. PubMed Abstract | Publisher Full Text | Free Full Text 7. Porto A, Rolfe S, Maga AM: ALPACA: A fast and accurate computer vision approach for automated landmarking of three-dimensional biological structures. Methods Ecol. Evol. 2021; 12 (11): 2129–2144. PubMed Abstract | Publisher Full Text | Free Full Text 8. Rolfe S, et al. : SlicerMorph: An open and extensible platform to retrieve, visualize and analyse 3D morphology. Methods Ecol. Evol. 2021; 12 (10): 1816–1825. PubMed Abstract | Publisher Full Text | Free Full Text 9. Zhang C, Porto A, Rolfe S, et al. : Automated landmarking via multiple templates. PLOS ONE. Dec. 2022; 17 (12): e0278035. PubMed Abstract | Publisher Full Text | Free Full Text 10. Zhang C, Maga AM: An Open-Source Photogrammetry Workflow for Reconstructing 3D Models. Integrative Organismal Biology. 2023; 5 (1). Publisher Full Text 11. Thomas OO, Zhang C, Maga AM: SlicerMorph photogrammetry: An open-source photogrammetry workflow for reconstructing 3D models. Biol. Open. Aug. 2025; 14 : bio.062126. PubMed Abstract | Publisher Full Text | Free Full Text 12. Rolfe SM, Maga AM: DeCA: A Dense Correspondence Analysis Toolkit for Shape Analysis. Shape in Medical Imaging. Wachinger C, Paniagua B, Elhabian S, et al. , editors. Cham: Springer Nature Switzerland; 2023; pp. 259–270. Publisher Full Text 13. Rolfe SM, Mao D, Maga AM: Streamlining asymmetry quantification in fetal mouse imaging: A semi-automated pipeline supported by expert guidance. Dev. Dyn. 2025; 254 (8): 999–1010. PubMed Abstract | Publisher Full Text | Free Full Text 14. Rolfe SM, Whikehart SM, Maga AM: Deep learning enabled multi-organ segmentation of mouse embryos. Biol. Open. Feb. 2023; 12 (2): bio059698. PubMed Abstract | Publisher Full Text | Free Full Text 15. Boerner TJ, Deems S, Furlani TR, et al. : ACCESS: Advancing Innovation: NSF’s Advanced Cyberinfrastructure Coordination Ecosystem: Services & Support. Practice and Experience in Advanced Research Computing 2023: Computing for the Common Good, in PEARC’23. New York, NY, USA: Association for Computing Machinery; Sept. 2023; pp. 173–176. Publisher Full Text 16. Hancock DY, et al. : Jetstream2: Accelerating cloud computing via Jetstream. Practice and Experience in Advanced Research Computing 2021: Evolution Across All Dimensions, in PEARC’21. New York, NY, USA: Association for Computing Machinery; 2021. Publisher Full Text 17. MorphoCloud: On-Demand Cloud for 3D Slicer & SlicerMorph. MorphoCloud: On-Demand Cloud for 3D Slicer & SlicerMorph. Accessed: Dec. 24, 2025. Reference Source 18. Pistorius J, Martin C, Sudarshan S, et al. : Exosphere - Bringing The Cloud Closer. 2020 IEEE/ACM International Workshop on Interoperability of Supercomputing and Cloud Technologies (SuperCompCloud). Nov. 2020; pp. 1–6. Publisher Full Text 19. MorphoCloudWorkflow/README.md at main · MorphoCloud/MorphoCloudWorkflow. Accessed: Dec. 24, 2025. Reference Source 20. SlicerMorphoDepot/README.md at main · MorphoCloud/SlicerMorphoDepot. Accessed: Dec. 25, 2025. Reference Source Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 14 Jan 2026 ADD YOUR COMMENT Comment Author details Author details 1 Pediatrics, University of Washington, Seattle, Washington, 98152, USA 2 Center for Developmental Biology and Regenerative Medicine, Seattle Children's Research Institute, Seattle, Washington, 98101, USA 3 Kitware Inc, Clifton Park, NY, 12065, USA A. Murat Maga Roles: Conceptualization, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Jean-Christophe Fillion-Robin Roles: Investigation, Methodology, Resources, Software, Validation, Visualization, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information MorphoCloud and its related services are created by funding from the U.S. National Science Foundation (DBI/2301405) and the National Institutes of Health (HD104435). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. 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: 14 Jan 2026, 15:53 https://doi.org/10.12688/f1000research.176328.1 Copyright © 2026 Maga AM and Fillion-Robin JC. 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 Maga AM and Fillion-Robin JC. MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.12688/f1000research.176328.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 14 Jan 2026 Views 0 Cite How to cite this report: Metscher B. Reviewer Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r471625 ) The direct URL for this report is: https://f1000research.com/articles/15-53/v1#referee-response-471625 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 08 Apr 2026 Brian Metscher , University of Vienna, Vienna, Vienna, Austria Approved VIEWS 0 https://doi.org/10.5256/f1000research.194373.r471625 The presented MorphoCloud system offers a means for anyone to use the 3D Slicer and SlicerMorph software without having to invest in new computer hardware. Slicer is a powerful and comprehensive software package with tools and add-ins for most if ... Continue reading READ ALL The presented MorphoCloud system offers a means for anyone to use the 3D Slicer and SlicerMorph software without having to invest in new computer hardware. Slicer is a powerful and comprehensive software package with tools and add-ins for most if not all 3D image analysis tasks. This report is generally clear and complete, although a new user will require some level of computing knowledge to get started. The motivation and need for this software tool are clear, and the technical details are available for anyone who might need them. The relevant information and code are available in GitHub, which is the most-used repository for software. Users really need some familiarity with GitHub procedures, but once a user or institute has set up a MorphoCloud instance, their students or colleagues can use the Slicer software with only a web browser. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes 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? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: Evolutionary morphology, 3D imaging 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. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Metscher B. Reviewer Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r471625 ) The direct URL for this report is: https://f1000research.com/articles/15-53/v1#referee-response-471625 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 Views 0 Cite How to cite this report: Carter R. Reviewer Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r453831 ) The direct URL for this report is: https://f1000research.com/articles/15-53/v1#referee-response-453831 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 13 Feb 2026 Richard Carter , East Tennessee State University, Johnson City, Tennessee, USA Approved VIEWS 0 https://doi.org/10.5256/f1000research.194373.r453831 The authors of “MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis” present a timely solution to a problem that many PIs and students face when working with microCT datasets. That is the high compute costs associated with large ... Continue reading READ ALL The authors of “MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis” present a timely solution to a problem that many PIs and students face when working with microCT datasets. That is the high compute costs associated with large three-dimensional datasets that require powerful GPU and RAM resources. While PIs may have a few such workstations in their labs, classrooms are rarely equipped with such computers. This makes instruction of these techniques prohibitive. Therefore, the solution presented here where remote access to JetStream2 (and its powerful GPUs and RAM resources) through the NSF funded ACCESS program using Morphocloud, is a game changer. Background information on the SlicerMorph project that runs on 3D Slicer is adequately given, including all the functionality that this module provides to biological morphologists. Furthermore, the authors highlight the open-source modular nature of Slicer where missing functionality can be added. As MophoCloud uses open-source projects like Github and others, the underlying code can be investigated by readers and can be adequately replicated. The expected results are laid out clearly in the paper. With each stage of the lifecycle described in the text and with an accompanying table or figure. As someone who has followed this exact set of steps to gain access to MorphoCloud on JetStream2, I can confidently say that these results are reproducible. The functionality of the software is supported and so are the limitations that authors put forward, Namely, that this system works best in workshop-like settings rather than semester long courses. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes 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? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: I am a functional morphologist that uses Slicermorph and the MorphoCloud to carry out my work on bat and dolphin head anatomy and bioacoustics. I also teach a 3D modeling course using MorphoCould and JetStream2. 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. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Carter R. Reviewer Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r453831 ) The direct URL for this report is: https://f1000research.com/articles/15-53/v1#referee-response-453831 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 14 Jan 2026 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 2 Version 1 14 Jan 26 read read Richard Carter , East Tennessee State University, Johnson City, USA Brian Metscher , University of Vienna, Vienna, Austria 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 © 2026 Metscher B. 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. 08 Apr 2026 | for Version 1 Brian Metscher , University of Vienna, Vienna, Vienna, Austria 0 Views copyright © 2026 Metscher B. 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 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 The presented MorphoCloud system offers a means for anyone to use the 3D Slicer and SlicerMorph software without having to invest in new computer hardware. Slicer is a powerful and comprehensive software package with tools and add-ins for most if not all 3D image analysis tasks. This report is generally clear and complete, although a new user will require some level of computing knowledge to get started. The motivation and need for this software tool are clear, and the technical details are available for anyone who might need them. The relevant information and code are available in GitHub, which is the most-used repository for software. Users really need some familiarity with GitHub procedures, but once a user or institute has set up a MorphoCloud instance, their students or colleagues can use the Slicer software with only a web browser. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes 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? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise Evolutionary morphology, 3D imaging 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. reply Respond to this report Responses (0) Metscher B. Peer Review Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r471625) 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/15-53/v1#referee-response-471625 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2026 Carter R. 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. 13 Feb 2026 | for Version 1 Richard Carter , East Tennessee State University, Johnson City, Tennessee, USA 0 Views copyright © 2026 Carter R. 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 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 The authors of “MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis” present a timely solution to a problem that many PIs and students face when working with microCT datasets. That is the high compute costs associated with large three-dimensional datasets that require powerful GPU and RAM resources. While PIs may have a few such workstations in their labs, classrooms are rarely equipped with such computers. This makes instruction of these techniques prohibitive. Therefore, the solution presented here where remote access to JetStream2 (and its powerful GPUs and RAM resources) through the NSF funded ACCESS program using Morphocloud, is a game changer. Background information on the SlicerMorph project that runs on 3D Slicer is adequately given, including all the functionality that this module provides to biological morphologists. Furthermore, the authors highlight the open-source modular nature of Slicer where missing functionality can be added. As MophoCloud uses open-source projects like Github and others, the underlying code can be investigated by readers and can be adequately replicated. The expected results are laid out clearly in the paper. With each stage of the lifecycle described in the text and with an accompanying table or figure. As someone who has followed this exact set of steps to gain access to MorphoCloud on JetStream2, I can confidently say that these results are reproducible. The functionality of the software is supported and so are the limitations that authors put forward, Namely, that this system works best in workshop-like settings rather than semester long courses. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes 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? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise I am a functional morphologist that uses Slicermorph and the MorphoCloud to carry out my work on bat and dolphin head anatomy and bioacoustics. I also teach a 3D modeling course using MorphoCould and JetStream2. 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. reply Respond to this report Responses (0) Carter R. Peer Review Report For: MorphoCloud: Democratizing Access to High-Performance Computing for Morphological Data Analysis [version 1; peer review: 2 approved] . F1000Research 2026, 15 :53 ( https://doi.org/10.5256/f1000research.194373.r453831) 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/15-53/v1#referee-response-453831 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 = "MorphoCloud: Democratizing Access to High-Performance...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/15-53/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/15-53/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/15-53/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Maga AM and Fillion-Robin JC'); 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/15-53/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/15-53", templates : { twitter : "MorphoCloud: Democratizing Access to High-Performance Computing.... Maga AM and Fillion-Robin JC, published by " + "@F1000Research" + ", https://f1000research.com/articles/15-53/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/176328/194373") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "194373"); $(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 = { "453830": 0, "453831": 10, "453828": 0, "453829": 0, "453826": 0, "453827": 0, "453824": 0, "453825": 0, "469263": 0, "471631": 0, "469262": 0, "471630": 0, "469261": 0, "471629": 0, "469260": 0, "471628": 0, "469259": 0, "471627": 0, "469258": 0, "471626": 0, "453832": 0, "471625": 9, "469257": 0, "453833": 0, "469266": 0, "471634": 0, "469265": 0, "471633": 0, "469264": 0, "471632": 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 = "7fc3732c-c62b-42f7-8e30-7f9cf889ae0e"; 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.