PraticoNeuro. Parte 2 Redes

Documentos relacionados
PraticoNeuro. Parte 2

PraticoNeuro. Parte 1 Neurônio individual. Obs: caso esteja usando o Jupyter Notebook, adicione na linha 2 o comando: %matplotlib inline

Quarto projeto computacional (data de entrega: 05/06/17)

Prático de Modelagem Computacional em Neurociência. Dia 25 de Julho. Redes

Terceiro Projeto Computacional (data de entrega: 02/05/18)

Roteiro MetaNeuron. Problemas sobre bioeletrogênese

Simulação MATLAB - Transmissão PCM em Banda Base e Diagrama de Olho. Testar o efeito de filtros sem ISI no espectro e na curva BERXE b /N 0.

GRÁFICOS COM EXCEL. PASSO 1: INSERINDO OS DADOS: Podemos inserir os dados em duas disposições: Em linha ou em coluna.

Exercícios de Laboratório 1

PORTAS NAND (NE) INTRODUÇÃO TEÓRICA

Guia das atividades de modelagem computacional com o software Modellus, sobre circuitos simples

As aulas anteriores trataram do modelo de Hodgkin-Huxley e do formalismo de Hodgkin- Huxley para modelar neurônios.

Introdução à Neurociência Computacional (Graduação) Prof. Antônio Roque Aula 6

Autor: Edroaldo Lummertz da Rocha Home page: edroaldo.wordpress.com

Tópicos Especiais: Inteligência Artificial REDES NEURAIS

Redes Neurais Pulsadas. João Fausto Lorenzato Robson David Montenegro Tarcísio Lucas

Modelo de Hopfield. Modelo de Hopfield. Modelo de Hopfield. Modelo de Hopfield. Redes Neurais Auto-organizáveis Modelo de Hopfield

Antonio Carlos Roque da Silva Filho e Cristiano R. F. Granzotti 14 de março de 2016

Programação em Linguagem C

Tema 07: Propriedades Elétricas das Membranas

SIMULAÇÃO DA ATIVIDADE ELETROFISIOLÓGICA DE NEURÔNIOS

Modelos integra-e-dispara não-lineares com duas variáveis

Espaço amostral Ω: Conjunto enumerável de todos os possíveis resultados de um experimento aleatório. um evento elementar. E = E[X j ] X j.

No. USP Nome Nota Bancada GUIA E ROTEIRO EXPERIMENTAL

Escrita correta de resultados em notação

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Exercícios de Laboratório 3

4.7 QUEDA DE CORPOS NA PRESENÇA DE AR E SEM AR

CIRCUITOS ELETRÔNICOS LINEARES TE054. Introdução a simulação de circuitos usando o programa QUCS

Exercícios de Laboratório 2

ENGENHARIA ELÉTRICA UMC ELETRÔNICA DE POTÊNCIA I LABORATÓRIO DE ACIONAMENTO DE MÁQUINAS ELÉTRICAS Professor José Roberto Marques docente da UMC

2. Conecte seu Arduino ao computador. 3. Abra as ferramentas da IDE e selecione a porta e a placa que você está utilizando.

PSI LABORATÓRIO DE CIRCUITOS ELÉTRICOS

Medidas Físicas e Noções de Estatística Descritiva

2015 Dr. Walter F. de Azevedo Jr. Potencial de Ação

Gráficos Excel Dados da planilha. Gráfico criado a partir de dados de planilha

PSI LABORATÓRIO DE CIRCUITOS ELÉTRICOS

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

PORTAS NOR INTRODUÇÃO TEÓRICA

1º Curso Prático de Modelagem Computacional em Neurociência. Neurossimuladores. Renan O. Shimoura Doutorando

Trabalho do Curso de Redes de Computadores COS765/MAB /1

Gráficos de posição e de velocidade versus tempo para o estudo dos movimentos

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture

TRANSMISSÃO DE INFORMAÇÃO

serotonina (humor) dopamina (Parkinson) serotonina (humor) dopamina (Parkinson) Prozac inibe a recaptação da serotonina

2º Curso Prático de Modelagem Computacional em Neurociência. Neurossimuladores. Renan O. Shimoura Doutorando

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

Aula 01 Microsoft Excel 2016

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Experiência 9 Redes de Primeira ordem Circuitos RC. GUIA e ROTEIRO EXPERIMENTAL

SOMADORES E SUBTRATORES

GÊNESE E PROPAGAÇÃO DO POTENCIAL DE AÇÃO

LABORATÓRIO 1 - SIMULAÇÃO SPICE DO TRANSISTOR

Universidade de São Paulo

Processamento Digital de Imagens

Escola Politécnica - USP

Página 1 de 14 MANUAL DESTART RÁPIDO DA ESTAÇÃO U30-NRC

Exercícios de programação

PSI LABORATÓRIO DE CIRCUITOS ELÉTRICOS

Dispositivos e Circuitos de RF

Ensaio 6: Característica de Tensão-Carga de Geradores CC: Excitação Independente, Shunt Auto- Excitado e Série

Figura 1: Formato de Requisição HTTP

Aula 4. Departamento de Métodos Estatísticos Instituto de Matemática Universidade Federal do Rio de Janeiro

GUIA DE EXPERIMENTOS

PSI LABORATÓRIO DE CIRCUITOS ELÉTRICOS GUIA DE EXPERIMENTOS. EXPERIÊNCIA 2 - Medição de Grandezas Elétricas: Valor Eficaz e Potência

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO Instituto de Física Programa de Pós-Graduação em Ensino de Física Mestrado Profissional em Ensino de Física

Bem-vindo ao tópico sobre gerenciamento do relacionamento com o cliente.

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

ROTEIRO EXPLORATÓRIO INTERFERÔMETRO DE MACH-ZEHNDER Com o software aberto, localize o menu LANGUAGE e selecione o idioma.

Amplificador Operacional e. Controladores Analógicos

Trabalho de iniciação científica CTI (Centro de tecnologia da informação Renato Archer)

Laboratórios de FIS14 RELATÓRIOS. Profa. Sonia

PLACA DE CIRCUITO IMPRESSO 01 CIRCUITO DE SINALIZAÇÃO E COMANDO

FACULDADE PITÁGORAS PRONATEC

Temos como operar com os três tipos de dados existentes na programação do robô. Elas se dividem em operações lógicas (AND, OR,

Trabalho de Comunicações Digitais. Guia de procedimento

Campo de coluna: é um campo retirado da lista de dados e atribuído a uma orientação de coluna na tabela dinâmica.

- Trabalho Prático de Algoritmos e Programação usando Robô Arduino -

Unidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano

O aspecto do módulo de desenvolvimento Arduino Uno é mostrado na Figura 1 abaixo.

Redes Neurais Artificial. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Circuito de Recepção Serial Assíncrona

EXPERIÊNCIA 05 CIRCUITOS COM AMPLIFICADOR OPERACIONAL PROFS ELISABETE GALEAZZO, LEOPODO YOSHIOKA E ANTONIO C. SEABRA

Robótica com Arduino Professor: Paulo Marcos Trentin

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Circuitos resistivos alimentados com onda senoidal

Eletrônica de Potência I Prof. André Fortunato rev. 1-11/2011

Atividade em grupo de 5 alunos: Produzir um boletim informativo sobre os conteúdos aprendidos.

PSI-3451 Projeto de CI Lógicos Integrados. Aula 4

Manual Studio Uno 2.0

Circuitos resistivos alimentados com onda senoidal. Indutância mútua.

QUICK INSTALLATION GUIDE

Clicando nesse botão aparecerá um menu no qual deve ser selecionada a porta serial em que o Rasther está ligada. Depois clique em OK.

Eletrônica II. Germano Maioli Penello. II _ html.

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA DIAGRAMAS DE BODE

Transcrição:

PraticoNeuro Parte 2 Redes Exercício 06 Este exercício irá explorar o mecanismo de sinapses. Tente se lembrar dos exercícios da primeira parte da apostila e então crie 3 neurônios integra-e-dispara. Os neurônios devem ter os mesmos valores de potencial de repouso vrest = -70 mv, threshold = -60 mv, reset = -70 mv, tempo refratário = 5 ms, R=100 MOhm e inicialmente corrente de entrada nula I = 0 pa. Escolha potenciais iniciais distintos em -65 mv, - 80 mv e - 50 mv. a) Rode uma simulação por 200 ms e plote os resultados. Confira se o seu gráfico é semelhante ao abaixo e tente explicar o que é observado. b) Note que os neurônios não estavam recebendo nenhuma estimulação. Comece alterando a corrente de entrada I para 120 pa em todos os neurônios. Rode o programa e confira se a corrente escolhida foi suficiente para que os neurônios disparassem.

A princípio os neurônios foram criados de forma independente e desconectados. Para criar as sinapses adicione as seguintes linhas: J = 1*mV syn = Synapses(neurons, neurons, on_pre='v += J', delay=2*ms) syn.connect(i=[0, 1], j=[1, 2]) obs: Note que, seguindo a lógica de programação, as sinapses devem ser criadas após a criação dos neurônios. Atente-se a isso. Agora rode o programa novamente e compare o gráfico de saída com a figura abaixo. Observe a resposta dos neurônios e tente explicar o que foi feito. Além da função NeuronGroup, outra função comumente utilizada é a Synapses. E como o próprio nome sugere, essa função é dedicada a criação de sinapses entre os neurônios. Os argumentos utilizados dentro da função nas linhas de código acima representam na ordem: população de neurônios pré-sinápticos; população pós-sináptica; a cada disparo do pré acontecerá a atualização de v = v + J no neurônio em questão; após o disparo no pré o sinal chegará no pós com atraso igual ao delay definido. No entanto, para conectar os elementos de sinapses criados é necessário utilizar a função connect. Esta função pode receber como argumento os índices dos neurônios a serem conectados, onde i representa neurônios pré-sinápticos e j os pós-sinápticos. Exemplo: o comando syn.connect(i=0, j = 1) cria uma conexão do neurônio de índice 0 para o neurônio de índice 1. Há outras maneiras de definir a regra de conexão, uma delas é a partir de uma probabilidade de conexão como veremos no exercício 6 Faça testes alterando o valor de delay, a força sináptica J e as combinações de neurônios conectados.

c) Em seguida, faça as seguintes alterações na parte do código onde as sinapses são definidas: J = 1*mV g = 4 syn_ex = Synapses(neurons, neurons, on_pre='v += J', delay=10*ms) syn_in = Synapses(neurons, neurons, on_pre='v -= g*j', delay=10*ms) syn_ex.connect(i=0, j=2) syn_in.connect(i=1, j=2) para: Observe o resultado e tente explicar. Tente trocar a linha de conexão de sinapses excitatórias syn_ex.connect(i=[0,2], j=[2,0]) Neste caso, tente imaginar qual seria o resultado antes de rodar a simulação. Rode e verifique se sua previsão está correta. Obs: Em python, o exemplar [5:7] equivale ao conjunto [5,7[. Sendo assim, o elemento 7 não está dentro deste conjunto. d) Você pode também fazer alterações no valor de corrente de cada neurônio, volte no primeiro circuito com sinapses apresentado no exercício c) e altere as correntes de forma que neurons.i = 0*pA neurons[0:2].i = 120*pA Verifique o resultado e tente explicar o que acontece. Exercício 07 Este exercício irá demonstrar algumas maneiras de visualizar redes de neurônios. Iniciaremos com a representação da atividade da rede a partir do gráfico de rastreio (ou em inglês raster plot). a) Utilize o último código que você possui e adicione as seguintes alterações: Ao invés de gravar o valor da voltagem em cada momento, recorde somente o valor dos disparos. Para isto, utilize: spike_mon=spikemonitor(neurons)

Depois de rodar este código, plote os resultados com: plot(spike_mon.t/ms,spike_mon.i,'x',markersize=1.5) xlabel('time (ms)') ylabel('neuron index') Tente compreender o significado deste gráfico. O raster plot indica o momento em que cada neurônio disparou. Verifique se isto está correto ao plotar o gráfico em conjunto com as voltagens, para tal, utilize: subplot(2,1,1) plot(spike_mon.t/ms,spike_mon.i,'x',markersize=1.5) ylabel('neuron index') xlim(-5,200) subplot(2,1,2) plot(state_mon.t/ms,state_mon.v[0]/mv,label="n0") plot(state_mon.t/ms,state_mon.v[1]/mv,label="n1") plot(state_mon.t/ms,state_mon.v[2]/mv,label="n2") xlabel('time (ms)') xlim(-5,200) legend() Ao verificar a correlação entre disparos e raster plot, faça todos os neurônios receberem I=120 pa e verifique a mudança no raster plot. b) Se tudo estiver correto até aqui, você deve ter 3 conexões no total: neurônio 0 neurônio 1 neurônio 1 neurônio 2 Tente agora capturar a frequência instantânea da rede. Para tal, você deverá utilizar um outro monitor: rate_mon = PopulationRateMonitor(neurons) Plote o resultado em uma terceira linha da figura que você já está plotando. Use algo como: subplot(3,1,3) plot(rate_mon.t/ms,rate_mon.rate/hz)

Exercício 08 Este exercício irá guiá-lo a criar uma pequena rede. Faça as adaptações no código anterior. As simulações aqui devem ser de 1000 ms. Adapte o programa do exercício anterior de forma a ter 10 neurônios. Faremos 5 neurônios excitatórios, 5 inibitórios. Para tal, após criar o grupo de neurônios você pode dividir a rede escrevendo: neuronse = neurons[:6] neuronsi = neurons[6:] Para diferenciar os potenciais iniciais, distribua os potenciais aleatoriamente entre -70 mv e -60 mv: neuronse.v = 'rand()*(threshold-vrest) + vrest' neuronsi.v ='rand()*(threshold-vrest) + vrest' Para conectar sua pequena rede de 10 neurônios, você deverá escrever as sinapses da seguinte forma: syn_ex = Synapses(neuronsE, neurons, on_pre='v += J', delay=10*ms) syn_in = Synapses(neuronsI, neurons, on_pre='v -= g*j', delay=10*ms) syn_ex.connect(condition='i!=j', p = 0.1) syn_in.connect(condition='i!=j', p = 0.1) Isso faz com que os neurônios de ambas populações se conectem com probabilidade p=0.1, mas evita auto-conexões (autapses). Em seguida, calcule a frequência de cada neurônio e a frequência média da rede: freq_single = spike_mon.count freq_global = mean(freq_single) Em qual unidade está o seu resultado? Você acredita que frequência de disparos dos neurônios se altera por interferência das sinapses? Retire as conexões e execute o programa novamente. Compare a frequência de disparos dos neurônios com e sem as conexões. E a da rede?

Exercício 09 a) Os próximos exercícios serão um pouco mais desafiantes computacionalmente. Vamos implementar uma rede muito próxima a rede de Brunel 2000. Ele construiu uma rede com 10.000 neurônios excitatórios, 2.500 inibitórios. Utilize o código anterior e altere seus parâmetros. Além disto, os seguintes parâmetros deverão ser alterados para adaptar com a rede de Brunel 2000: tau = 20*ms n = 12500 vrest = 0*mV delay = 1.5*ms J = 0.1*mV g = 4 refractory = 2*ms threshold = 10*mV vext = 2*(threshold) Assim colocando todas as outras definições de parâmetros no começo da simulação (boas práticas de programação). Observe que o eixo-y na figura de seu artigo (mostrada na apresentação) utiliza vext ao invés da definição R*I que estivemos utilizando. Aqui definimos vext como função do threshold como ele fez. Altere o restante do código, rode uma simulação de 1000 ms e plote somente os 800 ms finais em ambos raster plot e atividade da rede: subplot(2,1,1) plot(spike_mon.t/ms,spike_mon.i,'.',markersize=0.5) ylabel('neuron index') ylim(0,100) xlim(200,1000) subplot(2,1,2) plot(rate_mon.t/ms,rate_mon.rate/hz) xlim(200,1000) b) Tendo a rede implementada, você deve agora escolher parâmetros que criem as atividades do tipo AI, SR e SI slow osc. Observe que esta rede é uma adaptação da rede Brunel 2000 e não uma exata réplica. Para cada comportamento, calcule também a frequência global da rede e observe o que acontece com ela.

Exercício 10 Ostojic 2014 re-utilizou a rede de Brunel 2000 e explorou um novo comportamento assíncrono ao variar o valor de J. Ele cria uma rede homogênea e faz com que os disparos sejam heterogêneos. O comportamento é dominado por inibição (g=5). Altere seu código para que ele crie os dois tipos de comportamentos assíncronos para J=0.1 mv e J=0.8 mv. Você deverá plotar raster plot e atividade da rede para ambos na mesma figura. Isto significa que você fará duas simulações. Utilize o seu próprio julgamento para encontrar a melhor solução para este problema.

Códigos: Exercício 6: Abaixo está uma possível resolução baseada no exercício 6a. Exercício 6b:

Exercício 6c e 6d:

Exercício 7:

Exercício 8:

Exercício 9:

Exercício 10: