scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis

preprint OA: closed
Full text JSON View at publisher
Full text 116,454 characters · extracted from preprint-html · click to expand
scRICA: An R package for multiple-sample... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/14-108" }, "headline": "scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis", "datePublished": "2025-01-20T15:12:23", "dateModified": "2025-01-20T15:12:23", "author": [ { "@type": "Person", "name": "Yan Li" }, { "@type": "Person", "name": "Jason Shapiro" }, { "@type": "Person", "name": "Qiaoshan Lin" }, { "@type": "Person", "name": "Qing Gong" }, { "@type": "Person", "name": "Michiko Ryu" }, { "@type": "Person", "name": "Mengjie Chen" } ], "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": "Single-cell sequencing technologies offer unprecedented resolution to inspect transcriptomes and generate critical biological insights. As the number of cells and cell types increase in single-cell studies, the effort required to analyze the data surges dramatically, especially when comparative explorations need to be performed on large datasets with different cell types and various sample attributes, such as clinical samples from different age and ancestry groups. Due to the sequential nature of single-cell data analysis, many steps involving multiple method choices and parameter options need to be considered. The computational skills required for integrative and comparative analyses of large datasets with various sample attributes represent a substantial obstacle for many researchers. To address this challenge, we have developed scRICA, a systematic workflow tailored for integrative and comparative single-cell RNA sequencing (scRNA-seq) analysis. This approach streamlines the analytical process, ensuring efficient utilization of computational resources and facilitating scalability for large-scale datasets. With scRICA, researchers can conduct integrative and comparative scRNA-seq analyses with ease, empowering them to derive meaningful insights from their data in a timely manner. scRICA offers a versatile approach by allowing users to input various parameter options from a metadata table, which are inherited throughout the entire analysis workflow. This functionality greatly enhances the efficiency of programming for comparative analyses involving multiple sample attributes. As an R package, scRICA provides a user-friendly interface within the R environment, making it accessible to researchers familiar with R programming. Additionally, scRICA offers a command line execution option, allowing users to seamlessly integrate it into their computational pipelines or execute analyses on High-Performance Computing (HPC) systems. This combination of features ensures flexibility, ease of use, and scalability, making scRICA a valuable tool for comprehensive and efficient single-cell RNA sequencing analysis." } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/14-108", "name": "scRICA: An R package for multiple-sample single-cell RNA-seq data..." } } ] } Home Browse scRICA: An R package for multiple-sample single-cell RNA-seq data... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Li Y, Shapiro J, Lin Q et al. scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.12688/f1000research.153698.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 scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] Yan Li https://orcid.org/0000-0002-9481-8086 1 , Jason Shapiro 1 , Qiaoshan Lin 1 , Qing Gong 2 , Michiko Ryu 3 , Mengjie Chen 1,4 Yan Li https://orcid.org/0000-0002-9481-8086 1 , Jason Shapiro 1 , [...] Qiaoshan Lin 1 , Qing Gong 2 , Michiko Ryu 3 , Mengjie Chen 1,4 PUBLISHED 20 Jan 2025 Author details Author details 1 Center for Research Informatics, University of Chicago Division of the Biological Sciences, Chicago, Illinois, 60637, USA 2 Department of Mathematics and Statistics, Loyola University Chicago, Chicago, Illinois, 60637, USA 3 Department of Physics, The University of Chicago, Chicago, Illinois, 60637, USA 4 Department of Medicine, Section of Genetic Medicine, The University of Chicago, Chicago, Illinois, 60637, USA Yan Li Roles: Conceptualization, Formal Analysis, Investigation, Resources, Software, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing Jason Shapiro Roles: Conceptualization, Methodology, Software, Writing – Original Draft Preparation, Writing – Review & Editing Qiaoshan Lin Roles: Conceptualization, Software, Validation, Writing – Review & Editing Qing Gong Roles: Validation, Writing – Review & Editing Michiko Ryu Roles: Software, Validation, Writing – Review & Editing Mengjie Chen Roles: Funding Acquisition, Investigation, Methodology, Software, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Bioinformatics gateway. Abstract Single-cell sequencing technologies offer unprecedented resolution to inspect transcriptomes and generate critical biological insights. As the number of cells and cell types increase in single-cell studies, the effort required to analyze the data surges dramatically, especially when comparative explorations need to be performed on large datasets with different cell types and various sample attributes, such as clinical samples from different age and ancestry groups. Due to the sequential nature of single-cell data analysis, many steps involving multiple method choices and parameter options need to be considered. The computational skills required for integrative and comparative analyses of large datasets with various sample attributes represent a substantial obstacle for many researchers. To address this challenge, we have developed scRICA, a systematic workflow tailored for integrative and comparative single-cell RNA sequencing (scRNA-seq) analysis. This approach streamlines the analytical process, ensuring efficient utilization of computational resources and facilitating scalability for large-scale datasets. With scRICA, researchers can conduct integrative and comparative scRNA-seq analyses with ease, empowering them to derive meaningful insights from their data in a timely manner. scRICA offers a versatile approach by allowing users to input various parameter options from a metadata table, which are inherited throughout the entire analysis workflow. This functionality greatly enhances the efficiency of programming for comparative analyses involving multiple sample attributes. As an R package, scRICA provides a user-friendly interface within the R environment, making it accessible to researchers familiar with R programming. Additionally, scRICA offers a command line execution option, allowing users to seamlessly integrate it into their computational pipelines or execute analyses on High-Performance Computing (HPC) systems. This combination of features ensures flexibility, ease of use, and scalability, making scRICA a valuable tool for comprehensive and efficient single-cell RNA sequencing analysis. READ ALL READ LESS Keywords single cells RNA-seq; workflow; integration and comparative analysis; data visualization Corresponding Author(s) Yan Li ( [email protected] ) Close Corresponding author: Yan Li Competing interests: No competing interests were disclosed. Grant information: This work has been supported by the Biological Sciences Division at the University of Chicago with additional funding provided by the Institute for Translational Medicine, CTSA grant number UL1TR000430 from the National Institutes of Health. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Li Y et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Li Y, Shapiro J, Lin Q et al. scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.12688/f1000research.153698.1 ) First published: 20 Jan 2025, 14 :108 ( https://doi.org/10.12688/f1000research.153698.1 ) Latest published: 20 Jan 2025, 14 :108 ( https://doi.org/10.12688/f1000research.153698.1 ) Introduction In the past decade, rapid development of single-cell sequencing technologies has revolutionized our ability to characterize the cells that comprise complex tissues. With these tools at hand, many large-scale studies have been launched to create comprehensive reference maps of cell types from various tissues under different physiological and pathological conditions, 1 – 3 notable examples include the Human Cell Atlas, 4 an international collaborative project attempting to create a blueprint of all normal cell types in humans. As the number of samples increase in single-cell studies, the effort required to analyze this type of data surges dramatically, especially when comparative explorations need to be performed on data with different cell types and various sample attributes. 5 For example, in a study with samples from type 2 diabetes and healthy controls, researchers are interested in characterizing cell types not only by disease phenotype, but also by age, gender and ancestry. These clinical or demographic attributes are often nested within the phenotype data, making the programming for the analysis of each sub-category tedious. Therefore, a thorough comparative exploration of scRNA-seq data across different groups of sample attributes presents a substantial computational obstacle. In fact, the inherent complexity of multi-sample scRNA-seq data necessitates a multi-step process using advanced statistical and computational methods for analysis. For example, the best practice pipeline implemented in Seurat includes the identification of an anchor gene set of highly expressed genes, data using the anchor gene set, data centering and scaling, nearest-neighbor graph construction, cluster detection, etc. Due to the sequential nature of the analysis, users may need to consider combinations of parameter options for multiple steps. This poses challenges for both programming efficiency and research reproducibility. Here we introduce scRICA, an R package that greatly reduces programming efforts required for multi-sample scRNA-seq data analysis. scRICA allows parameter options inherited through the entire analysis workflow for each attribute group or sub-category of samples so that users can efficiently conduct a systematic exploration across attribute groups. Furthermore, scRICA produces detailed reports and publication-quality visualizations for each attribute group, which greatly enhances reproducibility and interpretation. In addition to the regular R functions, scRICA provides a command-line tool to simplify the implementation in a high-performance computing environment. With scRICA, we aim to reduce the obstacles in programming and improve analysis efficiency and reproducibility for multiple-sample scRNA-seq data. This package includes comprehensive documentation and example workflows, available at https://rpubs.com/yli_cri/1025790 , to facilitate the replication of the software development and its use by others. By enabling efficient multiple comparisons across various experimental conditions and providing sufficient information and visualizations to interpret the expected output results, scRICA has the potential to significantly advance the field of single-cell data analysis. Methods Operation scRICA categorizes the workflow of integrative and comparative analysis using multiple-sample scRNA-seq data into four steps ( Figure 1A ): ‘Step 1’ for pre-processing and quality control; ‘Step 2’ for multi-sample integration; ‘Step 3’ for visualization by attribute groups; and ‘Step 4’ for downstream analysis including differential expression (DE) analysis, pseudo-time trajectory analysis, and cell clusters identification. Everything is implemented in R as an R package with various functions implementations, additionally it also offers command line execution option to make the implementations easier on High-Performance Computing (HPC) systems. Instructions for installing prerequisite packages are available at https://github.com/yan-cri/scRICA . Users can follow these instructions to set up the appropriate analysis environment in R. Figure 1. scRICA schematic overview. A. scRICA workflow analysis steps; B. scRICA analysis results outline; C&D. Cellular composition percentage stacking bar plots by different sample’s attribute groups; E&F. Marker genes dot plots with respect to different sample’s attribute groups; G&H. Heat map of gene of interest with respect to the selected sample’s attribute groups and cell types. Workflow implementation ‘Step 1’ performs pre-processing and quality control checks for each individual sample listed in the input metadata table. This step is initiated by the function ‘ processQC() ’, with main parameters inputting from a user-provided metadata table (details in input and output structures). ‘Step 1’ performs: 1) counts importation into a SeuratObject; 2) doublet/multiplet detection and removal using DoubletDecon 6 ; 3) quality control results visualization; 4) mitochondrial and ribosomal contents summarization; and 5) cell numbers summarization. It has additional options including: 1) ‘ genomeSpecies ’, which allows users to select the species of the reference genome; 2) ‘ mtPerCutoff ’, the cut-off for mitochondrial content values. Values above the cut-off indicate cells with low viability; 3) ‘ extraFilter ’, which allows users to further eliminate certain cells from the analysis. These cells need to be specified in a separate file with respect to each sample, and the full path of these files should be provided in the metadata table column ‘ filterFname ’; and 4) ‘ multi-omics ’, which specifies the format of the input count matrices. ‘Step 2’ integrates all samples listed in the input metadata table using two popular integration methods: the CCA and RPCA algorithms in Seurat. 7 , 8 This step is performed on cells that pass the quality control from ‘Step 1’ via the function ‘ getClusterMarkers() ’. In ‘Step 2’, the number of gene features used for integration can be specified by the option ‘ nfeatures ’. Additionally, users can exclude ribosomal genes from the gene set by setting ‘ ribo.removal = TRUE’. By default, the identified cell clusters are listed as numbers, (i.e., 0, 1, 2, etc.). scRICA allows users to further annotate cell clusters via the option ‘ newAnnotationRscriptName ’ for downstream analysis. ‘Step 3’ provides various visualization techniques to inspect cellular compositions and gene expression patterns of different cell types, with respect to sample attributes specified in the option ‘ expCondCheck ’. For example, we can analyze fallopian tube data from the Human Cell Atlas by anatomic sites (isthmus, ampulla, fimbriae, abbreviated as I, A and F) by specifying the anatomic site as the desired sample attribute. Four main functions are available: 1) Function ‘ getClusterSummaryReplot() ’ generates box plots to inspect cellular compositions across attribute groups. For example, users can visualize cellular compositions across anatomic sites (I, A and F) ( Figure 1C ) and across patients (D1-7) ( Figure 1D ). 2) Function ‘ getGoiDotplot() ’ generates dot plots for a pre-defined set of gene markers, inputting through a separate file. This plot can visualize normalized and center scaled gene expression values across attribute groups, with dot color representing the center scaled average gene expression of cells with each group and dot size representing the percentage of cells with non-zero expression. Gene annotations can be specified and displayed on top as a legend bar (as shown in Figure 1E and 1F ). 3) Function ‘ getGoiHeatmap() ’ generates heatmaps for a pre-defined set of gene markers, which can be specified either in a separate file or through the option ‘ geneNames ’. This heatmap can visualize gene expression at the single-cell level ( Figure 1G ) or the donor level ( Figure 1H ) across groups, providing complementary information for the dot plot that display scaled average values. 4) Function ‘ getScatterPlot() ’ generates scatter plots for any two selected cell types or attribute groups via the option ‘ selectedGroups ’. ‘Step 4’ can perform downstream analysis including: 1) differential expression (DE) analysis by the function ‘ getclusterExpCondDe() ’; 2) over-expressed gene identification via the function ‘ getExpCondClusterMarkers() ’; 3) pseudo-time trajectory analysis via the function ‘ getExpCondClusterPseudotime() ’; and 4) sub-cluster identification via the function ‘ getHippoRes() ’. All analyses can be applied to any specified cell types, any specified attribute groups, or a combination of cell types and attributes. DE analysis can be conducted at single-cell level or pseudo-bulk level. The options for single-cell based DE include wilcox, MAST and t-test. For pseudo-bulk-based DE, expression levels are averaged and normalized for each donor with respect to the total number of cells, followed with DE test using DESeq2. 9 The pseudo-time trajectory analysis in scRICA is performed with slingshot. 10 Users can select any subset of cell types from specified attribute group for pseudo-time analysis. Sub-clustering identification is conducted by HIPPO, 11 which implements a zero-inflation test that runs iteratively to select heterogeneous features in order to refine and identify biologically important sub-cluster cell types. Input and output structures scRICA’s input includes a metadata table and a processed count matrix. The processed count matrix can be in different formats, including a processed count matrix saved in a folder, which is directly generated from the 10X genomic Cell Ranger analysis tool ( https://support.10xgenomics.com/single-cell-gene-expression/software/overview/welcome ), or a count matrix stored in text or hd5 format. The input metadata table includes two mandatory columns: the first column specifies all sample names, and the second column (‘ path ’) specifies the full path of the count matrix for each corresponding sample in a row. Optional columns include: 1) ‘ doubletsRmMethod ’, which specifies the doublets removal algorithm metroid, detroid, 6 or both (designated by OL); 2) ‘ filterFname ’, which provides the full path of Excel files that specify cells to be removed from the analysis; and 3) ‘ expCond* ’, which allows the inputting of multiple sample attributes for each sample. These sample attributes can be inherited through the entire analysis workflow by setting the option ‘ expCondCheck ’ properly. scRICA outputs all analysis results to a main folder named ‘ scRICA_results’ by default or it can be specified by user via the option ‘ resDirName ’. Results from each step are organized into corresponding sub-folders ( Figure 1B ). The integration analysis results are saved as an RDS object. All visualizations are saved as PDF files. QC summary, DE analysis, and trajectory analysis are saved as both text files and Rdata objects, making them easily accessible for additional analysis. Conclusion scRICA simplifies scRNA-seq’s integrative and comparative analysis as an easy 4-step workflow. It significantly reduces the requirement of computational programming skills used for complex datasets. The inheritance feature provides an efficient way to thoroughly explore data with nested groups of sample attributes and multiple cell types. The command line execution allows users to conduct analysis on high performance computers directly. scRICA will enhance the programming efficiency and reproducibility for the data analysis of large-scale single-cell studies. Authors’ contributions The source code of scRICA was developed by YL with the contributions from JS, QL and MC. Package usages have been tested and implemented by JS, QL, QG, and MR for various types data. YL and MC drafted the manuscript. All authors have edited, read and approved the final manuscript. Ethics and consent Ethical approval and consent were not required. Data and software availability Source code is available at : https://github.com/yan-cri/scRICA; the archived version of this release is available at: https://zenodo.org/doi/10.5281/zenodo.12786508; it is distributed under the license of CC0 1.0 Universal. Availability and requirement : R >= 4.0.0 with pre-requisite packages installation requirements. License : CC0 1.0 Universal Any restrictions to use by non-academics : None Demonstration example datasets: There are 2 demonstration datasets for scRICA, including 1) 6 samples count matrix demonstration data; and 2) integrated RDS file named as’scRICA_demo.rds’. They are available at https://zenodo.org/records/13128908 12 under the terms of the Creative Commons Zero. Acknowledgments We would like to thank Ernst Lengyel and Oni Basu’s research group for generation and sharing of scRNA-seq data for development and testing of this package. Additionally, we would like to thank Rohit Kulkarni’s research group for the generation and sharing of multi-omics data. We thank Jackie Roessier and Sarah Sumner for their editing support. References 1. Svensson V, Vento-Tormo R, Teichmann SA: Exponential scaling of single-cell RNA-seq in the past decade. Nat. Protoc. 2018; 13 (4): 599–604. Number: 4 Publisher: Nature Publishing Group. Accessed 2022-09-01. PubMed Abstract | Publisher Full Text 2. Angerer P, Simon L, Tritschler S, et al. : Single cells make big data: New challenges and opportunities in transcriptomics. Curr. Opin. Syst. Biol. 2017; 4 : 85–91. Accessed 2022-09-01. Publisher Full Text 3. Zappia L, Theis FJ: Over 1000 tools reveal trends in the single-cell RNA-seq analysis landscape. Genome Biol. 2021; 22 (1): 301. Accessed 2022-08-26. PubMed Abstract | Publisher Full Text | Free Full Text 4. Regev A, Teichmann SA, Lander ES, et al. : Human Cell Atlas Meeting Participants: The Human Cell Atlas. elife. 2017; 6 : 27041. Publisher: eLife Sciences Publications, Ltd. Accessed 2022-09-01. PubMed Abstract | Publisher Full Text | Free Full Text 5. Kiselev VY, Andrews TS, Hemberg M: Challenges in unsupervised clustering of single-cell RNA-seq data. Nat. Rev. Genet. 2019; 20 (5): 273–282. Number: 5 Publisher: Nature Publishing Group. Accessed 2022-08-26. Publisher Full Text 6. DePasquale EAK, Schnell DJ, Camp P-JV, et al. : DoubletDecon: Deconvoluting Doublets from Single-Cell RNA-Sequencing Data. Cell Rep. 2019; 29 (6): 1718–1727.e8. Publisher: Elsevier. Accessed 2020-08-26. PubMed Abstract | Publisher Full Text | Free Full Text 7. Stuart T, Butler A, Hoffman P, et al. : Comprehensive integration of single-cell data. Cell. 2019; 177 : 1888–1902.e21. PubMed Abstract | Publisher Full Text | Free Full Text 8. Hao Y, Hao S, Andersen-Nissen E III, et al. : Integrated analysis of multimodal single-cell data. Cell. 2021; 184 : 3573–3587.e29. PubMed Abstract | Publisher Full Text | Free Full Text 9. Love MI, Huber W, Anders S: Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2. bioRxiv, 002832. 2014. Accessed 2014-12-05. Publisher Full Text 10. Street K, Risso D, Fletcher RB, et al. : Slingshot: cell lineage and pseudotime inference for single-cell transcriptomics. BMC Genomics. 2018; 477 . 11. Kim T, Chen M: HIPPO: Heterogeneity-Induced Pre-Processing tOol.2021. R package version 1.6.0. Reference Source 12. Li Y: yan-cri/scRICA: scRICA v1 (Version v1). Zenodo. 2024. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 20 Jan 2025 ADD YOUR COMMENT Comment Author details Author details 1 Center for Research Informatics, University of Chicago Division of the Biological Sciences, Chicago, Illinois, 60637, USA 2 Department of Mathematics and Statistics, Loyola University Chicago, Chicago, Illinois, 60637, USA 3 Department of Physics, The University of Chicago, Chicago, Illinois, 60637, USA 4 Department of Medicine, Section of Genetic Medicine, The University of Chicago, Chicago, Illinois, 60637, USA Yan Li Roles: Conceptualization, Formal Analysis, Investigation, Resources, Software, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing Jason Shapiro Roles: Conceptualization, Methodology, Software, Writing – Original Draft Preparation, Writing – Review & Editing Qiaoshan Lin Roles: Conceptualization, Software, Validation, Writing – Review & Editing Qing Gong Roles: Validation, Writing – Review & Editing Michiko Ryu Roles: Software, Validation, Writing – Review & Editing Mengjie Chen Roles: Funding Acquisition, Investigation, Methodology, Software, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This work has been supported by the Biological Sciences Division at the University of Chicago with additional funding provided by the Institute for Translational Medicine, CTSA grant number UL1TR000430 from the National Institutes of Health. 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: 20 Jan 2025, 14:108 https://doi.org/10.12688/f1000research.153698.1 Copyright © 2025 Li Y et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Li Y, Shapiro J, Lin Q et al. scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.12688/f1000research.153698.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 20 Jan 2025 Views 0 Cite How to cite this report: Valkiers S. Reviewer Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r364338 ) The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-364338 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 24 Feb 2025 Sebastiaan Valkiers , University of Antwerp, Antwerp, Belgium Not Approved VIEWS 0 https://doi.org/10.5256/f1000research.168622.r364338 The authors present scRICA, a convenience wrapper for comparative analysis of scRNA-seq datasets that integrates different steps of the data analysis process including QC, multi-sample integration, differential expression analysis, pseudo-time trajectories, and cell clusters annotation. As the authors rightly highlight, ... Continue reading READ ALL The authors present scRICA, a convenience wrapper for comparative analysis of scRNA-seq datasets that integrates different steps of the data analysis process including QC, multi-sample integration, differential expression analysis, pseudo-time trajectories, and cell clusters annotation. As the authors rightly highlight, performing these steps individually often requires significant computational expertise and careful consideration of parameters, which can be a barrier for many researchers. By providing a unified and user-friendly workflow, scRICA aims to reduce the complexity and programming burden associated with these analyses. The method is implemented as an R package, making it accessible to researchers familiar with the R environment. Additionally, the authors provide a well-documented example of the workflow, available at https://rpubs.com/yli_cri/1025790 . While the concept of simplifying complex workflows and integrating multiple tools is commendable, the manuscript currently lacks sufficient detail to demonstrate the unique value and practical advantages of scRICA over existing tools, particularly Seurat, which is widely adopted in the field. Key comments below: Fundamentally, scRICA does not introduce novel methodology. Rather, it consolidates commonly used methods for scRNA-seq data analysis, such as DoubletDecon, aspects of Seurat, HIPPO and slingshot. While certainly useful, the novelty of a pipeline like this is questionable. In recent years, there have been a multitude of methods that have attempted to create reproducible pipelines for analyzing scRNA-seq experiments (see Li K et al. (2023 [Ref-1]) https://doi.org/10.1186/s12864-023-09332-2 , Nouri N et al. (2023 [Ref-2) https://doi.org/10.1093/bioinformatics/btad760 , Kubovčiak J, et al. (2023 [Ref-3]) https://doi.org/10.1093/bioadv/vbad089 ), with limited adoption by the community. It is unclear to me to what extent scRICA contributes additionally compared to these existing workflows. (1) It would only be fair to acknowledge that similar methods already exist and (2) the manuscript would greatly benefit from pointing out in what way scRICA has made improvements over these existing methods. The manuscript would be significantly strengthened by including a detailed use case that illustrates scenarios where scRICA provides clear advantages over standard approaches. For instance, demonstrating how scRICA handles complex metadata or integrates multiple tools in a way that Seurat does not would help clarify its unique contributions. Without such examples, it is difficult to assess the practical utility and added value of scRICA. The authors claim improvements in efficiency and scalability with scRICA. However, they do not include examples or results to back up this statement. The inclusion of a benchmark test against state-of-the-art workflows to illustrate efficiency advantages would be greatly appreciated. While I appreciate the step-by-step explanations in the vignette ( https://rpubs.com/yli_cri/1025790 ), I find that the documentation lacks a detailed reference for function arguments (e.g., a dedicated wiki or manual in addition to the vignette). Given that the main goal of scRICA is to standardize and simplify analysis workflows, there is a risk that users may treat the pipeline as a ‘black box’, running it without fully understanding the choices made at each step. Providing more detailed function documentation would help mitigate this by allowing users to make informed parameter selections rather than simply relying on defaults. This would enhance both transparency and interpretability of the results. Minor comments: Figure 1. A panel: I am a bit confused by this panel. In my understanding, assigning the cell types is part of the later stages of scRNA-seq data analysis, but here it is shown as one of the input features. Wouldn’t it make more sense to display the GEx count matrix here? B panel: This is a bit redundant and potentially confusing as the information is already present in the panel A table. C-H panels: What is exactly shown here / which dataset is used? Please include in the methods section. Also, how can the results be interpreted? 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? No Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? No References 1. Li K, Sun YH, Ouyang Z, Negi S, et al.: scRNASequest: an ecosystem of scRNA-seq analysis, visualization, and publishing. BMC Genomics . 2023; 24 (1): 228 PubMed Abstract | Publisher Full Text 2. Nouri N, Kurlovs AH, Gaglia G, de Rinaldis E, et al.: Scaling up single-cell RNA-seq data analysis with CellBridge workflow. Bioinformatics . 2023; 39 (12). PubMed Abstract | Publisher Full Text 3. Kubovčiak J, Kolář M, Novotný J: Scdrake: a reproducible and scalable pipeline for scRNA-seq data analysis. Bioinform Adv . 2023; 3 (1): vbad089 PubMed Abstract | Publisher Full Text Competing Interests: No competing interests were disclosed. Reviewer Expertise: Bioinformatics, single-cell sequencing, adaptive immunology, statistics I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Valkiers S. Reviewer Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r364338 ) The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-364338 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: Baldoni PL. Reviewer Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r363052 ) The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-363052 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 11 Feb 2025 Pedro L Baldoni , University of Pittsburgh, Pittsburgh, USA Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.168622.r363052 This article presents scRICA, an R package developed to facilitate and streamline the analysis of multi-sample scRNA-seq experiments. The article provides a high-level overview of the main functionalities of scRICA. The authors list several implemented wrapper functions designed to perform ... Continue reading READ ALL This article presents scRICA, an R package developed to facilitate and streamline the analysis of multi-sample scRNA-seq experiments. The article provides a high-level overview of the main functionalities of scRICA. The authors list several implemented wrapper functions designed to perform various tasks typical of scRNA-seq analysis workflows, including data quality control (QC), data integration, data visualization, and downstream analyses such as differential expression, gene marker identification, pseudotime analysis, and sub-cluster identification. One of the strengths of the scRICA package is that it serves as a one-stop shop for several packages developed for the analysis of scRNA-seq data, such as DoubletDecon, Seurat, DESeq2, Slingshot, and HIPPO. As the authors state, “The computational skills required for integrative and comparative analyses of large datasets with various sample attributes represent a substantial obstacle for many researchers,” a sentiment with which I fully agree. Although the authors present a scRICA workflow elsewhere, I feel that this article, as the landmark publication of scRICA, would be strengthened by including (1) a use case example of the package, complete with example code and a description of the produced output, and (2) a more detailed description of the various default options used in their wrapper function implementations. I also include minor comments below. Minor Comments - The hyperlinks listed under “Data and software availability” include a semicolon, making it appear as though the links are broken. - Figure 1A would be significantly improved if the metadata table were presented in the same format as one would pass it to scRICA. As currently displayed, the merged rows, different colors, and descriptive/qualitative entries make it difficult to understand how the table should be formatted. - It would be very helpful if the authors elaborated on the creation of the input count matrix from popular upstream tools besides Cell Ranger. Since the package aims to make complex multi-sample scRNA-seq analyses more accessible to researchers, it is reasonable to assume that not all readers will know how to create, for example, a count matrix in hdf5 format. Either providing a function to read in the output from upstream tools or explicitly showing users how to do so themselves would be highly beneficial. - Similarly, explaining how the various output files generated by scRICA can be used and interpreted by the end user would also be very helpful. 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? Partly Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Partly 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: Statistical bioinformatics, transcriptomics, epigenomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Baldoni PL. Reviewer Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r363052 ) The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-363052 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 20 Jan 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Reviewer Reports Invited Reviewers 1 2 Version 1 20 Jan 25 read read Pedro L Baldoni , University of Pittsburgh, Pittsburgh, USA Sebastiaan Valkiers , University of Antwerp, Antwerp, Belgium Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Valkiers S. 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. 24 Feb 2025 | for Version 1 Sebastiaan Valkiers , University of Antwerp, Antwerp, Belgium 0 Views copyright © 2025 Valkiers S. 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) Not 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 present scRICA, a convenience wrapper for comparative analysis of scRNA-seq datasets that integrates different steps of the data analysis process including QC, multi-sample integration, differential expression analysis, pseudo-time trajectories, and cell clusters annotation. As the authors rightly highlight, performing these steps individually often requires significant computational expertise and careful consideration of parameters, which can be a barrier for many researchers. By providing a unified and user-friendly workflow, scRICA aims to reduce the complexity and programming burden associated with these analyses. The method is implemented as an R package, making it accessible to researchers familiar with the R environment. Additionally, the authors provide a well-documented example of the workflow, available at https://rpubs.com/yli_cri/1025790 . While the concept of simplifying complex workflows and integrating multiple tools is commendable, the manuscript currently lacks sufficient detail to demonstrate the unique value and practical advantages of scRICA over existing tools, particularly Seurat, which is widely adopted in the field. Key comments below: Fundamentally, scRICA does not introduce novel methodology. Rather, it consolidates commonly used methods for scRNA-seq data analysis, such as DoubletDecon, aspects of Seurat, HIPPO and slingshot. While certainly useful, the novelty of a pipeline like this is questionable. In recent years, there have been a multitude of methods that have attempted to create reproducible pipelines for analyzing scRNA-seq experiments (see Li K et al. (2023 [Ref-1]) https://doi.org/10.1186/s12864-023-09332-2 , Nouri N et al. (2023 [Ref-2) https://doi.org/10.1093/bioinformatics/btad760 , Kubovčiak J, et al. (2023 [Ref-3]) https://doi.org/10.1093/bioadv/vbad089 ), with limited adoption by the community. It is unclear to me to what extent scRICA contributes additionally compared to these existing workflows. (1) It would only be fair to acknowledge that similar methods already exist and (2) the manuscript would greatly benefit from pointing out in what way scRICA has made improvements over these existing methods. The manuscript would be significantly strengthened by including a detailed use case that illustrates scenarios where scRICA provides clear advantages over standard approaches. For instance, demonstrating how scRICA handles complex metadata or integrates multiple tools in a way that Seurat does not would help clarify its unique contributions. Without such examples, it is difficult to assess the practical utility and added value of scRICA. The authors claim improvements in efficiency and scalability with scRICA. However, they do not include examples or results to back up this statement. The inclusion of a benchmark test against state-of-the-art workflows to illustrate efficiency advantages would be greatly appreciated. While I appreciate the step-by-step explanations in the vignette ( https://rpubs.com/yli_cri/1025790 ), I find that the documentation lacks a detailed reference for function arguments (e.g., a dedicated wiki or manual in addition to the vignette). Given that the main goal of scRICA is to standardize and simplify analysis workflows, there is a risk that users may treat the pipeline as a ‘black box’, running it without fully understanding the choices made at each step. Providing more detailed function documentation would help mitigate this by allowing users to make informed parameter selections rather than simply relying on defaults. This would enhance both transparency and interpretability of the results. Minor comments: Figure 1. A panel: I am a bit confused by this panel. In my understanding, assigning the cell types is part of the later stages of scRNA-seq data analysis, but here it is shown as one of the input features. Wouldn’t it make more sense to display the GEx count matrix here? B panel: This is a bit redundant and potentially confusing as the information is already present in the panel A table. C-H panels: What is exactly shown here / which dataset is used? Please include in the methods section. Also, how can the results be interpreted? 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? No Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? No References 1. Li K, Sun YH, Ouyang Z, Negi S, et al.: scRNASequest: an ecosystem of scRNA-seq analysis, visualization, and publishing. BMC Genomics . 2023; 24 (1): 228 PubMed Abstract | Publisher Full Text 2. Nouri N, Kurlovs AH, Gaglia G, de Rinaldis E, et al.: Scaling up single-cell RNA-seq data analysis with CellBridge workflow. Bioinformatics . 2023; 39 (12). PubMed Abstract | Publisher Full Text 3. Kubovčiak J, Kolář M, Novotný J: Scdrake: a reproducible and scalable pipeline for scRNA-seq data analysis. Bioinform Adv . 2023; 3 (1): vbad089 PubMed Abstract | Publisher Full Text Competing Interests No competing interests were disclosed. Reviewer Expertise Bioinformatics, single-cell sequencing, adaptive immunology, statistics I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. reply Respond to this report Responses (0) Valkiers S. Peer Review Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r364338) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-364338 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Baldoni P. 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. 11 Feb 2025 | for Version 1 Pedro L Baldoni , University of Pittsburgh, Pittsburgh, USA 0 Views copyright © 2025 Baldoni P. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions This article presents scRICA, an R package developed to facilitate and streamline the analysis of multi-sample scRNA-seq experiments. The article provides a high-level overview of the main functionalities of scRICA. The authors list several implemented wrapper functions designed to perform various tasks typical of scRNA-seq analysis workflows, including data quality control (QC), data integration, data visualization, and downstream analyses such as differential expression, gene marker identification, pseudotime analysis, and sub-cluster identification. One of the strengths of the scRICA package is that it serves as a one-stop shop for several packages developed for the analysis of scRNA-seq data, such as DoubletDecon, Seurat, DESeq2, Slingshot, and HIPPO. As the authors state, “The computational skills required for integrative and comparative analyses of large datasets with various sample attributes represent a substantial obstacle for many researchers,” a sentiment with which I fully agree. Although the authors present a scRICA workflow elsewhere, I feel that this article, as the landmark publication of scRICA, would be strengthened by including (1) a use case example of the package, complete with example code and a description of the produced output, and (2) a more detailed description of the various default options used in their wrapper function implementations. I also include minor comments below. Minor Comments - The hyperlinks listed under “Data and software availability” include a semicolon, making it appear as though the links are broken. - Figure 1A would be significantly improved if the metadata table were presented in the same format as one would pass it to scRICA. As currently displayed, the merged rows, different colors, and descriptive/qualitative entries make it difficult to understand how the table should be formatted. - It would be very helpful if the authors elaborated on the creation of the input count matrix from popular upstream tools besides Cell Ranger. Since the package aims to make complex multi-sample scRNA-seq analyses more accessible to researchers, it is reasonable to assume that not all readers will know how to create, for example, a count matrix in hdf5 format. Either providing a function to read in the output from upstream tools or explicitly showing users how to do so themselves would be highly beneficial. - Similarly, explaining how the various output files generated by scRICA can be used and interpreted by the end user would also be very helpful. 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? Partly Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Partly 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 Statistical bioinformatics, transcriptomics, epigenomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (0) Baldoni PL. Peer Review Report For: scRICA: An R package for multiple-sample single-cell RNA-seq data integrative comparative analysis [version 1; peer review: 1 approved with reservations, 1 not approved] . F1000Research 2025, 14 :108 ( https://doi.org/10.5256/f1000research.168622.r363052) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-108/v1#referee-response-363052 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 = "scRICA: An R package for multiple-sample...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-108/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-108/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-108/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Li Y et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/14-108/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/14-108", templates : { twitter : "scRICA: An R package for multiple-sample single-cell RNA-seq.... Li Y et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-108/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/153698/168622") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "168622"); $(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 = { "363053": 0, "363052": 13, "364335": 0, "363055": 0, "364334": 0, "363054": 0, "363049": 0, "363048": 0, "363051": 0, "363050": 0, "364341": 0, "364340": 0, "364343": 0, "364342": 0, "364337": 0, "363057": 0, "364336": 0, "363056": 0, "364339": 0, "364338": 15, }; $(".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 = "20b45736-526e-4ad8-b7be-fd0ee51b594c"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "[email protected]", infoEmail: "[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });

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

My notes (saved in your browser only)

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

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

Citation neighborhood (no data yet)

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

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00