Skip to content

Códigos desenvolvidos para analisar a resposta cortical hemodinâmica, adquiridos pela fNIRS / Codes developed to analyze the hemodynamic cortical response, acquired by fNIRS

Notifications You must be signed in to change notification settings

gabrimoraca/fNIRS_DataAnalysis

Repository files navigation

Análise dos dados da fNIRS

Os códigos foram desenvolvidos para analisar a resposta cortical hemodinâmica (alteração nas concentrações de Oxy e Desoxy-hemoglobina), mensuradas pelo dispositivo fNIRS modelo OctaMon de 8 canais (Artinis Medical Systems, Elst, The Netherlands). O projeto foi elaborado para funcionar com diferentes protocolos de pesquisa. Entretanto, se você estiver trabalhando com outros sistemas fNIRS, as rotinas deverão ser modificadas.

Todos os códigos deste projeto devem estar na mesma pasta do seu computador!

Desenvolvedor

Gabriel Antonio Gazziero Moraca

1º Passo - Encontrar os eventos da coleta

A aquisição e armazenamento dos dados é realizada por meio do software OxySoft. Após coletar os dados, realize os procedimentos abaixo:
  • Exporte os dados em arquivos Excel.
  • Exclua o cabeçalho, os valores discrepantes iniciais e a 1ª coluna (frames).
  • Digite "a" na 1ª linha da coluna que contém os eventos da coleta.
Caso o pacote Office não esteja instalado no pc/notebook utilizado na coleta, exporte os dados em arquivos de texto (.txt) e em seguida copie e cole os dados no Excel.

Após estas preparações, rode o arquivo fNIRS_Find_Events.m no MatLab. De maneira geral, esta rotina possui as seguintes etapas:

Exibindo instruções ao usuário

- No início da execução da rotina, mensagens serão exibidas na tela inicial do MatLab. Basicamente, são lembretes sobre os procedimentos descritos acima e informações sobre os arquivos que serão gerados. Caso exista um evento baseline no seu protocolo, considere-o como uma condição experimental nesta rotina.

Adicionando informações sobre o protocolo experimental

Caixas de diálogo serão exibidas na tela para você definir:
  • A quantidade de condições experimentais.
  • A quantidade e as letras que marcaram os eventos de cada condição.
  • O diretório que contém os dados exportados e um diretório para salvar os arquivos que serão gerados.

Selecionando os eventos de interesse

- Uma janela com todos os eventos marcados será exibida e você deverá selecionar os eventos de interesse. Não selecione mais eventos do que a quantidade definida na etapa anterior, caso contrário, a rotina retornará um erro. Por exemplo, se você definiu que há 9 eventos no protocolo, não selecione 10 eventos.

Salvando os eventos

- Todos os eventos selecionados serão salvos em um único arquivo .mat. Além disso, os dados da Oxy e Desoxy que foram carregados serão salvos em um arquivo .txt.

2º Passo - Correção de artefatos e filtragem

Para aplicar procedimentos de correção de artefatos (ruídos) e filtragem dos dados, será necessário utilizar o software open-source NIRS-SPM (toolbox do MatLab). Os arquivos gerados no passo anterior serão utilizados neste 2º passo da análise. Abaixo há links para o software e para artigos que explicam o pré-processamento dos sinais.

  • Software: NIRS-SPM
  • Statistical parametric mapping for near-infrared spectroscopy - Ye et al., 2009
  • fNIRS response during walking — Artefact or cortical activity? A systematic review - Vitorio et al., 2017
  • Motion artifacts in functional near-infrared spectroscopy - Brigadoi et al., 2014
  • A systematic comparison of motion artifact correction techniques for functional near-infrared spectroscopy - Cooper et al., 2012

3º Passo - Cálculo da mudança relativa da atividade cortical

Após encontrar os eventos e e processar os dados no NIRS-SPM, rode o arquivo fNIRS_Analysis.m no MatLab. Os dados serão analisados em 3 janelamentos:
  • Total (considerando a duração completa da tarefa).
  • Inicial (Early - considerando a 1ª metade da tarefa).
  • Tardio (Late - considerando a 2º metade da tarefa).
Os arquivos fNIRSplots_Channels.m e fNIRSplots_ConditionsData.m são funções que serão utilizadas para plotar os dados ao longo da análise. Em resumo, esta rotina executa as seguintes etapas:

Exibindo instruções ao usuário

- Antes de iniciar a análise propriamente dita, mensagens serão exibidas na tela inicial do MatLab. Basicamente, há uma explicação geral sobre a análise e a plotagem dos dados e informações sobre como preencher determinados campos subsequentes. É essencial ter conhecimento sobre o protocolo experimental e ter realizado os passos 1 e 2 previamente.

Adicionando informações sobre o protocolo experimental

Caixas de diálogo serão exibidas na tela para você definir:
  • A quantidade e o nomes de cada condição experimental.
  • As letras que definiram os eventos de cada condição.
  • Como os arquivos contendo os eventos estão organizados no seu computador.
  • Se houve aplicação da estimulação transcraniana por corrente contínua (ETCC).
  • O diretório onde estão a rotina e as funções para plotar os dados.
  • Os diretórios para salvar os gráficos dos canais e da análise de cada condição e para salvar os dados analisados.

Adicionando informações sobre a análise dos dados

Novamente, caixas de diálogo serão exibidas na tela para você definir:
  • Se houve um evento baseline e qual a letra utilizada para identificá-lo.
  • A duração total do baseline realizado na coleta.
  • Quantos segundos, imediatamente antes do término do baseline, serão excluídos da análise.
  • A duração do atraso fisiológico.
  • A duração total da tarefa realizada na coleta e dos janelamentos Early e Late.
  • Quanto segundos, imediatamente antes do término da tarefa, serão excluídos da análise.
Imediatamente após o início do baseline e logo após o início da tarefa, alguns segundos serão excluídos da análise. Este tempo excluído se refere ao atraso fisiológico.

Analisando os dados processados

- Nesta etapa, você irá definir qual hemisfério foi estimulado, se houve aplicação de ETCC em um hemisfério específico. Em seguida, a rotina irá carregar os eventos do participante em análise e 2 gráficos serão exibidos:
1) Dados adquiridos pelos canais do hemisfério direito (1-4).
2) Dados adquiridos pelos canais do hemisfério esquerdo (5-8).
- Os gráficos serão salvos com a extensão .fig, permitindo a edição posterior caso necessário. Estes gráficos representam o comportamento da Oxy e da Desoxy durante todo o tempo de coleta (exemplo abaixo).

Canais da fNIRS

- Após inspecionar os gráficos, uma janela será exibida para você selecionar os canais de interesse (que possuem sinais com qualidade).
- Durante a coleta de dados, é importante que você anote os canais que apresentaram sinais ruins, para não selecioná-los neste momento.
- As médias entre os canais (uma média por frame) de cada hemisfério cerebral serão calculadas. O resultado será 4 conjunto de dados: Oxy e Desoxy de cada hemifério.

Para cada condição experimental, a rotina irá executar as tarefas a seguir:

- Para cada tentativa, os dados do baseline e da tarefa serão agrupados em uma série temporal e o 1º valor será subtraído de todo o conjunto de dados.
- Após criar "n" séries temporais, as médias entre as séries serão calculadas. Isto resultará em 4 séries temporais médias, uma para cada variável (Oxy e Desoxy de cada hemisfério).
- Ainda, será calculada a média entre os hemisférios, gerando mais 2 conjunto de dados.
- Serão exibidos gráficos demonstrando o comportamento de cada série temporal média criada, 6 ao todo.
- Como anteriormente, os gráficos também serão salvos com a extensão .fig, para permitir edição futura.
- Exemplo abaixo demonstra a Oxy do hemisfério direito (as linhas finas são os desvios-padrão).

Oxy

Subtrair o 1º valor é uma forma de normalizar os dados, para que a série temporal comece do 0. Esta normalização melhora a visualização da plotagem dos dados e não altera o comportamento do sinal.

- Se no seu protocolo houve um evento baseline, não serão observados desvios-padrão na parte do gráfico referente ao baseline, pois todas as tentativas compartilharam o mesmo baseline.
- Na sequência, partes do sinal do baseline e da tarefa serão excluídos (definido no início da análise) e as médias do baseline e da tarefa (para cada janelamento) em cada série temporal média serão computadas.
- Por fim, será calculada a mudança relativa da atividade cortical (tarefa - baseline) para cada variável (6) em cada janelamento (3).

Salvando os dados

- Considerando a Oxy e Desoxy de cada hemisfério e dos hemisférios combinados, os dados abaixo serão dispostos em tabelas que serão salvas em um único arquivo .mat:
  • As mudanças relativas do janelamento Total para cada condição.
  • As mudanças relativas do janelamento Early para cada condição.
  • As mudanças relativas do janelamento Late para cada condição.
  • As séries temporais médias de cada condição.
  • Os desvios-padrão das séries temporais médias de cada condição.
- Ainda, os canais utilizados na análise também serão salvos no mesmo arquivo. No nome do arquivo, haverá a string "HD" (hemisfério direito) ou "HE" (hemisfério esquerdo) caso a ETCC tenha sido aplicada em algum dos hemisférios.

4º Passo - Agrupar os resultados

Após calcular as variáveis no passo anterior, rode o arquivo fNIRS_Grouping_Results.m no MatLab. Esta rotina possui as seguintes etapas:

Exibindo instruções ao usuário

- No início da execução da rotina, mensagens serão exibidas na tela inicial do MatLab. Estas mensagens fornecerão instruções sobre a organização dos dados analisados e sobre como preencher determinados campos subsequentes.

Adicionando informações sobre o protocolo experimental

Caixas de diálogo serão exibidas na tela para você definir:
  • A quantidade de condições experimentais, momentos de avaliação e intervenções.
  • Os nomes de cada condição, momento e intervenção.
  • Os diretórios que contém os resultados de cada arquivo e para salvar os resultados agrupados.
A rotina foi criada para funcionar com diferentes delineamentos de pesquisa. Dependendo do protocolo, não será necessário nomear o momento e/ou intervenção.... Preste atenção nas instruções iniciais!

Selecionando os arquivos analisados

- Uma janela com todos os arquivos analisados será exibida e você deverá selecionar apenas os arquivos contendo os dados do momento e/ou intervenção especificado na janela. Para exemplificar, considere os seguintes protocolos:
  • 2 momentos e 2 intervenções (ensaio clínico randomizado).
  • 1 momento e nenhuma intervenção (estudo transversal).
- No 1º caso, você irá selecionar os arquivos do conjunto "intervenção 1 - momento 1". Logo após, outra janela será aberta e você deverá selecionar os arquivos do conjunto "intervenção 1 - momento 2", depois do conjunto "intervenção 2 - momento 1" e assim sucessivamente. No 2º caso, apenas uma janela será aberta e basta selecionar todos os arquivos de interesse.

Selecionando os resultados de cada arquivo

- Primeiramente, você irá definir o janelamento dos dados a ser agrupados (Total, Early ou Late). Para cada arquivo selecionado na etapa anterior, a rotina irá extrair o número dos canais utilizados na análise dos dados (entre 1 e 8). Além disso, serão selecionadas as seguintes variáveis, para cada condição experimental:
  • Oxy e Desoxy dos hemisférios direito e esquerdo OU estimulado e não-estimulado.
  • Oxy e Desoxy dos hemiférios combinados (médias entre os hemisférios).

Agrupando os resultados

- Nesta etapa, os resultados extraídos serão agrupados de acordo com as condições experimentais, momentos de avaliação e intervenções aplicadas. Caso não exista intervenção, os resultados serão agrupados apenas por condição.

Salvando os resultados agrupados

- Os canais analisados de todos os participantes serão salvos em um arquivo .txt e os resultados agrupados em arquivos .xlsx (Excel). A quantidade de arquivos que serão gerados depende do protocolo experimental. Observe exemplos com protocolos diferentes:
  • 2 condições e 1 momento.
  • 2 condições, 2 momentos e 2 intervenções.
- Para o 1º exemplo, serão produzidos 2 arquivos, um para cada condição. Já para o 2º exemplo, serão produzidos 4 arquivos (abaixo). Cada arquivo terá 2 planilhas (abas), uma para cada momento.
1º Arquivo: condição 1 e intervenção 1.
2º Arquivo: condição 1 e intervenção 2.
3º Arquivo: condição 2 e intervenção 1.
4º Arquivo: condição 2 e intervenção 2.

Aqui termina a análise dos dados da fNIRS! Agora siga com a análise estatística de interesse, boa sorte 🤙🏻

About

Códigos desenvolvidos para analisar a resposta cortical hemodinâmica, adquiridos pela fNIRS / Codes developed to analyze the hemodynamic cortical response, acquired by fNIRS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages