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

UFPR prepara vacina mais barata e quer testar em humanos em 6 meses

Desenvolvimento da vacina da UFPR contra a covid-19 - Marcos Solivan/Sucom UFPR
Desenvolvimento da vacina da UFPR contra a covid-19 Imagem: Marcos Solivan/Sucom UFPR

Lucas Borges Teixeira

Do UOL, em São Paulo

26/04/2021 15h41

Uma vacina contra covid-19 desenvolvida pela UFPR (Universidade Federal do Paraná) deverá entrar na fase de testes clínicos no segundo semestre deste ano, para ser distribuída em 2022. Essa é a previsão dos pesquisadores.

O imunizante, que começou a ser produzido no fim do ano ado, ainda está em fase pré-clínica, com testes em animais, mas, de acordo com a universidade, já apresenta "resultados de semelhantes" aos da vacina AstraZeneca/Oxford nesta etapa. Produzida com insumos nacionais, ela tem um custo inferior às doses internacionais.

Em coletiva na tarde desta segunda-feira (26), o reitor da UFPR, Ricardo Marcelo da Fonseca, afirmou que a fase de testes em camundongos deverá durar até outubro "se tudo correr como o planejado".

O plano é, em seis meses, nós fazermos o requerimento na Anvisa [Agência Nacional de Vigilância Sanitária] para ingresso na fase clínica de testes em humanos.
Ricardo Marcelo da Fonseca, reitor da UFPR

Para mudar de fase, os estudos em animais precisam atingir três objetivos:

  • verificar se há neutralização do vírus pelos anticorpos produzidos,
  • se os animais desenvolvem ou não a doença e
  • se a vacina causou algum dano colateral.

Para encerrar esta fase, o governo paranaense destinou cerca de R$ 1 milhão para a pesquisa.

"Nossa principal preocupação são os testes toxicológicos, que não devem, inclusive, ser feitos no nosso laboratório. Têm de ser feitos de forma independente", afirmou o pesquisador Marcelo Müller dos Santos, responsável pelo projeto.

A vacina usa a proteína Spike do coronavírus para gerar imunização. Com insumos nacionais, o custo da vacina é inferior a R$ 5 por dose, enquanto o preço base do mercado internacional é de US$ 10 (mais de R$ 50).

"Esse valor por dose é baseado no preço de insumos que pagamos no laboratório. Extrapolamos para incluir equipamentos e aí chegamos ao valor de R$ 5 a R$ 10. Comparar com outras vacinas é difícil, mas vemos que o preço de CoronaVac e Moderna variam de US$ 25 a US$ 40", disse Santos.

Até agora, estão sendo usadas duas doses nos testes com camundongos, e também se considera a possibilidade de imunização por spray nasal.

O pesquisador destacou que o imunizante não é "100% nacional" porque "a ciência é desenvolvida em cima do conhecimento adquirido", mas que todos os insumos são daqui.

"Nenhuma universidade no mundo faz uma vacina sozinha", complementou Fonseca. "É uma vacina de baixíssimo custo, que, portanto, poderá nos dar, no futuro, uma soberania tecnológica. Hoje, tem afligindo a nossa sociedade a espera do IFA [Ingrediente Farmacêutico Ativo] da Índia e da China", comentou, referindo-se aos processos de fabricação das vacinas do Instituto Butantan e da Fiocruz, que dependem de matéria-prima importada.