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

Saúde

Sintomas, prevenção e tratamentos para uma vida melhor


Pesquisadores da USP corrigem gene responsável por doenças autoimunes

Imagem de imunofluorescência de células mTEC, onde o núcleo celular está em azul e os pontos vermelhos são a proteína Aire - Karina F. Bombonato-Prado (FORP-USP)
Imagem de imunofluorescência de células mTEC, onde o núcleo celular está em azul e os pontos vermelhos são a proteína Aire Imagem: Karina F. Bombonato-Prado (FORP-USP)

Do VivaBem

08/07/2018 14h08

O sistema imunológico humano às vezes falha em reconhecer tecidos e órgãos como elementos próprios do corpo e a a atacá-los como se fossem estranhos. Esse erro de identificação é denominado autoimunidade agressiva e desencadeia doenças como o diabetes tipo 1.

Até agora, os cientistas não souberam explicar o que poderia desencadear essa falha, mas pesquisadores das faculdades de Medicina e de Odontologia de Ribeirão Preto da USP (Universidade de São Paulo) descobriram um dos genes responsáveis pelo processo e conseguiram corrigi-lo.

Os cientistas já suspeitavam que os genes Fezf2 e Aire controlavam a autoimunidade agressiva. Por esse motivo, o grupo de pesquisadores usou o sistema CRISPR/Cas9 --uma ferramenta de edição do DNA-- para manipular o gene Aire e, dessa forma, entender melhor como ele atua no controle de doenças autoimunes.

Leia também:

De acordo com os pesquisadores, as doenças autoimunes são desencadeadas por autoanticorpos (que reagem contra o próprio corpo) ou pelos linfócitos T autoagressivos. Essas células são “educadas” na glândula do timo (um órgão torácico, situado logo à frente do coração) para não atacar os elementos próprios do corpo. Quando essa educação falha, o timo deixa escapar para o resto do corpo linfócitos T autoagressivos que podem agredir órgãos.

Os autores do estudo intuíram que, se os pacientes com doenças autoimunes apresentam mutações no Aire, o gene perderia a função de controlar a adesão entre as células da medula do timo (mTEC) e os timócitos autoagressivos. A fim de testar essa hipótese, eles usaram o CRISPR/Cas9 para romper o DNA do gene Aire de células mTEC de camundongos e provocar mutações nele, a fim de possibilitar a perda de sua função original.

Os pesquisadores da USP observaram que as células mTEC Aire mutantes se mostraram menos capazes de aderir aos timócitos quando comparadas com as células normais, chamadas Aire selvagens.

“Essas novas constatações reforçam a tese de que o gene Aire está implicado na adesão mTECs-timócitos, que é um processo essencial para eliminação das células autoagressivas e prevenção das doenças autoimunes”, disse Geraldo Aleixo os, professor da FMRP e da FORP-USP e coordenador do projeto, à Agência FAPESP.

Segundo os, como os genomas do homem e do camundongo são muito parecidos em termos de sequências de DNA [mais de 80% de identidade], eles podem continuar a utilizar o CRISPR/Cas9 nas células desse animal para estudar os mecanismos da autoimunidade agressiva que acontece em humanos e quem sabe, no futuro, tentar corrigi-los.

*Com informações da Agência FAPESP.

Siga o VivaBem nas redes sociais
Facebook • Instagram • Youtube