2015년 9월 29일 화요일

워터맨 만년필 전용 잉크 카트리지 구입


왼쪽이 자바펜에서 제조한 국제 표준 규격의 잉크 카트리지이고 오른쪽 것이 워터맨 전용 제품이다. 버니어 캘리퍼로 입구 반대편의 지름을 측정하면 왼쪽은 7.4 mm, 오른쪽은 7 mm가 나온다. 자바펜의 것은 약간 테이퍼 형태이다. 즉, 만년필에 끼우는 부분보다 바깥쪽 부분(측정한 곳)의 지름이 약간 더 크지만 워터맨 제품은 완벽한 원통에 가까와서 필레아 만년필 내부에 잘 들어가고 예비용 카트리지 1개를 배럴 안에 보관할 수도 있다.

국제 표준 잉크 카트리지에 관한 을 찾아서 읽어보았다. 만년필에 체결되는 부분과 전체길이는 비교적 엄격하지만 나머지 부분의 치수는 제품에 따라서 약간의 차이가 있는 것으로 보인다. 워터맨의 최근 모델(대략 2004년 이후)은 배럴 내부의 원형 부속 때문에 일부 국제 표준 카트리지는 장착되지 않을 수 있다고 한다.

표준 규격이란 말만 믿고 인터넷에서 적당한 카트리지를 구입했다가는 낭패를 볼 수도 있었다. 잉크와 닙과의 미묘한 궁합 문제도 경험하였고... 갖고 있는 몇개의 표준형 컨버터가 과연 필레아 내부에 잘 들어가는지를 점검해봐야 되겠다.

2015년 9월 28일 월요일

워터맨 만년필 <필레아(Phileas)>

추석 명절에 가족이 모두 모인 자리에서 형으로부터 만년필을 하나 얻었다. 워터맨의 <필레아>라는 모델이다(F닙). 워터맨의 가장 하위 모델이기는 해도 손글씨를 즐겨쓰는 나의 호기심을 충족시키기에 안성맞춤 아이템이다. 현재 주력으로 사용하는 플래티그넘 <스튜디오>의 좋은 친구가 될 것 같다. 쥐어보니 적당히 두툼한 것이 손에 잡히는 느낌도 좋다.


인터넷을 뒤져보니 가장 널리 쓰이는 국제규격의 잉크 카트리지가 호환된다고 한다. 갖고있던 자바펜의 잉크 카트리지를 꽂았다. 그런데... 뒷뚜껑이 안들어간다.


이게 말이 되는가? 뒷뚜껑의 내부를 살펴보니 보강을 위한 원통형 금속 부품이 자리를 잡고 있다. 색깔로 보아 황동 재질로 생각된다.


워터맨의 전용 카트리지나 컨버터는 저 속에 쏙 들어갈 수 있게 직경이 가늘단 말인가? 혹은 판촉물로 특별히 만들어진 제품이라서 비정상적으로 짧은 카트리지가 일회용으로 들어있었고 그것을 다 쓰면 '나몰라~'인 제품인가? 혹은 워터맨의 정품 카트리지나 컨버터는 저 안에 쏙 들어가게끔 가늘단 말인가?

아마 나와 같은 고민을 하고 있는 사람이 지구 어딘가에는 있을 것이다. 구글을 뒤져보니 The Fountain Pen Network이라는 커뮤니티가 있다. 필레아는 저가 제품이라서 잉크 카트리지나 컨버터가 기본적으로 들어있지 않다. 그래서인지 표준 카트리지가 맞는지 여부를 고민하는 질문도 찾아볼 수 있었다. 달려있는 답글을 검토해 본 결과 워터맨용 카트리지는 약간 갸름한 것으로 보이고, 일밭 카트리지를 걸리게 만드는 황동 배럴(brass barrel or brass sleeve)을 빼버리라는 글도 있었다.

내일 대형 문구 매장에 가서 워터맨 정품 카트리지를 실제로 끼워 본 다음에 결론을 내리도록 하자. 저 부품이 분명히 용도가 있을 것이다. 예를 들어 무게 균형을 맞추어서 필기감을 좋게 한다거나.

2015년 9월 25일 금요일

CEGMA 환경 설정 마무리 및 첫 실행

이전 포스팅에서도 언급했듯이 CEGMA는 유전체 조립의 완결성을 검증하는 도구가 아니고 - 그런 목적으로 사용해도 되지만 - 미리 확정된 ultra-conserved gene의 구조를 새로운 유전체 서열로부터 찾는 것을 기본 목적으로 한다. CEGMA를 실행할 때 옵션으로 넣어주는 단백질 서열은 입력용 서열에서 gene prediction을 통해 찾은 유전자를 번역한 서열을 넣는 것이 아니다. 이것 때문에 초기 실행에서 약간의 혼동이 있었다.

CEGMA를 실행하려면 geneid, wise2(genewise), 그리고 blast+가 필요하다. 예전에는 설치한 프로그램의 바이너리가 있는 디렉토리를 전부 .bash_profile 파일에서 PATH 환경변수에 추가하고는 했는데 이제는 꼭 필요한 것만을 별도의 스크립트에 설정한 뒤 본 프로그램 직전에 실행하는 것이 더 깔끔하다는 생각이 든다.

예를 들어 이런 상황을 가정해 보자. 평소에는 blast+ 2.2.30을 쓰고 있지만 CEGMA를 위해서는 blast+ 2.2.28로 돌아가야 한다. CEGMA를 쓰기 위해 매번 .bash_profile을 수정하는 것은 번거로운 노릇이 아닐 수 없다. 그렇다면 .bash_profile에는 blast+ 2.2.30을 PATH에 추가해 두고, CEGMA 실행 전 스크립트에서 PATH를 재설정하면 된다. CEGMA 설치용 파일은 /usr/local/apps/에 풀었다. geneid는 이미 /usr/local/bin/에 복사해 놓았다.

$ cat pre-cegma.sh
#!/bin/sh
PATH=$(getconf PATH)
PATH=$PATH:/usr/local/bin:$HOME/bin:$HOME/script
PATH=$PATH:/usr/local/apps/wise2.4.1/src/bin
PATH=$PATH:/usr/local/apps/ncbi-blast-2.2.28+/bin
PATH=$PATH:/usr/local/apps/CEGMA_v2/bin
WISECONFIGDIR=/usr/local/apps/wise-2.4.1/src/../wisecfg/
CEGMA=/usr/local/apps/CEGMA_v2
CEGMATMP=./cegmatmp
PERL5LIB=$PERL5LIB:/usr/local/apps/CEGMA_v2/lib
export PATH WISECONFIGDIR CEGMA CEGMATMP PERL5LIB
이상과 같은 스크립트를 만들어두고  CEGMA 실행 직전에 . pre-cegma.sh라고 하면 된다. getconf 명령의 결과는 아주 재미있다.
$ echo $(getconf PATH)
/bin:/usr/bin
그러니 pre-cegma.sh와 CEGMA 실행이 다 끝난 뒤에 getconf로 PATH를 싹 재설정하고 .bash_profile을 다시 실행해도 /usr/local/bin은 PATH에 자동으로 추가되지 않으니 주의하기 바란다. .

CEGMA를 실행해 보자. 임시 디렉토리인 ./cegmatmp는 미리 만들어 두어야 한다. 첫단계인 tblastn은 잘 되었는다 다음 단계인 genewise 실행에서 문제가 생겨서 중단이 되었다고 가정하자. 문제를 해결하고 다시 실행하려면 tblastn 결과는 이미 만들어진 것을 쓰면 된다. 이러한 경우에는 -t 라고 옵션을 주면 된다. 출력 파일의 접두사는 -o 로 지정한다.
$ cegma -g Candida_contigs2.fa -T 20
이제 CEGMA가 잘 실행될 것이다. 결과 파일(output.completness_report)은 다음과 같다.



CEGMA와 BUSCO란? 그리고 WIse2 패키지(genewise) 설치

Genome assembly의 완결성을 점검하기 위하여 모든 유전체라면 능히 가지고 있어야할 핵심 유전자가 assembly 내에 있는지를 확인하는 작업이 종종 필요하다. 특히 novel eukaryotic genome이라면 더 그러하다. 2007년도에 처음 논문으로 나온 CEGMA는 이러한 용도에 적합한 도구였다. CEGMA는 Core Eukaryotic Genes Mapping Approach라는 full name에서 알 수 있듯이, 정확하게 말하자면 core gene의 구조를 예측하는 도구이다.

CEGMA는 GitHub에서 아직까지 배포되고 있다. 그러나 Korf Lab의 홈페이지에서도 밝혔듯이 2015년 중반을 끝으로 이제 더 이상의 개발은 되지 않을 것이라 한다.

Goodbye CEGMA, hello BUSCO!

대신 다른 연구그룹에서 최근에 개발한 BUSCO가 이제 떠오르고 있다. BUSCO는 universal single-copy ortholog를 이용하여 genome assembly와 annotation을 점검하는 도구이다. 여기에서는 중요한 6가지 phylogenetic clade(vertebrates, arthropods, metazoan, fungi and bacteria)에 대한 core protein set를 구축하였고 이를 이용하여 input sequence를 검색하는 스크립트가 제공된다. 파이썬 라이브러리 설치 문제로 아직 제대로 BUSCO를 실행해보지는 않았다. BUSCO의 기반이 되는 것은 같은 연구그룹에서 개발한 OrthoDB이다.

그래서 CEGMA 마지막 버전을 테스트삼아서 효모(Candida의 일종)에 대해서 돌려보려 하였는데, 설치를 완벽하게 하기가 쉽지 않다. 효모는 워낙 genome이 작고 novel genome이라 보기도 어려우니 CEGMA와 같은 도구를 돌리는 것은 약간 넌센스일 수도 있다.

  • genewise를 리눅스에서 설치하는게 어렵고(우분투에서는 sudo apt-get install wise 한 방으로 해결이 된다던데 내 컴퓨터는 CentOS이다!)
  • NCBI BLAST+ v2.2.30은 CEGMA가 요구하는 최소 word size를 수용하지 않으므로 v2.2.29까지만 사용할 수 있다(관련 문서 링크).
  • 환경변수 설정에 대한 설명이 혼동스럽다. 이 문제는 최초의 테스트 런(지금 돌리고 있음)이 성공적으로 끝나면 따로 정리하여 포스팅하겠다.
과거에도 genewise의 설치가 쉽지 않아서 전산인프라팀의 도움을 받은 적이 있다. GitHut의 CEGMA 사이트에는 이를 위한 설치 가이드(우분투 기준)가 실려있다. 그러면 내가 이 설치 가이드를 근거로 실제로 어떻게 하여 CentOS 6.7에서 genewise를 설치했는지 그 과정을 기록해 보겠다.

프로그램 패키지로 EBI의 공식 배포 사이트에 있는 최신판인 Wise2.4.1를 받았다. CEGMA의 GitHub 사이트에서는 v2.2.3rc 및 이를 수정한 버전의 링크를 실어놓았고, 설치 가이드에서는 v2.4.1의 다른 링크를 걸어 놓았다.

압축을 풀고 src 디렉토리에서 make all을, src/dyc 디렉토리에서 make linux(그냥 make라고 하면 에러 발생)를 하면 된다. 만들어진 바이너리를 적당한 위치로 복사하는 것은 사용자가 알아서 하면 된다. 그런데 src에서 make를 하면 이러한 에러를 만나게 된다.

첫번째 에러

sqio.c:232: error: conflicting types for ‘getline’
/usr/include/stdio.h:673: note: previous declaration of ‘getline’ was here
make[1]: *** [sqio.o] 오류 1
make[1]: Leaving directory `/usr/local/apps/wise2.4.1/src/HMMer2'
make: *** [realall] 오류 2

해결책

$ cd wise-2.4.1/src/HMMer2
$ sed 's/getline/getline_new/' sqio.c > a && mv a sqio.c
 이를 해결하고 다시 make all을 하면 또 에러가 발생한다.

두번째 에러

phasemodel.o: In function `Wise2_read_ProteinIntronList':
phasemodel.c:(.text+0x3157): undefined reference to `isnumber'
collect2: ld returned 1 exit status
make[1]: *** [estwise] 오류 1
make[1]: Leaving directory `/usr/local/apps/wise2.4.1/src/models'
make: *** [realall] 오류 2

또 해결책

src/models/phasemodel.c로 이동하여 23번째 라인을 다음과 같이 수정한다.
if( !isnumber(line[0]) ) {     //수정 전
if( !isdigit(line[0]) ) {     // 수정 후
오류 메시지를 복사해 두지 않았지만, make all을 하는 과정에서 헤더 파일이 없다는 오류가 발생하였었다. 이는 yum install glib-devel.x86_64을 하여 해결하였다. 이상과 같이 하여 만들어진 바이너리(dyc 포함)를 PATH에 포함시키고, 마지막으로 WISECONFIGDIR 환경변수만 세팅하면 끝이다.

2015년 9월 24일 목요일

Yeast Genome Annotation Pipeline(YGAP)에 대해 알아보기

가끔 효모 유전체 시퀀싱 결과를 다루어야 할 때가 있다. 이때 내가 종종 이용하는 웹 서비스가 바로 YGAP(Yeast Genome Annotation Pipeline)이다. 이 서비스에서는 주석화가 매우 잘 되어있는 기존의 효모 유전체 정보를 이용하여 새로운 효모 유전체에 대한 annotation을 실시해 준다. 기존의 정보는 바로 YGOB, 즉 Yeast Gene Order Browser에 수록된 종들(Saccharomyces cerevisiaeSaccharomyces bayanusCandida glabrata,Vanderwaltozyma polysporaZygosaccharomyces rouxiiLachancea thermotoleransLachancea waltii,Lachancea kluyveriKluyveromyces lactis and Eremothecium gossypii)의 것에 기반하고 있다. 

나는 효모의 생물학을 잘 모르기에 매번 이 사이트를 대충 이용한다는 느낌을 갖고 있다. 내 genome이 WGD(whole-genome duplication)을 겪은 것인지 아닌지도 판단하기가 쉽지 않다. 곰팡이, 즉 사상균과 효모(맞나?)의 분류는 아직도 완성된 것이 아니라서 나처럼 균학에 대해 잘 모르는 사람에게는 늘 어려운 과제이다.

YGAP에 contig 서열을 제출하면 annotation 결과를 제공함과 동시에 유전체 서열 파일도 살짝 체제를 바꾸어서 반환한다. 만약 cb01.fa라는 파일을 올리면 cb01.genome.txt이라는 fasta 파일을 돌려주는데, 서열 ID의 형식이 바뀌어서 약간의 혼동을 초래하는 것이다. 오늘은 어떤 규칙에 의하여 바뀌는지를 알아보고자 한다.

YGAP에 올린 서열의 ID는 아주 간단하게 contig_1, contig_2...이다. 그러면 .genome.txt 파일은 어떻게 바뀌었나? 원본 파일의 contig 번호는 다음의 Chr_ 또는 Scaffold_ 뒤의 번호로 자리바꿈을 했을 것으로 보인다. Scaffold_#은 서열 ID의 일부가 아니라 description임에 유의하자.
>cb01_Chr_28 Scaffold_1
>cb01_Chr_35 Scaffold_2
>cb01_Chr_36 Scaffold_3
...

실행 전에 YGAP의 파라미터 중에서 "Do you want to order scaffolds by size [default: Y]"를 기정치 그대로 두었다. 이것이 무엇을 의미하는지 도움말을 찾아보았다. YGAP는 입력 서열의 단위를 전부 scaffold로 간주하는데, 가장 큰 것부터 역순으로 chromosome 1, 2, 3...의 번호를 붙인다고 한다. 또한 염색체 1번에 존재하는 유전자의 이름에는 A가 들어가고 염색체 2번 유래 유전자는 B가 들어가는 식이다. 이 파라미터를 N으로 설정하면 입력 파일에 있는 서열 순서대로 염색체 번호가 붙는다고 하였다. 입력 파일의 contig_#는 결국 .genome.txt 파일에서는 Scaffold_#로 자리를 이동하는 것이다. 입력 파일의 서열번호(scaffold 번호), 새로 부여한 염색체 번호 및 유전자에 붙는 코드(A, B, C...)의 관계는 mapping file에 수록된다.

여기에서 YGAP의 귀여운(?) 버그를 하나 발견하였다. 길이가 같은 scaffold는 chromosome 번호도 같아진다는 것이다. 다음을 보라.
SEQ: cb01_Chr_96  124
SEQ: cb01_Chr_101  121
SEQ: cb01_Chr_101  121
SEQ: cb01_Chr_101  121
SEQ: cb01_Chr_101  121
SEQ: cb01_Chr_101  121
어차피 길이가 200 bp에 미치지 못해서 NCBI의 WGS에 올리지도 못하고, 단백질 코딩 유전자를 이로부터 찾기도 어렵다. 

그래도 다행스러운 것은 YGAP가 만들어내는 GenBank file은 scaffold에 따라서 작성된다는 것이다. 만약 새로 부여받은 chromosome 번호만을 이용하여 결과 파일이 만들어진다면 상당히 혼란스러웠을 것이다. 


2015년 9월 23일 수요일

LM1876 앰프 제작을 위한 부품 수급

오늘 알리익스프레스의 판매자가 LM1876 앰프보드(오늘 현재 유효한 링크)의 shipping을 하였다는 메일이 도착하였다. 8일 내에 선적을 한다고 겁을(?) 주었는데 생각보다는 빨리 처리가 되고 있다. 월요일에 아세아전원에 주문한 100VA급 토로이달 트랜스(0-18V 0-18V)도 오늘 배송이 완료되었다. 전원트랜스를 구입한 것은 생전 처음이다. 고정용 원형 철판을 들어내면 도넛처럼 가운데가 뻥 뚫려있다.


많은 국내 사이트에서 '트로이달' 트랜스라고 잘못 쓰고 있지만 토로이달(toroid) 트랜스가 맞다. toroid(원환면)은 아주 어렵게 말하면 "원을 삼차원 공간 상에서 원을 포함하는 평면위의 직선을 축으로 회전하여 만든 회전체"라고 정의된다. 백문이 불여일견이다... 토로이달 트랜스는 제작 비용은 높지만 노이즈 방출량이 적고 효율이 좋아서 '고급' 오디오에 많이 쓰인다.


트랜스의 용량과 2차 전압을 선택하면서 고민을 하지 않을 수 없었다. 
  • 앰프 칩이 요구하는 전원전압(직류)에 따라 출력이 변하고
  • 트랜스의 2차 출력 전압은 정류회로를 거치면서 전압이 더 올라가기도 하고(회로마다 다름)
  • 어느 정도의 여유를 두어야 하는지에 대한 감도 전혀 없었기 때문이다.
내가 구입하는 LM1876 앰프 보드는 최대 30W + 30W의 출력을 낼 수 있다. 제품 설명에 따르자면,
  • dual 12V voltage 공급 -> 20W + 20W
  • dual 15V voltage 공급(권장) -> 25W + 25W
  • dual 24V voltage 공급 -< 30W + 30W (peak 40W + 40W)
아세아전원의 토로이달 트랜스는 50VA 단위로 만들어진다. 혹시 한 등급이라도 높은 앰프보드로 업그레이드를 할 가능성이 아주 조금은 있으니 넉넉하게 dual 18V, 100VA로 결정하였다. 이 트랜스라면 정류회로가 달린 TDA8950(class D) 앰프 보드에 쓸 수도 있을 것이다. LM3875나 LM3886은 약간 부족하나마 작동을 시킬 수 있을 것이다. 물론 작은 실내에서 채널 당 5와트 이상의 출력도 미처 뽑지 못할 것은 당연하지만.

본격적인 제작은 부품이 다 모이는 10월달에나 가능할 것이다. 내가 아주 좋아하는 스크류터미날 타입이라서 조립은 비교적 쉬울 것이다. 볼륨까지 달려있으니 입출력 단자와 전원만 연결하면 소리는 내 볼 수 있을 것이다. 그런데 케이스는 어떻게 한다지? 

만년필과 잉크의 궁합도 있는가?

며칠 전 잉크가 잘 나오지 않는 만년필을 바꿔야 되겠다는 취지의 글을 작성한 적이 있다.

플래티그넘 만년필 사용한지 일 년 만에 작별을 고해야 하는가?

그런데 문득 느낀 바가 있어서 실험을 한가지 해 보기로 하였다. 어쩌면 파커 '큉크' 푸른색 잉크와의 궁합 문제가 아닐까? 약 일년 동안 카트리지(자바펜의 제품)를 쓰는 동안에는 아무런 문제가 없었으므로.

그 결과는...


슬슬슬... 잘 나온다. 도대체 왜 이런 거지. 카트리지 구입 비용을 절감한다는 생각으로 파커 병잉크를 구입했던 것인데, 국산 카트리지가 더 낫다. 아직은 만년필 교체를 고려할 때가 아닌 모양이다. 다행이라 생각한다.


2015년 9월 20일 일요일

FM 안테나 설치 상태 변경

동쪽으로 향하게 잘못 설치한 FM 안테나를 180도 돌려서 서쪽을 향하게 만들었다. 실제로 달라진 것은 도파기(director)의 위치가 바뀐 것에 불과하다. 이제 서쪽 계룡산 송신소에서 송출되는 KBS 대전 FM의 수신이 최적화되었을 것으로 믿는다. 체감상 큰 차이는 없지만 원리에 맞지 않게 설치된 안테나를 보고 있는 것이 늘 마음에 들지 않았다. 이번에는 수평계까지 대 가면서 정확하게 수평을 맞추었다. 작업을 하기에는 아직 햇살이 너무나 따가운 9월 오전이다.

지저분한 유리창 너머로 사진을 찍었더니 사진이 깨끗하지 않다.



붐대의 끝은 U 볼트로 난간에 고정을 하였는데, 볼트를 꽉 조여도 붐대가 꽤 길어서 자꾸 처지기 일쑤였다. 이전에는 스테인레스 화분 받침에 걸쳐 놓았으므로 일정 수준 이상으로 더 처지지는 않았지만 받침 자체가 수평이 아니라 약간 기울어진 형태였다. 이번에는 U 볼트를 화분 받침대의 바닥 부분보다 아래로 가도록 고정 위치를 바꾼 다음, 붐대를 화분 받침대에 케이블 타이로 묶어서 길이를 조정하면서 수평이 되게 만든 것이다.

이제 송신소가 이전을 하지 않는 이상 우리집 환경에서 더 이상으로 안테나 설치 상태를 최적화할 수는 없을 것이다.

2015년 9월 19일 토요일

TDA7297(15 W + 15 W) 앰프를 위한 케이스 구상

반찬통 속에 볼썽사납게 들어있던 TDA7297 앰프 보드는 요즘 부품통 안에 관심을 받지 못한 상태로 담겨있다. 망가진 3.5 mm 스테레오 폰잭을 공들여 수선해 놓고도 다른 칩앰프들에 가려서 빛을 보지 못한다.

이대로 두기는 아까와서 이를 수납할 케이스에 대한 아이디어를 내 보았다. 바로 초콜렛 통이다.



뚜껑에 구멍을 내고 볼륨 포텐셔미터를 너트로 고정하면 보드를 따로 고정할 필요가 없다. 입력잭도 뚜껑에 고정하면 된다. 스피커 단자는 옆면에 달아야 하는데, 일반적인 바인딩 포스트를 쓰면 고정을 위한 면적도 많이 필요하고 내부로도 길게 돌출되어 보드에 닿을 가능성이 크다. 그래서 스피커용으로 잘 쓰이지는 않지만 이런 단자대를 생각하였다. 스피커선을 연결하려면 항상 드라이버를 써야 한다는 점이 불편하지만 공간을 적게 차지한다. 이러한 단자대는 지난 여름에 조립한 샘플전자의 class D 앰프 보드에서 아이디어를 얻은 것이다.

부품통 속에 숨어있던 방열판을 겨우 찾았다. 이것은 배송을 기다리고 있는 LM1876 앰프 보드를 위해 사용할 것이다.


...이렇게 계획을 세우고 결국 오늘 만든 것은 아래 사진과 같다. 온갖 폐품은 다 끌어모아서 만들었다. 스피커 연결용 클립식 단자처럼 보이지만 실제로는 망가진 튜너를 버리면서 떼어둔 안테나 단자이다. TDA7297 칩의 방열판에서 생각보다 열이 많이 나서 밀폐된 통의 바닥에 밀어넣기는 무리가 있다는 결론을 내렸다. 오늘은 모처럼 진공관 오디오가 휴식을 취한 일요일이었다. 이 앰프를 가지고 스피커를 바꾸어 가면서 하루 종일 들은 결과 스피커 2호기와 매칭이 잘 된다는 느낌을 받았다. 케이스도 변변치 않고 성능도 고만고만한 칩 앰프가 하나 둘 늘어만 간다. 마치 여자들이 장신구를 사들이듯이.



2015년 9월 18일 금요일

LM1876 증폭기

서툴기는 하지만 약간의 목공일까지 곁들여서 거실용 스피커 시스템을 만드는 것으로 올해 오디오 DIY는 그 대단원의 막을 내리려 하였었다. 스피커 제작을 하면서 남은 페인트는 습기로 인해 상당한 부분이 부식된 화장실문 리폼과 주방쪽 창틀에 칠을 하게 만드는 좋은 계기가 되었다. 진공관-하이브리드 헤드폰 앰프까지 구입하여 즐겨 듣고 있으니 비록 고가품은 아니더라도 이제 부족한 것이 무엇이랴?

그러나 아직 경험해 보지 못한 것에 대한 호기심은 끊임이 없다. 그중 하나가 바로 게인클론 칩앰프이다. 소출력 진공관 앰프와 class D 앰프와 비교하여 어떤 차이가 있을까? 부속도 얼마 들어가지 않으니 충분히 만들 수 있지 않을까?

알리 익스프레스를 뒤져보았다. LM1875, LM3785, LM3886 등 다양한 칩을 사용한 보드 혹은 키트가 넘쳐난다. 재미난 것은 중고 칩을 사용한 제품도 꽤 있다는 것이다. 도대체 중국 제조사들은 어디에서 중고 앰프를 구해서 칩을 뜯어내는 것인지... Original teardown이라는 표현과 함께 수명이 100년은 되니 걱정하지 말라면서.

가장 간단한 것은 LM1875칩을 사용한 앰프이다. 하지만 이 칩은 National Semiconductor의 Hi-Fi amplifier를 표방하는 Overture 시리즈가 아니다. 검색에 검색을 거듭한 결과, LM1875의 듀얼 버전이지만 Overture 이름을 달고 있는 LM1876이란 칩을 알게 되었다. 왜 다른 칩만큼 자료가 풍부하지 않은지는 나도 잘 모르겠다.

LM1876: Overture audio power amplifier series dual 20-W audio power amplifier with mute & standby modes

이상하다! 이 칩은 National Semiconductor가 아니라 Texas Instruments에서 만든 것이다. 어떻게 된 것인지 다시 찾아보니 2011년 4월에 Texas Instruments가 National Semiconductor를 인수한 것이었다.

잘만 고르면 금속 케이스에 들어간 앰프 완제품을 70달러 선에서 살 수도 있지만, 직접 만드는 즐거움을 누리고 싶었다.

마침 알리익스프레스에서 LM1876이 들어간 앰프 보드 2장(완성품)을 28.7달러에 팔고 있었다. 주변 부품들이 그렇게 고급스럽지는 않아 보이지만 볼륨 조절 포텐셔미터도 달려 있겠다, 보드가 2장이니 데이터 시트를 보고 장난도 칠 수 있겠다 싶어서 큰 고민 없이 구입하였다. 방열판하고 토로이달 변압기만 있으면 된다. 이제 인내심을 가지고 추석 이후까지 배송이 되기를 기다리면 된다. 섀시를 어떻게 하느냐가 언제나 큰 문제이다. 심각하게 생각하지 말자. 뚜껑이 없는 자작 라디오 스타일이면 어떤가?


2015년 9월 17일 목요일

플래티그넘 만년필 사용한지 일 년 만에 작별을 고해야 하는가?

작년 추석 연휴 때에 고양시에서 구입했으니 이제 사용한지 일 년이 된다. 언제부턴가 뚜껑이 너무 쉽게 닫기고 빠진다는 느낌이 들기 시작하였다. 나는 필기를 조금이라도 쉴 때에는 늘 뚜껑을 닫아놓는다. 이것이 올바른 사용법이다. 그리고 매일 거르지 않고 꾸준히 필기를 한다.

그런데 뚜껑을 닫고 몇 시간 지난 다음 쓰려고 하면 잉크가 말라서 나오질 않는다. 평소에 거의 쓰지 않는 2천원짜리 프레피 만년필이나 그보다 더 싼 국산 브랜드(실제로는 중국산) 캘리캘리도 이렇지는 않다. 몇달을 그냥 둔 뒤에 뚜껑을 열고 필기를 하면 여전히 잘 나온다. 반면 플래티그넘은 매일 사용하고 잉크도 늘 충분히 채우는데도 이러하다. 아마도 뚜껑 내부의 실링 부속이 헐거워진 모양이다.


자전거로 출퇴근을 하면 보통 기름값을 아낀다는 핑계를 댄다. 정말 그럴까? 자전거 부속이나 용품, 의류로 더 많은 돈이 들기 십상이다. 만년필도 그런 것 같다. 만년필을 쓰는 동안은 다른 필기구를 사지 않으니 돈이 절약된다고 생각하지만 잉크나 카트리지를 가끔 구입해야 하고, 정말 고급품을 사지 않는 이상 이렇게 일년에 한번 정도는 문제를 일으켜서 새로 구입하는 것을 고민해야 된다. 자바펜이 그러했고 피에르 가르댕 만년필도 그랬다. 만약 이삽심만원짜리 만년필을 산다고 가정하자. 평생 구입할 볼펜 비용보다 만년필 한 자루 값이 더 나갈 것이다. 

그러니 필기구 값을 절약한다는 생각으로 만년필을 쓰면 안된다. 쓸 때의 사각거림이 좋고, 가끔 잉크를 채울 때의 낭만적인 느낌이 좋아서 일반 필기구를 쓰는 것보다 더 많은 비용을 기꺼이 지불하고 있노라고 생각해야 한다.

3만원 미만의 만년필을 사서 일 년마다 바꾸느니 차라리 프레피나 몇 자루 사서 쓰는 것이 더 경제적일지도 모르겠다. 물론 프레피는 프레피만의 단점이 있다. 필기감이 아주 좋지는 않고 너무 두껍다. 닙이 종이 위를 미끄러지는 느낌이 가장 좋았던 것은 자바펜의 만년필이었지만, 최하위 모델은 너무 가늘어서 쥐는 느낌이 좋지 않았고 도장도 형편없었다. 지금 자바펜의 홈페이지를 가 보니 락카를 칠하지 않고 금속 그대로 마감된 신제품이 눈에 뜨여서 구미가 당기기는 한다.

2015년 9월 30일 추가한 글:

플래티그넘 만년필을 구입한 것은 작년 추석 연휴가 아니라 12월이었다. 아직 일년이 채 지나지 않았다. 

2015년 9월 16일 수요일

영화 이야기 - Woman in Gold


얼마 전 개봉했던 화제의 영화 <우먼 인 골드>를 이제서야 집에서 보았다. 결코 자극적이지 않은 내용으로 이렇게 진한 여운을 남긴 영화를 보고서 글을 남기지 않을 수 없었다. 전쟁을 겪으면서 숙모의 추억이 담긴 그림을 나치에 빼앗기고, 적법하지 않은 절차를 거쳐 이제 오스트리아 박물관에 걸린 클림트의 명화를 다시 되찾아오기까지 8년에 걸친 법정 투쟁 실화를 다룬 영화이다. 이 그림은 오스트리아 국민들에게는 모나리자와 같은 국보급 작품이었으나 정부도 결국은 법원의 판결에 굴복하고 만다. 사유재산을 무엇보다 소중히 여기는 서양인이라서 가능한 일인지 모르겠지만. 여주인공 헬렌 미렌이 왜 이렇게 낯이 익은가 했더니 영화 의 할머니(죄송!) 여전사였다.

처음에는 컴퓨터의 HDMI 출력(구글 플레이 무비)을 TV에 연결하여 실시간 재생을 했더니 인터넷이 느린지 규칙적으로 화면이 멈추었다. 이래서는 도저히 볼 수가 없어서 다운로드를 하여 볼 수는 없는지 확인해 보니 모바일 기기에서만 다운로드가 된다는 것 아닌가. 그래서 아이패드로 다운로드를 한 다음 HDMI 케이블을 연결하니... 이런, 넓은 TV 화면 중간에 겨우 1/3 정도로 나오는 것이었다!

오스트리아 정부가 미술품 환수를 추진한 것은 사실 과거 청산이라는 정치적 제스쳐였지만, 열정을 끝까지 불사른 그림의 실질적 주인과 변호사에 의해서 최종적으로는 그림을 넘겨주게 된다. 이 영화를 보기 직전, <무한도전>에서 올해 유네스코 세계문화유산으로 지정된 일본 군함도를 다녀온 것을 보았다. 강제로 조선인을 끌고 가서 인간 이하로 취급하며 기적적으로 생존한 징용자에게 일제는 급여도 지급하지 않았다. 한국인 희생자를 기리는 공양탑을 세웠지만, 도저히 찾아갈 수도 없는 숲속 폐허에 그 누구의 관심도 받지 못한채 방치되어 있었다. 그러나 <우먼 인 골드>에서 이들의 재판을 현지에서 돕는 오스트리아 언론인의 태도는 어떠했는가? 자기에게 아버지는 정말 좋은 사람이었지만 소년 시절에 아버지가 나치였다는 알고는 평생을 속죄하는 마음으로 살고 있다고.

전쟁이란 국가와 국가간의 가장 폭력적인 정치적 의사의 표출 방식이다. 그러나 그 피해는 국민 개개인에게 고스란히 미친다. 일제에 의한 국권 침탈은 그 자체는 전쟁의 형식을 따르지는 않았지만 사실상 전쟁에 버금가는 피해를 입혔다. 일본은 패전하였으나 1965년 맺어진 한일 협정에 의해 모든 배상을 다 했다고 믿는다. 우리의 피해는 아직도 진행 중인데!

절차야 어찌되었든 이미 한 나라의 국보처럼 여겨지는 그림을 개인이 되찾아가는데 성공하면 그 이후로 얼마나 많은 비슷한 요구가 빗발칠지 쉽게 짐작할 수 있다. 그런 것을 알기에 영화 속 변호사 랜디 쇤베르크도 이렇게 이야기하지 않았겠는가. 판도라의 상자를 살짝 열고, 이 건만 해결하고 덮어버리자고. 그렇다고 해서 논의조차 하지 않는다는 것은 말이 되지 않는다.

군함도에서 돌아온 징용자 중 이제 단 두 분이 생존해 있을 뿐이다. 그분들께 용서를 구할 시간도 얼마 남지 않았다.

UST 교수법 워크숍을 다녀와서 - MOOC와 Flipped learning

'무크(MOOC)가 뭐지? 무크지(Mook紙)하고 관계가 있나?'

아무런 사전 지식이나 기대감 없이 접한 어떤 활동이 뜻밖의 소득을 가져다 주는 경우가 꽤 많다. 지난 9월 15일에 있었던 제9차 UST 교수법 워크숍이 그러하였다. 나는 UST 겸임교원이지만 내가 책임져야하는 대학원생은 없기에 이따금씩 개설되는 전공 강의에서 팀 티칭을 할 뿐이다. 그래도 내가 속한 전공은 우리 캠퍼스에서는 꽤 모범적(?)으로 운영되는 편이라서 강의 개설이나 교재 선정 등에 충실하게 이루어지는 편이다. 그나마 다행인 것은 나 역시 여러 사람 앞에서 강의하듯이 이야기하는 것을 매우 즐긴다는 것이다.

UST라는 것이 원래 실무 위주의 반 도제식 현장 교육을 특징으로 하므로 일선 교육 현장에서 실시되는 최신 교수법이라는 것에 대해서는 익숙하지 않을 수 있다. 아니, 정확히 말하자면 나 이외의 UST 교원들은 꽤 신경을 쓰지만 나만 등한시하고 있는 것일지도 모른다.

MOOC(Massive Open Online Course)는 온라인 공개수업 정도로 번역을 하면 된다. 인터넷이라는 최신 IT 기술을 이용한 거대 규모의 교육 방식이라고 보면 된다. 수강자의 자격을 제한하지 않는 열린 교육 시스템이지만 조지아 공대와 같이 이를 이수하면 석사 학위를 공식적으로 발급하는 경우도 있다고 한다. 이번 워크숍에서는 고려사이버대학교 정종욱 교수가 이라는 제목으로 강의를 하였다.

MOOC라 하면 흔히 지식의 보급과 확대를 위한 열린 교육을 목표로 한다고 생각하기 쉽지만 현실은 그게 아니었다.

  • MOOC는 수요자 관점이 아니라 새로운 수익모델로서 철저히 기획되고 만들어진다(혹은 만들어져야 한다).
  • 중도 포기자의 비율이 매우 높다는 것이 수익을 창출하는 핵심이다(이것은 충격이었다!)
  • 학생은 이제 교육 소비자이다. 교육도 일종의 상품이고 불만을 끊임없이 표출하며(반품과 반환 요구), 시장에는 늘 원하는 상품을 제공해야 한다.
  • 인문학과 같이 수요가 적은 분야는 MOOC로 거의 제공되지 않는다.
  • 상호작용은 교습에서 항상 필요한 것은 아니다.
  • 오프라인 강의를 동영상으로 떠서 공개하는 것 정도의 가벼운 생각으로는 절대 성공할 수 없다. 철저히 수요자 입장에서 누가 이를 필요로하는지를 생각하고 만들어야 한다.
옆 사무실 윤 모 박사가 Coursera라는 곳에 가면 정말 들을만한 전문 강좌가 많다고 하였었는데 이것이 바로 MOOC의 한 종류였다. 북미의 무크는 철저히 소비자 중심(쉽게 말하여 인기있는 강좌를 목록 위에 올림)이고, 유럽은 아직 공공성을 강조하는 편이라서 학문 분류 체계에 맞추어서 과정을 나열한다고 한다. 대학의 한 학기 정규 강좌가 보통 16주로 구성되는 반면 MOOC는 한 강좌가 4-6주 정도에 끝나며 $20 정도의 비용을 지불하면 인증서를 발급한다. 물론 출석 체크와 시험, 텀 프로젝트 등을 통과해야 한다. 사이버 공간에서 교육 활동이 이루어지므로 강좌의 토론 게시판이 무척 활성화되어 있을 것 같지만, 실제로는 그렇지 않으며 학기말에 약간의 활동이 있을 뿐이라 한다.

모든 분야의 학습이 무크로 가능한 것은 아니다. 컴퓨터 사이언스, 프로그래밍 언어 등 이공계의 일부 분야가 무크로 배울 수 있는 분야가 되겠다. 한가지 걱정스러운 것은 이제 교육 분야도 글로벌화하면서 영어 소통에 큰 문제가 없는 신세대 한국인 젊은이들이 주로 미국이 제공하는 무크로 실무 교육을 받게 된다면 국내의 교육 환경은 점차 무너지지 않겠는가?

잘 알려진 MOOC에는 다음의 것들이 있다.
나에게는 data analysis 분야의 강좌가 좋은 출발점이 될 것이다. 어떤 무크가 있는지 참고 싶은가? MOOC List를 방문하라!

두번째 강의는 정주영 동의대학교 교수의 이었다. 현대의 교육은 고기를 잡아 주는 것도, 고기 잡는 법을 가르치는 것도 아니라 한다. 바로 '바다를 그리워하게 만들라'는 것이다. 언뜻 들으면 프로파간다라는 느낌이 들지도 모른다! 예전에는 지식이란 자기 외부에 있고, 그리로 접근하는 방법을 알려주는 것이 교육이라면 이제는 살아나가는 방법 즉 viability를 배양하는 것이 목적이라는 것이다. 일방적인 강의식, 주입식 교육은 교수법의 가장 시원치않은 방법이고, 가장 효과적인 것은 남을 가르쳐보게 하는 것, 즉 동기를 가지고 주도적으로 학습을 하는 것이라 한다. 이러한 신개념의 교수법을 위해 활용할 수 있는 각종 앱과 소프트웨어 도구를 이번 기회에 알게 되었다.

이제는 평생학습의 시대이다. 특정 자격을 갖추고 학교라는 제도권 하에 학생으로 입학해야만 지식을 축적할 수 있던 시대가 지났다. 마찬가지로, 공식적으로 나에게 소속된 지도 학생이 있지 않은 상황에서도 타인을 교육할 수 있는 기회가 많이 주어지고 있다. 종종 요청받는 대중 강연이 그렇고, 최근 시도하여 1기 교육을 끝낸 센터 내 미생물유전체분석법 교육이 그러하다. 효율적인 지식 전달 방법에 대해서 늘 궁리하도록 하자.

2015년 9월 14일 월요일

[Next-Generation Sequencing] Mapping과 관련한 수치 구하기

SAM/BAM 파일에서 mapping과 관련한 수치를 뽑는 방법을 one-liner 철학에 입각하여 정리해 보도록 하겠다. 물론 다른 프로그램을 사용하면 좀 더 고차원적인 수치를 뽑을 수도 있을 것이다. 이 글을 쓰면서 추구하는 것은 되도록 적은 수의 기본 프로그램과 UNIX/LINUX에 설치된 유틸리티를 최대한 활용하여 (옵션이 길어짐은 피할 수 없음) 원하는 결과를 얻는 것이다. 이 문서를 작성하면서 인터넷 상의 여러 정보를 참조하였지만 특히 GitHub의 SAM and BAM filtering oneliner에서 많은 도움을 얻었다.

오늘의 작업을 위해서 쓰일 가장 핵심적인 도구는 samtools임은 부정할 수 없다. samtools는 1.x 버전으로 업그레이드되면서 공식 웹사이트도 변경되었음을 먼저 알아두도록 하자.

  • SAMtools 0.1.19까지 (링크)
  • SAMtools 1.x부터 (링크 http://htslib.org/)

1. 가장 일반적인 mapping statistics 출력하기(samtools flagstat)
$ samtools flagstat BL21.bam
869658 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 duplicates
842935 + 0 mapped (96.93%:-nan%)
869658 + 0 paired in sequencing
434829 + 0 read1
434829 + 0 read2
791630 + 0 properly paired (91.03%:-nan%)
831272 + 0 with itself and mate mapped
11663 + 0 singletons (1.34%:-nan%)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)
Mapping statistics 수치를 뽑는 가장 간단한 방법은 samtools flagstat를 이용하는 것이다. 위에 든 사례(E. coli BL21)는 duplicate 하나 없이 너무나 깔끔하게 mapping이 된 결과물이라서 별로 공부할만한 것이 없다. IS가 잔뜩 박혀있는 Shigella boydii의 genome 서열에 대한 일루미나 매핑 결과물을 가지고 다시 분석을 해 보자. Bowtie2를 사용하되 시간을 줄이기 위하여 100만개의 read(50만 read pair)로 입력 데이터를 제한하였다.
$ bowtie2 -x SB_ref -1 SBpart_1.fastq -2 SBpart_2.fastq -S SB.sam
500000 reads; of these:
  500000 (100.00%) were paired; of these:
    55609 (11.12%) aligned concordantly 0 times
    402919 (80.58%) aligned concordantly exactly 1 time
    41472 (8.29%) aligned concordantly >1 times
    ----
    55609 pairs aligned concordantly 0 times; of these:
      11135 (20.02%) aligned discordantly 1 time
    ----
    44474 pairs aligned 0 times concordantly or discordantly; of these:
      88948 mates make up the pairs; of these:
        72973 (82.04%) aligned 0 times
        7334 (8.25%) aligned exactly 1 time
        8641 (9.71%) aligned >1 times
92.70% overall alignment rate
bowtie2.2.4 매핑 과정에서 약간의 수치가 출력된다. 이제 결과물을 BAM 파일로 전환하여 samtools로 다시 수치를 뽑아보자.
$ samtools view -b -S -o SB.bam SB.sam
[samopen] SAM header is present: 1 sequences.
[hyjeong@tube 01_mapping_test]$ /usr/local/apps/a5_miseq_linux_20141120/bin/samtools flagstat SB.bam
1000000 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 duplicates
927027 + 0 mapped (92.70%:-nan%)
1000000 + 0 paired in sequencing
500000 + 0 read1
500000 + 0 read2
888782 + 0 properly paired (88.88%:-nan%)
919416 + 0 with itself and mate mapped
7611 + 0 singletons (0.76%:-nan%)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)
 어라? duplicate가 하나도 나타나지 않는다. 같은 데이터를 가지고 bwa 0.6.2-r126을 돌려 보았지만 mapped read의 수치가 아주 조금 줄어들었고 이번 포스팅에서 설명을 하려 했었던 duplicates 수치가 역시 하나도 나오지 않았다. "duplicates" 수치가 의미하는 것은 read가 반복하여 매핑된 횟수들의 합을 의미한다.

2. Unmapped reads

이제부터는 alignment 파일(SAM or BAM) 내에 있는 FLAG를 참조하여 적절히 필터를 하는 기법이 필요하다. samtools view 명령으로 특정 조건에 맞는 read alignment만을 출력하거나(-f INT) 혹은 그 조건에 맞는 것을 걸러서 제거하여 출력하는 것(-F INT)이 가능하다. 예를 들어 0x04(0x가 앞에 붙은 것은 16진수를 의미한다. 따라서 0x04는 십진수의 4와 같다) FLAG은 "segment unmapped"를 의미한다. 다음의 두 명령은 전혀 다른 수치를 출력한다. 
samtools view -f 0x04 -c align.bam # unmapped read의 수
samtools view -F 0x04 -c align.bam # mapped read의 수
좀 더 정확히 말하자면 mapping이 일어난 경우 mapped read의 수라기보다는  mapped position이라고 하는 것이 나을 것이다. 하나의 read가 reference genome 내의 여러 위치에 정렬하는 경우 SAM/BAM 파일 내에 각각 별개의 레코드로 존재하게 되기에 그렇다. -c는 matching record의 카운트만을 출력하는 것이다. 따라서 -b -o out.bam이라고 하면 read/alignment를 BAM 파일로 출력함을 의미한다. 또한 -f 0x04는 -f4 -f0x04 등의 형태로 사용함을 허락한다.

3. Uniquely mapped read의 수 세기

samtools view -F 0x40 aligned_reads.bam | cut -f1 | sort | uniq | wc -l
samtools view -f 0x40 -F 0x4 aligned_reads.bam | cut -f1 | sort | uniq | wc -l #left mate
samtools view -f 0x80 -F 0x4 aligned_reads.bam | cut -f1 | sort | uniq  | wc -l #right mate

4. Paired end read의 정렬 결과로부터 insert size 추정하기

이것은 one-liner로서는 뽑기가 쉽지 않다. 다행히 getinsertsize.py(GitHub link)라는 훌륭한 공개 파이썬 스크립트가 있다. 사용법은 스크립트 저자의 블로그(2012년 4월 6일 포스팅)에 잘 설명되어 있다. SAM/BAM 파일을 표준 입력으로 받을 수 있어서 매우 깔끔한 처리가 가능하다. getinsertsize.py SAM_file 또는  samtools view BAM_file | getinsertsize.py - 어느 것이든 실행 가능하다.
$ samtools view aln-pe.bam | getinsertsize.py -
1M...  # read의 전체 수를 의미하는 것으로 생각된다
Read length: mean 101.0, STD=0.0
Read span: mean 394.062581504, STD=31.8156907927

5. Coverage 관련 수치 구하기

Reference genome 전체에 대한 평균 coverage는 얼마일까? zero coverage region의 위치를 추출할 수는 없을까? 솔직히 말해서 one-liner로 이런 수치를 계산한다는 것은 다소 무리가 아닐까 싶다. 구글에서 bam sam read depth coverage라고 검색을 해 보면 Biostars와 SEQanswers에 이에 대한 몇 가지 질문과 답이 있으니 참고하기 바란다.

오늘의 사무실 음악: 영국 작곡가들의 관현악곡

사무실에서 주로 듣는 음악 서비스는 낙소스 웹 라디오이다. 나는 음질(48kbps, AAC 스트리밍)에 대해서는 극단을 추구하지는 않는 편이라 고가의 DAC니 무손실 음원이니 하는 것에는 거의 관심이 없다. 최소한 음질적인 면에서는 불만이 없다. 아이패드(Wi-Fi)로 듣기에는 뭔가 부족하다는 느낌은 있지만... 곡을 마음대로 고를 수 없는, 말 그대로 '라디오'이다. 아무런 선택의 고민 없이 채널만 설정하여 그냥 들으면 된다.

거의 바이올린이나 피아노, 첼로, 기타(류트 포함) 등의 소품 위주로 듣다가 오늘은 "Orchestral (English) 1 channel"을 골라 보았다. 첼로 실내악 채널은 그동안 하도 많이 들어서 곡 제목은 잘 모르지만 멜로디는 거의 암기할 정도... 관현악곡을 택하였으므로 옆 사무실에 불편을 주지 않기 위하여 스피커가 아닌 헤드폰을 끼고 볼륨을 약간 올려 보았다. 오늘 선곡한 채널에서는 Delius나 Finzi 등 나에게는 생소한 작곡가들의 관현악곡이 흘러나온다. 지나치게 장중하지도, 그러나 가볍지도 않은 월요일의 정서에 딱 맞는 곡이랄까.


유럽으로 유학을 떠난 한국인 음대 출신 학생에게 현지의 지도교수가 물었다고 한다. 한국의 (전통) 음악에 대해서 알려달라고. 그 학생이 당황하면서 그런 것은 대학에서 배우지 않는다고 했더니 지도교수가 너무나 놀랐다고 한다. 한국에서 음악을 좀 심각하게 듣거나 전공한다고 하면 그 대상을 어느새 유럽 어느 국가의 특정 시대의 음악, 즉 우리가 서양 고전음악이라고 좁은 틀에 가두어버리게 되고 말았다. 한층 더 문제를 심각하게 만드는 것은 국악 자체가 열등하다는 사고방식이 꽤 널리 펴져있다는 것이다.

벡대웅 전 한국예술종합학교 교수의 2008년도 인터뷰 기사를 보자.

국악 현대화 좋지만 '싸구려'로 흘러선 안돼

브람스(1833-1897)나 말러(1860-1911)와 동시대를 살았던 사람들은 그 작곡가들의 음악을 당시에 들으면서 이것이 고전음악이라는 생각을 하지 않았을 것이다. 바흐(1685-1750)와 모짜르트(1756-1791)의 음악은 19세기 말에는 이미 고전음악으로 취급을 받았겠지만. 세월이 많이 흘러서 이제는 과거 수백년 동안 작곡된 음악만을 평생 듣고 공부해도 지루하기는커녕 시간이 부족할 지경이 되고 말았다. 그렇다고 해서 현 시대의 작곡가가 만든 음악에 대해 뒷짐을 지고 있는 것은 문제가 있다.

현 시대의 작곡가가 완전히 현대적인 방식으로 만든 곡도 있고, 19세기 당시의 형식으로 만든 음악도 있을 것이다. 여기에 우리의 전통음악도 마찬가지로 적용될 수 있다. 어떤 면에서는 전통 가락을 현재의 대중용 음악에 풍성하게 녹여내고 있는 북한의 음악(체제 선전용으로 변질되고 만 순수성이 없는 문화라고 폄훼한다면 할 말은 없지만...)이 현재 한국의 음악보다 사정이 더 나을 수도 있다. K-POP이 어쩌고 전세계적인 음원 판매량이 어쩌고가 더 중요한 것이 아닐지도 모른다. 철저히 사전 기획을 통해 전세계의 작곡가들이 모여서 상업성 위주로 만들어낸 음악에 대해서(어쨌든 팔리기는 한다) 얼마나 가치를 두어야 할까? 난 그다지 긍정적으로 보지는 않는다. '문화의 상품화, 대중화'는 어제 오늘의 문제는 아니다. 이 짧은 글에서 여기까지 문제를 확대하고 싶지는 않다.

앞날을 생각한다면 '고전'을 되풀이하는 것만으로는 옳지 않다. 단순히 수동적으로 감상만을 즐기는 입장으로서는 되풀이만 하다가도 평생이 부족하겠지만 말이다. 전통을 지키는 것도 중요하지만 그것을 기반으로 해서 끊임없이 재창조를 하는 노력이 필요하다고 본다.

2015년 9월 12일 토요일

옥상옥(屋上屋), 풀레인지 스피커 위에 트위터 스피커

요즘은 트위터라고 하면 누구나 다 소셜 미디어를 연상하지만 사실 고음 재생용 스피커 드라이버를 일컫는 말이기도 하다. 전 주파수 영역의 재생을 풀레인지 스피커 하나에 맡기기로 했으면서 고음이 부족함을 핑계로 트위터를 추가하는 것은 어쩌면 옥상옥의 전형인지 모르겠다. 이는 결국 풀레인지 드라이버 하나로는 어떤 대역도 만족스럽지 못함을 고백하는 것이 아니겠는가?

사무실에서 쓰려고 만든 트위터(+받침대)를 주말을 맞이하여 집에 가지고 와 보았다. 집에서 쓰는 초 간이형 풀레인지 스피커에는 얼마나 감칠맛을 더해주는지 궁금했기 때문이다.


없는 것보다는 훨씬 나은 소리를 들려준다. 만약 저음과 고음 중 하나만을 선택하라면 고음을 택하지 않을까? 지나치게 저렴한 풀레인지 스피커를 택한 것이 애초부터 잘못된 컨셉트였는지도 모른다. 저가는 저가일뿐, 구경이 작다고 당연히 고음이 잘 나는 것은 아니니 말이다. 마운트가 한 조 더 있으니 트위터를 또 구입하여(역시 저가품의 악순환이다!) 집과 사무실에서 같이 쓰는 것도 나쁘지는 않을 것이다. 5천원짜리 풀레인지'성' 스피커에 어울리는 트위터 스피커는 얼마짜리란 말인가...

2015년 9월 10일 목요일

Shell script 안에서 선언한 변수를 스크립트 외부에서도 사용하려면

나의 유닉스/리눅스 지식은 여전히 얕고, 또 특정 분야에만 편중되어 있음을 솔직하게 시인한다!

어제 A5-miseq에 포함된 samtools/bcftools 문제로 사소한 문제를 겪으면서 이와 관련한 해결 방안을 체계적으로 정리해야 되겠다는 생각을 갖게 되었다. A5-miseq 파이프라인을 실행하면 총 다섯 단계를 거쳐 전체 과정이 실행된다. 이때 꽤 많은 프로그램들을 불러야 하므로 패키지의 bin 디렉토리를 전부 PATH 환경변수에 추가하도록 .bash_profile을 설정해 두었었다.


그러면 뭐가 문제인가? /usr/local/bin에는 좀 더 최신 버전의 samtools가 있다는 것이다.

이를 해결하기 위해서 .bash_profile에서는 A5-miseq의 bin 디렉토리를 PATH에 추가하지 않기로 하였다. 그러면 A5-miseq을 실행하려면 어떻게 하면 되는가? 가장 간단하게는 shell에서 다음과 같이 한 다음에 a5_pipeline.pl을 실행하면 된다.

export PATH=$PATH:/usr/local/apps/a5_miseq_linux_20141120/bin/

혹은 스크립트를 다음과 같이 만들어서 PATH 선언과 동시에 실행을 해도 된다. 여기에서는 export 명령을 쓸 이유가 없다. 내가 늘 교과서처럼 여기는 Mark G. Sobell의 3판(1995년, 좀 오래되었다) 293쪽을 보면 "The export command (below) makes the new value of PATH accessible to subshells and other shells you may invoke during the login session"이라고 적혀 있다.

#!/bin/env bash
PATH=$PATH:/usr/local/apps/a5_miseq_linux_20141120/bin/
a5_pipeline.pl BL21-20x_1.fastq BL21-20x_2.fastq testAssembly

이 스크립트의 실행이 종료되고 난 뒤 PATH 변수에는 A5-miseq의 bin이 더 이상 남아있지 않다. 스크립트 내에서 export를 사용하는 여부에 관계 없이 스크립트 종료와 함께 '펑' 사라지는 것이다. 그러면 스크립트 내에서 선언한 변수가 그 스크립트의 종료 이후에도 계속 유지되게 하려면 어떻게 하면 되는가? 바로 source 혹은 '.' 명령으로 그 스크립트를 실행하면 된다.

마지막 질문은 source로 실행하는 스크립트 내부에서 export를 쓸 필요가 있느냐이다. 테스트를 해 보면 필요하지는 않아 보인다.

이 문서를 작성하기 위해 다음의 글을 참고하였다. 물론 아직까지는 여기에서 설명하는 모는 것을 전부 이해하고 있지는 못한 상태이다.

http://stackoverflow.com/questions/16618071/export-a-variable-to-the-environment-from-a-bash-script-without-sourcing-it

[Next-Generation Sequencing] Variant calling 작업의 오류 해결과 Bowtie 2

다음 달에 있을 미생물 유전체 정보 분석 교육에 사용할 실습 자료를 만들고 있다. 워낙 많은 양의 시퀀싱 결과물이 있어서 적당한 것을 골라서 정해진 시간 내에 실습이 무난히 이루어지도록 분량을 줄이고 프로그램 버전을 확인하는 작업을 한창 진행 중에 있다. 어쩌다보니 이번 가을에는 개인적으로 몇 사람의 연구원에 대한 교육을 시작하여 이제 마무리 단계에 있고, UST 강의까지 겹쳐서 그동안 축적한 정보를 정리하는데 아주 좋은 기회가 되고 있다.

다만 아쉬운 점이 있다면 나는 실무에서 상용 tool인 CLC Genomics Workbench를 써서 대부분의 분석 작업을 실시하지만, 교육에서는 그럴 수가 없다는 것이다. 따라서 사용이 다소 불편하더라도 공개된 소프트웨어를 이용하는 방식으로 교육을 하지 않을 수 없다. 상용 툴이 모든 것을 다 해주는 것은 아니기에 공개 툴을 조금씩 쓰기는 하지만 이를 남에게 전수하려면 더욱 많은 사전 경험이 필요하므로 실수가 없도록 철저하게 매뉴얼을 숙지하고 점검에 점검을 거듭하고 있다.

어제는 미생물 NGS 데이터를 이용한 variant calling 작업을 하다가 오류를 만났다.
$ samtools mpileup -uf ref.fa BL21.sorted.bam | bcftools view -bvcg - > var.raw.bcf
[mpileup] 1 samples in 1 input files
Set max per-file depth to 8000
[bcf_sync] incorrect number of fields (0 != 5) at 0:0
[afs] 0:0.000
빨강색으로 표시한 것이 오류 메시지이다. 구글을 열심히 뒤져 보았으나 이것과 딱 맞는 사례는 없었다. 도무지 이유를 알 수가 없었다. 필드의 수가 5개가 아니고 6개라는 오류 메시지를 보고한 경우는 매우 많았으나 나처럼 아예 아무것도 나오지 않은 사례는 보이질 않았다. 문제 해결을 위해 이것저것 한참을 알아보다가 내 시스템에 몇 가지 프로그램이 버전이 맞지 않은 상태로 뒤섞여 존재함을 알 수 있었다.

문제는 바로 de novo assembly pipeline인 A5-miseq 때문이었다. 내가 사용하는 A5-miseq에는 0.1.99-4428cd 버전의 samtools, bcftools 및 vcfutils.pl이 포함되어 있다. 그런데 별도로 설치한 samtools 1.2와 뒤섞여 실행이 되면서 오류가 난 것이다. samtools 0.1.18에는 bcftools/vcftools.pl이 같이 포함되어 있었지만 1.* 대의 버전으로 올라오면서 각자 따로 배포되고 있다. 이에 대해서는 최신 배포판 사이트를 참조하면 된다. Scaffolding tool인 SSPACE에도 bwa와 bowtie가 같이 들어있다. 이를 설치할 때에는 시스템에 먼저 깔려있던 것들과 서로 혼동되지 않도록 주의가 필요하다. 아무 생각 없이 bwa를 실행하였을 때 도대체 어느 경로에 설치된 바이너리가 돌아가고 있는지는 알고 있어야 한다는 뜻이다.

그렇다면 /usr/local/bin에 위치해서 나를 혼동스럽게 했던 samtools 1.2를 지우고 A5-miseq에 포함된 samtools와 bcftools만을 이용하여 variant calling 작업을 해 보자. 이제는 아무런 오류 없이 성공적으로 수백개의 variant가 출력되었다. 이런 성가신(?) 작업이 CLC Genomics Workbench에서는 일관적인 GUI 환경 안에서 편리하게 수행되지만 편리한 만큼 적지 않은 돈이 드는 선택이라 강요할 수는 없는 노릇이다. Command line interface 위주의 공개형 도구는 비록 사용은 불편할지라도 분석 과정의 기본을 익히기에는 좋으니 이것과 담을 쌓고 살 수는 없는 노릇이다. 

Variant Calling 과정의 상세

글을 작성한 김에 변이 추출(variant calling) 과정에 대하여 좀 더 자세히 기술해 보고자 한다. 변이 추출은 유전체 resequencing의 가장 기본적인 목적이다. copy number variation이나 structural variation처럼 까다로운 것은 다음으로 미루고, SNV의 추출에 대한 것만을 정리하겠다.

매핑 도구는 bowtie2를 쓰기로 한다. 따라서 bowtie2에 포함된 공식 매뉴얼을 참조하는 것이 바람직할 것이다.

bowtie2로 만들어진 SAM 파일을 정렬 및 인덱싱을 하여 samtools pileup 명령으로 처리하는 것이 기본이다. ref.fa 파일은 미리 samtools faidx 명령으로 인덱스를 생성해 두어야 한다.
samtools mpileup -u -f ref.fa sample.sorted.bam > sample.bcf
bcftools view -v -c -g sample.bcf > sample.raw.vcf 
파이프를 사용하면 한 줄의 명령어로 줄여서 실행할 수도 있다.
samtools mpileup -uf ref.fa sample.sorted.ban | bcftools view -bvcg - > sample.raw.bcf
이쯤에서 SAMtools의 공식 문서를 참조해 보자.


위 단계에서 추출한 변이를 100% 전부 믿고 받아들일 수는 없는 노릇이다. 이제 vcfutils.pl로 적절히 필터링하여 정확한 결과만을 남기도록 한다. read depth가 100 이상인 곳에 대해서만 필터링하려면 다음과 같이 한다.
bcftools view sample.raw.bcf | vcfutils.pl varFilter -D100 > sample.flt.vcf
Short read aligner의 최강자는 누구인가?
여기에 대해서는 꽤 많은 논문이나 포스팅이 있으니 몇 개를 간추려서 소개하는 것으로 갈음하도록 하자.

2015년 9월 8일 화요일

고음 스피커용 고정대 제작

이번에는 사무실용 풀레인지 스피커의 부족한 고음을 보충할 트위터의 고정대를 만들어 보았다. <엘렉혼>에서 구입한 4천원짜리 트위터에 콘덴서만 하나 직렬로 연결한 것이 전부이다. 역시 목공계의 전설 <우두>님에게 스케치를 보내어 정밀하게 재단된 자작나무 합판을 받았다. 직각 접합 및 사선 접합용으로 재단된 결과물 두 조가 하루 뒤에 도착하였다. 외형 치수는 사선 접합용이 조금 더 길고 나머지는 같다. 테이프를 붙여서 임시로 모양을 잡아보았다.


조립이라고 할 것도 없다. 목공본드를 바른 뒤 한 조씩을 서로 맞물리니 줄로 묶을 수가 있었다. 하룻밤을 두어 완전히 굳힌 다음 사포로 표면을 연마하였다. 마감 처리는 별로 할 생각이 없다.


바인딩 포스트도 달아야 하고, L-pad를 써서 -3 dB 혹은 -6 dB 정도 감쇠를 시키기 위해 <엘레파츠> 웹사이트에서 부품(5와트 시멘트 저항)을 골라 장바구니에 담아놓기까지 했다. 그런데 트위터 유닛을 끼우고 연결하니 고음이 너무 강하다는 생각이 그다지 들지 않는다. 구멍에 유닛이 꽉 차게 들어가니 나사못을 아직 박지 않은 상태에서도 잘 버티고 있다.



고무발과 바인딩 포스트만 달면 그대로 사용하는데 문제가 없을 것 같다. 이로써 지난 9월 2일에 선언한 연말까지의 오디오 DIY 프로젝트의 대부분을 마무리하였다.

2015년 9월 6일 일요일

옥외용 FM 안테나 재설치

남쪽 발코니 난간에 설치한 FM 안테나가 자꾸 처지고 있어서 보수 공사를 단행했다.

예전의 설치 상태는 이전 포스팅에 남겨 두었다.

야기 안테나, 정식 명칭은 Yagi-Uda 안테나의 일반 구조는 다음과 같다. 내가 사용하는 FM 수신용 안테나는 급전부가 달린 방사기(수신용이라서 방사기라고 하면 좀 이상하지만...) 앞에 도파기는 하나만 있고 반사기는 없는 구조이다. 그림 출처는 정보통신신문이다.

http://www.koit.co.kr/news/articleView.html?idxno=33524

고정 방식을 바꾸어서 그동안 쓰지 못했던 도파기를 설치하게 만들었다. 갈색의 지지봉은 커튼봉을 재활용한 것이다. 지지봉이 알루미늄이라서 안테나의 수신에 영향을 줄지도 모르겠다. 다른 엘리먼트와 전기적 접촉은 하지 않지만, 그건 도파기나 반사기(본 안테나에는 없다)도 마찬가지 아니겠는가? 만약 다음에 재보수를 한다면 PVC 파이프를 쓰는 것도 한 방법이지만 알루미늄 봉과 유사한 강도가 나오려면 상당히 무거울 것이다.


설치를 마치고 옆에서 보니 역시 수평을 유지하지는 못하고 약간 처진 모습이다. 화분 받침에 걸쳐져 있어서 더 이상 처지지는 않겠으나 미관상 영 좋지 않다. 다음에는 노랑색 화살표 밑에 뭔가를 고여서 수평에 가깝게 만들어야 되겠다.



현재의 배치는 계룡산에서 송출되는 KBS 대전 FM을 잘 잡기 위함이다(서쪽을 지향해야 함). 예전 포스팅에 우리집 주변의 송신소 상황을 지도 상에 표시해 두었다. 정서(西) 방향보다는 서남서로 약간 트는 것이 더 나을지도 모른다.

[추가한 글: 사진 상의 안테나 방향은 서쪽이 아니라 동쪽을 향하고 있는 것이다! 도파기 없이 사용하던 시절에는 정동이나 정서 어느쪽으로든 상관이 없었다. 이전 설치 상태와 달라진 것은 도파기 하나가 추가된 것에 불과하다. 비록 도파기의 방향을 잘못 달아서 안테나가 정동 방향에서 송출되는 전파를 잘 잡도록 된 것은 맞지만, 도파가가 없던 시절보다 수신 능력이 더 떨어졌다고는 생각하지 않는다. 실용적으로는 문제가 없으나 원리적으로는 말이 안되니 나중에 방향을 180도 돌려서 다시 설치해 보도록 하자. 안테나를 90도로 세워서 수신 상태가 달라지는지에 대해서도 테스트를 해 볼 생각이다.]

재설치 이전과 비교하여 무엇이 확 나아졌는지는 체감하기 어렵다. 더 나빠지지는 않았으니 일단은 만족하다. 이렇게 하여 4가지 오디오 관련 DIY 숙제 중 3가지를 이번 주말에 해결하였다.



2015년 9월 5일 토요일

주말을 이용한 오디오 DIY 2건

오늘도 구멍을 수십개는 뚫어야 한다. 금속 재료가 하나도 없음을 감사히 여기며 작업에 임하였다. 먼저 락앤락 밀폐용기에 앰프 보드 넣기. 처음에는 기판의 위쪽에 20 mm 서포트를 달아서 뚜껑에 고정을 할 계획이었다. 그러나 단자들을 통과시키기 위해 옆면에 뚫어야 할 구멍의 위치가 영 마음에 들지 않는다. 고정용 돌출부분과 살짝 겹치는 것이 아닌가? 계획을 수정하여 통 바닥에 기판을 고정하는 것으로 바꾸었다.



수평형 볼륨이 쓰인 특이한 구조라서 음량을 조정하려면 뚜껑에 구멍을 내야 한다. 차마 뚜껑의 사진을 올리지 못한 것은, 구멍을 뚫었다기보다 파헤쳤다는 것이 맞을 정도로 엉망이기 때문이다. 아래쪽에는 의자 다리에 붙이는 바닥 긁힘 방지용 보호 스티커를 잘라서 붙였다. 이것이 없으면 기판 서포트를 고정한 나사의 머리에 의해 바닥이 긁힌다. 점착식 고무다리를 구할 수 있다면 앞으로의 공작에 도움이 될 것이다.


다 만들고 나서 생각해 보니 기판 고정용 서포트를 조금만 긴 것(25 mm)으로 선택했다면 의도한대로 뚜껑에 기판을 고정할 수 있었다. 그러면 볼트가 뚜껑에 고정되니 바닥면에 긁힘 방자용 패드를 붙일 일도 없었을 것이고.. 다음에 새로 통을 구입하여 가공해야 되겠다. 폴리프로필렌 재질을 가공하는 것을 싫어하지만 하도 여러번 하다보니 요령이 조금씩 생기고 있다.

다음 할 일은 2호기 스피커에 단자대를 붙이는 것이다. 2핀짜리 일자형 미니 스프링 클립을 주문하였었는데 재고가 없다면서 사진과 같은 사각 컵 형태의 부품이 왔다.


6 mm 드릴로 미리 맞추어 그린 밑그림의 네 귀퉁이에 구멍을 뚫었다.


구멍을 촘촘하게 더 뚫은 뒤 칼로 파내어 다듬는다. 옆판은 자작나무 합판이지만 앞뒤판은 MDF라서 가공이 매우 수월하다. 수성 페인트를 칠해서 흰 색을 띠고 있다. 포트는 외경 38 mm의 PCV 파이프이다. 


스피커로부터 온 선을 단자대에 납땜해 연결한 뒤 최종적으로 나사못을 박아서 고정하였다. 아주 마음에 든다. 스피커가 고정된 전면판은 아직도 고정을 하지 아니한 상태이다. 뒷판을 목공본드로 붙여버렸으니 앞판을 나사못으로 고정하여 필요한 때에 개방할 수 있게 해야 하는데, 아름다운(?) 흰 판에 흉칙한 나사못 머리를 보이게 하는 것이 싫어서이다.



2015년 9월 2일 수요일

2015년 연말까지의 오디오 DIY 프로젝트

1. 트위터 스피커를 제대로 만든 마운트에 고정하고 L-pad로 attenuation하기



풀레인지 스피커통 위에 임시로 얹혀있는 트위터 스피커를 제대로 고정시킬 마운트로 목공으로 제작할 예정이다. 중저음에 비하여 약간 음압이 높은 느낌이 들어서 시멘트 저항을 몇 개 이용하여 L-pad를 만들도록 한다. 그런데 지금 트위터 없이 바이올린 실내악곡을 듣는 중인데 별로 고음이 부족하다는 생각은 들지 않는다.

2. 스피커 2호기 마무리하기

스피커 단자도 달아야 하고, 살짝 끼워진 상태인 전면 배플판도 고정해야 한다. 원래 나사못으로 고정할 계획이었지만 단정하게 흰색 페인트가 발라진 전면판에 구멍을 내가가 싫어졌다. 구멍을 수직으로 똑바로 뚫지 못하면 또 얼마나 보기가 흉할 것인가? 판을 목공본드로 붙여버리면 앞으로 영영 통을 열지 못하게 된다. 그래도 괜찮은가? 스피커 유닛을 갈거나 수리할 일은 실제로 앞으로 일어날 것으로 생각하지 않는다. 좀 더 생각해 본 다음에 결정하자. 단자로는 바인딩 포스트 대신 저렴한 클립식 단자를 달겠다.


3. TPA3125D2 칩앰프를 락앤락 반찬통에 넣기

폴리프로필렌 통에 깨끗하게 구멍을 뚫는 기술을 익혀야 한다. RCA 단자를 관통시키려면 현재 갖고 있는 가장 큰 드릴 비트(8 mm)로는 부족하다. 10 mm짜리 비트를 따로 사야 하는가, 아니면 단품으로 사야 하는가? 드릴 비트는 세트로 사는 편이 유리하지만 말이다.


4. 그 밖에...

이상의 일을 추진하는데 몇 달이 걸릴지도 모르는 노릇이다. 새로운 것을 자꾸 만들거나 구입하려 하지 말고, 일단은 현재 벌여놓은 일들의 부족한 부분을 마무리하는 것으로 만족하고자 한다. 장기적으로는 라즈베리파이와 외장형 ODD를 이용하여 인터넷 라디오 및 DVD 플레이어를 만들어 보는 것, 그리고 조금 더 출력이 높은 앰프를 만들어 보는 것에 관심을 두기로 하겠다. 스피커 보호회로가 있는 TDA8950 앰프보드, LM1875 완제품 앰프, 또는 TDA7498 완제품 앰프가 그러한 사례이다. 진공관 앰프는 지금 쓰고 있는 2종(인티그레이트 앰프 및 헤드폰 앰프)로 충분하다.

2015년 9월 1일 화요일

헤드폰 쿠션 교체(audio-technica TH-380AV)

찢어진 헤드폰의 쿠션(이어패드가 더 정확한 명칭이리라)을 대체할 것을 G마켓에서 구입하였다. 직경 약 70 mm에 해당하는 것을 구하면 된다. 외피가 부서져 떨어져 나가는 것을 보고 버려야 하는 것 아닌가 하는 생각을 한 적이 있었다. 물론 지나친 걱정이었다.

이 헤드폰은 전문 음악감상용이 아니다. TV에 꽂아놓고 멀직히 소파에 앉아서 감상을 하기 위한 물건이다. 그래서 케이블이 꽤 길고, 야외에서 포터블 기기에 꽂아서 듣기가 곤란하다. 케이블이 줄줄 끌리므로.


재질은 그다지 마음에 들지 않는다. 내부의 쿠션 형태나 외피의 부드러움이 원래의 것을 따르지 못한다. 정품이 아니라 적당히 만들어진 호환품이니 어쩔 도리가 없을 것이다. 오디오-테크니카 웹스토어에서 교체용 이어패드를 구입할 수 있다고 되어 있다. Accessory & Spares -> Spare pars -> Headphone 카테고리가 있다! 그렇지만 고급 헤드폰도 아닌데 바다 건너 주문을 할 필요가 있겠는가.

헤드폰에 대해서는 그다지 많이 알지는 못하고, 또 큰 투자를 할 생각은 없다. 쿠션을 찾으면서 내 스타일에 맞아 보이는 헤드폰을 찾아보았다. Takstar의 모델 및 크리에이티브의 AURVANA Live! 등에 관심이 간다. 젠하이저나 소니의 헤드폰은 비싸다는 생각이 든다.

나는 귀를 많이 덮는 스타일을 선호한다. TH-380AV는 이런 측면에서 간신히 요건을 충족시키는 정도? 국내 브랜드인 크레신 제품 중에는 딱 마음이 끌리는 것이 없다.

또다시 락앤락 반찬통 가공을 해야 한다

헐벗은(?) 기판 상태의 앰프를 들고 있노라면 정말 내가 뭔가를 만들고 있다는 즐거운 기분이 든다. 그러나 그 기쁨도 잠시, 제대로 된 통에 이를 수납하지 못하면 활용도가 현저히 떨어진다. 누군가 그런 말을 하였다. 앰프 자작의 완성은 섀시 가공이라고! 핵심 기능(80%)은 앰프부 기판과 주변 부품이 담당하지만, 나머지 20%를 만드는데 사실상 가장 많은 수고가 들어간다.

딸아이의 방학 숙제로 같이 만든 TPA3125D2 앰프를 기판에 서포트만 받친 상태로 계속 쓸 수는 없는 노릇이다. 결국은 또 마트에서 파는 락앤락 식품용기 중 가장 작은 것을 구입해 왔다. 옆면이 직각에 가까와서 이런 용도의 케이스로는 나쁘지 않다.


내가 락앤락 용기를 싫어하는 이유는 약간 질긴 성향이 있어서 구멍이 깨끗하게 뚫리지 않기 때문이다. 실력 부족이라고 해 두자. 이번에는 서포트를 위에 달아서 뚜껑에 고정해 보려 한다. 아래쪽에 고정을 하면 나사 머리가 바닥에 돌출한다. 고무발을 바닥에 달 수가 없을 정도로 작은 케이스라서 되도록이면 바닥면은 나사머리가 나오지 않게 매끈한 상태로 두는 것이 가장 좋을 것이다.

어떻게 구멍을 똑바르게 뚫는단 말인가? 정말 드릴 스탠드가 하나 있어야 하나? 트위터 스피커에 음압 감쇠를 위한 L-pad를 달아야 하고, 그러려면 시멘트 저항도 몇 개를 사야 하고, 2호기 스피커에도 바인딩 포스트나 클립을 달아서 완성도 해야 하고... 소소하게 할 일이 많다.