Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses

preprint OA: closed
Full text JSON View at publisher

Abstract

The sweetpotato ( Ipomoea batatas ) is an important food crop in the tropical and subtropical regions of the world, but its yield and quality are heavily affected by viral diseases. Timely and precise detection of virus infections is essential for effective monitoring of seed health and disease management. We evaluated the feasibility of using a compact, ultra-portable LAMP-based diagnostic device—initially designed for human health applications—for detecting key sweetpotato viruses (SPCSV, SPFMV, and SPLCV). Field and greenhouse samples were tested, showing 100% agreement in virus detection with a larger commonly used LAMP device. Sensitivity tests confirmed consistent performance, and the use of portable power banks enabled reliable on-site use. The statistical analysis indicated high accuracy and strong correlation in time-to-positive values between methods (r > 0.89, p < 0.01). Furthermore, cost analysis demonstrated that the pocket LAMP device setup significantly reduced per-test costs—by approximately 40%—while maintaining diagnostics reliability. These findings support the potential of this tool on plant virus detection in locations with limited resources.
Full text 100,382 characters · extracted from preprint-html · click to expand
Evaluation of an ultra-portable... | Gates Open Research "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://gatesopenresearch.org/js/vendor/ckeditor/' window.reactTheme = 'gates'; 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", {}); Skip to content Gates Open Research file_upload Submit via VeriXiv search clear search menu close clear Search Browse Gateways & Collections How to Publish Submit via VeriXiv My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Publication Charges Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Contact Blog My Account Submissions Content and Tracking Alerts My Details Sign In Submit via VeriXiv { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://gatesopenresearch.org/articles/9-91" }, "headline": "Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification...", "datePublished": "2025-10-24T09:57:20", "dateModified": "2025-10-24T09:57:20", "author": [ { "@type": "Person", "name": "Segundo Fuentes" }, { "@type": "Person", "name": "Kwame Ogero" }, { "@type": "Person", "name": "Ana Perez" }, { "@type": "Person", "name": "Jan Frederick Kreuze" } ], "publisher": { "@type": "Organization", "name": "Gates Open Research", "logo": { "@type": "ImageObject", "url": "https://gatesopenresearch.org/img/AMP/Gates_image.png", "height": 600, "width": 47 } }, "image": { "@type": "ImageObject", "url": "https://gatesopenresearch.org/img/AMP/Gates_image.png", "height": 1200, "width": 94 }, "description": "The sweetpotato (Ipomoea batatas) is an important food crop in the tropical and subtropical regions of the world, but its yield and quality are heavily affected by viral diseases. Timely and precise detection of virus infections is essential for effective monitoring of seed health and disease management. We evaluated the feasibility of using a compact, ultra-portable LAMP-based diagnostic device—initially designed for human health applications—for detecting key sweetpotato viruses (SPCSV, SPFMV, and SPLCV). Field and greenhouse samples were tested, showing 100% agreement in virus detection with a larger commonly used LAMP device. Sensitivity tests confirmed consistent performance, and the use of portable power banks enabled reliable on-site use. The statistical analysis indicated high accuracy and strong correlation in time-to-positive values between methods (r > 0.89, p < 0.01). Furthermore, cost analysis demonstrated that the pocket LAMP device setup significantly reduced per-test costs—by approximately 40%—while maintaining diagnostics reliability. These findings support the potential of this tool on plant virus detection in locations with limited resources." } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://gatesopenresearch.org/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://gatesopenresearch.org/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://gatesopenresearch.org/articles/9-91", "name": "Evaluation of an ultra-portable pocket-sized device for running Loop..." } } ] } Home Browse Evaluation of an ultra-portable pocket-sized device for running Loop... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Fuentes S, Ogero K, Perez A and Kreuze JF. Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses . Gates Open Res 2025, 9 :91 ( https://doi.org/10.12688/gatesopenres.16369.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 ▬ ✚ Research Article Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses Segundo Fuentes 1 , Kwame Ogero 2 , Ana Perez 1 , Jan Frederick Kreuze 1 Segundo Fuentes 1 , Kwame Ogero 2 , Ana Perez 1 , Jan Frederick Kreuze 1 PUBLISHED 24 Oct 2025 Author details Author details 1 International Potato Center, Lima, Peru 2 International Potato Center, Mwanza, Tanzania Segundo Fuentes Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Resources, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Kwame Ogero Roles: Conceptualization, Funding Acquisition, Writing – Review & Editing Ana Perez Roles: Methodology, Resources, Writing – Review & Editing Jan Frederick Kreuze Roles: Visualization, Writing – Review & Editing OPEN PEER REVIEW REVIEWER STATUS AWAITING PEER REVIEW Originally published as a preprint: https://doi.org/10.12688/verixiv.1161.1 Abstract The sweetpotato ( Ipomoea batatas ) is an important food crop in the tropical and subtropical regions of the world, but its yield and quality are heavily affected by viral diseases. Timely and precise detection of virus infections is essential for effective monitoring of seed health and disease management. We evaluated the feasibility of using a compact, ultra-portable LAMP-based diagnostic device—initially designed for human health applications—for detecting key sweetpotato viruses (SPCSV, SPFMV, and SPLCV). Field and greenhouse samples were tested, showing 100% agreement in virus detection with a larger commonly used LAMP device. Sensitivity tests confirmed consistent performance, and the use of portable power banks enabled reliable on-site use. The statistical analysis indicated high accuracy and strong correlation in time-to-positive values between methods (r > 0.89, p < 0.01). Furthermore, cost analysis demonstrated that the pocket LAMP device setup significantly reduced per-test costs—by approximately 40%—while maintaining diagnostics reliability. These findings support the potential of this tool on plant virus detection in locations with limited resources. READ ALL READ LESS Keywords virus detection, pocket LAMP, portable device, Genie, SPFMV, SPCSV, SPLCV Corresponding Author(s) Segundo Fuentes ( [email protected] ) Close Corresponding author: Segundo Fuentes Competing interests: No competing interests were disclosed. Grant information: This research was funded by the Gates Foundation (BMGF), through its investment (INV-040803) awarded to the International Institute of Tropical Agriculture (PROSSIVA) and the CGIAR initiative on Plant Health, supported by the donors of the CGIAR Trust Fund (http://www.cgiar.org/funders/). Copyright: © 2025 Fuentes S 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: Fuentes S, Ogero K, Perez A and Kreuze JF. Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses . Gates Open Res 2025, 9 :91 ( https://doi.org/10.12688/gatesopenres.16369.1 ) First published: 24 Oct 2025, 9 :91 ( https://doi.org/10.12688/gatesopenres.16369.1 ) Latest published: 24 Oct 2025, 9 :91 ( https://doi.org/10.12688/gatesopenres.16369.1 ) Introduction Sweetpotato ( Ipomoea batatas (L.) Lam) is an important cash and food crop around the world with a particular significance in tropical and semi-tropical climate ( O’Brien, 1972 ; Lebot, 2010 ). Nevertheless, its production is challenged by many factors including viral diseases that compromise crop yield and quality ( Untiveros et al., 2007 ; He et al., 2023 ; Gutiérrez et al., 2003 ; Kreuze et al., 2024 ). More than 35 viruses infecting sweetpotato have been reported worldwide ( Clark et al., 2012 ; Kreuze et al., 2021 ), but a few, such as Sweet potato chlorotic stunt virus (SPCSV), Sweet potato feathery mottle virus (SPFMV), and Sweet potato leaf curl virus (SPLCV), are particularly prevalent and damaging globally. These viruses not only reduce crop yields on their own but also interact with each other, making disease symptoms much more severe and leading to even greater economic losses ( Clark et al., 2012 ; Cuellar et al., 2015 ; Kreuze et al., 2024 ; Ogero and van der Vlugt, 2023 ; Wanjala et al., 2020 ). The proper and strict virus detection which is carried out in the seed certification programs and breeding efforts is essential for managing these diseases. A number of diagnostic techniques have been developed including biological indexing where the indicator plants are used, serological assays such as enzyme-linked immunosorbent assay (ELISA), and molecular tests such as reverse transcription polymerase chain reaction (RT-PCR), real-time PCR (qPCR), loop-mediated isothermal amplification (LAMP), microarrays, and small RNA sequencing and assembly (sRSA) ( Kreuze, Cuellar, and Low, 2021 ; Kreuze et al., 2024 ; Kanapiya et al., 2024 ; Loebenstein, 2015 ; Mbewe et al., 2021 ; Tibiri et al., 2020 ). While these laboratory-based methods offer high sensitivity and specificity, they need specialized facilities, trained personnel, and extended processing times, often ranging from several hours to days or weeks ( Clark et al., 2012 ; Kanapiya et al., 2024 ; Devi et al., 2024 ). These limitations indicate the need for portable, low-cost, and quick-deployable virus diagnostic methods that can be utilized in the field. LAMP is gaining popularity as a reliable alternative to other methods of plant virus diagnosis because it is fast (results in 20–60 minutes), simple, and requires minimal equipment ( Notomi et al., 2000 ; Wanjala et al., 2024 ). LAMP assays have been effectively tested for on-site virus detection in various crops, including sweetpotato ( Kreuze et al., 2024 ; Wanjala et al., 2024 ). Their reliability makes them especially valuable for ensuring the quality of early-generation seeds ( Wanjala et al., 2024 ). An inexpensive, portable pocket LAMP device — ‘DoctorVida’ originally designed to detect SARS-CoV-2 ( Doria et al., 2022 ) developed by STAB VIDA (Portugal) — was included in preliminary comparative tests conducted in 2022. This smartphone-operated device was evaluated alongside the commonly used case-portable ‘Genie III’ device ( Quoc et al., 2018 ; Lee et al., 2020 ; Wanjala et al., 2024 ; Rako et al., 2023 ; Wharton et al., 2025 ), using the same reagents and SPCSV-infected samples. The result showed that the pocket LAMP device can be effectively adopted and adapted for sweetpotato virus detection. Our results demonstrate that the pocket LAMP device reliably detects major sweetpotato viruses (SPCSV, SPFMV, and SPLCV) using LAMP technology. Its performance is equivalent to that of commonly used larger case-portable devices, offering a convenient and effective alternative for virus detection in sweetpotato, contributing to improved disease management. Materials and methods Samples collection In August 2023, three sweetpotato fields (1.5–2.5-month-old plants) were surveyed in Huaral, Lima, Peru. From each field, 40 plants with and without symptoms (vein clearing, mosaic, leaf deformation, chlorosis, etc.) were chosen as samples. Symptoms were documented with photographs, and from symptomatic plants, three leaves of varying symptoms severity were sampled to represent different viral loads present in the tissues. For asymptomatic plants, one leaf each from the top, middle, and bottom was sampled. Leaves were placed between filter paper, desiccated with orange silica gel and stored at room temperature. Out of the 120 field-collected samples, 88 well-preserved dried leaves samples were selected for LAMP assays. Initial testing detected only SPCSV and SPFMV. To further investigate, an additional 25 fresh samples were collected from screenhouse-grown plants (germplasm collection) exhibiting leaf curl symptoms at CIP-Lima. These samples were specifically evaluated for SPLCV by LAMP assays. Sample processing From the sample (composed of three desiccated leaves) a piece representing 1cm-disc in diameter was taken from each leaf and placed in a polyethylene sample bag. Then, 1 ml of the alkaline PEG buffer ( Chomczynski and Rymaszewski, 2006 ) was added into the polyethylene sample bag to macerate the tissue. Then, sap extraction was diluted 1:10 (v/v) in nuclease-free water (NFW). Fresh tissue was used from samples collected in the screenhouse. LAMP assays The pocket LAMP device was set up in collaboration with the supplier to enable detection of sweetpotato virus, with protocol providing via QR code and installing the corresponding firmware on the devices ( Figure 1 ). LAMP assays followed Wanjala et al. (2024) , using filter tips to prevent contamination. Master mix reactions (Supplementary Table S1, Fuentes et al., 2025 ) were prepared using master mix ISO-DR004-RT or ISO-001 (OptiGene) with six primers per virus (SPFMV, SPCSV, SPLCV) and cytochrome oxidase (COX) as an internal control (Supplementary Table S2, Fuentes et al., 2025 ). The reaction mix (master mix and diluted sample) was combined and homogenized in a single Eppendorf tube before dispensing in OptiGene tubes for the case-portable ‘Genie III’ device (25 μl) and in 0.2 ml PCR tubes (50 μl; Axygen, flat cap) for the pocket LAMP device. In the latter case, 50 μl hexadecane (Sigma-Aldrich) was added on top to prevent evaporation. Figure 1. Overview of pocket LAMP diagnostic device. (A) Size comparison with case-portable LAMP devices. (B) LAMP test configured at 65 °C for 40 minutes, using a specific master mix and fluorescence measurement with a blue filter. (C) Workflow of the testing process (adapted from STAB VIDA). In addition, for ensuring consistency, the assays were initiated simultaneously on both devices ( Figure 2 ). LAMP assays were performed at 65 o C for 40 min, followed by a melting step from 75 to 95 o C (for Genie III only). Each device was operated per manufacturer’s instructions ( Genie III , DoctorVida ). Figure 2. Comparative performance of two LAMP devices for sweetpotato virus detection. (A) Side-by-side testing of SPFMV, SPCSV, SPLCV, and COX control on the devices plugged into electrical power. (B) Amplification curves from the case-portable ‘Genie III’ device with 25 μl of reaction mix in Genie tubes. (C) Amplification curves from the pocket LAMP device with 50 μl of reaction mix layered with 50 μl of hexadecane to prevent evaporation. Positive reactions are visualized as amplification curves. For sensitivity assays, 10 dried samples identified as infected with SPFMV and SPCSV were selected from field samples tested previously by LAMP assays. A 100 mg tissue sample (from three desiccated leaves) was macerated in 1 ml alkaline PEG buffer. The sap extract was diluted 1:10 (v/v) in NFW, which was considered as 1:1, then serially diluted 20-fold (1:20, 1:400, 1:8,000) in 0.1X alkaline PEG buffer. For assays with portable power supply, the pocket LAMP devices were powered by 5,000mAh (Refuel Max) and 10,000mAh (REMAX) cell phone power banks. Compatibility was confirmed by matching the device adapter’s output (5V, 2.0A) with that of each power bank ( Figure 3 ). As in prior tests, the same samples and master mix reactions were used to ensure consistency. Figure 3. Performing simultaneous LAMP tests on two diagnostic devices for comparing detection results. (Top) A single pocket LAMP device (1a and 1b) powered by a portable power bank (1a and 1b, respectively). Note the green light emission of devices on the left side. (Bottom) Four pocket LAMP devices connected to a single power bank: one directly and three via a USB 2.0 (4-port) hub. Correlation analysis A comparative analysis was conducted between the two diagnostic devices, the case-portable ‘Genie III’ and the DoctorVida pocket LAMP device. Results were recorded as binary outcomes, with “0” for negative reaction and “1” for positive reaction. Time to positive (TTP) was obtained directly from Genie III, while for the pocket LAMP device, TTP was manually extracted from graphs stored on the supplier’s server. To assess agreement between the two devices, positive and negative results were counted and compared, and correlation analysis along with Deming regression on TTP values was performed ( Kreuze et al., 2024 ). Deming regression fitted using the “mcr” R package (v3.3.1; Potapov et al., 2023 ), accounted for measurement error in both methods. The estimated intercept and slope suggested systematic and proportional differences. A bootstrap-based method was used to calculate 95% confidence intervals for the regression parameters, as well as the confidence region for the regression line, providing quantitative assessment of uncertainty and a mean to assess the suitability of a linear calibration curve. Cost-effectiveness analysis A cost-effectiveness analysis was performed to assess the expenses associated with using the pocket LAMP device as compared to Genie III (including its carry case) as the benchmark. The case-portable ‘Genie III’ device can perform eight LAMP tests simultaneously, whereas each pocket LAMP device processes one test at a time. Therefore, running eight tests simultaneously would require eight pocket LAMP devices and two smartphones (each phone can control up to four devices). Costs were estimated based on local pricing in Tanzania. The set-up included additional necessary accessories such as two multi-4-plug adapters with eight power adapters, internet service for 20 weeks (cost depending on the number of samples tested, under Tanzania context), two 10,000mAh portable power banks for on-site assays, and two Pluggable USB 2.0 4-Port Hubs ( Figure 2 and Figure 3 ). The cost analysis also factored in consumables essential to each assay, including device-specific 0.2 ml tubes, ISO-DR004-RT master mix, and hexadecane. The variable-cost consumables analysis was based on 2,000 tests, sufficient to test 500 samples, with four tests per sample (three viruses plus COX). Results Virus detection LAMP assays performed using the case-portable device, which combined amplification curves with dissociation/melting curves, were used as a reference to confirm specific reactions with the target viruses and the COX control. Supplementary Table S3 ( Fuentes et al., 2025 ) summarizes the LAMP results obtained from both the pocket LAMP and case-portable device, highlighting the correspondence between them. All tested samples (113) showed positive reactions for COX, confirming the quality of the sap extraction and the absence of inhibition in the LAMP assays. Virus detection results obtained using the pocket LAMP device were fully consistent with those from the case-portable, showing 100% concordance. Specifically, 9 samples tested positive for SPFMV, 68 samples for SPFMV+SPCSV, 17 for SPLCV, and 19 samples were negative for any of the targeted viruses (Supplementary Table S3, Fuentes et al., 2025 ). Fresh leaves from 17 screenhouse-maintained samples tested positive in the LAMP assays ( Figure 2 and Supplementary Table S3, Fuentes et al., 2025 ). However, after drying, these samples tested negative for SPLCV. Sensitivity assays All tested samples showed positive reactions for SPFMV and SPCSV, as expected. The detection results from the pocket LAMP device were fully consistent with those from the case-portable device, showing 100% concordance in virus detection. The time to positivity (TTP) was similar between both devices. Except for one sample (F1-11), no significant differences were observed in the TTPs across the various sap dilutions ( Figure 4 ). These results suggest that any LAMP assays from both devices can be conducted appropriately, providing reproducible results. Supplementary Table S4 ( Fuentes et al., 2025 ) presents the LAMP test results obtained by both devices. Figure 4. Comparison of SPFMV and SPCSV detection by LAMP tests using two detection devices. Four pocket LAMP devices were powered by a REMAX 10,000 mAh portable phone power bank. LAMP tests were conducted simultaneously with sample F3-14 to compare results. Samples selected for SPLCV detection were negative but successfully amplified the internal control COX, confirming the quality of sap extraction and the absence of inhibition in the LAMP tests. Additionally, the SPLCV positive control (using either fresh leaves or nucleic acid extraction) produced the expected amplification results. Performance using portable power banks The pocket LAMP device functioned effectively when powered by portable cell phone power banks, performing similarly to when connected to an electrical outlet. One to four devices operated well with a single power bank ( Figure 4 ). A LAMP run (40 minutes for amplification and 7 minutes for melting) with four devices connected to a REMAX 1000mAh power bank consumed approximately 20% of its charge, leaving enough power for at least three additional assays. This capability supports on-site LAMP assays for detecting sweetpotato viruses, provided internet access is available for saving and uploading results to the cloud. Correlation analysis Correlation analysis showed a strong relationship between TTP values from the pocket LAMP and case-portable devices ( Figure 5 ). A correlation coefficient (r > 0.89) indicates a very strong positive correlation between the measurements from both devices, with a p-value < 0.01 confirming a highly significant agreement. Figure 5. Correlation of Time to Positive (TTP) between two LAMP devices for sweetpotato virus detection. Each point represents an individual TTP value (in minutes) from a LAMP test. The correlation coefficient (r > 0.89) indicates a strong positive correlation between the devices. The coefficient of determination (R 2 ) shows that 79% to 99% of the variability in TTP from one device is explained by the other, indicating strong agreement. A p-value < 0.01 confirms the high statistical significant of the correlation. The coefficient of determination (R 2 ) values, ranging from 0.79 to 0.99, indicate how closely the pocket LAMP device measurements match those of the case-portable one. This suggests that 79 to 99% of the variation in TTP measurements from the pocket LAMP device is related to those from the case-portable LAMP device ( Figure 5 ), indicating a strong agreement between measurements from the two devices. The unexplained variability (between 1% and 21%) could be related to detection thresholds, measurement noise, or device bias. Additionally, Deming regression further validated a strong linear association between the two devices for virus detection (Supplementary Figure S1, Fuentes et al., 2025 ). Cost-effectiveness analysis The price of the case-portable device varies by supplier, so an average price was used for this analysis. There is a notable cost difference between implementing the two systems. On average, the case-portable device is priced at USD 15,890, whereas the total cost of implementing the pocket LAMP system, including accessories for eight simultaneous LAMP tests, is approximately USD 3,246. This makes the pocket LAMP system about 4.9 times more cost-effective ( Table 1 ). When considering local supplier pricing, the difference could be as high as 7 times. Table 1. Cost comparison of pocket and case-portable LAMP devices for sweetpotato virus detection. Cost analysis includes required accessories and consumables, for eight simultaneous LAMP tests. The calculation is based on 2,000 individual tests, corresponding to 500 samples each analyzed for three sweetpotato viruses and an internal control. Items Pocket LAMP device (DoctorVida) Case-portable LAMP device (Genie III) Cost difference Quantity Cost (USD) Quantity Cost (USD) Devices and accessories 4.9 times (Devices and accessories) 1.7 times (Devices, accessories, and consumables) Device (with carry case) 8 2,960 1 15,890 a Smartphone 2 120 b 0 0 Internet (weeks) 20 44 b 0 0 Portable power bank (10,000mAh) 2 81 0 0 USB 2.0 (4-Port) hub 2 22 0 0 Multi-plugs 2 19 0 0 Power adapters 8 0 0 Sub-total 3,246 15,890 Cost influencing consumables 0.2 ml tubes, clear flat cap (Axygen PCR-02-C x 1,000) 2 140 0 0 0.2 ml tubes (OptiGene OP-008-500 strips) 0 0 0.5 360 Master mix, 300 tests (OptiGene ISO-DR004-RT) c 14 8,748 7 4,374 Hexadecane (Sigma-Aldrich H6703-100ml) 1 156 0 0 Sub-total 9,044 4,734 Total 12,290 20,624 a = Average price of case-portable ‘Genie III’ device, as prices vary by supplier. b = Costs calculated based on local prices in Tanzania. c = 50 μl for the pocket LAMP device and 25μl for case-portable device. When including consumables, total expenses increase by USD 9,043 for the pocket LAMP system and USD 4,733 for the case-portable system. Consequently, the cost-effective difference is reduced to 1.7 times ( Table 1 ), though it could be as high as 2.2 times for local pricing. Discussion The DoctorVida pocket LAMP device, initially designed for rapid detection in human health context, shows promising potential for plant pathogen diagnostics. In this study, we conducted 560 LAMP tests to evaluate its utility in detecting major sweetpotato viruses. Rather than comparing performance directly with the case-portable ‘Genie III’, currently the most widely used field-deployable LAMP platform, the study focused on assessing the suitability of this portable system under real-world conditions. The results demonstrated consistent performance across both systems, with high agreement observed for all target viruses. Statistical analyses, including correlation and regression modelling, confirmed a high degree of consistency, further validating the accuracy and reliability of the LAMP assays. Collectively, our results confirm the reliability of LAMP test method and support the utility of the pocket LAMP device as a viable field-deployable diagnostic tool for sweetpotato virus detection in seed production systems. Its portability and dependable performance present a promising opportunity to strengthen virus surveillance and improve seed health management. To ensure a robust assessment of LAMP assay performance, we carefully selected samples that represented a wide range of symptom severity and potential virus loads. Additionally, the pocket LAMP device’s ability to operate with external power banks also enables field-based diagnostics. As long as there is internet connectivity, the results are saved and uploaded to the cloud (supplier’s server) for later data management. However, in remote locations with poor or no internet access, its use becomes more challenging. While results can still be viewed in real time on a cell phone screen, cloud storage and data synchronization may be delayed or unavailable. The observation that SPLCV was detectable in fresh tissue but not in dried samples from the same samples highlights the importance of sample preservation methods. It seems that drying tissues may compromise some viruses’ detectability when using rapid plant sap extraction methods like Alkaline PEG buffer. Mark et al. (2024) evaluated the effect of sample storage time on the quality of DNA and RNA extracted from leaf tissues and concluded that the quality of nucleic acid degrades as time progresses, with significant degradation occurring over longer timeframes. That degradation may reduce the ability to detect a virus in the dried leaf samples. We observed that the pocket LAMP device is sensitive to movement, improper cap closure, weak internet connection, and presence of small air bubbles in the reaction mixture inside the tube. Although any or all these things can affect the reliability of results, they are manageable in routine use. The single-sample processing limitation of the pocket LAMP device could be addressed by operating multiple devices concurrently, depending on testing needs and available personnel. For instance, to run eight tests using the pocket LAMP setup would require eight devices and two smartphones, since one phone can control up to four devices. Since initial tests in 2022, both the device and its associated mobile application have been enhanced for plant pathogen diagnostics, including expanded support for Android and iOS, improved reading channels, excitation LED light, and firmware updates for multiple incubations. Researchers can access information, create protocols, manage data through an online portal. Further improvements—such as integration of fluorescence derivative (-df/dt) graph analysis—may enhance its analytical capacity. Cost analysis revealed that implementing pocket LAMP devices for LAMP assays is more economical, although the case-portable ‘Genie III’ offers other advanced features such as dissociation curves (which allow confirmation of specific amplification), storing results in the device without internet connection. The extent of cost savings depends on the comparison metrics: equipment, accessories, and consumables for the pocket LAMP setup cost approximately two times less, with per-test cost reduced by 40%, even though it requires more consumables—specifically hexadecane and double the master mix volume. The decision between these LAMP systems should be guided by operational requirements, desired throughput, and budget. It is important to consider whether the higher price of the case-portable ‘Genie III’ device is justified by its additional features or if the less expensive option is adequate for decentralized virus surveillance. In conclusion, the pocket LAMP device offers a reliable, affordable, and adaptable diagnostic tool for sweetpotato virus detection, particularly suited for low-resource or decentralized contexts. Ethics and consent Ethical approval and consent were not required. Reporting guidelines Figshare: START checklist for ‘Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses’. https://doi.org/10.6084/m9.figshare.29114084 ( Fuentes et al., 2025 ) Data are available under the terms of the Creative Commons Attribution 4.0 International license (CC-BY 4.0). Data availability Figshare: Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses https://doi.org/10.6084/m9.figshare.29109401 ( Fuentes et al., 2025 ). The curated underlying data is available in Tables S3 and S4, provided in the extended data. Data are available under the terms of the Creative Commons Attribution 4.0 International license (CC-BY 4.0). Extended data referred to in the manuscript text as Supplementary materials are publicity available in: Figshare: Extended data for “Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses”. https://doi.org/10.6084/m9.figshare.29109401 ( Fuentes et al., 2025 ) Data are available under the terms of the Creative Commons Attribution 4.0 International license (CC-BY 4.0). Acknowledgments We thank Johan Ninanya (International Potato Center) for running data for Deming regression analysis in R package. References Chomczynski P, Rymaszewski M: Alkaline polyethylene glycol-based method for direct PCR from bacteria, eukaryotic tissue samples, and whole blood. BioTechniques. 2006; 40 (5): 454–458. PubMed Abstract | Publisher Full Text Clark CA, Davis JA, Abad JA, et al. : Sweetpotato viruses: 15 years of progress on understanding and managing complex diseases. Plant Dis. 2012; 96 (2): 168–185. PubMed Abstract | Publisher Full Text Cuellar WJ, Galvez M, Fuentes S, et al. : Synergistic interactions of begomoviruses with Sweet potato chlorotic stunt virus (genus Crinivirus ) in sweet potato (Ipomoea batatas L.). Mol. Plant Pathol. 2015; 16 (5): 459–471. PubMed Abstract | Publisher Full Text | Free Full Text Devi BM, Guruprasath S, Balu P, et al. : Dissecting diagnostic and management strategies for plant viral diseases: What next? Agriculture. 2024; 14 (2): 284. Publisher Full Text Doria G, Clemente C, Coelho E, et al. : An isothermal lab-on-phone test for easy molecular diagnosis of SARS-CoV-2 near patients and in less than 1 hour. Int. J. Infect. Dis. 2022; 123 : 1–8. PubMed Abstract | Publisher Full Text | Free Full Text Fuentes S, Ogero K, Perez A, et al. : Extended data for “Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses”. Dataset. figshare. 2025. Publisher Full Text Gutiérrez DL, Fuentes S, Salazar LF: Sweetpotato virus disease (SPVD): Distribution, incidence, and effect on sweetpotato yield in Peru. Plant Dis. 2003; 87 (3): 297–302. PubMed Abstract | Publisher Full Text He HJ, Wang Y, Wang Y, et al. : Towards achieving online prediction of starch in postharvest sweet potato ( Ipomoea batatas L.) by NIR combined with linear algorithm. J. Food Compos. Anal. 2023; 118 : 105220. Publisher Full Text Kanapiya A, Amanbayeva U, Tulegenova Z, et al. : Recent advances and challenges in plant viral diagnostics. Front. Plant Sci. 2024; 15 : 1451790. PubMed Abstract | Publisher Full Text | Free Full Text Kreuze J, Cuellar WJ, Low JW: Challenge of virus disease threats to ensuring sustained uptake of vitamin-A-rich sweetpotato in Africa.Scott P, Strange R, Korsten L, et al. , editors. Plant diseases and food security in the 21st century. Cham: Springer; 2021; Vol. 10 . : pp. 63–76. Publisher Full Text Kreuze JF, Ramírez DA, Fuentes S, et al. : High-throughput characterization and phenotyping of resistance and tolerance to virus infection in sweetpotato. Virus Res. 2024; 339 : 199276. PubMed Abstract | Publisher Full Text | Free Full Text Lebot V: Sweet potato.Bradshaw J, editor. Root and tuber crops. New York, NY: Springer; 2010; Vol. 7 . : pp. 97–125. Publisher Full Text Lee JYH, Best N, McAuley J, et al. : Validation of a single-step, single-tube reverse transcription loop-mediated isothermal amplification assay for rapid detection of SARS-CoV-2 RNA. J. Med. Microbiol. 2020; 69 (9): 1169–1178. PubMed Abstract | Publisher Full Text | Free Full Text Loebenstein G: Control of sweet potato virus diseases. Adv. Virus Res. 2015; 91 : 33–45. PubMed Abstract | Publisher Full Text Mark D, Tairo F, Ndunguru J, et al. : Assessing the effect of sample storage time on viral detection using a rapid and cost-effective CTAB-based extraction method. Plant Methods. 2024; 20 : 64. PubMed Abstract | Publisher Full Text | Free Full Text Mbewe W, Mtonga A, Chiipanthenga M, et al. : Incidence and distribution of sweetpotato viruses and their implication on sweetpotato seed system in Malawi. J. Plant Pathol. 2021; 103 (4): 961–968. Publisher Full Text Notomi T, Okayama H, Masubuchi H, et al. : Loop-mediated isothermal amplification of DNA. Nucleic Acids Res. 2000; 28 (12): e63. Publisher Full Text O’Brien PJ: The sweet potato: Its origin and dispersal. Am. Anthropol. 1972; 74 (3): 342–365. Publisher Full Text Ogero K, van der Vlugt R : Diseases of sweetpotato. Elmer WH, McGrath M, McGovern RJ, editors. Handbook of vegetable and herb diseases. Cham: Springer; 2023. Publisher Full Text Potapov S, Model F, Schuetzenmeister A, et al. : mcr: Method comparison regression (Version 1.3.2) [R package].2023. Reference Source Quoc NB, Phuong NDN, Chau NNB, et al. : Closed tube loop-mediated isothermal amplification assay for rapid detection of hepatitis B virus in human blood. Heliyon. 2018; 4 (3): e00561. PubMed Abstract | Publisher Full Text | Free Full Text Rako L, Agarwal A, Eow L, et al. : LAMP (loop-mediated isothermal amplification) assay for rapid identification of Varroa mites. Sci. Rep. 2023; 13 : 11931. PubMed Abstract | Publisher Full Text | Free Full Text Tibiri EB, Pita JS, Tiendrébéogo F, et al. : Characterization of virus species associated with sweetpotato virus diseases in Burkina Faso. Plant Pathol. 2020; 69 (6): 1003–1017. PubMed Abstract | Publisher Full Text | Free Full Text Untiveros M, Fuentes S, Salazar LF: Synergistic interaction of Sweet potato chlorotic stunt virus ( Crinivirus ) with Carla- , Cucumo- , Ipomo- , and Potyviruses infecting sweet potato. Plant Dis. 2007; 91 (6): 669–676. PubMed Abstract | Publisher Full Text Wanjala BW, Ateka EM, Miano DW, et al. : Storage root yield of sweetpotato as influenced by Sweet potato leaf curl virus and its interaction with Sweet potato feathery mottle virus and Sweet potato chlorotic stunt virus in Kenya. Plant Dis. 2020; 104 (5): 1477–1486. PubMed Abstract | Publisher Full Text Wanjala BW, Kreuze J, McEwan M, et al. : Loop-mediated isothermal amplification assay: A novel disease diagnostics tool in sweetpotato seed quality assurance. Crop Sci. 2024; 64 : 1183–1192. Publisher Full Text Wharton PS, Dangi S, Woodhall JW: Development of an innovative loop-mediated isothermal amplification (LAMP) assay for the rapid on-site detection of Phytophthora infestans. Am. J. Potato Res. 2025; 102 : 191–204. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 24 Oct 2025 ADD YOUR COMMENT Comment Author details Author details 1 International Potato Center, Lima, Peru 2 International Potato Center, Mwanza, Tanzania Segundo Fuentes Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Resources, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Kwame Ogero Roles: Conceptualization, Funding Acquisition, Writing – Review & Editing Ana Perez Roles: Methodology, Resources, Writing – Review & Editing Jan Frederick Kreuze Roles: Visualization, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This research was funded by the Gates Foundation (BMGF), through its investment (INV-040803) awarded to the International Institute of Tropical Agriculture (PROSSIVA) and the CGIAR initiative on Plant Health, supported by the donors of the CGIAR Trust Fund (http://www.cgiar.org/funders/). Article Versions (1) version 1 Published: 24 Oct 2025, 9:91 https://doi.org/10.12688/gatesopenres.16369.1 Copyright © 2025 Fuentes S 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 Gates Open Research - - 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 Fuentes S, Ogero K, Perez A and Kreuze JF. Evaluation of an ultra-portable pocket-sized device for running Loop mediated isothermal amplification (LAMP) assays for rapid detection of sweetpotato viruses . Gates Open Res 2025, 9 :91 ( https://doi.org/10.12688/gatesopenres.16369.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: AWAITING PEER REVIEW AWAITING PEER REVIEW ? 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 Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 24 Oct 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right 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 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 Gates Open Research 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 = "Evaluation of an ultra-portable pocket-sized...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://gatesopenresearch.org/articles/9-91/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://gatesopenresearch.org/articles/9-91/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://gatesopenresearch.org/articles/9-91/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Fuentes S 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://gatesopenresearch.org/articles/9-91/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://gatesopenresearch.org/articles/9-91", templates : { twitter : "Evaluation of an ultra-portable pocket-sized device for running.... Fuentes S et al., published by " + "Gates Open Research" + ", https://gatesopenresearch.org/articles/9-91/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/16369/17771") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "17771"); $(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 = { }; $(".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 = "e27655f5-99fc-43ef-b543-e8dc557cea1b"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); Are you a Gates-funded researcher? If you are a previous or current Gates grant holder, sign up for information about developments, publishing and publications from Gates Open Research. First Name * You must provide your first name Last Name * You must provide your last name Email * You must provide a valid email address Institution You must provide an institution. Submit Thank you! We'll keep you updated on any major new updates to Gates Open Research Gates Open Research Browse Gateways How to Publish About Contact Legal For Developers Cookie Notice Privacy Notice RSS Submit via VeriXiv © F1000 Research Limited and its licensors ISSN 2572-4754 var F1000platform = new F1000.Platform({ name: "gates", displayName: "Gates Open Research", hostName: "gatesopenresearch.org", id: "3", editorialEmail: "[email protected]", infoEmail: "[email protected]", usePmcStats: true }); 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