'공부하기'에 해당되는 글 40건

  1. 블로그에 라텍스Latex로 수식 입력하는 방법. (8)
  2. 맥미니 몽고디비 분산 시스템 (5) - Aggregate
  3. 맥미니 몽고디비 분산 시스템 (4) - Replica Set (3)
  4. 맥미니 몽고디비 분산 시스템 (3) - Sharding
  5. 맥미니 몽고디비 분산 시스템 (2) - 클러스터 구축 준비
  6. 맥미니 몽고디비 분산 시스템 (1) - 개요 (2)
  7. 소아 ADHD에서 나타나는 비정상적인 기능적 연결성
  8. Mac OS X 10.8 (ML)에 OpenCV 2.4.x 설치하기
  9. Amazon EC2에서 ec2-user에게 sudo 권한 설정하기 (2)
  10. Integrative Systems Neuroscience Research (2nd Symposium of the IBS) (2)

블로그 관리자 모드에서 <HTML/CSS 편집>을 선택한 다음

아래에 첨부된 텍스트 파일에 있는 코드 전체를 복사해서 

skin.html의 <head>와 </head> 사이에 추가하면 된다.


latex_script.txt


신고

1. Sharding을 위한 Shard key 생성

Sharding을 위해서는 Shard Key를 생성해야 하며, 생성된 Shard Key에는 반드시 인덱스의 생성이 요구됩니다.

$ mongo 192.168.3.2:27017/admin
mongos>
mongos> db.runCommand( {enablesharding : "test"} )  // test db 의 Shard 기능 활성화 
mongos>
mongos> use test
mongos> db.things.ensureIndex( {empno : 1} )  // empno 항목에 대한 오름차순 색인 생성 
mongos>
mongos> use admin
mongos> db.runCommand( {shardcollection : "test.things", key : {empno : 1}} )


2. 테스트 데이터 입력

mongos의 test db에 접속해서 50,000,000건의 pseudo 데이터를 입력하고, 입력된 데이터로부터 aggregate()을 해보겠습니다. 입력하고자 하는 pseudo 데이터는 회사의 고용자들에 대한 정보로서 사원번호, 소속 부서의 번호(0~100까지), 그리고 데이터가 입력된 시간 정보를 포함하고 있습니다. 소속 부서의 번호는 무작위Random 방법 으로 0부터 100까지의 숫자가 할당되며, 데이터가 입력된 후에는 소속 부서별로 몇 명의 인원 이 할당되어 있는지 Map-Reduce 방법을 통해서 계산하는 예제도 시현해 보려고 합니다. 현재의 시 스템 구성에서 데이터를 입력하는데 약 90분 정도 소요되며, 입력된 데이터의 크기는 약 20GB 물리적 공간을 차지합니다.

$ mongo 192.168.3.2:27017/test ← test db에 접속한다 mongos>
mongos> for (var n=10000000; n<60000000; n++) {
                         var deptno = Math.round(Math.random()*100);
                         var added_at = new Date();
                         db.things.insert( {"empno": n, "deptno": deptno, "added_at": added_at} )
              }


3. aggregate() 메써드를 통한 Map-Reduce

MongoDB 2.1.2 이상 버전에서는 내장되어 있는 mapReduce() 메써드 이외에도 aggregate() 메써드를 통해서도 Map-Reduce를 시행할 수 있습니다. 50,000,000건의 데이터에서 소속 부서별로 인 원수를 집계하는 Map-Reduce 계산은 aggregate() 메써드를 이용하면 수분 이면 충분합니다.

$ mongo 192.168.3.2:27017/test   // test db에 접속한다
mongos>
mongos> db.things.aggregate( {$group : {_id : "$deptno", total : {"$sum":1}}} )


신고

1. Replica Sets + Sharding 시스템 구성

대용량 처리를 위한 분산 확장이 가능하고 안전성과 높은 가용성 보장을 위해 다음 그림과 같 이 Replica Sets을 구성하고, 이것을 토대로 Sharding 시스템을 구성할 수 있습니다.

4대의 맥미니를 이용하여 Replica Sets + Sharding 시스템을 구성 하는 것을 설명해 드리고자 합니다. 우선 각각의 노드에 다음과 같이 Config 서버와 Replica Set 서버 가 작동하도록 설정해 줍니다. Replica Set1은 모두 10001번 포트를 사용하고, Replica Set2는 모두 10002번 포트를 사용하며, Replica Set3은 모두 10003번 포트를 사용하도록 설정합니다.

node1: 192.168.3.1

$ mkdir /data/config1 /data/replset1 /data/replset3
$ mongod --dbpath /data/config1 --port 20001 &
$ mongod --dbpath /data/replset1 --port 10001 --replSet replset1 --oplogSize 1000 & 
$ mongod --dbpath /data/replset3 --port 10003 --replSet replset3 --oplogSize 1000 &

node2: 192.168.3.2

$ mkdir /data/replset1 /data/replset2
$ mongod --dbpath /data/replset1 --port 10001 --replSet replset1 --oplogSize 1000 & 
$ mongod --dbpath /data/replset2 --port 10002 --replSet replset2 --oplogSize 1000 &

node3: 192.168.3.3

$ mkdir /data/config2 /data/replset1 /data/replset2 /data/replset3
$ mongod --dbpath /data/config2 --port 20001 &
$ mongod --dbpath /data/replset1 --port 10001 --replSet replset1 --oplogSize 1000 & 
$ mongod --dbpath /data/replset2 --port 10002 --replSet replset2 --oplogSize 1000 & 
$ mongod --dbpath /data/replset3 --port 10003 --replSet replset3 --oplogSize 1000 &

node4: 192.168.3.4

$ mkdir /data/config3 /data/replset2 /data/replset3
$ mongod --dbpath /data/config3 --port 20001&
$ mongod --dbpath /data/replset2 --port 10002 --replSet replset2 --oplogSize 1000 & 
$ mongod --dbpath /data/replset3 --port 10003 --replSet replset3 --oplogSize 1000 &

각 노드별 설정이 끝나면, Replica Set을 초기화해야 한다. Replica Set을 구성할 때 Primary 서버와 여러 대의 Replica 서버로 구성된 환경에서 Primary 서버에 장애가 발생하면 MongoDB는 10초 이내에 다음 Primary 서버가 되어야 할 노드 하나를 선택해 줍니다. 이 경우, 아비타 Arbiter 서버가 활성화 되어 있으면 아비타가 적절한 서버를 선택해 주지만 사용자가 각 서버 에 대한 우선순위를 설정해 둔 경우에는 가장 높은 값을 부여받은 서버가 Primary 서버가 됩니다.

node1 - setting replica set1 (arbiter server: node3)

$ mongo 192.168.3.1:10001/admin MongoDB shell version: 2.2.5 connecting to: 192.168.3.1:10001/admin > db.runCommand( {"replSetInitiate" : {"_id" : "replset1", "members" : [ {"_id" : 1, "host" : "192.168.3.1:10001"}, {"_id" : 2, "host" : "192.168.3.2:10001"}, {"_id" : 3, "host" : "192.168.3.3:10001", arbiterOnly:true} ] } } )

node2 - setting replica set2 (arbiter server: node4)

$ mongo 192.168.3.2:10002/admin MongoDB shell version: 2.2.5 connecting to: 192.168.3.2:10002/admin > db.runCommand( {"replSetInitiate" : {"_id" : "replset2", "members" : [ {"_id" : 1, "host" : "192.168.3.2:10002"}, {"_id" : 2, "host" : "192.168.3.3:10002"}, {"_id" : 3, "host" : "192.168.3.4:10002", arbiterOnly:true} ] } } )

node3 - setting replica set3 (arbiter server: node1)

$ mongo 192.168.3.3:10002/admin MongoDB shell version: 2.2.5 connecting to: 192.168.3.3:10002/admin > db.runCommand( {"replSetInitiate" : {"_id" : "replset3", "members" : [ {"_id" : 1, "host" : "192.168.3.3:10003"}, {"_id" : 2, "host" : "192.168.3.4:10003"}, {"_id" : 3, "host" : "192.168.3.1:10003", arbiterOnly:true} ] } } )

이제 Config 서버를 설정하고 Replica Set을 Sharding으로 구성하는 과정이 남았습니다. 우선 node1, node3, node4 에 설정되어 있는 Config 서버들을 mongos로 연결시켜야 합니다. mongos 프로세스 설정을 위해서 node2에 접속 한 후에 다음과 같은 방법으로 mongos 프로세스를 설정할 수 있습니다.

$ mongos --configdb 192.168.3.1:20001,192.168.3.3:20001,192.168.3.4:20001 --port 27017 --chunkSize 64

이제 node2의 mongos 프로세스에 접속해서 ‘addShard'를 통해서 Replica Sets을 Shard 서버로 등록하면 시스템 구축이 모두 마무리 됩니다.

$ mongo 192.168.3.2:27017/admin mongos> mongos> db.runCommand( {addShard : "replset1/192.168.3.1:10001,192.168.3.2:10001, 192.168.3.3:10001"} ) // add replset1 as shard server mongos> db.runCommand( {addShard : "replset2/192.168.3.2:10002,192.168.3.3:10002, 192.168.3.4:10002"} ) // add replset2 as shard server mongos> db.runCommand( {addShard : "replset3/192.168.3.3:10003,192.168.3.4:10003, 192.168.3.1:10003"} ) // add replset3 as shard server mongos> mongos> use config // Config 설정에서 샤딩과 관련된 사항을 확인할 수 있다 mongos> db.shards.find() // Shard 서버 목록 확인 mongos> sh.status() // Shard 서버의 상태 확인


신고

1. 샤딩Sharding 시스템 구축

MongoDB 샤딩 시스템 구축을 위한 개요도는 다음 그림과 같습니다. 3대의 Config 서버와 4대의 Sharding 서버로 구성된 시스템을 만들어 보려 합니다.


위의 그림과 같은 시스템 구성을 위해서는 각각의 node에 접속하여 아래와 같이 설정하면 샤딩 서버와 Config 서버를 구성할 수 있습니다. Config 서버는 각 Shard 서버에 어떤 데이터들이 어떻게 분산 저장되어 있는지에 대한 Meta Data가 저장되어 있으며 MogoS가 데이터를 쓰고/읽기 작업을 수행할 때 Config 서버를 통해서 처리됩니다. 

in node 1

$ mkdir /data/config1 $ mongod --configsvr --dbpath /data/config1 --port 50001 & $ $ mkdir /data/shard4 $ mongod --shardsvr --dbpath /data/shard4 --port 40001 &

in node 2

$ mkdir /data/shard1 $ mongod --shardsvr --dbpath /data/shard1 --port 40001 &

in node 3

$ mkdir /data/config2 $ mongod --configsvr --dbpath /data/config2 --port 50001 & $ $ mkdir /data/shard2 $ mongod --shardsvr --dbpath /data/shard2 --port 40001 &

in node 4

$ mkdir /data/config3 $ mongod --configsvr --dbpath /data/config3 --port 50001 & $ $ mkdir /data/shard3 $ mongod --shardsvr --dbpath /data/shard3 --port 40001 &

Config 서버는 Sharding 시스템의 필수 구조 중에 하나이고 최소 1대가 요구되며 예기치 못한 시스템 장애로 인해 서비스가 수행되지 못하는 경우를 대배해서 추가로 Config 서버의 설정이 필요합니다. 3대 이상의 Config 서버를 운영하다가 하나의 Config 서버에 장애가 발생하면 나머지 Config 서버는 읽기 전용이 되기 때문에 최소한의 Sharding 시스템 운영이 가능해 집니다.


2. MongoS 프로세스

MongoS는 데이터를 샤드 서버로 분배해주는 프로세스입니다. Application Server에서 실행 가능하고, Config 서버로부터  Meta-Data를 캐시하는 기능을 수행합니다. node1 서버에서 다음과 같이 mongos  프로세스를 활성화 할 수 있습니다.

$ mongos --configdb 192.168.3.1:50001,192.168.3.3:50001 --port 50000 --chunkSize 1

이제 mongos 프로세스에 접속해서 각 Shard 서버를 등록하는 일이 남았습니다.

$ mongo 192.168.3.2:50000/admin mongos> mongos> db.runCommand( {addshard:"192.168.3.1:40001"} ) { "shardAdded": "shard0000", "ok": 1 } mongos> db.runCommand( {addshard:"192.168.3.2:40001"} ) { "shardAdded": "shard0001", "ok": 1 } mongos> db.runCommand( {addshard:"192.168.3.3:40001"} ) { "shardAdded": "shard0002", "ok": 1 } mongos> db.runCommand( {addshard:"192.168.3.4:40001"} ) { "shardAdded": "shard0003", "ok": 1 } mongos> db.runCommand( {enablesharding: "test"} ) // test db의 Shard 기능 활성화

mongodb의 Sharding은 Collection 단위로 수행되며 해당 Collection의 특정 필드(Shard-Key)값을 기준으로 분산됩니다. Sharding을 위해 해당 Shard-Key에는 반드시 인덱스의 생성이 요구됩니다.


3. Sharding 환경 설정 확인

Shard 서버, Config 서버, MongoS 프로세스에 대한 환경설정 작업을 완료 했다면, 다음과 같은 방법으로 정상적으로 설정이 되었는지 확인해 볼 수 있습니다.

$ mongo 192.168.3.2:50000/admin mongos> db.runCommand( {listshards: 1} ) // 등록된 Shard 서버의 IP address와 port 번호 확인 mongos> use config mongos> db.locks.find( {_id:"balancer"} ) // mongos 프로세스 상태 확인 mongos> db.settings.find() // 설정된 chunk 크기 확인 mongos> db.shards.find() // shard 서버 목록 확인 mongos> db.mongos.findOne() // mongos 상태 확인 mongos> db.settings.save( {_id: "chunksize", value: <size>} ) // chunk size 변경


4. Sharding 시스템 구축시 고려사항

MongoDB의 샤딩 시스템을 구축할 때 가장 중요한 요소는 Shard Key 입니다. Shard Key를 얼마나 적절하게 선택했느냐에 따라 운영, 관리 및 MongoDB의 성능이 달라질 수 있습니다. Shard key는 분할(Partition)과 균등 분산(Load Balancing)을 위한 기준이기 때문에 적절한 카디널리티Cardinality를 가진 필드가 선택되어야 합니다. 카디널리티는 조건을 만족하는 데이터의 분산 정도를 나타내는 값으로 전체 데이터 중에서 조건을 만족하는 데이터의 분포가 넓으면 낮은 카디널리티라고 표현하고 분포가 좁으면 높은 카디널리티라고 합니다. 하나 이상의 Field로 Shard key를 구성하는 것도 가능합니다.


5. Chunk Size & Migration 임계값값

초당 발생하는 빅데이터를 여러 대의 서버로 구성된 샤딩 시스템에 저장할 때 하나의 서버에만 데이터가 저장된다면 쓰기 지연 현상이 집중적으로 발생하여 성능 저하 현상이 발생할 수도 있습니다. 이런 경우를 위해 하나의 서버에 저장되는 데이터들을 여러 개의 논리적 구조로 분할 저장해 두었다가 일정한 데이터 양에 도달했을 때 두번째, 세번 째 서버로 분할 데이터의 일부를 이동 저장하게 되는데 이 분할 단위를 청크Chunk라고 합니다. Chunk size는 기본적으로 64MB 단위로 분할되지만 어떤 필드를 Shard Key로 설정했느냐에 64MB 이상 되는 Chunk Size로 분할 될 수도 있습니다. 하지만, 이 크기에 따라 Chunk Migration 횟수와 빈도가 결정되기 때문에 샤딩 하려는 컬렉션의 데이터 양과 도큐먼트의 크기에 따라 적절한 Chunk Size를 결정해야 합니다.

신고

1. 맥미니 클러스터의 구성

MongoDB를 설치하기 위한 맥미니 클러스터의 구성은 다음과 같습니다. 원활한 설정을 위해서 hostname과, ip address를 제외한 설정은 동일하게 하는 것이 좋습니다. (각 node의 user name은 모두 skyeong로 동일하게 설정합니다.)

 Hostname

 IP

 용도 

 제품 성능

 node1

 192.168.3.1 

 Config Server
 Slave Server

 Name: Mac Mini

 CPU: 2.6GHz Inte Core i7

 Memory: 16GB

 HDD: 1TB Fusion Drive

 OS X version: 10.8.3 (mountain lion)

 node2

 192.168.3.2

 Shard Server
 Slave Server

 node3

 192.168.3.3

 Config Server
 Shard Server

 node4

 192.168.3.4

 Shard Server
 Slave Server










2. XQurtz 설치

ssh 등 네트워크를 통해서 원격으로 접속하여 프로그램을 background mode에서 실행시키기 위해서는 XQurtz를 설치해야 합니다. Mac OS를 설치한 후에 아무런 설정 변경을 하지 않았다면, 보안의 문제로 XQurtz가 설치되지 않을 것입니다. 이때는 설정Preference 메뉴에서 'Security & Privacy'의 설정을 바꿔야 합니다. <일반General> 탭에서 'Allow applications downloaded from'을 'Anywhere'로 바꾼 후에 설치를 진행하면 됩니다. XQurtz를 설치한 후에는 재부팅을 권장합니다.

3. MongoDB 다운로드 및 설치

MongoDB의 Sharding 및 ReplicaSet을 구성하기 위해서는 MongoDB(http://www.mongodb.org)를 다운로드 한 후에, 압축을 풀고, /usr/local 로 mongodb-osx-x_86_64-xxx 폴더를 이동합니다. 이동한 후에 mongodb 폴더의 권한은 사용자(user name: skyeong)에게 할당합니다 (sudo chown -R skyeong:staff /usr/local/mongodb-osxox_86_64-xxx). 

$ cd ~/Download $ tar -xvzf mongodb-osx-x86_64-2.2.2.5.tgz # 여기에서는 OS X(64bit)용 2.2.5 버전을 설치함 $ sudo mkdir -p /usr/local/ $ sudo mv mongodb-osx-x86_64-2.2.5 /usr/local $ sudo chown -R skyeong:staff /usr/local/mongodb-osx-x86_64-2.2.5 # 소유권 변경 $ sudo ln -s /usr/local/mongodb-osx-x86_64-2.2.5 /usr/local/mongodb

MongoDB 서버 프로그램(/usr/local/mongodb/bin/mongod)을 실행시키기 위해서는 데이터가 저장될 위치를 지정해 주어야 합니다. 폴더를 생성하고, 폴더의 소유권을 다음과 같이 설정해 줍니다. 

$ sudo mkdir -p /data/ $ sudo chown -R skyeong:staff /data

이제 mongodb가 설치되어 있는 경로를 .profile에서 설정해 주어야 터미널 상의 어떤 경로에서도 mongod와 mongo를 실행시킬 수 있습니다. emacs나 vi 등의 편집기를 이용해서 skyeong 계정의 홈 데렉토리에 있는 .profile 파일의 맨 아랫줄에 다음을 추가해 주면 됩니다. (만약 .profile 파일이 없으면 새로 생성하면 됩니다.)

export PATH=/usr/local/mongodb/bin:$PATH

위와 같은 방법으로 node1, node2, node3, node4를 모두 동일하게 설정해 줍니다.

신고

구글에서 분산컴퓨팅 플랫폼으로 map-Reduce 방식을 제안하면서부터 빅데이터의 저장 및 처리를 위한 기술이 급격하게 발달하고 있습니다. Map-Reduce는 분할-정복 방식으로 대용량 데이터를 병렬로 처리할 수 있는 프로그래밍 모델로, 오픈소스인 Hadoop의 Map-Reduce 프레임워크가 동일한 기능을 제공해 줍니다. MongoDB는 비정형 데이터를 다룰 수 있는 NoSQL 데이터베이스로서, 샤딩Sharding 시스템을 구성함으로써 Map-Reduce 기능을 구현할 수 있습니다.

여러대의 컴퓨터에 데이터를 분할해서 저장하겠다는 큰 포부로 컴퓨터를 여러대 구입하다 보면 예산도 이슈가 되지만, 컴퓨터를 쌓아둘 공간이 있는가? 에 대해서도 고민하지 않을 수 없습니다. OS X 기반의 맥미니를 사용한다면 기존의 40대 랙타입 PC를 설치 할 수 있는 공간에 160대의 맥미니를 설치 할 수 있으니 공간 활용도 측면에서 엄청난 이득을 볼 수 있습니다. MongoDB에서 분산처리를 하기 위해 필요한 샤딩과 리프리카셋ReplicaSet을 구성하여 데이터를 안정적으로 분산 저장하고 복제할 수 있는 방법을 소개해 드리고자 합니다.  

1. 샤딩Sharding

빅데이터 환경은 초당 몇 만 건 이상 되는 수 많은 데이터를 빠른 시간 내에 수집하고 저장해야 하며 때에 따라서 정보를 분산-집계하여 사용자가 원하는 통계 정보로 가공할 수 있어야 합니다. 이러한 시스템 환경을 구축하기 위해서는 효과적인 데이터의 분산 저장 및 처리 기술이 필요한데, MongoDB에서는 이것을 샤딩Sharding 시스템이라고 합니다. 샤딩은 여러 대의 서버를 통해서 데이터를 분산처리 하여 빅데이터를 효율적으로 저장하고 관리하는 기능을 제공해 줍니다.

2. 복제Replica와 복제셋ReplicaSet

초당 몇 만 건 이상의 데이터에 대한 읽기/쓰기 작업이 박생하는 빅데이터 환경에서는 예기치 못한 시스템 장애로 인한 데이텅 유실이 생길 수 있습니다. 하나의 서버에 데이터가 입력/수정/삭제되었을때 동일한 구조를 가진 또 다른 서버에서 자동으로 동일한 데이터의 입력/수정/삭제가 이루어 진다면, 메인 서버에 장애가 발생하더라도 복제 서버를 이용하여 메인 서버를 빠르게 복구할 수 있을 것입니다. 리프리카와 리프리카셋 기능은 데이터의 백업을 통해 안정성을 보장하기 위한 방법입니다.


신고

This posting is based on the journal review "Abnormal Functional Connectivity in Children with Attention-Deficit/Hyperactivity Disorder by Dardo Tomasi and Nora D. Volkow."

주의력결핍및과잉행동장애(Attention-Deficit/Hyperactivity Disorder, ADHD)는 다음과 같은 특징을 보인다.

  • 주의력 결핍과 과잉/충동적인 행동 양상일 보인다.
  • 동기부여 장애가 동반된다는 인식이 증가되고 있다.
  • 뇌의 도파민 신경전달물질 분비에 손상이 있다.

ADHD는 PET연구에서 reward-motivation pathway (midbrain, caudate, and ventral striatum)의 도파민 신경전달이 비정상적인 것으로 나타났다. reward-motivation pathway의 결함은 주의력 결핍과 낮은 동기부여와 관련이 있다 [1,2]. 전두엽피질의 도파민 부족은 '주의집중장애'를 일으킨다고 알려져 있다. 

도파민은 대체로 억제성 신경전달물질이기 때문에, 도파민 시냅스의 활동을 증가시키는 약물들은 다른 많은 뉴런들의 활동을 감소시키고 여러 뇌 부위에서의 전체적인 활동을 감소시킨다. 뇌의 전체적인 활동을 감소시키는 약물이 어떻게 각성과 활동의 증가 및 집중력 향상을 이끌어 내는지 의아할 것이다. 이에 대한 한가지 설명은 도파민의 활동이 높아지면 뇌의 '배경잡음'이 대부분 감소되고, 따라서 신호 대 잡음비가 증가된다는 것이다. -생물 심리학(제6판, 시그마프레스) 중-

또한, resting state fMRI 연구에서는 inferior frontal and superior parietal cortices, cingulum, and cerebellum 등의 영역에서 BOLD 신호의 low frequency fluctuation (LFF) 값이 갑소된 것으로 밝혀졌다.

그렇다면 ADHD 환자의 parietal cortex 영역과 anterior cingulum 영역에서 LFF가 감소한 것을 신경병리학적 측면에서 어떻게 이해할 있을까? [3]

  • parietal cortex 영역에서의 LFF 신호 감소는 ADHD 환자들에게서 executive-attention 기능이 떨어져 있기 때문으로 이해할 수 있다.
  • 또한, reward-motivational network에서 중요한 역할을 수행하는 anterior cingulum 영역의 LFF 감소는 ADHD 환자들이 보상과 동기부여와 관련된 기능을 제대로 수행하지 못함으로 해석할 수 있다.

Tomasi and Volkow는 ADHD에서 나타나는 비정상적인 functional connectivity density (FCD)가 reward-motivational (ventral striatum and orbito-frontal cortex), attention (parietal cortex), and executive (dorsal cingulate) 영역들과 관련이 있을 것이라는 가정하에 몇가지 분석을 수행했다.

연구 결과 중에 관심있게 본 것은, 약물에 한번도 노출되지 않은 (medication naive) ADHD 환자의 경우에 OFC/insula and ventral striatum 영역의 short-range FCD가 정상인 집단 보다 높다는 것이다. 하지만, 약물치료를 받은 ADHD 환자와 정상인 집단간의 OFC/insula와 ventral striatum 영역의 short-range FCD는 차이를 보이지 않았다. 저자들은 이것을 통해서 'ADHD 치료를 위한 stimulant medication이 reward-motivation 영역의 short-range FCD를 회복시키는 역할을 수행한다'고 주장하고 있다.

임상에서 사용되는 중추신경자극제(Medication Stimulant)는 단기적으로 dopamine 등 신경전달물질을 활성화 시키고 ADHD에 흔히 수반되는 주의 산만함, 과잉 활동과 충동성 등을 감소시키고, 집중력, 기억력, 학습 능력이 전반적으로 좋아진다고 알려져 있다.


References:

  1. Volkow N, Wang G, Kollins S, Wigal T, Newcorn J, Telang F, et al. (2009): Evaluating dopamine reward pathway in ADHD: Clinical implications, JAMA 302: 1084-1091.
  2. Volkow N, Wang G, Newcorn J, Kollins S, Wigal T, Telang F, et al. (2011): Motivation deficit in ADHD is associated with dysfunction of the dopamine reward pathway. Mol Psychiatry 16:1147-1154.
  3. Rubia K, Halari R, Cubillo A, Mohammand A, Brammer M, Taylor E (2009): Methylphenidate normalises activation and functional connectivity deficits in attention and motivation networks in medication-naive children with ADHD during a rewarded continuous performance task. Neurophamocology 57:640-652.


신고

Mac OS X 10.8에 Open CV를 설치하기 위해서는 몇가지 준비해야할 사항이 있습니다.

우선 필자가 OpenCV 를 build한 환경은
Xcode
 4.6.2 (4H1003)이상에 'Command Line Tools'가 설치되어 있는 상태입니다.

OpenCV 설치를 위해서 먼저 설치되어야 하는 라이브러리들은 다음과 같습니다.
- mp3lame, facc, faad, ffmpeg 


mp3lame 설치

curl -L -o lame-3.99.5.tar.gz http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz/download 
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5 
./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64"
make
sudo make install
cd ..
 


facc 설치

curl -L -o faac-1.28.tar.gz http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.gz/download
tar xzvf faac-1.28.tar.gz
cd faac-1.28
./configure --disable-dependency-tracking CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" make
sudo make install
cd .. 


faad 설치

curl -L -o faad2-2.7.tar.gz http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7/faad2-2.7.tar.gz/download
tar xvzf faad2-2.7.tar.gz 
cd faad2-2.7
./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64"
make
sudo make install
cd ..


ffmpeg 설치

curl -O http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.gz
tar xzvf ffmpeg-0.11.1.tar.gz 
cd ffmpeg-0.11.1
./configure --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-shared --enable-pic --disable-mmx --arch=x86_64
make
sudo make install
cd ..


OpenCV 2.4.5 설치

curl -L -o OpenCV-2.4.5.tar.bz2 http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.2/OpenCV-2.4.5.tar.bz2/download
tar xvzf OpenCV-2.4.5.tar.bz2
cd OpenCV-2.4.5


여기에서 그냥 make 를 할 경우에 오류가 생기게 됩니다. 
오류를 피하기 위해서는 다음과 같이
OpenCV-2.4.5/modules/highgui 폴더 안의 CMakeLists.txt 파일을 수정 하면 됩니다.

CMakeList.txt 파일의158번째 줄 "if(HAVE_FFMPEG)" 바로 위에 아래의 내용을 Copy & Paste 합니다.

if(APPLE)
       list(APPEND HIGHGUI_LIBRARIES ${BZIP2_LIBRARIES} -lmp3lame -lfaac -lbz2)
endif(APPLE) 

이제 다음의 순서에 따라서 OpenCV-2.4.5 설치를 마무리 하시면 됩니다^^

cd OpenCV2.4.5 (OpenCV설치폴더)
mkdir build cd build cmake -G "Unix Makefiles" ..
make
sudo make install 


원문 출처: http://kimoppa.tistory.com/3

신고

Amazone EC2 instance를 생성하면,

자동으로 ec2-user가 생기게 된다. 하지만, 비번을 설정해 줘야 하는데.. 그렇게 하려면 root의 비번을 알아야 한다.

AWS EC2에 접속한 후에

~> sudo su -

를 입력하면, root 계정으로 바뀌는데... 이때

~> passwd ec2-user

를 통해서 default 계정인 ec2-user에게 password를 할당해 주고,

~> vi /etc/sudoers 

를 입력한 후에, 에디터 창이 뜨면

-----------------------------------

root    ALL=(ALL)    ALL

ec2-user    ALL=(ALL) ALL

-----------------------------------

을 추가해주면, ec2-user에게 root 권한이 부여된다.

추후에 작업은

ec2-user의 계정에서

~> sudo command

를 통해서, 모든 루트 권한의 명령어를 실행할 수 있음.


신고

제 2차 기초과학연구원 심포지엄이 한창 진행중이다.

다양한 분야의 우수한 연구역량을 가진 분들이 새로운 연구단장으로 선정되기 위해서 경쟁중인 가운데,

오늘은 Systems Neuroscience 분야의 심포지엄이 성남 파스퇴르 연구소에서 열렸다.



오늘 발표를 해 주신 네 분의 연사들의 발표에 대한 개인적인 소견을 몇자 적어본다.


Speaker 1: Seong-Gi Kim (U of Pittsburgh)

(Title: Functional Brain Mapping: Fron Neural Activity To Hemodynamic)

김성기 교수님께서는 Functional Brain Mapping을 위해서 microscopic level에서부터 macroscopic level까지 통합전인 연구를 진행해야 한다고 주장하셨다. visual area의 columnar organization에 대한 연구 결과를 소개해 주시면서, 현재 BOLD 신호가 갖고 있는 공간 해상도의 한계를 극복할 수 있는 방법으로 Cerebral Blood Volume의 측정을 제안했다. 조금 아쉬웠던 부분은, 다양한 scale에서의 뇌기능 매핑 연구의 중요성을 피력하셨지만, 정작 micro-level과 macro-level에서의 뇌연구를 어떻게 연계하여 연구가 가능한지에 대해서는 많이 다뤄지지 않은것 같아서 좀 아쉬웠다.



Speaker 2: Robert Turner (Max Planck Institute for Human Cognitive and Brain Science)

(Title: In-vivo Submillimetre MR Microscopy of Structure, Functional and Connectivity in Human Brain: Some Implications for Neuroimaging Research)

터너 교수님 발표 내용을 뇌에서 인출해 내지 못하는걸 보면, 너무 지루했거나... 나의 관심을 끌지 못했기 때문인것 같다.



Speaker 3: Ralph D. Freeman (UC, Berkeley)

(Title: Neurometabolic coupling in the central visual pathway)

프리만 교수님은 BOLD 신호의 initial deep 현상에 대해서 깊이 있는 연구를 진행하셨다. 현재, BOLD 신호에서 나오는 initial deep 현상은 뇌의 국소적인 영역의 neural activity가 발생하면, 순간적으로 oxyhemoglobin의 양이 줄어들게 되서,  oxy/deoxy 의 비율이 낮아지고, 이것이 BOLD 신호를 감소하게 한다는 설이 설득력 있게 받아들여지고 있지만, 이것에 대해서 신경생리학적 기전에 대한 정확히 이해가 된것 같지는 않다. 현재까지 BOLD 신호에서의 negative peak (initial deep)에 대해서 연구가 많이 이루어 지지 못했던 까닭은... fMRI로 전체 뇌영역을 영상화 하려면, 보통 2초 정도의 inter volume interval이 필요한데.. initial deep을 관찰하기 위해서는 적어도 500ms 이하의 시간 해상도가 필요하다. 전체 뇌영역을 cover하면서, 시간해상도가 500ms 정도로 fMRI 를 찍을 수 있다면, cognitive task에 대해서도 initial deep 에 대한 연구를 확장할 수 있을 것 같다는 생각이 들었다.



Speaker 4: Winrich Freiwald (The Rockerfeller University)

(Title: Understanding cortical networks: an integrated functional magnetic resonance imaging approach)

개인적으로 프레이왈드 교수님의 발표가 제일 인상적이었다. 키가 2미터쯤 되시는 거인이 발표하고 있는 모습을 어찌 기억하지 못할수 있는가? 프레이왈드 교수님은 주로 원숭이를 대상으로 얼굴과 사물을 인식하는데 중요한 역할을 수행하는 영역을 찾고, 여기서 찾은 여러 영역들에 침습적인 전기자극을 가했다. 이러한 자극을 가할때, 동시에 신경활동이 나타나는 영열을 찾음으로써, 열굴인식과 관련된 Temporal regions에서의 네트워크 지도르 만들 수 있었고, 또한 얼굴인식과 관련된 뇌 영역들 각각에 침습적으로 electrode를 찔러서 neural firing을 측정했다. 얼굴인식과 관련된 영열이 여러 부분이 있었는데, 어떤 영역은 모든 얼굴이 나오기만 하면 neuron이 firing했고.. 어떤 영역의 뉴론은 얼굴의 옆모습이 보일때만 firing했다. 

이 발표를 들으면서, 그럼 과연 이 연구를 인간에게로 확장할 수 있을까? 우선, 인간을 대상으로 연구를 진행하려면 침습적인 방법을 모두 비 침습적인 방법으로 바꿔야 가능할텐데... 과연 비 침습적인 방법으로 특정 영역의 neural firing을 특정할 수 있을까? 의문이 들고, 국소적인 영역에 자극을 가해야 하는데... TMS나 tDCS를 통해서 아주 국소적인 영역에 자극을 가하는 것이 가능한가? 어쩌면... MR-HIFU를 이용한다면 가능할지도 모른다는 생각이 든다.




아무쪼록, 우리나라의 Systems Neuroscience분야가 한단계 도약시킬 수 있는 분이 연구단자응로 선정되기를 기대하며...

신고