🙆♂️ 시작 설정
from neuron import h
from neuron.units import ms, mV
h.load_file('stdrun.hoc')
시작하기 전에 라이브러리들을 import 시켜주고
%matplotlib notebook
주피터 노트북에서 하고 있다면 이 코드도 넣어줍니다.
🙋♂️ 섹션 생성
섹션 = 셀입니다.
셀은 ball과 stick으로 구성되는데 ball은 soma(세포체)이고 stick은 dendrites(수상 둘기) 입니다.
이전에 배웠던 방법으로는 여러 셀을 만들 수 없습니다. 클래스로 정의해서 만들어야 합니다.
class BallAndStick:
def __init__(self):
self.soma = h.Section(name='soma', cell=self)
self.dend = h.Section(name='dend', cell=self)
이렇게 BallAndStick 클래스를 선언하고 Section을 생성해야 합니다. __init__함수는 생성자입니다.
h.toplogy() 함수를 통해서 섹션이 생성되었는지 확인해보면
h.topology()
1.0이 출력되지만 생성된 섹션은 보이지 않습니다.
그 이유는 아직 class만 선언한거지 세포를 만든 것은 아닙니다.
my_cell = BallAndStick()
변수로 해서 생성해주고 h.toplogy() 함수로 확인해보면
이번엔 생성이 된 모습입니다. 그러나 앞에<__main__ .... 0x000...> 부분이 사람 친화적으로 나오지 않아서 불편합니다.
그냥 영어단어만 나오도록 설정을 하려면
class BallAndStick:
def __init__(self):
self.soma = h.Section(name='soma', cell=self)
self.dend = h.Section(name='dend', cell=self)
def __repr__(self):
return 'BallAndStick'
def __repr__부분을 추가해서 BallAndStick이라는 단어가 나오도록 코딩합니다.
결과를 다시 확인해보면
잘 설정되어 나오는 모습입니다. 그러나 또 문제점이 생깁니다.
soma와 dend가 한 세트가 아닌 두 세트가 있다면
네. 구분이 안됩니다. 이를 구분하기 위해서는 다시 class의 내용을 수정해줘야 합니다.
class BallAndStick:
def __init__(self, gid):
self._gid = gid
self.soma = h.Section(name='soma', cell=self)
self.dend = h.Section(name='dend', cell=self)
def __repr__(self):
return 'BallAndStick[{}]'.format(self._gid)
gid라는 개념을 추가하여 애초에 생성할 때 id값을 넣어서 생성하도록 합니다.
my_cell = BallAndStick(0)
my_cell2 = BallAndStick(1)
h.topology()
섹션 생성 후 확인해 보면
인덱스 값이 잘 적용된 모습입니다.
'AI > neuron' 카테고리의 다른 글
[neuron][파이썬] 12. 스타일 정의 - Define stylized geometry (0) | 2022.07.21 |
---|---|
[neuron][파이썬] 11. 섹션 연결 - Connect the sections (0) | 2022.07.21 |
[neuron][파이썬] 09. 결과 저장하고 불러오기 - Saving and loading results (0) | 2022.07.20 |
[neuron][파이썬] 08. 결과 표시 - Plot the results (0) | 2022.07.20 |
[neuron][파이썬] 07. 시뮬레이션 실행 - Run the simulation (0) | 2022.07.20 |