2018년 7월 29일 일요일

진공관 앰프 개선을 위한 다음 구상

SMPS(switching mode power supply)는 가정용 교류 전원에서 전자기기용 직류를 만들어내는 보편적인 장치로 자리잡았다. 노트북 컴퓨터, 휴대폰 충전기, 전화기, LED 등기구 등 직류 전원이 필요한 대부분의 기기는 효율이 좋고 경량인 SMPS를 사용한다. 220 V의 상용 전원을 트랜스포머를 이용하여 적절한 수준의 전압으로 낮추고 대형 캐패시터를 통해 평활을 하는 기존의 전원장치에 비해서는 훨씬 가볍고 열도 적게 발생한다. 다만 고급 오디오 기기에서 SMPS를 사용하는 것에 대해서는 아직 회의적인 시각이 많다고 한다. 왜냐하면 주파수가 매우 높은 스위칭 노이즈를 만들기 때문이다. 이 잡음이 가청 주파수를 훨씬 상회하는 것이라서 문제가 없다는 사람도 있고, 그렇지 않다는 사람도 있다.

이번에 Ebay에서 구입하여 배송을 기다리는 물품은 바로 진공관 앰프를 위한 SMPS이다. 가정용 교류 전원을 공급하면 250 V 0.12 A 및 6.3 V 4.5 A의 직류 전원을 공급한다. 제품의 이름에서 가리키듯이 6V6(위키피디아 Radiomuseum 오디오파트 자료실)정도의 싱글 엔디드 앰프에서 사용하기 적당한 수준이다.



매우 표준적인 6V6 SE 앰프인 소리전자 '돌쇠'의 회로도를 소개한다(링크). 여기에서 필요로하는 B+ 전압의 범위에 대략 잘 맞는다.


만약 이번에 만든 6N1 + 6P1 SE 앰프에 SMPS가 별다른 문제없이 쓰일 수 있다면 앰프의 크기와 무게를 줄이는데 크게 기여하게 될 것이다. B+ 전원과 히터용으로 크고 무거운 트랜스포머를 무려 두 개나 쓰고 있었는데, 이를 대체할 수만 있다면 알루미늄 덕트를 활용한 보다 작은 샤시를 꾸며서 앰프를 재조립하면 된다.

직접 감아서 만든 R-core 출력 트랜스포머(5 kOhm : 8 Ohm)도 부족한 점이 많다. 제이앨범의 개발자가 제시한 수치보다 실수로 훨씬 부족하게 에나멜선을 감았기 때문이다. 권선비는 25:1로 맞추었으나 감은 수가 부족하여 인덕턴스도 마찬가지로 낮게 나올 것으로 생각된다. 권장되는 권선 횟수는 보빈 하나에 대해서 1800:72인데 1차를 1050회 감고 말았다.

만약 내가 진공관 앰프를 하나 더 만들게 된다면 이번에는 푸시풀(PP) 타입으로 해 보고 싶다. SE냐 PP냐의 논란은 무척 오래 되었고 각자 나름대로의 장단점이 있다고 한다. 그러나 충분한 출력을 갖는 범용적인 용도라면 PP가 더 낫지 않을까 하는 생각이 든다. SE는 만들기 쉽고, 부품이 적게 들고, 진공관의 측정 수치가 같도록 맞추는 노력을 하지 않아도 되고, 특정 음악(예를 들어 소편성의 클래식 음악)에서 좀 더 '예쁜 소리'를 낸다고 한다. 그런데 인터넷에서 찾은 글을 보면 과거 진공관 앰프 전성시대의 대부분의 하이파이 오디오용 앰프는 PP였고 SE는 라디오나 TV 정도의 용도로만 쓰였는데 이상하게 최근에 들어서 SE 앰프의 인기가 높아졌다고 한다. 이러한 견해가 100% 옳은지는 경험이 적은 나는 잘 모르겠지만 모든 음악을 책상 앞에 설치한 스피커로부터 가깝게 들을 것은 아니니 현대의 저능률 스피커도 충분히 구동할 수 있는 PP 앰프에 조금 더 관심이 가고 있다. 같은 출력이라는 SE용 출력 트랜스보다 PP용 트랜스가 더 작아도 된다는 것도 내 마음을 움직이고 있다.

SE와 PP의 특성에 대한 자료를 인터넷에서 찾아보았다.

[유튜브] Harmomics: Even vs Odd / Valve vs Solid Sate Amp Sound
[실용오디오] Single ended와 Push pull 진공관 앰프의 장단점
[실용 오디오] 진공관 앰프는 싱글이 PP보다 음질이 우수하다는 것과 삼극관이 5극관보다 좋다는 것이 사실인지요?
[서병익 오디오 기술칼럼] 싱글 앰프와 푸시풀 앰프의 음질 특성
Single Ended vs. Push Pull: The Fight of the Century - Eddie Vaughn

독서 기록 - <허리 아래 고민에 답변 드립니다> 외 두 권

기록적인 더위로 전국이 마치 용광로에 들어가 있는듯한 나날이 계속되고 있다. 온대지방 대한민국에서 섭씨 37도라니. 주간 날씨 예보를 봐도 나아지기는커녕 다음 주는 더 더워질 것이라고 한다. 집에 에어콘을 설치한 이래 이렇게 자주 작동하는 것도 처음이다. 이런 날씨에는 집에 틀어박혀서 책을 읽는 것이 즐거움이다. 요즘 들어서 바뀐 독서 습관이 있다면 2 주 간격으로 다섯 권씩의 책을 빌려오면서 꼭 소설을 하나씩은 보려고 노력한다는 점이다. 실용서와 자연과학·사회과학 서적만 너무 편식하던 습관에서 벗어나서 정보의 습득보다는 '읽는 즐거움' 자체를 좀 더 누리려는 것이다.


허리 아래 고민에 답해 드립니다

우에노 지즈코 지음 | 송태욱 옮김. 인생의 고민은 대부분 허리 아래에서 온다고 한다. 일본 아사히신문의 상담란 문답을 엮은 책.

더 나은 사람들의 역사

아리 투루넨 지음 | 최성욱 옮김. "성공과 오만이 만들어낸 갑질사회의 흥망사".

지팡이 대신 권총을 든 노인(소설)

원제: Don't ever get old.
대니얼 프리드먼 저 | 박산호 역. 스웨덴 작가 요나스 요나손의 <창문 넘어 도망친 100세 노인>을 연상하게 하는 번역본 제목은 원제를 너무 앞서간 느낌이다. 전직 경찰인 87세의 버크 샤츠는 활동은 눈부시다. 믿을 것은 권총 한 자루뿐. 꽤 거친 장면을 묘사하는 범죄 소설이다. 서평은 좋은 편인데 과연 최종적으로 응징을 당하는 범죄자가 이렇게 많은 살인을 저지를 필요가 있었는지는 의문스럽다. 주인공 버크 샤츠는 유대인으로서 2차 대전 당시 포로 수용소의 책임자였던 나치 친위대 소속의 지글러로부터 폭행을 당한 바 있다. 친구가 임종하면서 죽은줄로만 알았던 지글러가 나치의 황금을 빼돌려서 달아났다는 사실을 실토하였고, '데킬라'라는 별명의 손자와 함께 이를 찾는 모험을 나선다.

샤츠? 나치? 유태인? 7월에 읽었던 로맹 가리의 소설 <징기스 콘의 춤>(독서 기록 링크)에서도 비슷한 이야기가 전개된다. 1인칭 시점으로 진행되는 이 소설의 주인공 전직 유대인 희극배우 콘은 SS 대원 샤츠에게 총살을 당한 뒤 '유령'이 되어 줄곧 그와 함께 한다. 두 소설에서 공교롭게도 주요 인물의 이름이 같다. 물론 그것은 국문으로 썼을 때 그런 것이고, 원어로는 어떤지 모르겠다.
 
사실은 오늘 이 책들을 전부 반납하고 또 한 무더기의 책을 빌려왔다. 기자 출신 소설가 장강명이 한국에서 소설가를 발굴하는 독특한 시스템인 문학상 제도를 비판하고 그 대안을 제시한 르포 <당선, 합격, 계급>을 다 읽었으나 이 책에 대한 독서 기록은 다음번 포스트로 미루려고 한다. 매우 인상깊게 읽었던 소설 <한국이 싫어서>가 바로 장강명의 2015년 발표작이었다.

2018년 7월 26일 목요일

Pairwise SNP distance의 계산 방법에 관하여

[1] Pairwise SNP difference와 [2] pairwise SNP distance 중 어느 것이 맞는 용어일까? R에서 어떤 데이터 매트릭스의 row 사이의 거리(distance)를 계산하는 것은 흔히 있는 일이다. 내가 알기로는 이때에 특별히 단위는 정의되지 않는다. 만약 pairwise SNP distance의 단위를 basepair로 나타낸다면, [1]과 [2]는 같은 의미가 될 것이다.

한 bacterial species에 속하는 균주 수십개의 유전체를 일루미나 플랫폼으로 시퀀싱했다고 하자. 이어서 나서 균주 사이의 유전적 거리 혹은 상관관계를 알기 위해서 SNP를 이용한 후속 분석을 계획한다고 가정하자. 가장 적당한 방법은 최적의 reference genome sequence를 선정하여 이를 NCBI 등에서 입수한 뒤, 여기에 raw sequencing read를 매핑한 다음 SNP을 발굴하는 것이다. 즉 모든 샘플에 대해서 i) read mapping과 ii) reference에 대한 SNP 발굴이라는 작업을 반복해야 한다. 이러한 일련의 작업을 수행하는 매우 편리한 도구로서 나는 요즘 Torsten Seemann의 snippy(GitHub 링크)를 즐겨 사용한다. Raw sequencing read는 없고 sample의 contig sequence만 존재한다면 매릴랜드 대학에서 개발한 Harvest suite(링크)가 적절할 것이다. Snippy도 contig를 input로 받을 수 있지만, 250 bp 길이의 single end read를 contig로부터 만들어서 mapping을 하는 간접적인 방법을 사용한다.

오늘의 글에서는 snippy를 사용한 SNP 발굴 및 샘플 사이의 비교에 관한 사항을 정리하고자 한다. 먼저 reference genome sequence에 sequencing read를 매핑하는 단계부터 검토해 보자. 다음 그림은 이해를 돕기 위하여 그린 것이다. 검정으로 표시된 reference 위에 3 종의 샘플에서 유래한 sequencing read를 매핑하였다. Reference genome coordinate를 기준으로 하여 read가 붙어서 alignment가 생성된 곳을 파랑색 상자로 표시하였다. 회색 상자는 인접한 샘플을 1:1로 비교하여 얻어지는 공통적인 alignment block을 표시한 것이다. 각 샘플마다 차이가 존재하므로 mapping이 된 곳은 당연히 서로 이어지지 않는 여러 개의 상자로 나타날 것이다. block C는 모든 샘플에서 공통적으로 존재하는 영역을 의미한다. 단, 각 파랑색 블록이 실제로 해당 샘플의 유전체 내에서도 이러한 순서로 존재한다고 보장할 수는 없다는 점을 유의해야 한다. 왜냐하면 샘플의 유전체에서 얼마든지 inversion 등이 일어날 수 있기 때문이다. 게다가 recombination에 의해서 더욱 복잡하게 문제가 꼬이는 것은 오늘의 글에서는 다루지 않는다.



Snippy는 각 샘플(sequence reads)에 대해서 각각 실행해야 한다. 다음은 하나의 샘플에 대한 분석 사례이다. 결과 파일은 --outdir 로 지정한 디렉토리 안에 저장된다. 이는 어디까지는 reference와 sample 1번 사이의 1:1 비교에 해당한다.

snippy --cpus 16 --outdir sample1 --R1 sample1_1.fastq --R2 sample2_2.fastq
그 다음으로 할 일은 무엇일까? 모든 샘플에서 계산된 SNP table을 다 불러들여서 SNP alignment를 만드는 것이다. 출력 파일의 포맷은 nexus fasta phylip maf clustalw 등이므로 이를 이용하여 phylogenetic tree를 작성하면 된다. SNP alignment를 만드는 프로그램은 snippy 패키지를 구성하는 프로그램 중 하나인 snippy-core이다. 다시 위의 그림으로 돌아가보자. 각 샘플 read가 reference 위에 매핑하는 곳은 완벽하게 겹치지 않는다. snippy-core는 공통적인 alignment, 즉 core site로부터 염기서열을 뽑아내는 것이다.
snippy-core --prefix core sample1 sample2 sample3...
Core site 안에서도 모든 샘플이 동일한 염기를 갖는 monomorphic site가 있는가 하면 일부 샘플만 다른 polymophic or variant site도 있다. snippy-core로 만들어진 core.aln에서 각 샘플 유래 서열의 길이를 측정해 보면 당연히 그 reference genome sequence의 크기에 훨씬 못미친다. 그런데 결과물 중에 core.full.aln이는 것도 보인다. 이것은 무엇인가? Reference sequence의 크기와 동일한 alignment로서 align이 되지 않은 영역, 즉 zero coverage region or deleted region을 '-'으로 채운 것이다. 위 그림을 기준으로 설명하자면 빨강 블록을 연결하는 두꺼운 회색수평선을 '-'으로 채웠음을 의미한다. 실제로 full alignment 파일을 열어보면 ATGC와 '-' 이외의 문자도 보일 것이다. 이것 때문인지는 모르겠으나 core.full.aln을 FastTree로 처리하여 tree를 그리면 간혹 이상한 그림이 나오기도 한다. core.full.aln에 수록된 다양한 문자형태에 대한 설명은 snippy 웹사이트에서 가져온 설명으로 대체한다.
  • 대문자: same as the reference
  • 소문자: different from the reference
  • -: zero coverage in this sample or a deletion relative to the reference
  • N: low coverage in this sample (based on --mincov)
  • X: masked region of reference (from --mask)
  • n: heterozygous site in the sample (has GT=0/1/ in smps.raw.vcf)
다음으로 알아볼 것은 snp-sites(GitHub 논문)라는 유틸리티이다. 이것은 multi-FASTA alignment에서 SNP를 추출하는 도구로서 snippy의 구동을 위해 꼭 필요하다. 논문을 보면 snippy의 개발자인 Torsten Seemann이 공저자로 포함되어 있기도 하다. snippy-core가 만들어낸 core.aln을 snp-sites로 처리하면 monomorphic site가 제거되는 것으로 이해하면 될 것이다.

마지막으로 오늘의 주제인 snp-dists(GitHub 링크)에 이르렀다. 이 유틸리티 역시 Torsten Seemann의 작품이다. 3 개의 sample에 대한 SNP 분석을 했다는 것은 reference에 대한 sample의 SNP 분포를 알아냈다는 뜻이다. 그러면 sample 1번과 sample 2번을 비교했을 때 SNP의 분포는 어떻게 되는가? 엄밀하게 말하자면 여기에는 두 가지 방법이 있다. 첫번째는 위 그림에서 공통적으로 존재하는 alignment(맨 아래의 빨강색 박스)를 이용하는 것으로서 snp-dists도 이에 해당한다. 다시말해서 core.aln 파일에서 샘플 사이의 모든 pairwise SNP를 재계산하는 것이다.

두번째 방법은 내가 실제로 어제 사용한 방법이었는데 결론적으로 말해서 바람직하지는 않은 것으로 여겨진다. 모든 샘플에 대해서 snippy를 다 실행해 둔 다음, 결과 디렉토리를 전부 두 개씩 짝을 지어서(Perl의 Algorithm::Combinatorics를 사용함) snippy-core를 돌린 것이다. 사용한 샘플의 수가 98개이니 여기에서 2 개씩을 모두 조합하면 C(98, 2) = 4753 개의 command line에 해당하는 snippy-core를 실행한 셈이다. 얼마든지 parallel하게 실행할 수 있는 일이었지만 아주 단순하게 순차적으로 command line을 실행하면서 분석이 끝나기를 기다렸다. '과연 이렇게 하는 게 맞는 것일까?'하는 의구심과 함께... 화면으로 출력되는 standard error를 파일로 리다이렉션한 뒤 다음 라인을 전부 찾아내어 parsing을 하였다.
[14:46:48] Found 3568 core SNPs from 6612 variant sites.
 내가 원하는 것은 matrix를 만드는 것이 아니었다. 98 개의 샘플(strain)은 몇 개의 clade로 나눌 수 있는데, 동일 clade에 속하는 strain 간의 SNP distance가 다른 clade에 속하는 것과의 비교에서 나온 수치보다 현격하게 적다는 것을 보이는 것이 목적이었다. 지리한 계산이 다 끝나고 요즘 쓰고 있는 논문에 해당 수치를 기입하고 나서야 snps-dists라는 유틸리티를 발견하게 되었다. 이것에 core.aln(FASTA) 파일만 input으로 제공하니 순식간에 SNP distance matrix를 작성하였다. 98개의 snippy 결과 디렉토리를 두 개씩 전부 조합한 command line을 만들어서 훨씬 많은 시간이 걸려서 4700회가 넘는 snippy-core를 실행했던 내 자신이 한심하게 느껴졌다.

그러면 snp-dists가 만든 매트릭스는 실제 어떻게 생겼나? ooffice --calc로 파일을 열어보았다. 그런데 각 셀에 적힌 수치가 snippy-core 수작업으로 계산한 것보다 약간 작다. 왜 그럴까? 그 이유를 곰곰이 생각해 보았다. 다시 위의 그림으로 돌아가자. 스크롤하기가 불편하니 아래에 다시 불러다 놓고 글을 마저 적도록 하겠다.


snp-dists는 alignment file을 입력물로 사용한다. 이는 위 그림에서 맨 아래쪽의 빨강 박스를 기준으로 작동한다는 것을 의미한다. 즉 모든 샘플에서 공통적으로 mapping된 영역에 대해서만 pairwise SNP distance를 계산한다는 것이다. 그러면 내가 어제 했던 '비능률적인 방법'은 어떻게 돌아가는 것인가? sample_1과 sample_2의 SNP 분석물 1:1 비교를 생각해 보자. 위 그림에서 두 샘플의 read alignment 중 공통적인 영역, 즉 회색으로 표시된 부분에서 SNP를 찾아낸 것이다. 당연히 빨강 박스에서 찾아낸 것보다 더 많은 SNP가 발견되었다. 그 다음으로 sample_2와 sample_3의 snippy 결과를 snippy_core로 처리한 경우를 생각해 보자. 마찬가지로 두 샘플 사이를 연결하는 회색 영역에서 SNP를 찾은 것이다. 

이상에서 열거한 두 가지 방법 중에서 어느 것이 옳은가? 나도 모른다. 사용하기에 편한 방법을 찾으라면 당연히 snp-dists이다. 모든 샘플에 공통적으로 존재하는 영역에 대해서만 SNP를 추출하여 그 숫자를 계산하므로 보다 객관적일 것이라는 생각도 든다. 하지만 샘플 대 샘플의 1:1 비교라는 측면에 집중한다면 내가 실행했던 다소 비능률적인 방법도 나름대로 타당하다고 생각한다. 특정 샘플의 쌍에서만 존재하는 공통 alignment 영역(위 그림에서 초록색으로 표시한 부분)에도 주의를 기울인다는 것이 이 방법의 중요한 특징이다. 이 영역은 core.aln에서는 당연히 취급되지 않는다.

2018년 7월 25일 수요일

독서 기록 - 스스로 치유하는 뇌(The brain's way of healing)

기록에 남을만한 뜨거운 날씨가 연일 계속되고 있다. 예년에 비하면 훨씬 자주 에어콘을 틀어서 다음달 전기요금이 심히 걱정이 된다. 그렇다고 해도 독서는 멈출 수 없다. 이번에 빌려온 책 중에서 가장 분량이 많으면서도 강한 인상을 남긴 책이라서 별도의 블로그 기록으로 남기고자 한다.

먼저 의학의 아버지인 히포크라테스(기원전 460-375)가 회복에 관하여 남긴 말을 가지고 글을 시작하련다.
수명은 짧고, 의술은 길며, 기회는 순식간에 지나가고, 경험은 의심스럽고, 판단은 어렵다. 의사는 자신이 해야 할 일을 하는 것은 물론이요, 환자, 간병인, 외적 여건도 맡은 바 일을 하도록 만들어야 한다.



  • <스스로 치유하는 뇌(The brain's way of healing)>
  • 부제: 신경가소성 임상연구를 통해 밝혀낸 놀라운 발견과 회복 이야기
  • 노먼 도이지 지음 | 장호연 옮김
흔히 뇌(혹은 신경)는 한번 손상을 입으면 다시 회복되지 않는 것이 정설로 되어있다. 상처가 아물고 부러진 뼈가 붙는 일반적인 치유 과정이 신경세포에는 없다는 뜻이다. 요즘 줄기세포를 이용하여 질환을 치료하려는 움직임이 있지만, 신경줄기세포가 원하는 위치에 들어가서(특히 그곳이 뇌 속이라면?) 분화하기를 기대하는 것은 대단히 어렵다. 이 책의 저자인 노먼 도이지는 여러 나라를 다니면서 외상성 뇌 손상, 척수 손상, 뇌졸중, 근긴장 이상, 파킨슨병, 학습장애에 해당하는 질환을 앓는 사람에게 새로운 임상 신경가소적 기법(신경가소성: neuroplasticity)을 적용하여 정상에 가깝게 치유한 많은 사례들을 발굴하여 소개하고 있다. 이 중에서 어떤 것은 대체의학으로 여겨지는 방법에 의존하는 것도 있고, 구 소련에서 개발되어 서구에는 아직 소개되지 않은 것들도 있다.

저자가 소개하는 치유 사례들은 일반화여 적용하기가 아직은 어려운, 대단히 이례적인 일화에 불과하다고 비판할 수도 있다. 그러나 저자는 에필로그(547쪽)에서 다음과 같이 말한다.
라마찬드란은 이렇게 설명한다. "신경학에서는 시간의 검증을 견뎌낸 주요 발견들의 대부분이 사실상 한 건의 병력과 입증에 바탕을 두고 이루어졌다고 해도 지나치치 않다." 우리는 폭발 사고로 쇠막대가 전두엽을 관통한 철도 논동자 피니어스 게이지(위키피디아 영문 국문)를 통해 전두엽의 기능에 대해 알게 되었다...HM이라는 환자를 통해서는 기억에 대해 배웠다.  
사용하지 않으면 뇌는 퇴화한다. 만약 뇌졸중으로 한 팔을 쓰지 못하게 되었다고 가정하자. 마비된 팔을 움직이려고 반복적으로 노력하다 안 되면, 작동하지 않는다고 '학습'한 뇌는 정상적인 팔만 사용하게 된다고 한다. 멀쩡한 팔에 깁스를 하여 쓰지 못하게 만들고 마비된 팔을 강도 놓게 점증적으로 훈련하면 심지어 수십년이 지나서도 기능이 돌아오기도 한다는 것이다. 다시말해서 남은 신경세포는 재배선을 통해서 원래 상태와 가까운 기능을 하게 된다는 것이다. 이를 위해서는 운동과 적절한 시각적·청각적 자극이 대단히 중요하다.

이번 책을 통해서 알게된 모세 펠덴크라이스(Moshe Feldenkrais, 1904-1984)의 재활요법도 놀라웠다. 유도의 철학에 입각해 정신과 육체의 상관성을 파악하여 의사들도 포기한 부상을 스스로 회복시키게 되었다는 것이다(국내 기사 링크).

치료용으로 쓰이는 저강도 레이저(FDA에서는 2002년 승인)를 머리가 아닌 목과 척추 아래쪽에 쏘여서 뇌손상을 치료한다는 것도 획기적인 일이다. 텔아비브 대학의 Shimon Rochkind와 Uri Oron은 저강도 레이저가 손상된 말초신경 및 중추신경의 재생을 촉진한다는 선구적인 연구를 진행하였다. 심지어 패혈증에 걸린 환자의 정맥에 광섬유를 삽입하여 632 nm 파장의 레이저를 쏘였더니 백혈구가 극적으로 감소하고 이제까지 듣지 않던 항생제가 듣기 시작하여 회복했다는 사례도 있다. 서양에는 지금도 알려져있지 않지만, 러시아 연구자 Meshalkin과 Sergievskii가 저강도 레이저를 혈액에 조사하는 치료를 소개한 뒤 카자흐스탄에서는 수술에서 흔하게 사용된다고 한다.

PoNS®라는 이름으로 알려진 휴대용 신경조절 자극기(Portable Neuromodulation Stimulator)도 흥미롭다. 353쪽을 보면 위스콘신-매디슨 대학의 한 연구소에서 입에 넣으면 다발성경화증 증상에 도움이 되는 장비를 개발했다는 것으로 PoNS의 소개를 시작한다. 책에서 소개한 개발자의 이름을 구글링하여 2010년도의 기사를 찾았다("Healing the brain through the tongue" 링크). 사이트를 방문하면 책에서도 소개된 Ron Husmann이 이 기계를 물고 있는 사진을 볼 수 있다. 왜 하필이면 '혀'인가? 혀는 몸에서 가장 예민한 기관 중 하나로서 뇌 전체를 활성화하는 지름길이기 때문이다. PoNS는 현재 Helius Medical Technologies에서 임상 시험이 진행 중이라고 한다.

이외에도 블로그에 전부 담기 어려운 다양한 신경가소성 이용 치유법의 사례를 소개하고 있다. 이 책을 읽으면서 서양식 의학의 사고방식에 젖어서 약물을 사용하고, 잘라내고, '나 자신 이외의 것'에사 문제의 원인을 찾는 것이 아니라 모든 것이 전부 연결되어 있다는 통합적인 시각에서 자가 치유의 가능성을 모색하는 것이 중요함을 알게 되었다. 새로운 발견은 늘 저항을 낳는다. 토마스 쿤이 주장했듯이 정상 과학(normal science)가 수립되면 새로운 주장의 등장을 억누른다.

Bruce West는 이라는 책에서 과학자를 도약자(leaper-새로운 패러다임을 만들어 나머지 사람들을 뛰어넘음), 모색자(creeper-기존의 모델로 예측되지만 아직 확립되지 않은 분야의 잠재적 발견을 탐구), 전수자(sleeper-자신과 남들이 앞서 배운 것을 다음 세데로 넘겨주고, 지식을 조직화하고 범주화함), 그리고 수호자(keeper-잘 설명된 현상의 실험들을 개선하고, 다듬고, 기존의 패러다임 내에서 세세한 사항들을 보강함)로 나누었다. 대부분의 과학 활동은 패러다임 안에서 정상 과학에 대하여 작업하는 뒤쪽 세 유형의 과학자에 의해서 이루어진다. 저자는 의학에도 이러한 유형이 존재하며 혁신이 수용되는 방식에 영향력을 행사한다고 하였다. 나는 이 네 가지의 유형 중에서 어떤 과학자인가?

2018년 7월 19일 목요일

AliExpress에서 주문한 물건의 뒤늦은 배송

이 부품의 이름은 직경 6 mm의 축을 끼울 수 있는 Rigid Flange Coupling이다. 발음은 '커플링'이지만 커플이 나누어 끼는 반지를 뜻하는 것은 물론 아니다. 두 축을 연결하여 회전 동력을 전달하는 용도의 기계 요소이다. 원래는 출력 트랜스 권선기를 만들기 위해 주문한 것인데 너무 오랫동안 오질 않아서 다른 방법으로 회전판을 고정하고 말았다. 5월 23일에 주문을 한 것이 7월 19일에 왔으니 거의 두 달이 걸렸다. 총 17 차례의 AliExpress 구매 이력(최초는 2014년) 중에서 가장 늦은 배송이다. 그래도 다행인 것은 단 한 번도 물품이 오지 않은 적은 없었다. 전부 DIY를 위한 전자 혹은 기계쪽 부품이었다.


역시 AliExpress에서 지난 3월 무작정 진공관 앰프 보드를 구입하면서 즐겁고도 고단한 자작의 길을 지금까지 걸어왔다. 공구에 손을 다치거나 고압에 감전이 되는 일도 다반사였다. R-코어를 사용하여 출력트랜스(싱글)를 직접 감았다는 것도 처음에는 기대하지 않았던 수확이었다. 이렇게 완성한 앰프는 실제 음악감상을 하기에 충분한 수준의 음질을 제공하지만 문제는 컴퓨터 케이스를 개조하여 만든 섀시가 너무 허름하고 지나치게 크다는 것이다.

R-코어를 고정하는 방법을 고안하고 아울러서 좀 더 아름다운 섀시를 가공하여 재조립을 하는 것을 올 하반기의 목표로 잡았다. 강기동 박사님의 웹사이트(My Audio Lab)에서 본 사진이 힌트를 제공할 것으로 기대한다. 배관용 새들과 긴 볼트를 이용하면 갭을 사이에 둔 코어 반쪽씩을 고정하는 것이 가능하다. 이렇게 조립한 트랜스를 섀시에 움직이지 않고 고정하는 방법은 그 다음 숙제이다. 가능하다면 신호 발생기와 오실로스코프를 이용하여 주파수 특성과 출력을 측정하는 방법까지 익히고 싶다.

출처 http://www.my-audiolab.com/KDK_Column/63164




2018년 7월 18일 수요일

[하루에 한 R] 텍스트에 색깔 입히기

R에서 colors() 함수를 실행시키면 총 657 개의 색깔 단어가 나타난다. "black", "yellowgreen"과 같이 영단어로 표현 가능한 색상이 657 가지라는 뜻이다. RGB 또는 hex code를 사용하면 더 많은 종류의 색깔을 표현할 수 있다. 다음 PDF 파일을 컬러프린터로 인쇄하여 책상 옆에 붙여두면 쓸모가 많을 것이다. 우리식 콩글리시 표현으로는 '컨닝페이퍼'에 해당한다.

R colors cheatsheet (PDF 파일)
R Colors by Name (PDF 파일)
R Color Tables 색상표를 만드는 R 코드 소개(일단 실행해 보는 것을 추천!)
[참고용] 256 Colors - Cheat sheet

수만 가지의 색을 모니터 혹은 이미지 파일로 표현할 수는 있지만 텍스트에 입힐 수 있는 색은 한정적이다. 다음의 예를 보자.

노랑 글씨  노랑 바탕 위의 검정 글씨

왼쪽은 글자 자체를 노란색으로 쓴 것이다. 뭐가 있다는 것은 알겠는데 마우스로 긁어서 반전을 시키지 전에는 무슨 정보를 담고 있는지 알 수가 없다. 그러므로 실제 텍스트에 색을 입혀서 미리 확인을 해 보는 것이 좋을 것이다. 이를 위해서 사용할 수 있는 매우 적당한 함수가 있으니 그것이 바로 textplot()이다.

R colors 자료에서 스무 개 정도의 색상 단어를 뽑은 뒤 다음의 코드를 실행하여 실제로 표현해 보았다. 실제로 바꿀 것은 cols 벡터와 ncol 파라미터뿐이다.

cols = c("red","aquamarine3","blue","brown","cadetblue",
         "chartreuse","chocolate","darkgoldenrod","darkmagenta","darkgreen",
"khaki4","grey","black","cyan","purple",
"yellowgreen","firebrick","hotpink4","limegreen","salmon3")
mat = cbind(name=cols, t(col2rgb(cols)), hex=col2hex(cols))
textplot(mat,col.data=matrix(cols, nrow=length(cols), byrow=FALSE, ncol=5))

결과를 보자.

왠지 탁하고 칙칙한 느낌이 들지 않는가? 나의 색상 선택 센스가 영 꽝이라는 것을 알겠다. 미적 감각이라는 것은 타고 나야 하는 것이라서 훈련으로 나아지는 데에는 한계가 있다.

My analog life - 기계식 손목시계, 만년필, 진공관 앰프

오늘 아침에 찍은 사무실 책상위의 모습이다.


필름을 사용하는 카메라까지 곁들이면 더욱 완벽한 조합일 것이다. 장식장 안에 몇 대의 카메라와 교환용 렌즈가 있지만 마지막으로 필름을 넣어본 것이 언제인지 모르겠다. 사진과 관련한 생태계가 너무나 크게 변해서 이제는 필름을 구하기도, 현상하기도 어려워졌다. 반면 진공관은 아직도 NOS(new old stock) 상태의 것을 구할 수 있고 심지어 인기있는 관은 아직도 만들어지고 있다.

아이패드를 처음 갖게 되던 시절, 이를 늘 들고다니면서 업무 및 일상에 관련한 기록을 할 수 있게 되리라 생각했었다. 에버노트와 드롭박스를 깔아서 사무실에서 아주 쉽게 파일을 공유하여 어디를 가든 쉽게 열어보고 작업을 할 수 있던 시절이 잠깐 있었다. 그러나 보안 이슈가 불거지면서 공공기관에서는 클라우드 서비스를 쓰는 것이 막히고 말았다. 그러나 더욱 중요한 이유는 이러한 기기를 일상적으로 쓰는 생활이 몸에 잘 배지 않는다는 것이다. 이메일 확인이나 잠깐씩 필요한 검색은 스마트폰으로 충분하고, 출장을 갈 때에는 아예 노트북 컴퓨터를 들고 가게 되니 말이다. 아이패드는 집에서 유튜브를 들을 때에만 가끔 사용하며, 평소에는 다이어리에 손으로 쓰는 글씨를 더 선호한다. 그래서 아직도 만년필을 쓰고 있다.

지금 쓰는 파커 벡터 스탠다드는 서랍에 남은 잉크 카트리지를 다 소모할 때까지만 쓰려고 생각 중인데 하루에 글씨를 쓰는 양이 그다지 많지 않아서 그 날이 언제 올지는 도저히 모르겠다. 내 손에는 참 맞지 앉는 만년필임에도 불구하고 워낙 오래 쓰다보니 이젠 그런대로 익숙해졌다.

작년 11월에 구입한 파커 IM 프리미엄 배큐매틱 핑크(블로그 링크)는 너무나 쉽게 잉크가 말라서 며칠간 쓰다가 포기하고 세척하여 책상 서랍 속에 잘 넣어두었다. 서울 을지로에 있다는 만년필 연구소에 한번 보내볼까?

요즘 관심을 갖는 만년필은 모나미의 153 네오 만년필이다. 소비자가격은 25,000원 정도? 화사하고 가벼운 본체의 색깔과 잉크 카트리지의 다양함이 큰 무기인 것으로 보인다. 모나미의 베스트셀러 필기구인 153 볼펜의 정신을 계승했다고나 할까. 입문용 만년필의 최강자인 라미 사파리와 경쟁해서 이겼으면 하는 것이 개인적인 바람이다. 가격과 품질면에서 3천원 정도에 팔리는 '프레피'와 경쟁할 위치는 절대로 아니다. 프레피와 경쟁해야 할 제품은 '올리카'. 실제 구입하여 사용한 경험으로는 닙이 약간 거칠다.

모나미 153 네오 만년필

오늘 언급한 아날로그 라이프용 아이템 중에서 가장 사치를 부릴 수 있는 것은 기계식 손목시계(주로 오토매틱 와인딩)이다. 가격의 상한선은 상상을 초월하지만, 의외로 싼 오토매틱 시계도 많다. 스마트폰 때문에 시계를 한번도 찬 적이 없는 사람을 간혹 보게 된다. 이와 반대로 최첨단 전자기기인 스마트 워치를 착용하는 사람도 주변에 적지 않다. 이삼일 차지 않으면 시간을 다시 맞추어야 하고 시각을 알려주는 것 이외에는 아무런 기능이 없는 '불편한 물건'임에도 불구하고 국내의 고급 시계 시장은 해마다 성장하기만 한다. 내가 즐겨서 차는 기계식(오토매틱 와인딩) 시계는 일제 오리엔트의 저가 라인인 three star(혹은 tristar, 삼성이네...)의 모델이다. 순전히 인체의 움직임을 동력으로 하여 태엽이 저절로 감긴다는 것이 묘한 일체감을 준다. 손목을 흔들 때 로터가 가볍게 돌아가는 느낌이 좋다. 남자라면 당연히 강렬한 인상의 다이버 시계에 끌리지만 손목이 굵지 않아서 요즘 추세의 큰 시계를 어울리게 차는 것은 어렵다.

진공관 앰프에 입문한 것은 2014년 설 무렵이었다. 올해 봄부터 약 반년이 지난 지금까지는 남이 만든 것이 아니라 내가 직접 만드는 진공관 앰프에 푹 빠져있었다. 그 덕분에 집과 사무실 모두 몇 개의 앰프를 놓고서 골라서 들을 수 있는 환경을 갖추게 되었다.

모든 것을 자동화된 장치(혹은 서비스)에 맡기지 않고 내가 직접 할 수 있는 여지가 있다는 것, 그것이 아날로그의 진면목이 아니겠는가?

2018년 7월 16일 월요일

독서 기록 - <너는 검정> 외 다섯 권


주말에 바쁜 일이 있어서 독후감도 제대로 쓰지 못하고 연체까지 되고 말았다. 제목과 저자만 간단하게 기록한다.


  • 너는 검정: 김성희 만화. 탄광촌을 배경으로 한 실화에 가까운 만화.
  • 우리가 몰랐던 노동 이야기(부제: 하종강의 노동 인권 교과서): 하종강 지음.
  • 어쨌든 미술은 재밌다(부제: 그림을 어렵게 느끼는 입문자를 위한 5분 교양 미술): 박혜성 지음.
  • 거짓말 상회(부제: 거짓말 파는 한국사회를 읽어드립니다): 인문학협동조합 기획, 김미선 김현호 고영 공저. 자기계발, 사진, 그리고 음식의 거짓말 3부로 이루어진 책이다.
  • 공유경제: 마화텅, 장샤오롱, 쑨이, 차이슝산 공저, 양성희 옮김. 우리나라의 공유경제 현황은 다른 나라에 비하면 매우 빈약한 수준이다. 인터넷을 통한 중고 거래를 공유 경제의 하나로 소개하였는데, 네이버 <중고나라>에서 벌어지는 일들을 생각하면 과연 바람직한 사례인지 모르겠다.
  • 징기스 콘의 춤: 로맹 가리 지음, 김병욱 옮김. 우리나라에서는 올해 처음 번역된 소설이다. 나치 에 의해 이미 사살된 유태인 희극배우 콘은 자기를 죽인 SS 대원 샤츠 주변을 맴도는 유령이 된다. 충격적이고 난해한 소설. 

2018년 7월 12일 목요일

A newly coined word, vesiculomics

세포막이 어떠한 이유로 소포 형태로 떨어져 나와서 돌아다니는 것을 extracellular vesicle(EV)이라 한다. 요즘 진단 마커로 관심을 끌고 있는 exosome도 EV의 한 형태이다. EV에는 RNA와 단백질 등 다양한 물질이 들어 있으며, 이를 다른 세포에 보내어 신호를 전달하는 용도로 사용한다고 여겨진다.

그람음성 세균 역시 outer membrane으로부터 vesicle을 만들어 낸다. 이를 OMV(outer membrane vesicle)이라 한다. 세균은 여기의 자기 단백질을 아무렇게나 넣는 것이 아니라 어떤 목적을 위해 선별된 단백질을 넣는다고 한다. 즉 virulence 혹은 immunomodulatory role을 할 수 있도록 OMV를 잘 설계하여 만든다는 뜻이 되겠다. 감염성 세균은 virulence factor를 여기에 넣어서 host cell로 전달하기도 한다.

Extracellular vesicle에 포함된 단백질 혹은 핵산 전체, 즉 기존의 omics 분석법으로 다룰 수 있는 물질 전체를 vesiculome이라 한다면, 이를 연구하는 기법은 vesiculomics라고 하면 되지 않을까? Exosomics라는 용어도 있지만 여기에서의 '-ome'은 흔히 이야기하는 genome, transcriptome, proteome의 ome과는 다르다. 물론 어원적으로는 같지만 말이다.

그러나 vesiculomics의 '-omic'는 여타 오믹스란 용어에서 사용하는 것과 같은 수준의 말이다. 오늘 구글을 검색해 보니 vesiculomics라는 용어는 전혀 검색되지 않는다.


Vesiculome이라는 용어가 들어간 학술자료는 간혹 보이지만 정작 vesiculomics는 보이지 않는다는 뜻이다. 그러면 이 용어는 내가 세계 최초로 쓴 것이 된다. vesicuome, 즉 vesicle에 들어있는 모든 정보물질의 총합을 연구하는 것이 vesiculomics다. 새로운 '-ome'이 정의되었다면 그에 따르는 '-omics'도 당연히 정의되는 것 아니냐고 주장할 사람도 있을 것이다. 하지만 genome과 genomics는 엄연히 수십 년의 시간 차를 두고 만들어지지 않았는가?

Vesiculomics는 내가 2018년 7월 12일 세계 최초로 만든 신조어임을 선포한다!

2018년 7월 11일 수요일

쇼스타코비치의 교향곡 10번 2악장





어제(2018년 7월 10일) 대전시립교향악단의 <마스터즈 시리즈 7>에서 쇼스타코비치의 교향곡 10번을 감상하였다. 단역 백미는 2악장. 겨우 4분 정도에 지나지 않는 짧은 악장임에도 불구하고 그 임팩트는 대단하였다. 유튜브에서 이 곡을 찾아서 소개한다. 가장 최근에 달린 댓글(3년 전)에는 악장이 헤비 메탈의 기원이라는 내용도 있었다.

According to my music theory text books this movement was the origination of heavy metal. [Madison Sawyer]
당시의 억압적이고 암울하던 소련의 사회 분위기를 그대로 전하고 있는 듯한 무겁고도 빠른 곡이었다. 듣는 내내 악당이 등장하는 영화의 한 대목을 연상케 하였다. 다스 베이더나 타노스에게 어울리는 주제라고나 할까? 이 곡은 스탈린의 초상화라는 말도 있다.



격정적으로 오케스트라를 이끌던 객원지휘자인 로베르토 밍크주크는 악장 사이마다 손수건을 꺼내어 땀을 닦았다. 연주가 끝나고 거듭되는 박수 속에 지휘지는 입을 열었다. '쇼스타코비치의 교향곡을 연주하고 나서 앵콜에 응하는 것은 어렵지만... 2악장을 한번 더 연주하겠습니다.'



1부에서는 17세 소년 피아니스트 네이슨 리가 차이콥스키의 피아노 협주곡 1번을 연주하였다.



공연 관람을 마치고 주차장을 나서는 길은 말 그대로 조용한 '대혼란'이었다. 둔산대공원 주차장이 6월부터 유료화가 되면서 주차난이 해소되었다고는 하지만, 공연이 끝나고 수백명의 차량이 한꺼번에 나가면서 주차비를 내기 위해 장시간 줄을 서야 하는 문제는 미리 대비를 했어야 한다. 주차장을 빠져나가는데 무려 한 시간이나 걸렸기 때문이다. 주말의 에버렌드나 롯데월드도 아니고 평일 밤 9시 반이 넘은 시각의 대전에서 이런 일이 벌어진다는 것을 상상할 수나 있을까? 이럴거면 차라리 주차장을 운영하지 말고 대중교통으로 공연을 보러 오라고 홍보하는 것이 낫다.



시에서 만든 공공 시설을 이용하면서 사용료를 내는 것에 대해 누가 뭐라 하겠는가. 다만 공연이 있는 날의 특수 상황을 반영하여 출차 시 오래 시간이 걸리는 것에 대한 대책 마련이 필요하다고 본다.



2018년 7월 10일 화요일

6N1 + 6P1 싱글 앰프의 자작 마무리

손바닥만한 class D 앰프와 SMPS만 있으면 좌우 채널에서 각각 50 와트가 넘는 출력을 뽑아낼 수 있는 오디오 앰프가 즐비함에도 불구하고 진공관 앰프를 만드는 이유는 무엇일까? 부품도 비싸고, 생산 중단된 구관은 점점 구하기가 어려워지며, 고전압을 다루어야 하기에 감전 사고도 잦다. 섀시 가공도 해야 하고, 전력 소모와 발열도 심하다.

그럼에도 불구하고 사서 고생을 하는 이유는 내 손으로 직접 만드는 즐거움과 보람이 있기 때문이다. 진공관은 임피던스 매칭을 위해 출력 트랜스를 필요로 한다. 이는 섀시를 제외하면 부품값에서 가장 많은 비용을 차지한다. 그런데 흥미롭게도 '직접 만드는 것이 가능한 유일한 부품'이기도 하다. 따라서 출력 트랜스를 만드는 것을 진공관 앰프 제작 전 과정 중 백미로 꼽는 사람도 적지 않다.

3월말에 착수하여 알리익스프레스에서 앰프 보드와 진공관으로 구성된 키트를 구입하고, 전원트랜스는 주문제작하되 출력트랜스는 기성품 전원트랜스를 개조하는 것으로 일단 앰프 제작을 시작하였다. 못쓰는 컴퓨터 케이스를 가공하여 섀시를 삼았다. 트랜스 개조를 하면서 손에 상처가 나기도 하고, 220 V를 잘못 다루어서 PCB의 동박을 날려버리기도 하면서 결국은 소리를 내는데 성공한 것이 5월 중순. 그 다음 도전은 R-코어에 직접 에나멜선을 감아서 출력트랜스를 만드는 일이었다. 이를 위해서는 권선기를 먼저 만들어야 했다. 다음의 사진은 권선기의 최종 버전으로서 1차 코일을 감을 때 쓰던 것과는 구조가 조금 다르다.




지난 주말, 낑낑대면서 출력트랜스를 완성하였다. 임피던스비는 5 kOhm : 8 Ohm이다. 리드선을 처리하는 좀 더 합리적인 방법과 코어를 맞물리는 법, 그리고 다 만들어진 트랜스를 섀시에 고정하는 방법을 좀 더 고민해야 한다.


이를 드디어 사무실에서 사용하던 앰프에 장착하기에 이르렀다. 전원선을 뽑아두었지만 평활용 캐패시터에 충전된 전기로 인하여 감전이 되는 바람이 충격이 컸다.




전원트랜스의 코어를 개조하여 출력트랜스로 사용하던 것과 비교하면 분명히 넓은 대역을 편안하게 재생하는 것으로 느껴진다. 측정기를 사용하면 객관적으로 어떤 점이 개선되었는지를 확실히 할 수 있을 것이다. 그러나 아무려면 어떠랴? 나의 손으로 직접 앰프를 조립했다는 보람은 음질의 개선으로 얻는 이익을 훨씬 상회하기 때문이다. 특이 전체 과정 중에서 출력트랜스를 만드는 일이 가장 재미있었다. 이 일이 가능하도록 많은 정보와 도움을 주고 R-코어를 제공한 곳은 제이앨범이다. 그곳에는 제작 진행 과정에 따른 기록을 상세하게 남겨 두었다.

진공관 앰프를 만들고자 인터넷의 여러 카페를 기웃거리는 사람에게 용기를 주는 사람이 있는가 하면 그런 일 하지 말라고 권하는 사람도 있다. 제이앨범은 철저히 전자에 해당하는 곳이다. 이론과 실제를 미처 몰라도 좋으니 일단 부딛혀 보라는 제안을 하는 곳이다. 진공관 앰프 자작을 권하지 않는 사람의 심정은 무엇일까? 너무 고생스러우니까? 아니면 기득권을 지키기 위해? 나도 모른다.

어느덧 보유한 진공관 앰프는 총 4 대가 되었다(하나는 헤드폰 앰프). 이제 이론을 소홀히 할 수는 없는 시기가 되었으니 DHT 사운드의 기술포럼 - 자작교실의 글들을 꼼꼼하게 읽어봐야 되겠다.

만약 앞으로 새로운 시도를 해 보고자 한다면? SMPS를 이용하여 B+ 전압을 만드는 것에 관심이 있다.

Anvi'o의 사소한 문제점 개선하기

지난주부터 Anvi'o(Advanced analysis and visualization platform for 'omics data)에 관심을 갖고서 설치 및 테스트를 진행하고 있다. 설치와 사용이 쉽고 project page에서 풍부한 문서를 제공하고 있어서 초심자도 무난하게 사용할 수 있다. 오늘은 실제 부딛혔던 사소한 문제와 그 해결책에 대한 경험을 정리하고자 한다. 돌이켜보니 그렇게 큰 좌절은 아니었었다.

설치 방법

Homebrew, conda, 직접 설치, 혹은 docker 등 몇 가지 방법 중에서 원하는 것을 택하면 된다. 나는 처음에 conda를 이용하여 아주 쉽게 설치를 했으나 프로젝트 페이지에서 설명한 몇 가지 스크립트가 아예 깔리지 않은 것을 발견하였다. 왜 이런 일이 발생했는가? 그 이유는 다음과 같다.

  • Anvi'o의 실행에는 python 3이 필요하다. 이것을 미처 모르고 python 2.7 기반의 conda environment에 Anvi'o를 설치했던 것이다.
  • 프로젝트 페이지에 설명된 기능은 최신판인 v5.1을 기준으로 한 것이다. 예를 들어 function enrichment analysis와 ANI 분석 같은 것은 예전 버전에는 구현되지 않았다. 아쉽게도 Anvi'o의 bioconda 패키지는 v4.0이다.
다른 workflow가 잘 도는 것을 확인했음에도 불구하고 ANI 계산용 스크립트인 anvi-compute-ani가 아예 존재하지 않았다. 왜 그런지 탐구해 보니 위에서 나열한 두 번째 이유에 의한 것이었다. 그래서 docker image를 사용한다면 번거로운 설치 과정을 거치지 않고도 anvi'o의 모든 기능을 사용할 수 있을 것으로 생각했었다. 그러나...

Anvi'o docker image의 사소한 문제

Docker의 정의를 내린다면 "an open platform for distributed applications for developers and sysadmins"라 할 수 있다. Docker가 어떻게 돌아가는지를 깊게 이해하지 못해도 개발자가 배포한 이미지를 가져와서("docker pull <이미지 이름>") 컨테이너를 생성하는 것("docker run <이미지 이름>")으로 실행한다는 것 정도만 기억하면 족하다. 도커 컨테이너는 이미지가 실행된 상태를 뜻한다. 사실은 문제 해결을 위해서는 이보다 조금은 더 깊은 지식이 필요하다.

$ docker run --rm -p 8080:8080 -v /home/merenbey/my_data:/my_data -it meren/anvio:latest
:: anvi`o ::  / >>>

위와 같이 실행하여 anvi'o의 최신판 v5.1의 이미지를 실행하였다. 기본적인 pangenome 분석은 해 놓았고, 이어서 anvi-compute-ani을 실행하여 ANI 분석을 시도하였는데 다음과 같은 에러가 발생하는 것이었다.
Config Error: PyANI returned with non-zero exit code, there may be some errors. please check the log file for details.
 실제 ANI의 계산은 PyANI(average_nucleotide_identity.py)에 의해 이루어진다. 왜 이런 에러가 발생하는 것일까? PyANI의 로그 파일을 열어보았다. vim 등의 기본 에디터가 없어서 좀 불편한다.


pandas가 없다고? pip를 이용하여 설치된 python library를 확인하려는데 pip도 없다. 이걸 어떻게 해야 하나? 컨테이너 안에서 apt-get, pip... 이런 것을 깔아야 되나? 컨테이너에서 빠져나오면 이런 설정 사항은 다 없어지는데? 약간의 삽질을 하다가 이런 문제가 생긴 원인을 발견하였다. Anvi'o에 딸린 모든 python 스크립트는  python 3을 기반으로 한다. 따라서 pip3는 존재한다. /usr/local/bin/anvi-compute-ani를 열어보면 첫 줄(흔히 shebang line이라 부름)에는 다음과 같이 씌여있다.
#!/usr/bin/python3
그러나 Anvi'o 컨테이너의 default python interpreter는? 커맨드라인에서 python -V을 치면 Python 2.7.12가 출력된다. 그렇다면 /usr/local/bin/average_nucleotide_identity.py의 shebang line은?
#!/usr/bin/env python
그렇다. PyANI 스크립트는 시스템 기본 버전인 python 2.7의 위치에서 pandas를 찾으려고 애를 쓰는 것이다!  pip3 freeze를 해 보면 python 3.x의 pandas가 잘 존재함을 확인할 수 있다. PyANI가 python3을 사용해서 돌게만 만들면 모든 문제가 해결될 것으로 생각하여 average_nucleotide_identity.py 스크립트를 편집하려 했는데, 문제는 docker container에는 편집기로 쓸만한 것이 없다는 것이다. vim을 설치하려니 apt-get update부터 시작해야 한다. 만약 호스트 터미널로 되돌아가면 컨테이너 내에 설치했던 프로그램은 전부 사라질 것이다. 이를 유지하는 방법은 나중에 생각해 보기로 하자.

다소 번거롭지만 vim을 설치하여 /usr/local/bin/average_nucleotide_identity.py의 첫 줄을 #!/usr/bin/env python로 수정한 다음 anvi-compute-ani를 실행해 보았다. 이번에는 아무런 에러가 없이 잘 진행이 되었고 ani-display-pan으로 그 결과를 확인하였다. 웹브라우저를 연 뒤 Layer 탭으로 가서 ANI 관련 사항을 체크한 뒤 그림을 다시 그려야 ANI heatmap이 보인다. Layer는 anvi'o의 시각화에서 매우 중요한 개념이므로 관련 문서를 찾아서 철저히 읽어봐야 되겠다. 데이터 파일이 있는 디렉토리에 shebang line을 수정한 average_nucleotide_identity.py 스크립트를 준비해 둔 다음 컨테이너 내에서 이를 /usr/local/bin/ 위치에 복사하는 것도 일종의 꼼수가 되겠다.

average_nucleotide_identity.py을 고치기가 귀찮다면 /usr/bin/python3를 /usr/bin/python이란 이름으로 바꾸어도 된다. 어차피 python 2.7은 필요가 없고, 컨테이너를 나가면 아무런 흔적을 남기지 않기 때문이다.

Docker 내부에 프로그램 설치하고 재활용하기

다음 웹페이지에서 힌트를 얻었다. 두번째의 PDF 파일은 무작정 따라하면서 기본 개념을 익히는데 도움이 될 것으로 생각한다. 그런데 여기에서 지시한대로 따라하면 docker import가 잘 되지 않는다. 세번째 자료도 매우 잘 작성되어서 도움이 많이 될 것이다.

[pyrasis.com] Docker 기본 사용법 추천!

docker run으로 Anvi'o 컨테이너를 생성하여라. 그 안에서 apt-get update, apt-get install vim을 하여 필요한 프로그램을 설치하고 /usr/local/bin/average_nucleotide_identity.py도 편집을 하여라. 그 다음 별도의 터미널 창에서 docker ps를 하여 현재 돌고 있는 Anvi'o 컨테이너의 ID를 확인한다. 이제 docker commit 명령을 실행할 단계이다.
# docker commit e47956140b67 my_docker_image
Image의 이름으로 쓸 수 있는 문자에는 한계가 있다. 오직 [a-z0-9-_.]만 허용이 된다. 이렇게 하여 나만의 docker image를 만든 것이다. 이를 실행하려면 docker run [options] my_docker_image를 하면 된다. 그 안에서는 vim도 실행이 되고, average_nucleotide_identity.py도 변경된 shebang line을 유지하고 있다.

아직도 docker run --rm의 의미를 이해하지 못하고 있다!

--rm 옵션은 컨테이너가 종료되었을 때 이를 자동으로 제거한다. 이 옵션이 없으면 현재 실행 중이 컨테이너의 변경 상태(패키지 설치, 파일 생성 및 변경 등)가 다음번에 docker run을 실행할 때에도 유지될 것 같은데 실제로는 그렇지 않다. 내가 아직도 docker에 대한 기본 이해가 부족한 것이다.

2018년 7월 6일 금요일

물레야 물레야

이두용 감독의 1984년도 영화 <여인 잔혹사 물레야 물레야>를 말하는 것이 아니다.


바로 어제, 직접 만든 수동 권선기를 가지고 손잡이를 돌려가면서 진공관 앰프용 출력 트랜스에 들어갈 코일을 직접 감았던 것이다. 돌린 횟수는 총 4200 회! 보빈 4 개에 각각 1050 회씩 에나멜선을 감은 것이다. 아직 완성은 하지 못했고 진공관에 연결되는 1차측 코일을 감고 테이프로 가장 바깥쪽에만 마감을 한 상태이다. 원래 제대로 감으려면 한 층을 감고, 절연테이프를 두른 뒤 다시 두번째 층을 감는 식으로 해 나가야 한다. 더욱 고급스런 트랜스를 만들려면 1차와 2차를 번갈아 겹겹이 감기도 한다. 이를 샌드위치 권선이라고들 한다. 생전 처음 트랜스를 감는 나는 그렇게까지 정성을 들일 수는 없었다. 1차를 한번에 다 감고, 그 위에 절연테이프를 두른 다음 2차를 감는 것으로 끝내려고 한다.


처음에는 위의 사진처럼 가지런하게 정렬 권선으로 시작을 하였다. 그러나... 두 층을 넘어가면서 모양새는 점차 흐트러지더니...



결국은 이렇게 '막감기'로 끝나고 말았다. 가장 첫번째로 감았던 것은 보빈 옆을 구성하는 도너츠 모양 마개가 벌어지면서 김밥 옆구리가 터지듯 에나멜선이 이탈하기 시작였다. 그래서 이를 재활용하기 위해 다시 보빈으로부터 천천히 풀고자 하였으나, 중간에 뒤엉키고 말았다. 아! 눈물을 머금고 보빈 하나를 다 감았던 에나멜선을 중간에서 끊어야 했다. 화가 나서 뭉쳐놓은 구리선 덩어리에 내 감정이 담겨있다. 아까운 구리!


R-코어에 가조립을 하여 보았다. 이 위에 2차 권선은 두 배 정도 두꺼운 에나멜선으로 각각 50 회씩을 감으면 된다. 1차용 전선 직경은 0.35 mm, 2차용은 0.7 mm이다.


R-코어 역시 도너츠 모양이지만 보빈이 끼워진 곳에서 내부적으로 잘린 형태이다. 싱글 엔디드 앰프용 출력 트랜스라서 코어가 서로 접촉하지 않게 절연체를 사이에 넣어 갭을 만든 뒤 코어를 서로 고정해야 한다. 그리고 다 만들어진 트랜스를 앰프에도 고정해야 한다. R-코어를 이용한 트랜스는 감기는 쉬운데 고정을 하는 방법을 잘 고안해야 한다. 임피던스 비율은 5 kΩ:8 Ω 되겠다.

오디오용 트랜스는 진공관 앰프를 제외하면 요즘 잘 쓰이지 않는데다가 그 이론이나 제작 기법이 널리 공유되고 있지 못하다. 나 역시 동호회에서 배운 정보와 실험 정신만으로 그냥 시행착오를 겪는 중이다. 트랜스와 관련된 이론 중에서 가장 중요한 것은, 전압비는 권선비에 비례하고, 임피던스 비는 권선비의 제곱에 비례한다는 것이다. 

앗, 잘못 감았다! 1050:50은 5 kΩ:8 Ω이 아니라 3.5 kΩ:8 Ω용 권선 스펙이었다! 1250번:50번을 했어야 하는데... 2차를 조금 줄여서 감야야 되겠다. 5 kΩ:8 Ω = 625:1이다. 여기에 제곱근을 취하면 권선비가 된다. 625의 제곱근은 25이다. 25:1 = 1050:42이니 42회 감으면 되겠다..

오늘 글을 쓰면서 각 보빈에서 나오는 에나멜선을 어떻게 연결하는지에 대해서도 적고 싶었으나 그림을 그리지 않고서는 말로 하기가 너무 어려워서 다음 기회로 넘기기로 한다.

Anvi'o 배워나가기

Anvi'o: an advanced analysis and visualization platform for 'omics data. PeerJ 2015 (PubMed)

Anvi'o는 각종 오믹스 정보를 분석하고 시각화하는 도구이다. 주로 다음과 같은 스타일로 분석 자료를 표현한다. 한 입을 베어먹은 도너츠와 같은 형태로 각종 데이터를 시각화한다.


2 년쯤 전에 메타게놈 분석 도구인 metAMOS에 강렬한 인상을 받고 이를 활용해 보고자 노력한 일이 있었다. 그러나 python 및 부수적으로 필요한 프로그램의 설치가 너무나 까다로와서 불완전한 상태로 설치를 마무리한 뒤 몇 번의 테스트를 하는 것으로 만족하고 말았다. 특히 shotgun assembly 기반의 metagenome data가 없으면 이를 활용하기도 어려웠다. 개발자 사이트를 가끔 가 보아도 별다른 업데이트에 대한 소식도 보이지 않았다.

그러던 중에 Anvi'o라는 독특한 프로그램을 발견하게 되었다. 이것도 기본적으로는 shotgun sequencing 기반의 metagenomics에 어울리는 도구이다. 단, co-assembly와 mapping은 사용자가 알아서 해야 된다. 그러나 pan-genome 분석과 phylogenomic 분석을 이 환경 안에서 할 수 있을뿐만 아니라 분석 결과를 웹브라우저에서 interactive하게 볼 수 있다.

Anvi'o의 metagenomic overflow. 빨강색 데이터는 유저가 준비해야 한다. Contig와 read mapping 파일이 이에 해당한다. 출처: PeerJ

Anvi'o을 이제 실제로 다루어 봐야 되겠다고 다짐을 한 것은 오늘 아침이다. Bioconda를 이용하여 설치를 끝내고, 테스트 스크립트를 몇 개 돌려서 이상이 없음을 확인한 다음 최근에 논문으로 투고했던 Lactobacillus rhamnosus 111종 유전체 서열의 pangenomics analysis를 시작하였다. 꼭 필요한 과정은 아니지만 지금은 Anvi'o 환경 내에서 COG annotation을 실행하고 있다.

설치가 아주 쉽게 일사천리로 진행된 것은 아니다. cherrypy 실행과 관련한 에러, 그리고 CentOS 6.9에 크롬 대신 크로미움을 설치해야 하는 문제가 있었지만 metAMOS와 비교하면 아주 사소한 것들이었다. 무엇보다 고마운 것은 Anvi'o project page에 풍성하게 준비된 튜토리얼 자료들이었다. 몇 가지 핵심적인 기본 개념만 머리에 '탑재'하면 어렵지 않게 원하는 목적의 분석을 할 수 있는 것이다. 이에 대해서는 내 위키 페이지에 별도의 정보를 정리해 나가는 중이다.

Anvi'o 설치 후 테스트 스크립트 실행 화면.

Phylogenomics 튜토리얼을 읽다가 내가 그동안 모르던 phylogenomic market set을 발견하였다. 이는 Campbell 등이 출간한 2011년 PNAS 논문 "Activity of abundant and rare bacteria in a coastal ocean(링크)"에서 소개한 것이다. 그동안 phylosift marker만 편식하던 나에게 매우 유용한 자양분이 될 것이다.

2018년 7월 6일에 추가한 글

어제의 테스트에서 anvi'o의 동작이 약간 이상하다고 생각했는데 그 원인은 python 2.7을 기반으로 anvi'o를 설치한 때문이었다. 이러한 중요한 정보는 설치 설명서 맨 위에 있었어야 하는 것 아닌가? Homebrew와 conda 등을 이용한 설치 설명에 이어서 '힘들게 설치하는 방법 - Installation (with varying levels of pain)' 파트에 있었던 다음의 경고문을 뒤늦게 발견했다. 그만큼 python 환경도 이제 3.x 버전이 대세임을 알아야 되겠다.


이미 설치가 되어있었던 python 3.5 기반 environment에 다시 설치를 하고 HMMER version을 3.1b2로 맞추니 모든 것이 정상적으로 돌아가기 시작하였다.

2018년 7월 5일 목요일

ISMapper (2015)

국문에서는 괄호와 그 앞에 오는 낱말을 붙여쓰는 것이 관례이다. 그러나 영문에서는 철저히 공백을 두어야 한다. 이 글의 제목을 적으면서도 'ISMapper (2015)'와 'ISMapper(2015)' 중 어느 것으로 할지 고민을 하다가 영문만으로 작성된 것이라서 공백을 넣는 쪽으로 하였다.

유전체 내에는 다양한 반복 서열이 존재한다. 많은 경우 이들은 유전체 내의 다른 위치로 자기의 복제본을 삽입할 수 있는 transposable element이기도 하다. Transposition이라 하면 쉽게 말하여 자리를 바꾸는 것이다. 극장이나 공연장을 찾아서 자리에 앉았는데 빈 좌석이 많은 상태로 공연이 시작되면 앞자리로 옮기는 경우가 종종 있다(나중에 그 자리의 원 주인이 나타나면 낭패!). 이것이 바로 transposition에 해당하는 현상이다. 실제로 염색체 내에서 일어나는 transposition은 원래 위치를 고수하면서 다른 자리에 자기의 분신을 끼워넣는 일이 더 많이 벌어진다. 그렇게 되어야 그 copy number가 많아지면서 반복 서열이라 불리지 않겠는가?

유전체 진화에서 반복 서열이 갖는 의미에 대해서는 별도의 주제로 다루어도 될만큼 간단하게 기술하기는 어렵다. 간혹 생명공학적 접근을 위해 IS(insertion sequence - 박테리아에서 발견되는 가장 보편적인 transposable element로서 transpoase 유전자 말고는 다른 기능이 없는 것)를 철저하게 제거하는 것을 목표로 삼는 연구 프로젝트도 있었다. IS는 유전체의 안정성을 해치는 가장 직접적인 요인이 되기 때문이다. 

내가 이 생각을 완전히 바꾸게 된 것은 대장균의 K-12 MG1655와 B strain의 유전체를 비교하는 일을 하면서부터였다. 대장균 B 스트레인의 생물공학적 유용성을 이야기할 때 빠지지 않는 것은 OmpT 및 lon protease가 없어서 재조합 단백질을 온전한 형태 그대로 생산하는데 매우 유리하다는 것이었다. 하지만 이들 단백질 분해 효소가 그 기능을 발휘하지 못하는 것은 IS와 관련된 현상으로 확인되었다. 있으면 안될 것만 같은 IS가, 오히려 특정 유전자를 망가뜨림으로서 결론적으로는 인류가 이를 이용하는데 유익한 특성을 제공하고 만 것이다!

만약 우리가 배양 조건을 영원히 고정할 수만 있다면, 박테리아의 유전체는 엔지니어링을 했던 그대로 유지되는 것(즉 높은 안정성)이 유리할 것은 자명하다. 그러나 자연적인 환경 조건은 늘 변하는 것이라서 박테리아는 이에 대처하여 '자기 혁신'을 이루어야 한다. IS가 이러한 혁신(돌연변이)의 원동력으로서 크게 기여한다는 것이 나의 철학이다. 마치 요즘 나오는 수퍼히어로 영화에서처럼 선과 악의 구별이 명확하지 않은 것과 비슷한 상황이다.

서론이 쓸데없이 길어졌다. 오늘의 글감으로 삼은 것은 NGS 유래 short read sequencing data를 이용하여 IS의 삽입 위치를 찾아내는 소프트웨어인 ISMapper이다.
ISMapper: identifying transposase insertion sites in bacterial genomes from short read sequence data. BMC Genomics 2015 (PubMed GitHub)
삽입된 IS의 위치는 프로그램 실행 시 제공하는 reference genome 상의 포지션을 기준으로 나타내어 준다. Simulated read와 real data를 사용하였을 때 각각 97%와 98%의 비율로 IS의 삽입 위치를 찾아내는 성적이라면 나쁘지 않다. 단, 이 소프트웨어는 IS를 스스로 찾아주는 것은 아니다. 찾아내고 싶은 IS의 서열을 query로서 제공해 주어야 한다. 주어진 염기서열에서 IS를 찾는 것은 ISfinder를 활용해야 한다. ISMapper의 작동 방법은 다음의 그림에서 설명하고 있다. IS가 삽입된 경계 부위에서 발생한 sequence read는 IS query와 삽입 위치 전부에 매핑이 될 것이니 이를 찾아내는 것이 핵심이 될 것이고, 가능하다면 IS의 삽입 표적에서 duplication되는 서열도 확인하려고 노력한다.

출처: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4558774/figure/Fig1/
결과는 reference genome을 기준으로 IS 삽입 위치를 제공하는 것이므로 reference와 동일한 위치에 삽입되었거나 혹은 novel 위치에 삽입되었음을 구별해 준다. 그리고 여러 샘플을 시퀀싱한 경우 이를 종합한 표를 만드는 유틸리티도 제공한다.

결과의 시각화 방법에 대해서는 아직 고민을 하는 중이다. 원형? 선형? 만약 샘플이 100종에 육박한다면 어떻게 이를 효율적으로 표현할 것인가? Anvi'o를 이번 기회에 활용해 보는 것은 어떨까?

만약 나에게 컴퓨터와 무한한 시간이 주어진다면 IS, prophage, restriction-modification system... 이런 것의 의미에 대해서 연구하고 싶다.

2018년 7월 3일 화요일

손으로 그린 genome alignment

박테리아의 유전체 진화 과정에서 마치 점돌연변이가 가장 빈번하게 일어날 것으로 흔히들 생각하지만(multiple sequence alignment에서 보여지듯), 실제로는 좀 더 과격한 변화가 더 많이 일어나는 것 같다. 예를 들자면 IS(insertion sequence)의 transposition이라든가, 아니면 Ter site, 즉 복제를 개시하는 원점인 oriC의 180도 반대편에 있는 지점을 중심으로 하여 염색체 단편이 뒤집어지는 일이 흔히 벌어진다. 이는 whole-genome alignment plot을 그리면 쉽게 파악할 수 있다.

간혹 교차가 두 번 일어나기도 한다. 최초에 inversion이 일어난 단편 내에서 두번째 뒤집힘이 일어날 수도 있고, 이를 포함하여 그 외부에서 일어날 수도 있다. 더욱 복잡하게는 한쪽 경계는 뒤집힘이 일어난 내부이고 반대편 경계는 원래의 이중나선일 때이다. 이를 쉽게 파악하기 위해 손으로 그림을 그려보았다. Reference와 query는 a-b-c-d-e-f의 조각이 순서대로 배열된 형태인데, 이 중에서 일부가 떨어져나가서 180도 방향을 바꾼 뒤 다시 연결되는 상태를 가정해 보았다. Reverse complementary 형태가 된 서열 조각의 위에는 bar를 그렸다.


맨 위 왼쪽의 A는 최초의 뒤집힘이 일어난 상태이다. 그 다음에 일어난 뒤집힘이 이전 것의 내부에서 일어나거나 혹은 완벽히 외부에서 일어난다면 아래 왼쪽의 파랑색 네모로 둘러친 것처럼 alignment가 생성될 것이다. 나머지 경우, 즉 복합적으로 두번째 뒤집힘이 일어난다면 오른쪽에 그린 그림(Ia 또는 Ib)와 같이 될 것이다.

Whole genome level에서 두 서열 사이의 관계를 맺는 것, 이를 nucleotide alignment로 확장하는 것, 그리고 이를 시각화하는 것은 모두 별개의 문제이다. 1999년에 최초 버전이 발표된 MUMmer는 아직까지도 이러한 목적의 유전체 분석에서 매우 유용하게 쓰이고 있다. 지금은 존스 홉킨스 대학에서 근무하는 Arthur Delcher에게 감사를!(구글 스칼라 링크)

2018년 7월 1일 일요일

독서 기록 - <생각의 지도>외 다섯 권


생각의 지도(원제: The Geography of Thought)

  • 부제: 동양과 서양, 세상을 바라보는 서로 다른 시선(How Asians and Westerners thinks differently...and why)
  • 리처드 니스벳 지음 | 최인철 옮김
동양인(이 책에서는 한자 문화권에 속하는 동아시아 한중일 3개국을 의미함)과 서양인의 생각의 차이를 역사·문화적 배경과 심리학적 원리에서 설명한 책이다. 잘 알려진 실험을 하나 소개해 보자. 닭과 소, 풀을 한번에 보여주고 서로 관계가 있는 것끼리 묶으라고 하면 동양인은 소와 풀을 묶는다. 소는 풀을 먹고 살기 때문이다. 그러나 서양인은 닭과 소를 묶는다. 둘은 동물이라는 공통점이 있지만 풀은 식물이기 때문이다. 동양인은 전체적인 맥락 하에서 관계를 중요시하지만 서양인은 개별적인 개체가 갖는 (변하기 어려운) 속성에 더 주목한다. 총기 난사 사건을 보도하는 기사에서도 동양인은 그 범죄자가 처한 상황에 주목하는 반면 서양인은 그 범죄자 개인의 폭력적인 성향에 주목한다. 이러한 사고의 차이가 어떻게 나타나는 것인지, 이 차이를 옳고 그름의 기준으로 판단할 수 있을지, 앞으로 두 세계의 생각 차이가 수렴할지 혹은 서로 타협하기 어려운 '문명의 충돌'로 귀결될지에 대하여 논하였다. 저자는 두 문화가 서로 수렴하여 가운데 지점에서 만나게 될 것을 기대하면서 이 책을 마무리하였다.

지난 500년 동안 서양은 과학기술과 자본주의를 무기로 사실상 세계를 지배하고 있다. 왜 동양은 이렇게 무력한 존재가 되고 말았을까? 그 원인으로서 동양적인 문화와 사고방식의 '열등성'을 떠올리는 것은 대단히 불쾌한 일이다. 대체로 한국인(동양인 전체?)은 질문을 잘 하지 않고, 강연장에서도 앞자리에 앉는 것을 꺼린다. 하지만 질문을 제기하지 않는 특성 하나를 가지고서 세상에 의문을 제기하고 개선하려는 노력(과학기술 및 공학의 목표이기도 하다)이 태생적으로 적은 사람들이라는 결론을 내려도 좋을까? 동양 철학 체계에서 논리학이 뿌리내리지 못한 것은 분명 불리한 일일 수도 있다.

이것 아니면 저것만이 옳다는 편협한 사고도 위험하고, 문화의 충돌을 예견하는 것도 바람직하지 않다. 일단 두 세계의 사고 체계가 매우 다름을 인식하는 것이 대단히 중요하다고 생각한다.

시장은 정의로운가

  • 부제: 서울대 이정전 교수의 경제 정의론 강의
  • 이정전 지음
완벽한 시장이란 무엇일까? 내 나름대로 정의를 내려 보았다. 물론 이는 나의 독창적인 생각이 아니고, 독서나 인터넷 정보 검색 등을 통해서 형성된 것이다.
  1. 경제 주체들은 모두 100% 자발적인 의사에 의하여 시장에 참여한다.
  2. 시장에서 거래되는 물건의 품질과 가격 정보는 100% 투명하게 공개된다.
이러한 전제조건이 지켜진다면 시장은 수요-공급 곡선에 의해서 완벽하게 움직일 것이고, 누구나 정당한 몫을 가져가며, 여기에 참여하는 모든 경제 주체는 전부 만족스런 결과를 얻을 수 있을 것이다. 그리고 시장은 옳고 바름과는 상관이 전혀 없는 메커니즘이라는 주장이 설득력을 얻을 것이다. 그렇다면 여기에서 소외되어 어려운 생활을 이어가는 사람들은 모두 자발적인 선택에 의한 것이고, 남들은 그렇지 않을 때 노력(요즘 분위에게서는 부유한 부모를 만나는 것이 가장 중요하다)을 통해 충분한 경쟁력을 갖추치 못한 것을 비난받아야 할 것인가? 
시장에도 '정의'가 필요한 때가 왔다. 우리가 어떻게 이걸 풀어나가야 하는지는 아직 분명하지 않다. 그러나 한 가지 확실한 건 '정의가 사라져버린 시장'에 대한 논의를 시작할 때가 왔다는 것이다. - 마이클 샌델

이상한 나라의 경제학

  • 이원재 지음
저자에 의하면 지금까지 당연한 것으로 여겨오던 경제학의 상식은 사실 이상하다. 시장에서는 모두가 이기심을 추구하는 것이 옳고, 경쟁은 항상 높은 효율성을 가져오며, 대기업이 돈을 많이 벌어야 모두에게 좋다는 것이 지금까지의 상식이었다. 하지만 왜 2011년 7월 월스트리트에서는 "우리는 99%이다"를 외치는 시위대가 몰려들었을까? 같은 해 11월 하버드대 그레고리 맨큐 교수의 '경제학10' 강의 시간에 학생들은 왜 공개편지를 통해 수업을 거부했을까?

마지막 파트에서는 안철수와 스티브 잡스에 대한 이야기가 나오는 것은 2018년 기준으로 본다면 다소 어울리지 않는다. 이 책은 2010년에 발간되었고, 기업인 안철수는 이후 교수를 거쳐 정치에 입문하면서 이미지를 많이 구겼기 때문이다. 이 책에서는 탐욕 없는 성공의 증거로 안철수를 소개하였다. 기업가로서는 그러했는지 모르겠지만, 정치인으로서는...

전통적으로 경영자의 사명은 투입(input)을 프로세스에 넣어서 산출(output)을 만들어내는 것까지였다. 그런데 여기서 한걸음 더 나아가는 것이 성과(outcome)이라는 개념이다. 문제는 주주자본주의의 발달로 성과가 재무적인 성과만으로 치우치게 되었으며 나아가서는 이익 중심으로 극심하게 변질되고 말았다. 스타벅스는 2008년 4분기에 1800억 원의 영업이익을 내고도 그 다음 분기에 수천명의 직원을 해고하겠다는 구조조정안을 내놓았다고 한다. 바로 전년도 같은 분기의 이익에 비해 70%에 불과한 수준이었다는 이유 때문이다. 

그렇다면 우리는 어떤 대안을 생각해 볼 수 있을까? 자본이 사람을 고용하는 것이 아니라 사람이 자본을 고용하는 협동조합(아무리 출자를 많이 해도 1인 1표제), 윤리적 소비, 사회적 기업 등을 저자는 대안으로 소개하였다. 우리에게는 '탈성장 시대의 새로운 경제 문법'이 필요한 것이다.

검은 감자

  • 부제: 아일랜드 대기근 이야기
  • 수전 캠벨 바톨레티 지음 | 곽명단 옮김
지은이 수전 캠벨 바톨레티는 지난번에 읽은 책 <위험한 요리사 메리>의 저자이기도 하다(독서 기록). 평소에 어렴풋하게만 알고 있었던 아일랜드 대기근에 관한 책이다. 생물학적으로 말하자면 당시 아일랜드인이 주식으로 먹던 감자에 지독한 역병이 퍼진 때문이지만, 이것이 이렇게 비참한 결과로 이어진 것은 당시 아일랜드의 사회 구조, 특히 소작농 제도와 농업 정책 등에도 책임이 있다고 하겠다. 농민들은 굶주리지만 영국으로 수출할 농작물은 여전히 배에 실려서 아일랜드의 항구를 떠났다고 한다. 더군다나 당시 아일랜드를 지배하던 영국의 대책도 매우 미흡했다. 하지만 아직도 아일랜드 대기근을 다루는 입장은 하나로 수렴하지 않는다. 영국 정부가 대량학살을 저질렀다고 보는 입장(민족주의자), 영국이 인명을 구하기 위해 할 수 있는 모든 일을 다 했다고 주장하는 입장(수정주의자)이 그것이다.

무작정 배를 타고 살 길을 찾아 북미로 떠난 이민자들도 항해 중에 많은 사람들이 병으로 목숨을 잃었다. 사진이 없던 당시 신문에 실렸던 그림을 통해 이 책은 비극적인 기근 사태의 모습을 생생하게 전하고 있다.

당신의 행복이 어떻게 세상을 구하느냐고 물으신다면(원제: How to be alive - a guide to the kind oh happiness that helps the world)

  • 콜린 베번 지음 | 이은선 옮김
세상을 행복하게 살아나가는 '정형화된 공식'을 과감히 탈피하고 자기 내면의 목소리에 귀를 기울이며, 세상과의 긍정적인 상호작용 속에서 살아나가는 것이 곧 세상을 구하는 길이라는 것이 이 책의 주장이다. 흔히 자기계발서라고 하면 철저히 개인주의적인 입장에서 스스로를 어떻게 변화시킬 것인가에만 주목한다. 자기계발은 곧 침몰할 타이타닉호를 타고 가면서 서로 좋은 자리를 차지하려고 싸우는 것에 지나지 않는다. 저자는 이 책을 '상호계발서'라고 하였다. 상호계발의 입장에서는 서로 도와서 배가 침몰하지 않도록 노력하는 것이다. 이러한 노력은 대단한 자기 희생을 요구하는 것도 아니다. 저자는 25년 전 숭산 스님을 통해 가르침을 받았으며('오직 모를 뿐 비누'로 머릿속을 씻어라 - 현각 스님의 책으로도 출간됨) 현재 관음선원의 상임법사이기도 하다.

저자가 1년 동안 뉴욕에서 전기를 쓰지 않고 쓰레기를 배출하지 않으며 사는 과정은 이라는 다큐멘터리 영화화 책으로도 잘 알려져 있다.

조난자들

  • 부제: 남과 북, 어디에도 속하지 못한 이들에 관하여
  • 주승현 지음
저자 주승현은 비무장지대에서 북측 심리전 방송요원으로 복무하다 휴전선을 넘어서 남측으로 내려왔다. 연세대학교 입학하여 10년 만에 최종적으로 박사학위까지 받았다. 비무장지대를 건너는데는 고작 25분이 걸렸지만 한국 사회에서 정체성을 고민하며 사는 그는 아직까지도 말 그대로의 조난자인지도 모른다. 탈북민에 대한 오해와 편견을 없애고 진정한 통일시대를 대비한 실험으로서 그들과 더불어 살아가는 방법을 고민할 시기이다.