2019년 8월 15일 목요일

6LQ8 푸시풀 앰프의 출력 트랜스 교체

6J6 푸시풀 앰프의 덮개를 열고 66 코어 트랜스 두 개를 꺼내고야 말았다. 이영건 선생님, 죄송합니다...


오른쪽은 그동안 출력트랜스 대용으로 써 왔던 전원트랜스.
스피커처럼 즉각적으로 바꾸어 연결해 가면서 소리를 비교할 수 있는 부품이 아니니 교체를 통해서 얼마나 소리가 좋아졌는지를 냉정하게 판별하기가 어렵다. 만약 파형발생기와 오실로스코프가 있었다면 매우 객관적으로 음질을 비교 평가할 수 있었을 것이다. 하지만 귀가 느끼는 세계는 계측과는 또 다른 차원이다. 제대로 만들어진 진공관 앰프용 출력 트랜스이니 당연히 음질은 더 좋을 것이다. 코어의 재질, 샌드위치 감기, 코어의 크기 등.

교체를 한 상태에서 소리를 들어보았다. 더 나아졌을 것이라는 기대감이 더 크게 작용하고 있으니 왠지 더 좋은 소리가 나는 것 같다. 볼륨 조절기의 본체에 접지선을 연결하고 NFB를 연결하는 것으로 마무리를 하였다.




6J6 푸시풀 앰프는 일년 반 정도 사용하였는데 벌써 부품용으로 전락하였다니 아깝다는 생각이 든다. 출력이 매우 낮고 마이크로포닉 노이즈가 심하다는 고질적인 문제점이 있었다. 앞으로 부품용 및 연구용으로 충분히 쓰일 수 있으리라 믿는다.

앞으로는 케이스를 개선하는 연구를 더 해야 되겠다.

2019년 8월 11일 일요일

진공관 앰프용 출력 트랜스의 임피던스 알아내기

6J6 푸시풀 앰프가 작동 중인 모습. 전자액자에 보이는 것은 조반니 파올로 파니니의 로마 판테온 내부(1734).

이영건 선생님이 제작신 6J6 푸시풀 앰프를 파견 근무지 숙소로 가지고 왔다. 최근에 만든 6LQ8 푸시풀 앰프와 비교를 해 보고 싶었기 때문이었다. 내가 만든 앰프는 일반 전원트랜스를 출력트랜스 대신으로 사용한 것이라서 음질이 불리할지도 모른다는 생각을 늘 하고 있었다.

막상 비교 청취를 하니 6LQ8 PP 앰프가 음질이 나쁘다고 할 근거를 찾기 힘들었다. 출력은 당연히 6LQ8 앰프가 크다. 파형발생기와 오실로스코프가 있어야 왜곡이 일어나기 전의 정확한 출력이 몇 와트인지를 측정할 수 있다.

6J6 앰프에 쓰인 출력트랜스의 임피던스 비율은 얼마일까? 제작자에게는 죄송한 이야기지만, 이를 적출하여 다른 앰프에 쓸 수도 있지 않을까? UL탭은 없으며 코어 사이즈는 66 mm이다. 제작자에게 예전에 전화로 문의한 적은 있는데 정확히 기억이 나지 않는다.


출력트랜스는 커버 없이 코어가 노출된 상태이며 내부의 베이클라이트판에 케이블타이와 순간접착제로 고정되었다. 볼륨 조절기가 왜 이렇게 뻑뻑한가 했더니 모터가 달린 전동 가변저항이었다(이런 물건).

6J6은 오디오용 진공관이 아니라서 이를 이용한 앰프의 회로를 인터넷에서 구하기는 힘들다. 검색된 정보는 다음이 전부이다.

[1] 위상반전회로 https://mysite.du.edu/~etuttle/electron/elect33.htm


[2] 1.2W 6J6 하이브리드 앰프 https://ibb.co/B4hRSyv https://youtu.be/3k8jxa0s788 (동영상) 'Ra-a = 16K+16K'라 한 것은 무슨 의미인지를 모르겠다. 유튜브 링크에는 'The video OPT is incorrect the OPT is 20Ka-a , the circuit require 32Ka-a and the B+ voltage is 300V is higher then design voltage. This is the power transformer is for temporary testing use.'라 하였다. 내가 알고 있기에는 32K 트랜스포머의 중간에 탭을 내면 양단과 중간 사이의 임피던스는 절반이 아니라 1/2, 즉 4K가 되는데(임피던스비는 권선비의 제곱에 비례하므로)...




[3] 6J6 PP 앰프 http://diyaudioprojects.com/Forum/viewtopic.php?t=5598
[2]와 [3]에서는 B 전원을 위해 voltage multiplier를 사용하였다. 늘상 접해왔던 (2)배전압을 능가한다.

6J6 PP 구성의 경우 16K:8 출력트랜스를 썼다는 글은 간혹 보인다. 위에 소개한 것 중 [3]번이 그러하다. 미지의 출력트랜스가 있을 때, 임피던스 비율을 알아낼 방법은 없을까?  만약 트랜스 1차에 220V를 연결하여 2차 전압을 재면, 권선비를 알 수 있다. 이를 제곱하면 임피던스 비율이 나온다.

6J6 PP 앰프는 매우 단순한 구성이라서 negative feedback도 걸려있지 않다. 따라서 출력관을 소켓에서 빼면 출력트랜스의 1차와 2차는 전기적으로 완전히 분리된다. 이런 상태에서 220V를 1차에 연결한 뒤 2차 전압을 측정하여 보았다. 9.3V가 나온다. 이번에는 2차에 5W 시멘트 저항 두 개를 16.4옴으로 만들어 연결하여 다시 측정을 해 보았다. 이번에는 8.95~8.96V 정도가 걸렸고, 부하저항에서 소모되는 전력은 계산상으로는 4.98W 정도가 된다. 처음에는 2.2옴 저항 하나를 연결하였었는데 열이 너무 많이 나서 즉시 전원을 끊었다. 전압비는 곧 권선비이므로 24.6이 되고, 제곱을 하면 605.16이다. 이를 환산하면 4.81K:8이 된다. 대충 5K:8의 매우 흔히 쓰이는 출력트랜스가 된다.

출력트랜스 1차 양단에 220V를 공급하기 위해 만든 케이블. 한번 만들어 두면 쓸모가 많다. 잠시 착각을 하여 클립을 납땜한 다음에 절연 외피를 씌우느라 애를 먹었다. 납땜을 하기 전에 수축 튜브 등의 다른 자재를 미리 관통시켜 놓는 것을 잊는 수가 가끔 있다. 머리가 나쁘면 늘 손발이 고생이다.

내가 만든 6LQ8 앰프 PCB에 6J6 앰프의 출력트랜스를 조합하면 가장 좋은 음질이 나올까? 이는 해 보기 전에는 알 수 없다. 출력트랜스를 재활용하기 위해 6J6 앰프를 완전히 분해해 버린다? 그것 역시 쉽게 결정을 내리기 어려운 일이다.

위험한 실험?

하루가 지나서 생각을 해 보니 출력트랜스에 상용전원 220V를 직결한 것은 다소 위험한 실험이었다고 느껴진다. 출력트랜스의 센터탭에 가해지는 수백 볼트의 직류를 생각한다면 전압 자체는 유사하지만, 뽑아낼 수 있는 전류는 비교 불가하기 때문이다. 좀 더 안전한 실험을 위해서는 다른 트랜스포머를 하나 거쳐서 연결하는 것이 나았을 것이다. 꼭 1차에 220V를 연결할 필요도 없을 것이다.

2019년 8월 10일 토요일

하루에 위 내시경 검사 두 번 받은 사연

건강이 좋지 않으셨던 아버지께서는 정기적인 위 내시경 검사를 무척 싫어하셨던 것으로 기억한다. 검사일이 다가오면 며칠 전부터 몹시 신경을 쓰시고 힘들어 하셨다. 그 모습을 봐 왔던 나는 직장에서 처음 내시경 검사를 하면서 자연스럽게 수면 내시경 검사를 선택하게 되었다. 그러다가 일반 내시경을 처음으로 받게 된 일이 생겼으니 사연은 이러하다. 가벼운 위궤양 증세가 있다고 하여 약 처방을 받고 2주 정도의 투약 치료가 끝난 뒤 재검을 하기로 했는데 담당자는 아주 간단하게 '일반 내시경 하실 거죠?'하면서 접수를 해 버렸다.

이런, 드디어 내가 일반 내시경을 하는구나. 

무척 긴장을 하고 검사대에 올랐는데 생각보다 많이 힘들지는 않았다. 그래서 그 이후로는 계속 일반 내시경으로만 검사를 받았다. 3년 전에는 대장 내시경을 같이 하느라 수면 내시경 검사를 했고, 2년 전에는 일반 검사를 받는데 십이지장쪽을 검사하는데 구역질을 좀 많이 했다. 그래서 작년에는 오랜만에 편하게 받아보자고 수면 검사를 택했다. 

일년에 한 번, 마치 숙제를 제출하듯 올해에도 건강검진 날짜는 다가왔다. 이번에는 또 무슨 방식으로 할까? 간편하게 빨리 끝나고 검사 후 맘대로 운전을 해도 되는 일반 방식이냐, 돈이 좀 들지만 편하게 치를 수 있는 수면 방식이냐. 일단 일반 방식으로 접수를 하고 당일날 마음이 바뀌면 수면 방식으로 하겠다고 이야기를 해 두었다.

검사날(오늘)이 되어 아침 일곱시 반도 되기 전에 병원에 도착하였다. 일반 내시경으로 접수를 했지만 수면 내시경으로 하고 싶다고 했더니 일단 변경이 되는지 알아보겠다면서 접수 직원은 검사실로 전화를 돌렸다. 추가로 내야 하는 비용은 4만원. 적은 금액은 아니었다. 그런데 검사실에서는 아직 전화를 받지 않았고, 일반 내시경으로 해야 빨리 끝나기 때문에 아침 일찍 오시라고 연락을 했다는 것이었다. 

그렇다면 일반 내시경으로 하지 뭐.

원래 접수했던 방식으로 검사를 받겠다고 했더니, 접수창구 직원은 내시경을 제일 먼저 하는게 어떻겠냐고 했다. 뭐라고? 지금까지 십수 년 건강검진을 받으면서 내시경은 항상 마지막 코스였다. 검사 항목 중에서 가장 힘든 것이니 그렇게 배치를 하는 것이 자연스럽기도 했고, 위 내시경을 먼저 받으라고 권장을 받은 적도 내 기억으로는 단 한 번도 없었다.

에라, 모르겠다. 뭐 그렇게 하지요.

그래서 옷을 갈아입고 내시경 검사실로 행햤다. 시각은 오전 8시가 갓 넘었고, 검사실에서는 8시 15분쯤에 검사가 시작되므로 다른 항목부터 먼저 받고 계시면 부르겠다고 하였다. 그래서 한 층 아래로 내려가 다른 검사를 먼저 받았다.

곧 호출을 받고 내시경 검사실로 향했다. 깨끗하게 소독된 기구를 오늘 내가 처음 쓰는 사람이구나! 가스가 빠지는 약을 받아 삼키고 검사실로 들어갔다. 목 마취용 약을 뿌리고 검사대에 누웠다. 오래 전에는 목 마취용 약을 입에 머금고 10분 이상을 기다리게 하였었다. 그러고는 약을 삼킨 다음 별도의 마취제를 또 검사 직전에 목에 뿌렸던 것으로 기억한다. 그때는 약을 입 안에 물고서 이리저리 움직이면 혀까지 마비가 되어서 검사가 다 끝나고도 한참 동안 감각이 돌아오지 않아서 식사를 하기 힘들었었는데, 언젠부턴가는 마취약을 목에 뿌린 즉시 검사를 하니 세상이 참 편해지긴 했다.

검사는 생각보다 매우 수월하게 끝났다. 내가 생각하기에도 매우 편안했고, 의사도 너무 잘 받는다고 칭찬(?)을 하면서 계속 사진을 찍었다. 별 문제가 될 소견은 없다면서 검사를 끝낸 뒤 찍은 사진을 보여주려는 찰나, 모니터에는 보이는 이미지가 없다. 내시경 카메라를 입 속에 넣기 전에 찍힌 것 하나만 덜렁 남아 있는 것이 아닌가.

'어머, 사진이 왜 안 넘어왔지?'

이런 일이 생기기도 하는구나. 별 이상이 없으니 그냥 이대로 마칠 것인가? 그래도 기록은 남겨야 하지 않는가? 결론은 내시경을 다시 한 번 더 받는 것으로 모아졌고 - 잘 참는다고 칭찬을 받은 것이 잘못이다! - 담당 직원들은 매우 미안해했다. 나도 별 불만을 제기하기 않고 그러라고 했다. 목 마취는 다시 할 필요가 없다고 했다. 다시 입에 기구를 끼우고 검사대에 옆으로 누웠다. 오, 이런...

두번째 검사는 조금 더 힘들었다. 이미 한 번 훑어 보았으니 담당 의사도 먼젓번보다는 신속하게 검사를 끝냈다. 거듭 미안하다는 말과 함께... 이런 일을 겪는 것이 내가 처음이냐고 물었는데 그건 아니라고 했다. 솔직히 말하자면 채혈을 위해 주삿바늘을 찔렀는데 혈관이 잘 잡히질 않아서 다른 곳을 또 찌르는 것보다 더 힘들지는 않은 정도라고나 할까? 폐암이라고 해서 왼쪽 폐를 절제했는데 나중에 수술을 마치고 났더니 실제 잘라내야 할 폐는 오른쪽인 것을 나중에 알게 된 것에 비하면 덜 황당무계한 일 아니겠는가?

내 자신이 별로 힘들지 않았고, 대단한 일이라 생각하지 않았기에 문제를 제기하지는 않았다. 어찌보면 두 번 겪기 힘든 경험 아닌가. 하지만 위 내시경 검사를 매번 할 때마다 봅시 힘들어하는 사람이라면 어떻게 했을까? 아마 몹시 화를 내고 다시 하지 않겠다고 할 것이다.

아마 내년부터는 위 내시경 검사를 하기 직전에 항상 카메라 작동이 잘 되냐고 묻는 버릇이 생길 것 같다. 그리고 일반 내시경으로 할지 혹은 수면 내시경으로 할지 망설이는 일도 줄어들 것이다.


2019년 8월 7일 수요일

SAM flag에 대해서 좀 더 알아보자 - mapping 여부에 따른 read 추출하기

SAM/BAM 파일로부터 properly paired (mapped) read를 꺼내려면 -f 0x03 flag를 쓰면 충분하다. 더욱 간단하게는 두번째 비트가 1이면 된다. -f 0x02의 의미가 proper pair이기 때문이다. 그러나 paired read가 쓰인 경우 항상 0x01과 따라다니게 되므로 -f 0x03이 더욱 바람직하다.

이토록 간단한 flag이지만, 실제 매핑이 이루어진 read의 입장에서 4가지의 경우로 세분한다면 이해의 폭을 더욱 넗힐 수 있다. Paired fastq file(I & II)을 이용하여 매핑을 하였을 때 하나의 참조서열 내부에서 정상적인 pair를 이루는 모든 경우는 다음이 전부이다. 화살표는 참조서열 위에 매핑일 이루어진 read를, 별표(*)는 fastq 파일에 수록된 상태의 서열을 reverse complementary로 전환해야 함을 의미한다. 내가 알기로 first 및 second는 _1 및 _2 파일을 의미한다. pair를 이루는 시작(left)과 끝(right) read를 의미하는 것이 아니다.

First           Second        Second           First
-------▶......◀-------     -------▶......◀-------
from I         from II*       from II         from I*
  [A]            [B]            [C]            [D] 

(아, 도대체 html로는 부등호 기호를 써서 화살표를 표현하기가 어려우니...)

A-B의 네 가지 read는 단 한번씩만 mapping되어서 SAM 파일 내에서 하나의 alignment record로 존재한다고 가정하자. 그러면 각각의 alignment는 어떤 flag을 갖게 될 것인가? flag의 설명은 samtools flag 명령으로 표시되는 것과 SAM flag decorder에서 쓰이는 용어가 조금 다르지만 편의상 후자의 것을 쓰기로 하자.

기본적으로 여기에 보인 네 가지 alignment는 전부  웹사이트기본적으로 read paired(0x01)와 read mapped in proper pair(0x02)를 만족하므로 0x03을 기본값으로 깔고 있다. 다음으로 생각할 것은 이 read가 pair 중 첫번째 혹은 두번째 read인가, 그리고 이 read와 mate 중 어느 것이 참조서열에 대하여 reverse로 존재하는가의 여부이다. 이는 다음과 같이 4가지의 flag으로 표현된다.

  • 0x10: read reverse strand
  • 0x20: mate reverse strand
  • 0x40: first in pair
  • 0x80: second in par
A는 mate reverse strand(0x20), first in pair(0x40)이다. 따라서 0x03 + 0x20 + 0x40 = 0x63 = 99
B는 read reverse strand(0x10), second in pair(0x80)이다. 따라서 0x03 + 0x10 + 0x80 = 0x93 = 147
C는 mate reverse strand(0x20), second in pair(0x80)이다. 따라서 0x03 + 0x20 + 0x80 = 0xa3 = 163
D는 read reverse strand(0x10), first in pair(0x40)이다. 따라서 0x03 + 0x10 + 0x40 = 0x53 = 83

99/147, 그리고 163/83은 NGS read alignment를 다루는 사람이라면 잊어서는 안되는 숫자가 되겠다. samtools view -f 99로 추출한 read는 -f 147로 얻은 것과 mate 관계이고, -f 163과 -f 83 역시 같은 관계이다. 이렇게 얻은 모든 파일을 합치면 -f 0x03으로 추출한 read 세트와 동일한 것이 된다. 혹시 내가 전개한 이론이 맞지 않다고 생각하는 독자가 계시다면 언제든지 연락 주시길!

Unmapped read에 대해서는?

read unmapped는 0x04(0x4, 또는 십진수로 4라고만 써도 되는데 버릇이 되어서 계속 두 자리 16진수로 표현하고 있다), mate unmapped는 0x08이므로 이를 적절히 조합하면 unmapped pair와 어느 한쪽만 mapping이 된 pair를 찾을 수 있다. 내가 생각하는 가장 간단한 flag 값은 이러하다. 
  • both unmapped: -f 12 (0x04 + 0x08, 16진수로는 0x0c)
  • read mapped, mate unmapped: -f 0x08 -F 0x04
  • read unmapped, mate mapped: -f 0x04 -F 0x08
그런데 Novocraft의 웹사이트(Extracting unmapped reads from a BAM file produced by NovoAlign)에서는 좀 더 복잡한 flag 값을 제시한다.
  • both unmapped: -f 12 -F 256
  • read mapped, mate unmapped: -f 8 -F 260
  • read unmapped, mated mapped: -f 4 -F 264
숫자 단위가 큰 flag은 무엇을 의미하는지 알아보자.
  • 256(0x100): not primary alignment
  • 260: 256 + 0x04(read unmapped)
  • 264: 256 + 0x08(mate unmapped)
이것을 -F로 적용하니 직관적으로 이해를 하기가 좀 어렵다. 테스트를 해 보면 내가 제시한 flag로 하는 것과 결과에 차이가 없다. 이로써 이틀에 걸친 SAM flag 공부하기를 마치고자 한다. SAM and BAM filtering one-liner도 참고하기에 좋다.



2019년 8월 6일 화요일

samtools flagstat로 출력되는 숫자를 재현하기

samtools flagstat는 SAM/BAM 파일에 수록된 read alignment 정보를 출력해 주는 매우 유용한 프로그램이다. 그러나 출력되는 정보는 기본적으로 read가 아닌 'alignment'라서 직관적으로 이해하기 어려울 때가 많다. 특히 하나의 read가 reference 서열에 존재하는 반복 서열에 의해 여러 곳에 매핑될 경우 계산이 잘 맞지 않는 것처럼 느껴진다. 이것을 명확하게 이해하기 위하여 samtools view -f (또는 -F) INT 명령의 flag를 잘 조합하여 samtools flagstat로 표현되는 수치와 같은 값이 나오게 만들어 보았다.

솔직하게 고백하자면 나는 거의 항상 CLC Genomics Workbench에서 NGS data를 다루기 때문에 SAM/BAM 파일을 다룰 일은 없다고 해도 과언이 아니다. 하지만 데이터 조작의 기본 원리를 이해하거나 사용 프로그램을 접하기 어려운 사람에게 설명을 하려면 CLC Genomics Workbench만을 고집할 수는 없다. 그래서 IGV(Integrated Genomics Viewer)도 가끔은 만들어야 한다.

미생물 유전체 서열로부터 64780 x 2(129560 reads, 2x150 nt)개의 가짜 fastq file을 만들었다. 사용한 시뮬레이터는 ART MountainRainier이다. 레퍼런스 서열은 read를 만들어낸 원본 read와 가까운 유전체를 대략 같은 간격의 약 500개의 조각(크기는 1 kb)으로 나눈 것이었다. 매핑에는 bowtie2를 사용하였다.

$ samtools view -H mapping.sam # 헤더 정보만 보여줌
$ samtools view -b mapping.sam > mapping.bam
$ samtools view -b mapping.sam -o mapping.bam # 같은 결과
$ samtools flagstat mapping.bam 
[1] 131900 + 0 in total (QC-passed reads + QC-failed reads)
[2] 2340 + 0 secondary
[3] 0 + 0 supplementary
[4] 0 + 0 duplicates
[5] 21390 + 0 mapped (16.22% : N/A)
[6] 129560 + 0 paired in sequencing
[7] 64780 + 0 read1
[8] 64780 + 0 read2
[9] 15554 + 0 properly paired (12.01% : N/A)
[10] 15710 + 0 with itself and mate mapped
[11] 3340 + 0 singletons (2.58% : N/A)
[12] 122 + 0 with mate mapped to a different chr
[13] 105 + 0 with mate mapped to a different chr (mapQ >=5)

그러면 각 줄번호에 해당하는 숫자를 재현해 보자. 0만 표시된 것은 제외하였다. alignment의 수가 필요한지(samtools view -c), 혹은 이로부터 read name에 해당하는 것을 뽑아낼 것인지를 명확히 해야 된다.

[1]은 read의 수가 아니라 alignment의 수이다. 다음과 같이 하면 된다.

$ samtools view -c mapping.bam
131900

[2]는 primary와 secondary mapping을 이해해야 한다. 256을 16진수로 표현하면 0x100이다. 따라서 -f 0x100이라고 써도 된다.

$ samtools view -c -f 256 mapping.bam
2340

수치가 나오지 않은 [3,4]는 생략하자. [5]는 mapped read의 alignment 수를 의미하므로, SAM/BAM flag의 0x04(unmap)의 반대, 즉 -F 0X04를 쓰면 된다.

$ samtools view -c -F 0x04 mapping.bam
21390

만약 properly paired read에 대한 것만을 추출하고 싶다면 -f 0x03(1 for paired, 2 for proper_pair)으로 설정해야 한다.

[6]은 매핑 결과와는 관계없이 최초 read에 들어있던 read의 수를 의미한다. 이는 이미 알고 있는 숫자이다. 그러나 BAM 파일에서 굳이 구하고 싶다면 다음 계산에서 나온 수치에 2를 곱하면 된다. BAM file에서는 simulated read name 끝부분의 /1 또는 /2가 제거된 상태라서, uniq 명령을 거치고 나면 그 수가 절반으로 줄기 때문이다. sort는 꼭 하지 않아도 된다.

$ samtools view mapping.bam | cut -f1 | sort | uniq | wc -l
64780

[7]과 [8]은 fwd 및 rev read file에 들어 있는 read의 수이므로 서로 동일하며, 이미 알고 있는 값이므로 넘어간다. 전체 read 수의 절반임은 당연하다.

[9]는 조금 어렵다. Properly paired를 의미하는 flag은 0x02인데, 이는 반드시 0x01(paired)과 같이 쓰인다. 따라서 -f 0x03을 주어서 read의 수를 계산한 다음, pair를 만들기 위해 2를 곱하면 된다. samtools view -c -f 0x03 mapping.bam이라고 명령을 내리고 싶은 강렬한 욕구가 느껴지지만, 그렇게 하면 안된다. 왜냐하면 proper pair를 이룬 상태로 reference 내의 여러 곳에 결합할 수도 있기 때문이다. 실제로 이렇게 계산하면 15554가 아니라 16760이 나온다.

$ samtools view -f 0x03 mapping.bam | cut -f1 | sort | uniq | wc -l
7777

[10]은 read 쌍이 둘 다 매핑이 된 것을 의미한다. Read 쌍의 거리와 방향이 적정한지는 중요하지 않다. 이것은 어떻게 flag를 정해야 할까? read도 unmapped가 아니고(-F 0x04), 그의 짝도 unmapped가 아니여(-F 0x08)! 따라서 -F 0x12를 하여 계산되는 read의 수에 2를 곱한다.

$ samtools view -F 12 mapping.bam | cut -f1 | sort | uniq | wc -l
7855

다음으로 [11]은 꽤 까다롭다. sinlgeton, read pair의 한쪽만 mapping이 된 것을 산출하는 것이다. 여기에서는 -f 0x04 -F 0x08을 하거나 -f 0x08 -F 0x04를 하면 된다. 두 명령어를 따로 실행해서 합쳐야 할 것 같은 생각이 들지만, read name을 각각 추출하여 비교해 보면 똑같다. 이것은 read pair를 산출하는 것이 아니므로 곱하기 2를 하면 안된다.

$ samtools view -f 0x04 -F 0x08 mapping.bam | cut -f1 | sort | uniq | wc -l
3340

[12,13]은 아직 정확한 flag 조합을 찾지 못하였다. SAM/BAM flag의 의미를 파악하려면 매SAM/BAM speficiation 파일이나 samtools flags 명령어, 또는 SAM flag 디코더를 적절히 활용해 보라.

Paired read, 즉 [5]와 singleton[11]은 후속 분석에서 유용할 때가 많다. 특히 11번에 해당하는 read의 pair를 추출해 놓으면 read pair에 의한 연결 부위를 찾는데 활용할 수 있다. 이상에서 살펴본 바와 같이 SAM/BAM flag을 자유롭게 쓸 수 있게 되면, samtools bam2fq 명령을 이용하여 BAM 파일에서 조건에 맞는 read를 직접 추출할 수도 있다. pair가 깨진 상태라면 BBmap의 repair.sh 및 관련 명령어(Repair Guide)를 적절히 활용하면 매우 편리하다.

2019년 8월 5일 월요일

GenoGlobe.kr, 새롭게 시작하는 블로그

기존에 사용하던 웹호스팅 서버에 DokuWiki를 새로 설치하고 블로그 플러그인을 깔았다. 설정을 약간 매만져서 https://genoglobe.kr/이라고만 치면 곧바로 연결이 되게 만들었다. 보통 DokuWiki를 설치하면 http://mydomain/path/to/installation/doku.php?id=start가 기본 접속 주소가 된다. 지금 보이는 이 웹사이트는 구글 블로그에 기반한 것으로서 GenoGlobe.com  도메인을 사용한다.

아래에 소개한 GenoGlobe.kr의 로고는 인터넷에서 찾은 지구 이미지(수정후 비상업적 용도로 재사용 가능한 것, 링크)에 Century Gothic 글꼴의 G 문자와 CGView를 이용하여 내가 직접 그린 E. coli genome image(링크)를 겹친 것이다. 그래픽 소프트웨어를 쓸 줄 아는 것이 없으니 작업은 그저 단순하게 파워포인트에서! 글꼴은 가능하다면 원형에 가깝게 G가 표현된 것을 골랐다. 어찌보면 구글 로고의 첫 글자를 연상시킬지도 모르지만 전혀 의도한 바는 아니다.

GenoGlobe.kr의 로고(링크).

가장 최근의 구글 로고에서 'G'자가 디자인적으로 완벽하지 않다는 논란이 있어서 이를 소개해 본다. 글 제목은 별로 마음에 들지 않는다.

논란의 'G'! 구글 로고 변경의 G 로고 디자인은 '실수' 범벅이다? 아니다? 정답은!


파비콘은 몇 번을 새로 만들었는데 썩 마음에 들지는 않는다. 기본 개념은 GenoGlobe의 'G'에 이중 나선을 결합한 것이다(링크).

아마도 올해 안에 GenoGlobe.kr로 내 블로그를 완전히 이전하게 될 것 같다. 그 이후에는 GenoGlobe.com 도메인을 더 이상 유지하지 않는 것도 비용 절감 차원에서 고려해볼 수 있으나, 나의 통일된 '브랜드' 유지 차원에서 그냥 둘 수도 있다.

2019년 7월 31일 수요일

[독서 기록] 로지트, 사로잡힌 영혼

얼마 전에 어머니를 뵈러 갔다가 정규 누님이 위암으로 투병을 하다가 최근에 세상을 떠났다는 갑작스런 소식을 들었다. 정규 누님은 1956년 서울 출신으로, 화가 생활을 하셨다. 어머니와 정규 누님 어머니는 사촌 지간이니 나와는 육촌 사이가 된다. 아주 어려서는 어머니쪽을 통해 왕래가 있었고 그 이후로는 1986년에 서울 갤러리에서 열렸던 첫 개인전에서 다시 만났으며, 그리고 삼십년 가까이가 흘러 몇년 전에 내가 졸업한 학교(대학원 화학과)에 입학하여 후배가 된 누님의 딸, 그러니까 나에게는 조카와 함께 만나 대전에서 저녁을 같이 먹은 것이 전부였다. 이전의 만남 이후로 많은 시간이 흘렀지만 누님은 생각했던 것보다 나이가 더 들어 보였고, 얼굴에서는 세월의 더께가 느껴졌었다.

내가 미술에 요즘 관심이 많이 갖게 되어서 살아계실 때 좀 더 자주 만나서 교류를 했으면 좋았을 것을... 아쉽고 죄송스런 마음이 누님이 2002년 출판했었던 자서전을 구해서 읽었다. 누님의 홈페이지에 책 소개가 있다는 것은 알고 있었지만 이렇게 고단한 삶을 살았는지는 정말 몰랐었다.


이정규(1956~2018)의 자서전. 로지트, 자로잡힌 영혼(2002)

사업을 한다고 외국으로 떠나서 13년 동안 소식이 끊겼던 아버지가 이란에 정착하였다며 가족들을 불러들인 것이 1977년. 나도 어렴풋하게 그때를 기억한다. 누님은 서울에서 미술대학을 2학년까지 다니고 낯선 땅 이란으로 떠났지만 1978년 이란에 혁명이 일어나면서 가족들은 영국으로 떠나야 했다. 누님은 다시 미국으로 건너가서 대학원을 마치고 1985년에 귀국하였다. 그러나 대학에 자리를 잡고자 했던 희망은 석연치 않은 이유로 좌절을 겪게 된다.

그 이후의 일생은 여인의 몸으로는 감당하기 어려운 것이었고, 먼 친척인 나는 그러한 사정을 전혀 알지 못했었다. 책을 주문하기 위해 인터넷 서점에서 소개의 글을 보다가 비로소 그 삶의 단면을 엿보게 된 나는, 왜 많은 예술가들은 이렇게 어려운 삶을 지탱해 나가야 하는지 안타까운 마음에 젖어들었다. 책에서는 경제적으로도 곤궁하고, 일상적이지 않은 생활을 이어 나가면서도 예술에 대한 고민과 열정을 놓치지 않았던 자신의 이야기를 담담하게 그려나갔다. 누님이 책에서 언급했던 공권력에 의한 핍박과 통제가 정말로 있었던 것인지, 아니면 온전하지 못했던 그녀의 정신 세계에서만 있었던 것인지는 알 수 없다. 희망이라고는 찾아볼 수 없는 생활을 하면서도 혼자의 결심으로 아이를 낳고 키운 것은 어떤 마음에서였을까.

자화상 - 빨간 신호등(1996). 자서전의 표지에도 실렸었다. 출처 링크
창조 놀이(1996). 출처 링크

걱정 없는 곳에서 부디 평안히 쉬시기를...