2016년 1월 31일 일요일

TDA7265 앰프 마무리 작업

TDA7265 앰프의 케이스를 다시 열고 볼륨 포텐셔미터 개조 작업(B형 -> A형)을 완료하였다. 놉을 전면으로 향하게 놓은 상태에서 왼쪽부터 1(그라운드), 2(to amplifier), 3(from source)번 단자라고 하였을 때 1번과 2번에 1/10~1/5 정도 값을 갖는 저항을 연결하면 된다. 저항의 비율에 따라서 회전각에 따른 저항치 커브가 다음 그림과 같이 달라진다.

http://www.radiomuseum.org/forum/repairing_old_potentiometers.html
출처: http://www.radiomuseum.org/forum/repairing_old_potentiometers.html
나의 경우는 50Kohm 포텐셔미터에 6.8Kohm을 연결하였다. 이렇게 개조한 부품이 정말로 A형과 비슷한 행동을 보이는지 실제로 단자 1과 2 사이를 테스터기로 찍어서 놉을 돌려보면 납득이 가지 않는 저항수치가 나오는 것으로 오해하기 쉽다. 당연하다. 개조 후에는 단자 1과 3 사이의 저항은 더 이상 회전 각도에 따라서 고정되어 있지 않다. 중요한 것은 단자 1과 3 사이 저항에 대한 단자 1과 2 사이 저항의 비율이 출력 신호 레벨을 결정하는 것이다. 개조하지 않은 상태에서 단자 1과 3 사이는 항상 50Kom 고정이지만 개조 후 단자 1과 3 사이는 50Kohm(0도)로부터 놉을 돌릴수록 저항이 더욱 줄어든다. 그렇다면 소스측에서 접하는 앰프쪽의 임피던스가 놉 각도에 따라서 달라진다는 뜻인데, 이것이 음질에는 어떠한 영향을 미칠까? 새로운 궁금증이 생겨나고 있다.

작업을 마친 후의 모습이다. 매우 어설픈 하드 와이어링이다. 부품이나 기판을 고정하는 도구 없이 납땜을 한다는 것이 얼마나 어려운지 아마 경험이 있는 사람들은 잘 알 것이다. 손이 3개라면 얼마나 좋을까! 모든 작업을 마치고 정말 마지막이라는 심정으로 케이스의 뚜껑을 닫았다. 이제는 볼륨 놉의 각도에 따라서 정말 편안한 레벨 조정이 된다.


오늘 작업에서는 솔더링 페이스트의 쓸모를 알게 된 것이 큰 성과이다. 페이스트를 구입한지 정말 오랜 시간이 지났지만 그동안 사용을 하지 않았었다. 피복을 벗긴 연선에 페이스트를 바른 뒤 납을 먹이니 페이스트가 부글부글 끓으면서 점성이 낮아진 납이 순식간에 연선을 뒤덮는 것을 처음으로 보았다. 왜 진작에 페이스트를 사용하지 않았을까! 아직도 배울 것이 많은 자작 인생이다.

2016년 1월 29일 금요일

TDA7265 앰프의 케이스 작업 완료

자작의 딜레마는 '이 작업이 결코 마지막이 될 수 없다'는 것이다. 계속 불만스러운 점을 일부러라도 찾아내고서 다시 드라이버를 들고 기기 뚜껑을 여는 일이 반복된다. 이번에도 케이스의 볼트를 조이면서 아마 며칠 지나지 않아서 또 볼트를 푸는 일이 생길 것이라고 예상해 본다. 납땜은 항상 허술하고, 단자대도 꽉 조여지지 않은 것 같고...

가장 핵심이 되는 앰프 보드는 해외에서 구입하고, 케이스에 구멍을 뚫고 납땜이나 해서 서로 연결만 하는 작업을 어찌 진정한 자작이라고 부를 수 있을까? 인스턴트 라면을 끓이는 것에 비유하면 적당할지 모르겠다.

잡음 문제로 속을 썩이던 LM1876 보드와 토로이덜 트랜스(18V-0V dual)를 제거하고 새로 구입한 15V-0V-15V EI 트랜스와 TDA7265 앰프 보드를 넣었다. 토로이덜 트랜스는 TDA7265 앰프에 사용하기에는 공급 전압이 너무 높다.


내부의 전체적인 모습이다. 케이스가 매우 넉넉하다. 통기를 위한 구멍을 뚫지 못하였기에 원활한 방열을 위해서는 케이스의 부피가 큰 것이 유리할 것이다. 파워 소켓에서 트랜스로 연결되는 전선을 지나치게 길게 하였다.


트랜스의 무게 때문에 케이스 바닥판이 너무 아래로 처지는 것이 보기 싫어서 스피커 인클로저 보강용으로 쓰고 남은 스프루스 각재를 핫멜트로 붙여서 보강을 하였다. 


앰프 보드의 회로 구성은 정말 단순하다. 팝업 노이즈가 사실상 없어서 지연용 릴레이 등의 보조 회로가 없다.


적은 용량의 인두를 써서 트랜스 탭에 납땜을 하기는 쉽지 않다. 사진에는 보이지 않는 단자 뒷쪽으로는 납이 충분히 붙었으니 걱정은 하지 말자. 


트랜스 2차용 전선이 너무 가늘지는 않을까? 아마도 0.3SQ(단선으로 AWG 22 정도에 해당, 좀더 정확하게는 AWG 22 전선의 단면적은 0.330 제곱밀리미터; 참고로 랜 케이블로 널리 쓰이는 CAT5 UTP 케이블은 AWG 24로서 직경 0.511mm, 단면적은 0.205 제곱밀리미터)인 것으로 생각되는데, 허용 전류는 3A라 한다. LM1876에 연결했던 100VA 토로이달 트랜스 2차측에 쓰인 전선이 AWG 20에 해당하는데 허용 전류는 4.5A이다. 50VA 용량 트랜스 2차측(15V-0V-15V)에는 최대 몇 암페어의 전류가 흐를까? kVA를 암페어로 환산해주는 웹사이트가 있기는 하다. 그러나 2차측의 구성이 15V-0V 하나인 것과 센터탭이 있는 것(15V-0V-15V)은 다르지 않을까? 오디오파트의 웹사이트에 따르면 센터탭에는 양 말단에 흐르는 전류의 0.7배가 흐른다고 한다.

자작용으로 흔히 파는 10색 연선 묶음(아마도 0.3SQ)은 최대 수 암페어가 흐를 수 있는 전원쪽 배선에는 적합하지 않은 것 같다. 0.5SQ 전선은 주로 롤 단위로 판매할텐데... 나중에 필요해지면 차량용 DIY 제품을 취급하는 곳에서 찾아보아야 되겠다.

앰프 보드와 전원 트랜스를 바꾸면서 앰프 자체가 아니라 전원 트랜스의 용량과 적정한 전선 선택에 대한 공부를 더 많이 하게 되었다. 트랜스의 용량(와트가 아니라 VA)과 2차 측에 흐르는 전류에 대해서는 아직 제대로 이해하지 못한 상태이다. 특히 센터탭이 있는 경우는 더욱 혼동스럽다.

2016년 1월 28일 목요일

동작 중인 리눅스 서버에서 SATA HDD를 꽂고 빼는 방법

독창적인 제목은 아니지만 Hot-plugging a SATA drive under Linux라고 쓰면 이 글에 가장 잘 어울릴 것이다. 이 글이 좀더 쓸모가 있기를 바라는 마음에서 대용량 HDD의 인식과 파티션에 대한 내용도 추가하였다. 이 글을 통해서 가장 큰 혜택을 입는 사람은? 물론 작성자인 나 자신이다. 영원한 초보 리눅스 관리자의 심정으로(벌써 25년?) 글을 시작해 본다.

다음 사진은 내가 애지중지하는 서버들의 모습이다. 작은 캐비넷 안에 2대의 랙 마운트 서버가 장착되어 있고, 사진에는 나오지 않았지만 바로 곁에는 타워형 서버가 하나 더 있다.


서버의 전면부에는 손가락으로 '틱' 누르면 빠지는 hot swap bay가 있다. 서버의 전원을 켠 상태에서 SATA HDD를 hot swap bay에 넣고 인식시켜 사용한 뒤 안전하게 빼내는 방법을 오늘 상세히 알아보려는 것이다. 망가진 하드디스크를 교체하거나 백업 과정에 필수적인 기술이라 할 수 있겠다. Hot swap과 hot plug은 종종 혼용되지만 정확히 말하자면 조금 다르다. Hot swap은 컴퓨터의 전원을 내리지 않고 HDD 등의 부분품을 교체할 수 있는 기술을 말하는 것이고, hot plug은 USB 장치처럼 시스템 동작 중에 새로운 장치를 연결했을 때 바로 인식되어 사용할 수 있게 만드는 기술을 말한다.


바이오스 설정


전원을 내렸다 다시 켜지 않고는 BIOS 셋업을 건드릴 방법이 없다. 다음 두 가지가 제대로 설정되어야 한다.
  • Configure SATA as AHCI
  • Hot Plug Enabled

재부팅을 한 뒤 빈 hot swap bay에 새 HDD를 넣어보자. fdisk -l을 해 보면 새로운 하드 디스크가 보일 것이다. 내 경우에는 /dev/sdf로 잡혔다. 다음으로는 파티션, 포맷 및 마운트를 하여 정상적으로 사용하면 된다.

Misalign 문제 없이 파티션하기


GUI 환경에서 작업 중이라면 CentOS의 경우 Applications -> System Tools -> Disk Utility를 실행해 보자. 이 프로그램을 command line에서 실행하려면 palimpsest라고 치면 된다. 다음의 스크린샷은 모든 설정을 마친 뒤에 찍은 것이라서 모든 것이 정상적으로 보이지만, 새 디스크를 넣은 직후에는 This partition is misaligned by 3072 bytes라는 아주 유명한 문구가 나온다.


꽤 오래전에 내가 다른 사이트에 이 문제의 해결법을 기록해 둔 적이 있다. 요약하자면 Disk Utility를 쓰지말고 fdisk에서 단위를 실린더가 아닌 섹터로 표기하게 만든 다음(fdisk) 시작 섹터를 2048로 지정하는 것으로 해결하였었다. 그러나 fdisk 명령으로는 6TB짜리 대용량 HDD의 전체를 하나의 대형 파티션으로 잡지 못하는 것을 발견하였다. 좀 더 정확히 말하자면 fdisk는 최신 대용량 하드 디스크 드라이브에 쓰이는 GPT(GUID partition table)을 지원하지 못한다는 뜻이다. 웹 검색을 통해서 parted로 파티션을 하면 원하는 바를 이룰 수 있다는 것을 알았다. 다음의 텍스트는 내가 직접 parted를 실행한 것을 복사한 것이다. 굵은 글씨로 표시된 그대로 타이프하면 된다. /dev/sdf는 실제 상황에 맞게 바꾸어라.
[root@proton project]# parted /dev/sdf
GNU Parted 2.1
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel GPT                                                    
Warning: The existing disk label on /dev/sdf will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes                                                            
Warning: /dev/sdf contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand
GPT partition tables.  Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Yes/No? Yes                                                            
(parted) mkpart primary 2048s 100%                                      
(parted) q                                                              
Information: You may need to update /etc/fstab.
[root@proton project]# 
6TB 디스크 전체를 하나의 파티션으로 만들었다. 이제 palimpsest disk utility로 포맷을 한 뒤 적당한 위치에 마운트한다. HDD의 사용을 마치면 시스템에서 제거할 것이므로 /etc/fstab에 기록을 할 필요는 없겠다.  parted를 사용하는 약간 다른 방법을 내가 예전에 포스팅해 둔 적이 있었다.

디스크 드라이브 안전하게 제거하기


작업이 다 끝나면 이 HDD의 전원을 안전하게 차단하고 꺼내면 된다. 다음의 순서를 따를 것.
  1. umount 실행. 어떤 글에서는 umount 전에 sync를 몇 번 실행하라고 하는데, umount를 실행하면 자동적으로 sync를 먼저 실행하므로 그럴 필요가 없다고 한다.
  2. hdparm -Y /dev/sdf
hdparm -Y 는 지정된 HDD를 셧다운시키는 명령어이다. 여기까지 한 다음 HDD를 빼면 된다. 그런데 어떤 글에서는 다음의 두 명령어 중 하나를 실행하라고 한다. 이 명령이 hdparm -Y와 같이 쓰여야 하는지, 혹은 hdparm -Y를 대신해서 쓰여도 되는지는 아직 확인하지 못하였다.
  1. echo 0 - 0 > /sys/class/scsi_host/hostX/scan
  2. echo 1 > /sys/block/sdf/device/delete
hostX와 sdf는 실제 상황에 맞게 고쳐야 한다. 내 HDD의 SCSI host 번호를 알려면 다음 명령 중 아무것이나 실행해 보라.
  1. ls -l /sys/block/ | grep sd. 
  2. ls -l /dev/disk/by-path/

하드디스크 정보 알아내기


기억하면 유용한 명령어들이다.
  • ls -l /dev/disk/by-uuid 
  • hdparm -I /dev/sdf

2016년 1월 27일 수요일

Trimmomatic의 출력 파일명 설정

일루미나 시퀀싱 데이터로부터 어댑터 서열 제거와 quality trimming을 하기 위한 도구로서 현재까지 가장 유용한 도구는 trimmomatic이 아닐까 한다. 특히 멀티쓰레딩 작업이 가능하고 paired file을 매우 유용하게 다루어준다는 것이 장점이다. 출력파일 이름에 .gz 또는 bz2 등의 확장자를 지정하면 알아서 압축도 해 준다.

Trimmomatic V0.32 manual

Single end(SE) mode에서는 출력 파일(단 하나)의 이름을 명령행에서 인수로 지정하면 된다. 그러나 pair end(PE) mode에서는 양상이 조금 복잡하다. 위 링크에 소개된 매뉴얼 파일을 보고 이를 쉽게 정리해 보고자 한다.  우선 기억할 것은 PE mode로 실행하려면 2개의 파일을 반드시 공급해야만 한다. 즉 interleaved file은 안된다는 것이다.

2개의 입력 파일을 명시적으로 지정하는 것 외에 -basein flag을 써도 된다. 그저 -basein FirstFile이라고만 하면 파일명에 공통적으로 존재하는 패턴을 찾아서 두번째 파일을 알아서 결정한다. FirstFile_R1_001.fq.gz, FirstFIle.f.fastq, FirstFile.1.sequence.txt 등 어떤 형태든지 알아서 패턴을 파악하여 해결한다.

출력 파일은 어떠할까? 한 쌍의 입력 파일에 대해서 paired forward, unpaired forward, paired reverse, 그리고 unpaired reverse의 총 4개 출력 파일이 만들어진다. 명령행에서 인수의 형태로 4개의 파일 이름을 명시적으로 지정해도 되고, 입력 파일과 마찬가지로 -baseout flag을 써도 된다. 만약 -baseout mySamplesFiltered.fq.gz라고 했다면 다음의 4개 파일이 만들어진다. 길게 설명을 달지 않아도 각각이 무엇을 의미하는지는 쉽게 파악할 수 있다.

  • mySamplesFiltered_1P.fq.gz
  • mySamplesFiltered_1U.fq.gz
  • mySamplesFiltered_2P.fq.gz
  • mySamplesFiltered_2U.fq.gz
최근 두어달 동안 paired file을 다루는 분석을 워낙 많이 하다보니 이를 interleaved file로 바꾸는 일을 밥먹듯이 하였다. Interleaved file을 만드는 유틸리티는 인터넷에서 조금만 검색하면 쉽게 찾을 수 있다. Velvet 패키지에 포함된 shuffleSequences_fast* 부류의 스크립트를 써도 되고, khmer 패키지의 interleave-reads.py 파이썬 스크립트를 써도 된다. 혹은 sga preprocess --pe-mode=1 (-p 1)을 이용하면 interleaved file을 만드는 동시에 추가적인 트리밍 작업이 가능하다. 
sga preprocess --pe-mode=1 --permute-ambiguous -q 35 -f 25 -m 40 -o preprocessed.fq File_1.fq File_2.fq

반갑지 않은 사은품

초등학생이던 70년대에는 아버지께서 매월 사다주시는 월간지 <어깨동무>를 읽는 것이 큰 즐거움이었다. 어린이 눈높이에 맞춘 재미난 기사와 만화도 재미있었지만, 이번달에는 어떤 '별책부록'이 딸려오는지에 대해 더 관심이 많았다. 지금 생각하면 간단한 완구나 과학교재 수준의 물건들이 될 것이다. 학교앞 문구점에서 팔던 장난감에 비해서는 조금 더 질이 좋았던 것으로 생각한다. 결국은 이러한 별책부록이 잡지의 판매부수를 올리는 효자 노릇을 했을 것이다. 인터넷 시대가 되면서 단행본과 잡지 시장은 매우 어렵다. 한때 여성지는 매년 말에 가계부를 끼우주는 것이 관례였는데 요즘은 아마 그렇지 않을 것이다.

요즘 커피 소비가 부쩍 늘면서 달달한 믹스형 인스턴트 커피 말고도 다양한 취향의 커피 제품이 많이 판매되고 있다. 마트에 가면 이번달에는 어떤 커피를 살 것인지를 고민하게 된다. 제품명보다는 모델의 이름과 얼굴로 기억하는 경우가 더 많다. 몇 개월 전에 구입한 네슬레의 '수지' 커피는 내 취향에 잘 맞지 않았다... 뭐 이런 식이다. 이번에는 '김태희'로 할 것인가, 혹은 '김연아'로 할 것인가?

대용량 포장의 커피에는 사은품이 종종 붙어있다. 한동안은 텀블러가 많았다. 몇 번의 구매를 거치면서 집과 사무실에는 쓰지않는 텀블러가 점점 늘어나게 되었다. 일회용 컵의 사용을 줄이고자 텀블러를 주는 것은 좋은 취지이기는 한데, 커피를 살 때마다 텀블러가 하나씩 늘어나니 오히려 처치 곤란의 상태가 되었다. 이걸 다 어떻게 하란 말인가. 일회용품을 대신하고자 만든 물건이 오히려 쓰레기 신세가 되고 말았다. 지난주에는 색다른 사은품이 있는 커피를 구입하게 되었다. 건전지로 작동하는 거품기가 들어있는 카페라테 기구였다. 제작 단가가 몇천원은 될 터인데, 한 상자에 2만원도 안하는 커피에 어떻게 이런 물건을 끼워주는 것이 가능할까? 그만큼 커피값 자체에 거품이 많다는 뜻일까?

사은품을 원치 않는 소비자도 분명히 있을 것이다. 그러면 사은품만 쏙 뺀 상품을 구입하면 될까? 그러면 소비자는 사은품 값어치만큼의 손해를 본다고 생각하게 될 것이다. 그러니 울며 겨자먹기로 사은품이 끼워진 상품을 사지 않을 수 없다(마트에는 사은품이 없는 대용량 제품은 눈에 띄지 않았었다). 이건 뭔가 잘못되었다. 차라리 일정 기간 동안에만 사은품을 주는 것이 옳다. 이렇게 항상 사은품을 줄 것이라면, 사은품 없이 가격을 내리는 것이 바람직하다. 어쩌면 마트의 시식 행사도 마찬가지로 보이지 않는 비용을 발생하고 있을 것이고, 모르는 사이에 제품의 가격에 반영되고 있을 것이다.

규모의 경제가 언제까지 유효할까? 흔적을 적게 남기는 현명한 소비가 자리잡기를 바란다면 너무 고지식한 것일까?

2016년 1월 26일 화요일

기어코 15-0-15V 트랜스를 구입하다

TDA7265 보드에 18-0-18V 트랜스를 연결하는 것은 약간 부적합하다는 결론에 따라 어떻게 하면 추가 비용을 들이지 않고 트랜스의 2차 전압을 15-0-15V로 내릴 수 있을지 고민을 해 보았다. 웹 검색을 해 보니 커패시터를 이용하여 교류를 위한 전압 분할 회로를 꾸미는 것이 가능하고, 저항을 이용한 회로와는 달리 전압과 전류의 상(phase)이 달라져서 열로 발산되는 전력 소모가 극히 적다는 사실을 알게 되었다. 이를 capacitive voltage divider라고 부른다. 어쩌면 이것이 비용을 가장 적게 들이는 개조 방법이 될 지도 모르겠다.

그러나 볼일이 있어 서울에 갔다가 장사동을 들렀던 내 손에는 이미 15-0-15V 50VA EI 코어 트랜스가 들려있었다! 이를 집에 가지고 와서 급하게 TDA7265 앰프 보드에 연결해 보았다. 이제 발열도 그다지 높지 않고 볼륨 놉 조정도 편안하다. 토로이덜 트랜스에 비해서 훨씬 크고 무겁다는 것이 단점이기는 하다. 방닥에 상처를 입힐까 걱정이 되어서 종이봉투로 신발을 만들여 신겨 놓았다. 음질 면에서는 토로이덜 트랜스와 그다지 다를 바가 없다. 물론 가격은 더 저렴하다.


원래 220V를 이토록 허술하게 결선하면 안된다. 대단히 위험한 방식이다! 단지 테스트를 위한 임시적인 연결이었다.


토로이덜 트랜스에 비해 크지만 기존의 케이스에는 다행스럽게도 수납이 될 수준이다. 하지만 너무 무거워서 플라스틱제 케이스의 바닥이 축 처진다. 스피커 인클로저 보강을 위해 쓰고 남은 스프루스 각재를 써서 바닥 보강을 할 것인가? 자작의 길은 끝이 없다.

2016년 1월 24일 일요일

5 달러짜리 칩앰프에 40 달러짜리 프리앰프

에이미 와인하우스의 You sent me flying이 스피커로 흘러나오고 있다. 화요비 노래만 주야장천 듣다가('주구장창'은 잘못된 표현임) 에이미 와인하우스와 노라 존스에 뒤늦게 빠졌다. 최근에 본 다큐멘터리 영화 의 영향이랄까.


왼쪽의 파워앰프(TDA7297)는 $4.49에 지나지 않는데 오른쪽의 헤드폰앰프 겸 프리앰프(12AU7)은 $39.99나 되어서 과분하다. 원래 헤드폰앰프라서 게인이 20dB나 된다. 파워앰프에 소스(PC 사운드카드)를 직결해도 입력레벨 측면에서는 큰 지장은 없으나, 프리앰프가 중간에 삽임됨으로 인하여 좀 더 탄탄한 소리가 난다. 아니, 그저 느낌인가?

국외에서 팔리는 많은 초저가형 파워앰프(보드)는 입력단에 덜렁 볼륨 폿이 달려있는 경우가 많다. 그런데 무신호 상태에서 볼륨 놉이 중간 위치에 있을 경우 험이 가장 심하게 들린다. 이 현상에 대한 속시원한 이론적 설명은 아직 찾지 못하였다. 그래서 파워앰프의 볼륨을 최대로 해 놓고 가격대비 성능이 좋은 프리앰프를 연결하여 음량 조절을 하는 것이 가장 바람직하다는 생각을 갖고 있다. 그러나 자칫 잘못하면 파워앰프보다 프리앰프의 가격이 더 높다는 것이 함정이다.

나의 경험으로는 TDA7297 앰프의 만족도가 매우 높았다. 이보다 수준이 높은 게인클론이 하나 정도는 있어야 한다고 생각하여 LM1876 보드를 구입했으나 CD 플레이어와의 미묘한 궁합 문제로 아예 퇴출되고 그 자리는 TDA7265 앰프가 차지하였다. 데이터시트에 의하면 이 칩은 4옴 스피커를 울리기에 18V 트랜스로는 전원전압이 높은 것은 사실이지만 음량을 적절히 조절하는 것으로 대충 버텨나가기로 하였다. 15볼트 출력의 트랜스를 구입하여 TDA7265에 전용으로 연결할 생각을 아주 잠시 했었지만 곧 그 생각을 접었다.

계속 새로운 부품을 구해다가 덧방을 해 나가는 미련함을 이제는 떨칠 때가 되었다. 있는 것을 만족하기!

2016년 1월 22일 금요일

가상머신 설치의 새로운 시도

Xmanager를 통해 접속한 원격 리눅스 서버에 VirtualBox를 세팅하여 사용할 생각을 그동안 해 본적이 없었다. VirtualBox는 그저 내가 물리적으로 바로 앞에 놓고 사용 중인 컴퓨터에 깔아서 쓴다고만 생각했었기 때문이다. VirualBox 역시 X application이니 안될 이유가 없다.

CentOS 6.x 시스템에 VirtualBox를 설치해 보자. 다운로드는 여기에서 받으면 된다. yum을 사용하여 설치한다면 패키지를 다운로드할 필요도 없다. /etc/yum.repos.d/virtualbox.repo라는 파일에 이 파일의 내용만 기록한 다음, 관리자 권한으로 이렇게 실행하면 된다.
yum install VirtualBox-5.0
rpm 명령어를 직접 다룰 일이 없으니 얼마나 편리한가! 다음으로는 CMG-Biotools의 ISO 파일을 받아다가 가상 머신을 설치해보면 된다.

왜 리눅스 서버에 VirtualBox를 설치할 생각을 했는가? 업무용 데스크탑 컴퓨터(윈도7)는 사양이 너무 저급하기 때문이다. MyPro(a seamless pipeline for automated prokaryotic genome assembly and annotation)라는 환경이 나온 것도 이러한 시도를 하게 만든 계기가 되었다. 일루미나를 사용한 미생물 시퀀스 데이터를 전처리 후 de novo assembly를 한 다음 annotation까지 거치는 전 과정을 몇 개의 파이썬 스크립트로 실행할 수 있는 바이오-리눅스 8 기반의 환경을 아예 가상머신 파일로 만들어 제공하는 것이다. ISO 파일로도 떠서 제공하면 어땠을지 모르겠다.

MyPro에 포함된 요소 프로그램들은 다음과 같다. 이것들을 일일이 설치하려면 얼마나 성가신 일이겠는가?

A5-miseq이나 Unipro UGene에서는 요소 프로그램들을 패키지에 한데 묶어서 배포한다. 그런데 MyPro는 아예 가상 머신 내에다가 [요소 프로그램 + 파이썬 스크립트 + DB]를 전부 묶어서 배포를 하니 이보다 더 편리할 수가 없다. 


2016년 1월 21일 목요일

LM1876 앰프 보드를 다시 제자리로 돌려놓다

잡음 문제로 골머리를 앓던 LM1876 앰프 보드를 대신하여 구입한 TDA7265 앰프 보드는 그런대로 만족스런 소리를 낸다. 그러나 파워 트랜스포머가 공급하는 18V는 4옴 스피커를 연결한 TDA7265에게는 조금 과하다는 생각이 든다. 앰프의 발열도 꽤 높은 편이다. 이에 따라서 15V-0V-15V 출력을 내는 50VA 급의 적당한 트랜스포머를 구해서 따로 앰프를 만들기로 하고, LM1876 보드를 다시 꺼내어 원상태로 연결하였다. 이번에는 보드에 달린 볼륨 폿을 제거해 버렸다. 앰프 섀시에 있는 볼륨 하나만으로 조절을 하는 것이 더 자연스럽기 때문이다.

한화로 2만원이 채 안되는 중국산 앰프 보드에 좋은 부속이 쓰였기를 기대하는 것은 매우 어렵다. 특히 신호선, 출력선 및 전원선 연결을 위한 터미널 블록이 너무 부실하다. 이런 단자대는 제거해버리고 차라리 납땜으로 직결을 하는 것이 더 나을 것 같다는 생각마저 든다. 아무데서나 구할 수 있는 1천원짜리 B형 볼륨 폿을 적당히 연결해 놓고 좋은 소리가 나기를 바라는 것은 지나친 기대일지도 모른다.

왜 나의 LM1876 보드는 CD 플레이어와 만났을 때에만 잡음을 내는 것일까? 모터의 작동에 맞추어서 잡음이 타고 들어오는 것으로 보아 이제는 CD 플레이어가 원인이라고 믿고 싶다. 앞으로 CD 플레이어를 바꾸게 되는 날, 진짜 원인을 알게 될 것이다. 그날이 언제 올지는 모르지만... 20년이 훨씬 넘은 롯데 CD 플레이어를 중고로 구입하여 픽업을 갈아 쓰는 꼴이라니!

보드 형태로 팔리는 저가 앰프를 몇개 구입하여 사용해 보니 무신호 상태에서 볼륨 위치에 따라 잡음(아마도 교류 험일 것이다)이 심해지는 것을 종종 경험하였다.  케이벨의 TDA7266D 앰프에도 볼륨 폿을 입력부에 달았더니 소스에 따라서는 가장 낮음 음량 위치에서 잡음이 가장 크게 들리는 것이었다!

도대체 그 이유가 뭘까? 바로 이런 것이 프리앰프를 쓰게 만드는 요인일까?


네이버 좌충우돌 PC-Fi 카페의 킹앤드류님 글에 의하면 OP amp 2개를 사용해서 입력단과 출력 버퍼단을 분리하고 볼륨 폿이 그 중간에 위치하는 것이 임피던스 매칭 측면에서는 매우 유리한 설계라고 한다.

이런 프리앰프 보드를 구입한다 하여도 18V-0V-18V 트랜스를 같이 쓰지 못한다. 공급 가능 전압이 12-15V 범위이기 때문이다. 그렇다면 프리앰프만을 위해서 저용량의 트랜스를 따로 달아야 한단 말인가!

관심과 지름은 끝이 없다. 적당한 선에서 멈추어야 하는데 큰일이다!

A5-miseq 중간 결과물의 재활용

A5-miseq은 일루미나 플랫폼에서 만들어진 미생물의 시퀀싱 결과물을 사용하여 de novo assembly를 실시하는 간편한 파이프라인 형태의 도구이다. PacBio RS II 데이터를 HGAP(또는 Falcon)으로 처리하여 거의 완성 수준에 가깝도록 유전체 서열을 얻는 것이 일상다반사가 된 이상 일루미나 기술도 과거와 같은 인기를 누리지 못할 것이라는 때이른 기대를 할 수도 있다. 그렇지만 아직은 생산성이 매우 높은 기술이기 때문에 대량의 유전체 샘플을 다루거나 메타지놈 시퀀싱을 할 때에는 여전히 일루미나가 유용하다.

Command line interface에서 돌아가는 de novo assembler라고 해서 서열 조립과 관련된 바이너리만 덜렁 주어지는 일은 요즘 거의 없다. 서열의 전-후처리를 위한 보조적인 스크립트 또는 바이너리가 패키지 형태로 같이 배포된다. 조금 더 발전한 형태라면 VelvetOptimiser처럼 조건을 바꾸어가면서 여러차례 assembler를 반복 실행하여 최적화된 결과를 만들어내는 wrapper script가 있다. IDBA_UD도 k-mer의 크기를 20 단위로 바꾸어가면서 가장 좋은 결과를 최종적으로 제공한다. A5-miseq은 이보다 더욱 발전한 형태이다. 즉 서열 조립뿐 아니라 전-후처리에 필요한 다른 프로그램들까지 일괄적으로 실행하는 일종의 파이프라인인 것이다.

최근 논문을 검색해 보면 이보다 더욱 발전한 형태를 볼 수 있다. 설치 및 실행이 편리한 통합 환경 형태의 프로그램이 나오고 있다. 예를 들어 metAMOS는 (meta)genome assembly를 위한 전처리와 조립, 스캐폴드 작성 및 annotation에 이르는 과정을 관장하는 modular framework이다. MyPro는 또 어떠한가? 이것은 원핵생물 유전체의 조립과 주석화를 통합적으로 실시하는 환경으로서 아예 VirtualBox에서 실행 가능한 형태로 배포가 된다. 대신 다운로드할 파일의 사이즈가 꽤 크다.

서론이 좀 길어졌다. 오늘은 A5-miseq 실행 과정에서 만들어지는 중간 결과물, 즉 sga correct가 생성하는 교정된 read를 다른 프로그램에서 쓸 수 있는지를 검토하다가 사소한 문제가 발견되어 이를 해결하고자 포스팅을 작성하게 되었다. A5-miseq은 하나의 error-corrected read file(filebase.ec.fastq.gz)을 생성하는데, 이것을 khmer 패키지의 extract-paired.py로 처리하여 interleaved file과 orphan 파일을 만들려 하였으나 다음과 같은 에러 메시지가 출력되었다.

raise Exception("no paired reads!? check file formats...")
Exception: no paired reads!? check file formats...

이게 뭔 소리지? paired read가 하나도 없다니?  error-corrected file을 열어보았다.
@HWI-ST908R:151:D1M9MACXX:1:1101:1373:2469 1:N:0:CCGTCC
서열 ID 정보가 있는 줄에 존재해야 하는 pair 관련 정보(빨강색)이 하나도 남김없이 제거된 것을 확인하였다. A5-miseq의 어느 단계에서 이 필드가 사라진 것일까? error-corrected read는 혹시 이미 interleaved 형태로 전환된 것은 아닐까? 하지만 내가 훑어본 바에 따르면 A5-miseq 스크립트 안에서는 read file을 쌍으로 다루지 않는 것처럼 보이는데? 이 궁금증을 해소해 보도록 하자.

먼저 error corrected read file이 내부적으로 쌍을 이루고 있는지 알아보았다. 서열 ID를 전부 추출하여 짝이 맞는지 점검하는 스크립트를 짤 수도 있지만, 좀 더 간단하게 일을 하기 위해서 CLC Genomics Workbench에서 이를 임포트하여 Paired status를 "Paired sequences"로 고쳐보았다. 아무런 문제없이 잘 전환된다. 만약 임의로 read 하나를 제거하면 Paired status를 고치지 못한다(Unpaired sequences로 고정).

그러나 CLC Genomics Workbench에서는 pair 상태를 철저하게 확인하지는 못한다. 시험삼아서 인접한 read pair에서 하나씩을 제거하여 짝수 상태를 유지한 채로 Paired sequence를 만들어보니 역시 아무런 오류를 출력하지 않는다. 즉 CLC Genomics Workbench에서는 파일 하나를 읽어들여서 Paired sequence로 전환할 때에는 오직 read의 수가 짝수인지만을 확인하는 것으로 생각된다. 만약 read_1.fastq와 read_2.fastq를 CLC로 임포트할 때 파일 내의 read 순서가 서로 맞지 않는다면? 이것까지 점검을 하는지는 잘 모르겠다.

그렇다면 A5-miseq의 실제 실행 내역을 추적하면서 알아보는 수밖에 없다.
[실제 명령어] a5_pipeline.pl file_1.fastq file_2.fastq a5-out
  1. File 2개를 하나로 합침: shuffle_fastq() 함수를 사용한다. 결과 파일은 a5-out.s1/file_1.fastq.both.fastq이다. 
  2. trimmomatic을 SE 모드로 실행: a5-out.s1/file_1.fastq.trim.fastq이 생긴다. SE 모드로 실행하였으므로 당연히 결과 파일은 pair 정보 입장에서는 들쑥날쑥이다.
  3. sga preprocess --pe-mode=0 실행: outdir.s1filebase_1.fastq.both.pp가 생긴다. 바로 이 파일부터 서열 ID 라인에 pair 관련 정보가 사라졌다.
  4. sga index를 위해 outdir.s1/outdir.pp.fastq가 생김
  5. sga correct 실행
  6. Re-pair('수선'을 의미하는 repair가 아님)를 실시함:  repair_fastq() 함수가 작동.
  7. fasta 파일로 전환하여 idba로 de novo assembly 수행
범인은 바로 sga preprocess였다. 이 과정에서는 아직 남아있을 수 있는 N을 제거하는 등의 몇가지 처리를 추가한다. 그러고 나서 pair를 다시 유지시키는 함수를 호출함을 알 수 있었다. 이미 완벽한 interleaved file이 되었으므로 내부에 pair 정보 taq이 있을 필요가 없다. 물론 나중에 이를 다시 두 개의 파일로 분리하려면 프로그램에 따라서는 불편을 토로할 수도 있겠지만 말이다.

trimmomatic을 SE 모드로 실행한다는 것이 오해를 불러일으킨 것이었다. 어차피 후속 과정인 sga preprocess에서 또 read의 pair 상태가 깨질 수 있으니 error correction까지 다 마친 다음에 interleaved paired read를 재생성하는 것이 훨씬 현명하다. idba를 가지고 테스트를 해 본 결과 interleaved read가 아니면 세그멘테이션 오류와 비정상 종료를 한다는 것을 확인하였다.

2016년 1월 19일 화요일

UUID로 RAID 파티션 자동 마운트하기

아직도 yum update를 돌린 다음 리눅스 머신을 재부팅하려면 적지않게 긴장이 된다. 부팅이 되지 않거나 혹은 HDD가 인식이 되지 않거나 하는 등의 오류가 발생할지도 모르기 때문이다. 정말 오랜만에 업데이트를 하고 약간의 조바심을 가지고 shutdown -r now를 날렸다. 외견상으로는 별 문제가 없다.

그런데 레이드 파티션이 올라오질 않았다. fstab 파일에 분명히 마운트 명령어를 넣어 두었는데 이게 어찌된 일인가? 모니터를 바라보면서 다시 재부팅. 레이드 콘트롤러의 기동 및 HDD 인식과 관련된 부팅 전 메시지에는 별 문제가 없다. 최소한 하드웨어에는 문제가 없는 것이다. 그러나 재부팅에도 불구하고 역시 문제의 파티션은 보이지 않는다.

가만히 생각해보니 디바이스명이 다른 파티션과 겹친다. /dev/sdb1은 이미 /boot에게 할당된 상태이다. 최근의 리눅스에서는 부팅을 할 때마다 /dev/sda1 등의 명칭이 유동적으로 변하고는 해서 UUID로 장치를 지정하는 것이 추세이다.

이 서버를 새로 조립한 것이 이제 꼭 1년이 되어간다. 현재의 /etc/fstab에는 다음의 한 줄이 들어있다.
/dev/sdb1      /data    xfs    defaults        1 2
매우 바람직하지 못한 설정이다. 아마도 가장 마지막으로 mount 명령을 실행할 때 /dev/sdb1을 할당했었던 모양이다.  그럼 그동안 매번 손으로 적당히 mount 명령을 내려서 레이드 파티션을 마운트했단 말인가? 그러면 아직 마운트되지 않은 레이드 파티션의 이름은? fdisk -l을 실행한 결과 /dev/sda1임을 알았다.

ls -l /dev/disk/by-uuid를 실행하여 /dev/sda1이 어떤 '가상' UUID를 갖고 있는지 확인한 뒤 fstab 파일을 수정하였다. 최종 점검을 위한 재부팅 결과 이제 자동적으로 레이드 파티션이 올라오고 있다.

휴! 리눅스를 쓴 것이 몇(십)년인데 아직도 초보 관리자라니...

PubMLST를 처음 접하다

미생물의 분류와 계통발생학적 분석처럼 생명정보학의 발전의 큰 수혜자가 된 '전통' 과학도 흔지 않을 것이다. Genomics 등은 아예 생명정보학과 그 태동을 같이 하였다 해도 과언이 아니니 이를 수혜자로 볼 수는 없겠다.

본론에 들어가기 전에 중요한 낱말부터 정리를 하자. 이 사이트를 참고하였음을 밝힌다.

  • Systematics(분류학) is about finding the ancestral relationship between organisms (evolutionary relationships)
  • Taxonomy(이것도 분류학?) is framing rules and regulation to put an organism into convenient taxa or groups (classifying and naming organisms)
  • Phylogeny(계통학) is a theory about how organisms are related to one another by evolutionary time (참고 사이트)

Species 수준으로 동정하기가 매우 어려운 Bacillus cereus 그룹(흔히 Bacillus cereus sensu lato라고 함)을 다룰 일이 있어서 웹 검색을 하다가 PubMLST라는 사이트를 찾게 되었다.

PubMLST - Public databases for molecular typing and microbial genome diversity

B. cereus database에는 7개의 유전자로 구성된 총 1130개의 프로파일이 수록되어 있으며, 전체 균주의 수는 1800개를 조금 넘는다. 약 이틀동안 사이트를 둘러본 것만으로 그 특성을 전부 파악했다고 자신할 수는 없지만, MLST 분석에 필요한 균주 분리 정보와 서열 획득 작업을 하기 위해서 이곳저곳의 데이터베이스를 뒤지면서 편집작업을 할 필요가 없다. 이 사이트를 진작에 알았더라면 2년쯤 전에 Vibrio vulnificus 유전체 서열을 가지고 같은 작업을 할 때 훨씬 편하게 일을 하였었을 것이다.

메인 데이터베이스를 활용하는 데에는 약간의 요령이 필요하다. Sequence and profile definition 영역과 Isolates 영역에서 다루어지는 정보가 약간 다르기 때문이다.

각종 분리 균주의 유전체와 서열 데이터를 종합 관리하기 위한 도구로서 BIGSdb(Bacterial Isolate Genome Sequence Database, BMC Bioinformatics 11:595)를 제공하기도 한다.

B. cereus 데이터베이스를 예로 들어보자. MLST 분석에 사용할 각 locus의 증폭에 사용되는 프라이머 서열은 다음 URL에 있다.

http://pubmlst.org/bcereus/info/primers.shtml

처음에는 여기에서 프라이머 서열을 받아다가 sample contig sequence에서 증폭되는 영역을 찾아내었었다(EMBOSS package의 primersearch 사용). 그런데 본 사이트가 제공하는 검색 기능을 사용하면 간단하다. 그저 유전체 서열 파일을 올리면 되는 것이었다. 그러면 업로드한 파일(multi-FASTA)의 어느 서열, 어느 위치에 해당되는 유전자가 있고 각 locus에 대해서 DB에 수록된 allele 번호가 나온다. 그러면 allele 번호를 이용하여 DB에서 서열을 뽑아내면 된다. 내 샘플 서열에서 coordinate를 이용하여 끊어낼 필요가 없는 것이다. 물론 DB에 존재하지 않는 allele로 판명되는 경우도 있다. 이때에는 약간의 수고가 따르지만.

다음은 실제 PubMLST를 사용하여 얻은 분석 사례이다. 검색을 통해 샘플 균주의 7개 유전자에 대한 allele 번호를 확인한 다음, 이것과 최소한 두 locus 이상 동일한 것들의 정보를 뽑은 것이다. 후속 작업으로서 phylogenetic tree를 그리기 위한 concatenated sequence 추출은 클릭 한번으로 이루어진다.



이렇게 공개된 서비스를 이용하여 정말 편리하게 분석 작업을 마치게 되었다. 정말로 고맙지 아니한가!

2016년 1월 14일 목요일

무위로 돌아간 LM1876 칩 교체

LM1876 앰프 보드를 CD 플레이어에 연결했을 때 나는 특유의 잡음은 어쩌면 중고 칩을 사용한데 원인이 있을지도 모른다는 생각에 알리익스프레스에서 신품 LM1876을 2개 주문하였다. 부품을 납땜하는 것도 어렵지만 떼어내는 것은 더 어렵다! 버릴 각오를 하고 리드선을 전부 끊어내면서 어렵사리 부품을 떼어냈다. 목디스크가 걸릴 지경이다. 기판의 동박이 떨어지지 않은 것이 다행이다. 납을 일부러 조금 더 녹여붙인 뒤 인두를 대고 녹여서 흡입기로 빨아내는 것이 요령인 것으로 안다.


신품 칩을 구멍에 꽂았다. 다리가 15개나 되므로 배열을 가지런히 해야 구멍에 잘 들어간다. 당연히 부품을 기판에서 떼어내는 것보다 붙이는 것이 훨씬 쉽다.


과연 결과는? 단자대에 선을 연결하고 CD 플레이어를 소스쪽에 연결하였다. 전원을 넣었다. 전혀 나아진 것이 없었다. "삐-"하는 특유의 잡음이 그대로 들린다. 

도대체 이 잡음의 원인은 무엇일까? 보드에 들어간 부품의 품질이 좋지 않아서? 다른 앰프는 재생하지 못하는 CD 플레이어의 신비로운 잡음을 유독 이 앰프만이 증폭을 하는가? 아마도 영영 그 원인을 찾지 못할지도 모른다. 원인을 찾고 개선하려는 노력을 한다면 이 앰프 보드를 사는데 드는 돈을 훨씬 상회할 것이다. 차라리 잊어버리고 있는 것이 낫다. 최근에 들인 TDA7265 앰프가 훌륭하게 제 역할을 하고 있으니 말이다. 

LM1876 앰프 보드는 상자에 담아서 서랍 속으로.... 지금 쓰는 CD 플레이어가 수명을 다해서 다른 것으로 바꾸게 되면 확실한 원인을 알게 될지도 모른다. 그러려면 또 몇년이 걸릴 것이다. 픽업을 교체한 것이 몇달 되지 않았으니 말이다. 아직 칩이 하나 남아있다. 새로 뭘 만들 생각은 일절 하지 말아야 되겠다.



2016년 1월 12일 화요일

B형 볼륨 포텐셔미터를 A형으로 개조하는 방법

흔히 '볼륨'이라고 이야기하지만 정확히 말하자면 전위차계(potentiometer)라고 해야 한다. 볼륨(음량)은 이 부품이 조절하는 어떤 정량적인 대상을 의미하는 것이다. 이는 마치 전원 스위치를 사러 부품가게에 가서 '전원 하나 주세요'하는 것과 다르지 않다. 서양에서는 단순히 pot이라 줄여서 쓰기도 한다. 오디오에서는 볼륨 조절을 위한 스테레오 A형 폿을 쓰게 되는데, 동네 부품점에서는 오디오 등급이 되지 못하는 B형 폿을 주로 취급한다.

왜 이러한 저가 부품이 문제인가?

  1. 흔히 좌우 밸런스가 잘 맞지 않고(특히 음량을 적게 한 상태에서)
  2. 놉을 돌리게 되면 사람의 귀에는 자연스럽지 않은 '급작스런' 음량의 증가를 초래하기 때문이다. 

B형 폿에 저항을 달아서 A형 대용으로 쓰는 방법에 대해서는 이미 오래전에 포스팅을 한 적이 있다. 웹을 뒤져보다가 이를 좀 더 진지하고 자세하게 다룬 글이 있어서 소개한다. 1999년에 작성된 매우 오래된 글이다.

The Secret Life of Pots

2016년 알리익스프레스 첫 배송

지난 12월 중순 무렵에 알리익스프레스에서 구입한 물품 2가지가 약 20일 이상이 소요되어 어제 도착하였다. 오디오 앰플리파이어칩인 LM1876TF(신품) 2개와 방열판이 붙어있는 TDA7265 앰프 보드이다.


LM1876 칩을 구입한 이유는 작년에 먼저 구입하여 쓰고있던 앰프 보드의 칩이 불량이라는 의심이 들었기 때문이다. 다른 소스에 물리면 문제가 없지만 유독 CD 플레이어를 연결하면 '삐-' 소리에 가까운 높은 음의 잡음이 발생한다. 전원에서 유발되는 험도 아니다. 오디오용 트랜스를 이용하여 소스와 앰프를 분리하여 연결하는 시도(카 오디오에서 종종 사용한다는)를 해 본 일이 있으나 전혀 효과가 없었다. CD 플레이어에 다른 앰프들을 연결하면 이러한 잡음이 나지 않았기에, 이는 보드 자체의 문제라는 의심이 강하게 들었다. CD 플레이어에서 유도되는 가청 주파수 이외의 어떤 미소한 잡음을 LM1876 칩이 확대하는 것이 아닐까? 그렇다면 "original teardown" 칩이 노후해서 그럴지도 모른다는 생각에 신품 칩을 주문한 것이었다. 15개나 되는 다리의 납땜을 해체하려면 좀 번거롭기는 하겠지만, 어차피 버린다고 생각하고 니퍼로 끊어내면서 납을 떨어내면 큰 어려움은 없을 것이다.

TDA7265 보드는 LM1876 앰프에 연결했던 전원 트랜스(18V dual, 100VA)를 그대로 사용할 수 있는 장난감을 찾는 도중에 발견한 것이다. 구입 가격은 송료 포함 $14.23이었다. 어제 퇴근 후 집에서 기존의 LM1876 보드를 떼어내고 TD7265 보드를 연결하였다. CD 플레이어를 연결하여 재생하니 높은 음의 잡음이 발생하지 않는다. 그런데 볼륨을 최소로 했는데 오른쪽 채널에서 엄청난 음량으로 소리가 나온다! 이는 볼륨의 상태가 좋지 않아서 그런 것이었다. 마침 지난 주말 시내에 나갔다가 (역시 저가형) B형 50kohm 2련 가변저항을 사다 놓은 것이 있어서 그것으로 대체를 하였더니 비로소 정상적인 소리를 낸다. 권장되는 전원은 dual AC 15V, 출력은 30W + 30W라고 명시되어 있다. Dual AC 18V를 연결해서인지 볼륨 놉을 아주 조금만 올려야 한다. TDA7265의 데이터시트에 따르면 최대 공급 전압은 +/- 25V이다. 트랜스 출력이 18V이니 정류회로를 거치면 거의 최대 허용 공급 전압에 근접하는 수치가 될 것이다. 데이터시트에 나온 수치로 본다면 LM1876 칩이 당연히 좀 더 낫다고 여겨지는데, 내 귀로는 그 차이를 구별하기 어렵다. 스피커 보호회로가 없이도 팝업 노이즈가 발생하지 않는다는 것은 대단히 유리한 점이다. 돌이켜 생각해 보면 dual 15V, 60VA 정도의 파워 트랜스로 충분했을 것 같다.

떼어낸 LM1876 보드를 옆에 두었다. 크기 차이가 제법 난다.


LM1876TF. 하나는 기존의 보드의 것을 대체하고, 나머지 하나는 시간적 여유가 있다면 인터넷에 돌아다니는 자료를 참조하여 만능기판 위에 직접 회로를 꾸며 볼 생각이다.


작년 12월부터 해체 상태나 다를바 없었던 앰프가 이제 새 보드를 품고서 다시 정상 서비스(?)를 하고 있다. 거의 한달만에 케이스 고정용 볼트를 끼우면서 숙제를 마친 느낌을 받는다.


나만의 소리를 찾아나가는 지난 2년간의 일정이 매우 즐거웠다. 생애 처음으로 진공관 앰프를 접하게 되었고, 지역의 중고 업자로부터 몇 개의 소스기를 구입하기도 하였고, 결코 비싸지 않는 칩 앰프 보드 몇가지를 경험해 보기도 하였고... 한번 정리해 보자.
  • TDA2004 (매우 오래 전에 만들었다가 버렸음. 별다른 느낌이 없음. 당시에는 오디오 자작에 대한 지금만큼의 호기심과 추진력이 없었음)
  • TDA7266D (사용 중)
  • TDA7267 (사용 중)
  • PAM8610 (잡음이 심해서 폐기)
  • 브리즈 TPA3116 앰프 (완제품으로 구입하여 개조 후 잘 쓰다가 최근 처남에게 넘김)
  • YDA138E (별다른 재미가 없어서 중고로 처분)
  • TPA3125D2 (샘플전자 키트로 제작하여 잘 쓰다가 칩을 잘못 건드려서 완전히 망가뜨림)
  • LM1876TF (잠시 쉬는 중)
  • TDA7265 (바로 어제부터 사용 중)

이상으로 나열한 것 말고는 LM386 앰프(키트)와 CMoy 헤드폰 앰프를 만들어본 일이 있다. 

2016년 1월 8일 금요일

2015년 마지막 알리익스프레스 구매품이 아직도...

앰프와 관련한 소품 2개를 12월 17일과 20일경에 주문하였었다. 오늘이 벌써 1월하고도 8일이니 보름이 넘게 지난 셈이다. 연말이라서 지체가 되는지도 모르겠다. 요즘은 인터넷이 하도 발달하여서 외국에서 보내지는 물품의 배송 추적이 매우 쉽다.

중국에서 보내지는 물건의 추적을 위한 사이트를 정리한 유용한 포스팅이 있어서 소개한다. 여기에서 조회를 해 보니 중국을 이미 떠난 것으로 되어있다.

타오바오 운송장조회/배송조회하기!

국제우편을 통해 배송되는 물품의 경우 일단 한국으로 들어오면 EMS track 사이트에서 추적을 하면 된다. 대전까지 오는 길이 이렇게 멀단 말인가? 조회를 해 보자.


CNCANA는 중국쪽의 우체국 코드로 생각된다. 위의 것은 오늘 오후에 막 한국에 들어왔고 아래 것은 비슷한 시각에 대전까지 내려 온 것으로 표시되었다. 한국어로 된 EMS 조회 사이트가 좀 더 친절하다.

작년에 어설프게 만들었던 스피커 2호기와 브리즈 앰프(개조)는 처남에게 주었다. 이번에 중국에서 오는 부품을 마지막으로 오디오 공작에 대한 관심은 조금 줄이고 음원 구입과 감상에 조금 더 집중하련다.

주말에는 아이들 방의 형광등을 LED 모듈로 교체하는 간단한 공사를 해야 한다. 욕조의 수전도 이제는 패킹이 다 닳았는지 물이 조금씩 샌다. 집은 점점 낡아가고 손을 볼 곳이 늘어난다. 올해에는 도배와 장판 등 대대적인 보수작업을 하고 싶지만 이사라는 계기없이 살림살이를 다 놔둔 상태에서 이걸 실행에 옮긴다는 것은 보통 노릇이 아니다!

2016년 1월 4일 월요일

NGS 파일 처리를 위한 유틸리티가 너무나 많다!

Fastq 포맷의 파일을 다루다보면 트리밍, 셔플링, 포맷 전환 등 자질구레한 변환 및 조작을 해야 한다. 이러한 용도의 유틸리티가 하도 많아서 이제는 혼동스럽기까지 하다. 간단히 스크립트 하나만 인터넷에 돌아다니는 경우도 있고, de novo assembly와 같은 프로그램 패키지에 포함된 경우도 있다.

Fastq를 fasta로 전환하는 것을 예로 들어보자.

펄이나 파이썬에 대한 기초적인 지식이 있다면 누구나 이런 목적의 스크립트를 어렵지 않게 만들어내는 것이 가능하다. Awk/sed를 써서 만들 수도 있다. 

사용 가능한 유틸리티의 수가 다섯 손가락을 넘어가게 되면, 실무를 접하였을때 '이런 일에는 이걸 쓰면 되지'하고 즉각적으로 머리에 떠오르는 것이 오히려 줄어든다는 것이 문제이다. 차라리 모르는게 약이라고나 할까?

이런 현상도 어쩌면 가트너의 하이프 사이클(이 시각적 도구 자체가 많은 비판을 받고 있지만)로 설명 가능할지 모르겠다. 아직은 부풀려진 기대의 정점으로 진행해 나가는 중?