;(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

Uma das inventoras do Crispr teme seu uso e quer controle governamental

A bioquímica Jennifer Doudna - Divulgação
A bioquímica Jennifer Doudna Imagem: Divulgação

Adriano Ferreira

Colaboração para Tilt

22/11/2019 12h52Atualizada em 22/11/2019 16h55

Jennifer Doudna, bioquímica americana e uma das principais mentes que contribuíram para a criação da avançada técnica edição de genes conhecida como Crispr, defende que as agências de regulação do mundo todo precisam dar mais atenção ao controle deste recurso.

Em um texto publicado na revista "Science" na sexta-feira ada (15), ela alerta para o abuso de bebês editados geneticamente, usando como (mau) exemplo o geneticista chinês He Jiankui.

Em novembro de 2018, Jiankui chocou o mundo ao anunciar que trabalhou na criação de bebês humanos —duas meninas gêmeas— geneticamente editados. O texto de Jennifer é intitulado "O aniversário indesejado do Crispr" por conta desse fato.

O Crispr permite que cientistas modifiquem permanentemente genes em células e organismos vivos, "recortando" com precisão o DNA. Isso possibilitaria correções de mutações no genoma humano para tratar causas genéticas de doenças.

Para ela, Jiankui havia "quebrado o mantra médico básico de 'não faça mal' usando o CRISPR-Cas9 para editar os genomas" das meninas.

Seu trabalho arriscado e clinicamente desnecessário surpreendeu o mundo e desafiou as chamadas anteriores de meus colegas e de mim, e das Academias Nacionais de Ciências e Medicina dos EUA, por uma moratória eficaz na edição de linha germinativa humana
Jennifer Doudna

A moratória citada por ela teria a intenção de impedir temporariamente o uso mundial do recurso novamente para embriões, espermas e óvulos. O motivo para isso é impedir que qualquer edição realizada neles provoque alterações que serão adas às futuras gerações.

Apesar da crítica, Jennifer acha que parar a edição genética não resolve o problema por si. "Acredito que as moratórias não são contramedidas fortes o suficiente e, em vez disso, as partes interessadas devem se engajar na elaboração cuidadosa de regulações da tecnologia sem sufocá-la", diz.

A bioquímica também reivindica que uma pausa seja feita especificamente na Rússia, onde o cientista Denis Rebrikov está propondo o uso da tecnologia em embriões de mães que tenham o vírus HIV. Os planos de modificação genética do cientista também incluem cinco casais com um tipo recessivo de surdez que desejam testar o uso do recurso para não transmitir a deficiência. Mas, para que o procedimento seja feito, será preciso a aprovação do governo.

Em julho, a Organização Mundial de Saúde (OMS) solicitou que agências regulatórias em todos os países interrompessem qualquer experimento de edição da linha germinal —referente à linhagem da espécie— em humanos. Em agosto, a OMS anunciou os primeiros os para a construção de um registro para futuros estudos.

Como a regulamentação pode levar um tempo para ser estabelecida, o desafio a ser vencido é determinar como a sociedade usará a técnica. Nos EUA, vai ar a valer na Califórnia, a partir de janeiro de 2020, a primeira lei para regulamentar o Crispr, mirando os biohackers.