;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Esse conteúdo é antigo

Equipe de cientistas dos EUA diz ter teste de coronavírus simples e barato

Coronavírus; covid-19; pandemia; teste - Getty Images
Coronavírus; covid-19; pandemia; teste Imagem: Getty Images

06/05/2020 01h23

Nova York, 5 mai (EFE).- Uma equipe de cientistas dos Estados Unidos disse ter desenvolvido um protótipo experimental para um teste bastante rápido e barato para diagnosticar o novo coronavírus, que oferece uma maneira de dar resultados tão simples quanto um teste de gravidez.

O teste é baseado em uma tecnologia de edição genética conhecida como Crispr, e os pesquisadores fizeram uma estimativa que aponta que os materiais para cada unidade custariam cerca de US$ 6, de acordo com o jornal "The New York Times".

"Estamos animados que esta possa ser uma solução para que as pessoas não tenham que confiar em um laboratório sofisticado e caro", declarou o pesquisador Feng Zhang, do Broad Institute em Cambridge, no estado de Massachusetts, e um dos pioneiros da tecnologia Crispr.

Dr. Zhang e seus colegas postaram nesta terça-feira uma descrição de seu dispositivo em um site dedicado ao projeto, mas seu método ainda não foi testado por outros cientistas, nem suas descobertas foram publicadas por uma revista científica que possa submetê-las a um exame especializado independente.

Duas outras equipes de pesquisadores, uma em São Francisco, também nos EUA, e outra em Buenos Aires também estão trabalhando para projetar novos testes para detectar o vírus SARS-CoV-2 usando a tecnologia de edição de genes.

O professor Joshua Sharfstein, da Johns Hopkins Bloomberg School of Health, disse que seria importante que os cientistas procurassem novos tipos de testes para o coronavírus. Contudo, ele advertiu que a pesquisa até agora oferece apenas uma prova de conceito, e resta saber como o exame funcionará sob condições reais em comparação com os testes padrão atualmente em uso, conhecidos como reação em cadeia da polimerase, ou PCR.

"Há um longo caminho a ser percorrido para uma tecnologia escalável que funcione", advertiu Sharfstein.

O Crispr surgiu originalmente há vários anos como uma forma de editar o DNA com precisão. Assim como a PCR, o procedimento começa com a criação de uma etiqueta molecular que pode ser bloqueado em um determinado ponto de um gene.