2020년 4월 1일 수요일

[2020년도 6LQ8 푸시풀 앰프 `티라미수` 리모델링] 2. 끝내기

기필코 끝을 내겠다는 비장한 각오와 함께 퇴근하여 작업용 테이블을 폈다. 출력 트랜스와 스피커 연결용 단자를 납땜하는 것부터 시작하여 NFB 회로, 커넥터 등을 차례로 연결해 나갔다.

속칭 '하모니카 단자대'를 상판 하부에 붙여서 본체에서 올라오는 B전원과 히터용 전원을 연결하도록 하였다.

절묘하게도 상판을 본체 위에 안정적으로 90도 가량 세울 수 있다. 최종 배선을 마무리하였다.

'혹시 실수는 한 것이 없을까?'

작업을 마치고 처음으로 전원을 넣을 때에는 늘 긴장하게 된다. '퍽' 소리와 함께 불꽃이 튀고 연기가 나면서 누전차단기가 내려가는 일이 생기는 것은 아닐지 늘 조심스럽다. 그저께 작업을 할 때에는 전원을 내렸음에도 불구하고 리플 필터 보드(eBay 링크)의 대용량 캐패시터에 남은 전기로 인해 감전이 되었었다. 전원을 내린 상태에서 리플 필터의 출력단을 멀티미터로 찍어보니 250 볼트가 그대로 걸린 것이 아닌가? 회로도를 살펴보니 당연히 있을 줄 알았던 방전용 저항이 달려있지 않았다. 이번 작업에서는 갖고 있는 시멘트 저항(5W 6.8K)을 이용하여 안전하게 방전부터 시켰다. 이런 용도라면 30K 이상의 저항이 더욱 안전해 보인다. Digi-Key에서 제공하는 캐패시터 안전 방전 계산기를 참고해 보자.

상판을 닫으니 빅 사이즈 티라미수 케이크가 완성되었다. 43 오극관 싱글 앰프와는 다르게 크고 단단한 소리가 난다.

스크린 그리드로부터 출력트랜스의 중간탭은 연결한 선에 흰색 수축 튜브가 씌워져서 보기에 좋지 않다. 속에는 200R 저항이 숨은 상태이다. 검정색 수축 튜브가 가장 먼저 소모되어서 그렇다. 혹은 200R 저항을 상판 아래에서 연결하고 위에는 나타나지 않게 하는 것도 한 방법이 될 것이다.





2020년도 1분기에 생각지도 않게 많은 오디오 자작활동을 하였다. 정확히 말하자면 2018-2019년에 걸쳐서 프로토타입 수준으로 만들었던 것을 개작하여 좀 더 보기 좋게 만든 것에 불과하다. 결과만 놓고 본다면 매우 단순한 수준의 일이지만 LibreCAD로 도면을 만든다든지, 나무판에 수성 스테인을 발라보는 등 경험의 폭이 꽤 많이 넓어졌다고 생각한다.

마음을 벌써 다음번 프로젝트를 구상하느라 즐겁다. 이미 상당히 구체적인 수준으로 계획을 짜 놓았다.

2020년 3월 31일 화요일

텍스트 파일을 위치 기준으로 자르기(cut 명령어 사용)

KEGG Pathway 정보를 활용할 일이 생겼다. 5자리 숫자의 pathway 번호와 그 이름이 간결하게 텍스트 파일로 정리된 곳이 있다면 참으로 좋겠지만, 내 상식 수준에서는 https://www.kegg.jp/kegg/pathway.html의 내용을 마우스로 긁어서 가져오는 것 말고는 마땅한 방법을 찾지 못하였다. Subscription 기반으로 바뀐 다음부터는 KEGG DB를 적극적으로 이용하지를 않았으니 말이다.

텍스트를 복사해 놓으니 이런 꼴이다. 에휴...

012102-Oxocarboxylic acid metabolism
01212Fatty acid metabolism
01230Biosynthesis of amino acids

앞에서부터 다섯자리의 숫자가 끝난 다음에 탭을 집어넣으면 좋겠는데, 이를 위해서 스크립트를 짜자니 너무 성가시고, vim에서 치환 기능을 잘 쓰면 될 것도 같은데 방법이 잘 찾아지지 않는다. Perl에서 치환을 위해 쓰는 정규표현식과 vim에서 쓰는 것이 완벽하게 호환되지는 않는다. 그리고 vim에서 복잡한 검색 및 치환을 하는 데에는 익숙하지가 않다.

paste 명령어를 위치 기준으로 활용할 수는 없을까? cut -c 6-라고 입력하면 여섯번째 캐릭터부터 끝까지만 선택하여 출력하는 것이라고 한다. 그러면 라인의 처음부터 다섯번째 캐릭터까지를 선택하려면? 상상력을 발휘해 보자. cut -c -5가 된다. 말 그대로 5번째와 6번째 캐릭터 사이를 칼로 썰듯이 파일 전체를 두 조각으로 자르는 것이다.

그러면 이 명령어를 paste와 조합하면 되겠다. 위에 보인 내용이 infile.txt에 들어있다고 가정하자.

$ paste <(cut -c -5 infile.txt) <(cut -c 6- infile.txt) > outfile.txt

그렇지!  cut도 그렇지만 paste는 정말로 신비롭고도 유용한 명령어이다.  명령행 인수를 만들기 위해 파일(infile) 안의 목록을 쉼표로 구분하여 한 줄로 붙여야 할 경우가 있다. 이럴 때 $(paste -sd, infile)라는 표현이 얼마나 유용한지는 설명할 필요조차 없다. paste - - - < file은 또 어떠한가?

요즘은 업무를 위해 점점 저수준의 유틸리티나 bash 자체의 기능을 활용하는 일이 많아지고 있다. 간결하고 효율적이며 심지어 아름답기까지 하기 때문이다. 또한 치매 예방에도 좋다고 믿는다...

[2020년도 6LQ8 푸시풀 앰프 `티라미수` 리모델링] 1. 얼떨결에 시작한 작업

43 싱글앰프만 리모델링을 하고 당분간은 좀 자제하려 했는데 한번 재미를 들이니 자꾸 퇴근시간이 기다려진다. 완성도가 높은 앰프는 듣기에도 좋고 보기에도 좋아야 한다! 기왕 시작한 김에 작년 여름에 만들었던 6LQ8 PP 앰프도 손을 대기로 했다.

개성을 살리기 위해 기존의 다이소 수납함을 그대로 쓰기로 하였고, 상판은 6 mm MDF를 가공하여 진공관을 상판 아래로 내리기로 하였다. 벌써 기억 속에서 사라져가는 LibreCAD 사용법을 되살려서 PCB의 그림을 1:1로 그려서 종이에 인쇄하여 오린 뒤 주말에 구입한 MDF 판 위에 올려놓고 구멍을 뚫었다.

MDF라서 30 mm 홀쏘로 구멍을 뚫기가 아주 편했다.

상판 도색 전 가조립 상태.

MDF 상판을 그대로 두자니 보기에도 안좋고 습기를 머금으면 가장자리부터 들고 일어날 것 같아서 도색을 하기로 결정하였다. 43 앰프 리모델링 때 쓰던 수성 스테인과 바니쉬를 젯소(gesso, 프라이머 또는 하도재 또는 단순히 밑칠) 없이 그냥 몇차례 발랐다. 원래 MDF는 프라이머를 칠하지 않고 도색을 하는 것이 쉽지 않다고 하는데, 그냥 무지막지하게 발랐다. 도색은 그 자체가 별도의 기술 분야라고 보는 것이 맞다. 얼룩이 지지 않게 바르는 것이 참 어렵다.


자세히 보면 엉망이지만 칠하지 않은 것에 비하면 훨씬 낫다.

보통 나무로 만든 상자 모양의 통 위에 금속 상판을 올리는 것이 DIY 앰프의 정석인데, 이는 기존의 상식을 깨는 모습이 되었다. 플라스틱 통 위에 MDF 상판, 그것도 배색이 절묘하게 어우러져 어디선가 본 것 같은 느낌을 받는다. 뭘 닮았지?

그렇다! 티라미수 케이크를 닮았다!! 앞으로 이 6LQ8 PP 앰프를 `티라미수(Tiramisu)`라는 애칭으로 부르겠다.

출처: 나무위키(링크)

오늘 퇴근 후에는 어떠한 일이 있어도 마지막 배선 작업을 마치려 한다. 어제 전원부의 재배선은 마친 상태라서 아마도 두어 시간이면 끝나지 않을까 기대하고 있다. 아래의 사진은 어제 저녁까지의 작업 결과물이다.


조명을 달리하여...


내부 공간이 협소해져서 히터 점화용 12V 어댑터는 바깥으로 나왔다. 티라미수가 등짐을 지고 있다.

국내 스피커 제조 역사의 산 증인이신 박병윤 선생님께서 네이버 카페 빈티지 마을을 통해 근황을 알리셨다(링크). 얼마 전 3인치 풀레인지 스피커를 개발하여 화제를 모으기도 하였다. 저음이 아무래도 부족하다는 의견에 따라 구경을 키우기로 하였고, 이에 따라 만들어진 5 x 7 인치 타원형 풀레인지 시스템의 개발을 마쳤음을 알리기 위함이다. 올해 상반기에 이것과 더불어 6.5인치 및 8인치 급 스피커 시스템의 본격 생산이 이루어진다면 나도 이것을 하나 소장하고 싶다.


2020년 3월 27일 금요일

AWK를 사용한 FASTA file의 조작(서열 펼치기, 한 줄로 만들기..등등)

컴퓨터가 좋아하는 파일의 포맷과 사람이 눈으로 보기에 편한 파일의 포맷은 분명히 다르다. '컴퓨터가 좋아하는 포맷'이란 프로그래머(결국은 사람)가 다루기 편한 포맷이라는 뜻도 된다. 줄바꿈이 되어 있는 FASTA 파일이야말로 정말 괴로움이라는 글을 본 일도 있으니 말이다.

일반적으로 FASTA 형태의 파일이라 하면 서열 데이터를 60 문자 단위로 끊어서 줄바꿈을 한다. 이를 wrapping이라 한다. Pacific Biosciences의 웹사이트에 나온 FASTA file format의 best practice에는 다음과 같은 항목이 있다.
Sequences in FASTA files should be wrapped at a uniform line length, to enable indexing. A common convention is to wrap lines at 60 characters.
Wrapping이 인덱싱을 용이하게 하는 측면도 있었구나... 어쩐지 어떤 프로그램은 60 글자 단위를 지키지 않으면 에러를 토해 내더라니.

만약 FASTA 파일이 서열 ID 한 줄, 서열 자료는 줄바꿈 없이 한 줄로 구성되어 있다면 이를 다루는 후속 프로그램을 짜는 일도 무척 간편해진다. EZBioCloud에서 세균 유전체 파일을 받아서 열어보라. 바로 이런 unwrapped FASTA 형식으로 되어 있음을 알 수 있다. 아마도 데이터베이스 서버 내에 문자형 데이터로 저장되어 있어서 그런 것은 아닌지 모르겠다.

FASTA file의 wrapping 및 unwrapping을 할 수 있는 '생명정보학용' 유틸리티가 당연히 지구상 어딘가에 존재하겠지만(예: BBMap의 reformat.sh), Bash 환경과 이를 바탕으로 기본적으로 설치된 일반 유틸리티를 이용할 수 있다면 더욱 좋지 않겠는가? 오늘은 그 방법에 대해서 정리해 보려고 한다. 여기에서 소개하는 방법은 유일한 것이 아니다. 더 간단하고 유려한 방법이 있다면 그것을 쓰면 된다.

FASTA file unwrapping

줄바꿈이 적용된 FASTA file의 서열 데이터를 한 줄로 펼쳐보자. BioStars를 빛내는 Pierre Lindenbaum의 글에서 많은 영감을 받았다. N이라는 변수를 활용하는 트릭이 멋지다.

$ awk '/^>/ {printf("%s%s\n",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' infile.fa

맨 마지막의 END{..} block을 빼먹으면 출력물을 파일로 저장하여 나중에 vi로 열었을 때 [noeol], 즉 이 파일이 개행문제로 끝나지 않았음을 표시하는 경고 문자가 뜬다. Unwrapped FASTA file은 하나의 서열이 정확하게 2 줄로 이루어지므로 파일을 쪼개는 등 다른 작업을 하기에 매우 편리하다.

FASTA to tab-delimited file

FASTA file을 unwrap하는 것에서 더욱 나아가서 아예 서열 ID를 비롯한 모른 자료를 한 줄로 표현해 보자. 이때 sequence description에 해당하는 것을 처리하는 것이 약간 성가신 일이 된다. 편의상 description 필드에 있는 첫번째 단어만을 취하여 하나의 컬럼으로 삼기로 하자. 즉 FASTA file로부터 서열 ID, description, 그리고 줄바꿈 없는 서열이라는 세 개의 컬럼이 탭으로 구분된 텍스트 파일을 만드는 것이다.

$ awk '/^>/ {printf("%s%s\t%s\t",(N>0?"\n":""),$1,$2);N++;next;} {printf("%s",$0);} END {printf("\n");}' infile.fa

그러나 이 방법은 아직 완벽하지 않다. 실행을 해 보면 알겠지만, 서열 ID 앞의 '>'가 그대로 출력되기 때문이다. 이를 해결하려면 sub() 함수를 써야 한다. sub() 함수 자체를 printf() 함수의 인자로 공급하면 제대로 작동이 안되므로, 해당되는 블록의 맨 앞에서 실행하여 패턴에 따르는 치환을 먼저 실시해야 한다. sub() 함수 내에 포함된 필드 번호는 $0과 $1 무엇을 쓰더라도 결과는 같다.

$ awk '/^>/ {sub(/^>/,"",$1); printf("%s%s\t%s\t",(N>0?"\n":""),$1,$2);N++;next;} {printf("%s",$0);} END {printf("\n");}' infile.fa

이번에는 서열의 일련번호를 첫번째 컬럼에 삽입해 보자. 즉 일련번호, 서열 ID, description 및 서열 데이터라는 네 개의 컬럼을 갖는 출력물을 만들어 내는 것이다. N+1을 인쇄하게 만든 이유는 일련번호를 1부터 시작하게 만들기 위함이다. 전산 전공자라면 0부터 시작하는 것을 더 좋아할 수도 있겠다.

$ awk '/^>/ {sub(/^>/,"",$1); printf("%s%d\t%s\t%s\t",(N>0?"\n":""),N+1,$1,$2);N++;next;} {printf("%s",$0);} END {printf("\n");}' infile.fa

FASTA file wrapping

서열 데이터가 한 줄로 펼쳐진 FASTA file을 다시 wrapping하려면 EMBOSS 패키지의 seqret을 쓰는 것이 편하다. awk로 처리하려면 상당히 귀찮다. 읽어서 그냥 출력하게 만들면 wrapping이 되어 나온다. 그러면 tab-delimted file로 풀어헤쳐진 것을 wrapped FASTA file로 만들어 보자. 다음과 같이 먼저 awk를 써서 unwrapped FASTA로 만든 다음 seqret에게 보내면 된다. EMBOSS의 매뉴얼은 이러한 용법을 쉽게 알 수 있도록 작성되지를 않았다는 것이 문제이다.


$ awk '{printf(">%s %s\n%s\n",$1,$2,$3)}' tab-delimited-file | seqret fasta::stdin fasta:outfile.fa

응용: Multi-FASTA description을 기준으로 특정 서열을 추출하기

FASTA file(infile.fa)의 description field에 gene 이름이 담겨 있다고 가정하자. gene list가 별도의 파일(list.txt)에 담겨 있으며, 이에 해당하는 서열을 FASTA file에서 추출하고 싶다. 어떻게 하면 좋을까? 우선 FASTA file을 tab-delimited file로 분해한 다음, gene 목록 파일과 join을 시킨 뒤 다시 FASTA로 전환하면 된다. join 전에는 공통 키를 기준으로 먼저 sort를 해 놓아야 한다. '>'를 떼었다 붙이는 번거로운 작업은 하지 않았다. list.txt 파일에 추출하고 싶은 서열의 ID가 들어있는 상태라면 '>'를 떼는 작업이 필요할 것이다. Process substitution을 사용하면 전체를 one-liner로 만들어 버릴 수 있지만 그렇게 되면 코드의 가독성이 떨어지니 오늘은 중간 단계 파일을 만들어서 다음 명령어에 인수로 공급하는 방법을 쓰기로 하겠다.

$ awk '/^>/ {printf("%s%s\t%s\t",(N>0?"\n":""),$1,$2);N++;next;} {printf("%s",$0);} END {printf("\n");}' infile.fa | sort -t $'\t' -k2,2 > infile.tsv.sorted
$ sort -t $'\t' -k1,1 list.txt > list.txt.sorted
$ join -t $'\t' -1 2 -2 1 -o 1.1,1.2,1.3 infile.tsv.sorted list.txt.sorted > extracted_sequences.tsv
$ awk '{printf("%s %s\n%s\n", $1, $2, $3)}' extracted_sequences.tsv | seqret fasta::stdin fasta:outfile.fa

마지막에 소개한 응용편에서 약간 어렵지만 꽤 유용한 것은 join 명령어였다. 물론 list.txt에는 gene 정보가 있지만 infile.fa에는 없다면 어떻게 할 것인가? 이러한 예외적인 조건까지 다루도록 설계하지는 않았다. 하지만 옵션에 따라서 outer join도 가능하니 관심이 있다면 join 유틸리티의 사용법을 공부하면 된다.

6LQ8 푸시풀 앰프의 전원부 단순화, 그리고 전압 강하용 저항의 방열 대책

작년에 만든 6LQ8 푸시풀 앰프는 최근의 43 싱글 앰프 리모델링 직전까지 약 9개월 동안 파견근무지 숙소에서 내 귀를 즐겁게 하였었다. 플라스틱 바구니 몸체에 나무 도마, 그리고 아무렇게나 뒤엉킨 전선.. 언젠가는 개작이 필요하겠지만 저 지저분한 모습을 바라보고 있노라면 만드는 과정에서 겪은 즐거움과 노고가 유쾌하게 떠오르게 되어서 그렇게 나쁘지만은 않다.

43 싱글 앰프(왼쪽)와 6LQ8 PP 앰프(오른쪽).

원래 이 6LQ8 PP 앰프는 1N4007 다이오드 브리지에 RC 평활회로만 달린 단순한 전원회로로 시작하였다. 그러나 험(hum)이 참을 수 없는 수준이어서 2SK1119라는 FET를 이용한 리플 제거용 필터 보드를 구입하여 기존의 RC 평활회로 바로 뒤에 삽입하게 되었다. 그 효과는 매우 만족스러워서, 43 앰프 보드에도 이 필터를 쓰고 있다.

리플 제거 보드는 아직도 eBay에서 판매된다("Tube preamp/amplifier high voltage FET AC noise electronic filter board 400V 2A"). SMPS 실험을 하느라 구입한 MOSFET인 IRF740이 여러 개 남아 있어서 마음만 먹으면 노이즈 제거 필터를 직접 만드는 것도 가능하지만, 방열판이나 대용량 전해 캐패시터의 가격을 생각하면 eBay에서 7.09 달러를 주고 구입하는게 낫겠다.

인터넷에서 검색을 해 보니 이러한 타입의 리플 제거 필터를 쓰는 경우 전단에는 다이오드 브리지만 있으면 충분하다는 결론을 얻게 되었다. 그래서 단순화를 추구하기 위하여 기존에 사용하던 정류 기판을 빼내고 IN4007 네 개를 연결하여 만든 브리지를 삽입하여 보았다.

아래 왼쪽에 보인 것이 앰프에서 빼낸 기존의 전원회로부이다.

약 9개월 동안 사용한 전원회로는 정상적인 모습이 아니었다. 평소에도 발열이 심하다고 생각했는데 전압 강하단에 쓰인 저항 주변부가 약간 탄 모습을 하고 있었다.


만능기판의 뒷면을 공개하는 것은 상당한 용기가 필요하다. 왜? 늘 부끄러우니까.. 소리전자 판매장터에서는 자작앰프를 판매하려는 사람에게 내부를 공개하라는 글과 그에 대한 공방이 가끔 벌어진다. 바둑판처럼 자로 잰 듯한 질서정연한 배선을 할 수만 있다면 참으로 좋겠다.

문제는 이 회로기판을 제거한 다음에 일어났다. 다이오드 브리지와 FET 리플 필터를 직결하고 나서 최종 전압을 측정하니 평소보다 거의 40V 정도가 높다. 약간 과도한 조건이 아닐까 생각을 하면서 앰프를 작동시켜 보았다. 얼마나 시간이 흘렀을까, 왼쪽 채널의 소리가 약해지면서 '웅-'하는 소리가 점점 커졌다. 왼쪽 채널을 담당하는 6LQ8 중 하나가 마치 멜트다운 직전의 용광로처럼 평소와는 다른 모습으로 시뻘겋게 달아오르는 것이 아닌가? 이것이 말로만 듣던 진공관의 열폭주 현상이로구나! 일단 전원을 내리고 전압 강하용 저항을 삽입하여 6LQ8 작동에 필요한 198 ~ 202 V 수준으로 내리기로 했다.

전원 전압을 원하는 수준으로 내리려면 평활회로 이후에 저항을 다는 것보다 전원트랜스 2차와 정류용 다이오드 사이에 넣는 것이 더욱 유리하다. 가지고 있는 5와트 시멘트 저항을 조합하여 원하는 전압이 나오도록 하였다. 100옴 3개를 직렬로 연결하니 195 V 정도가 나와서 이대로 납땜을 하였다. 다행스러운 것은 진공관의 열폭주가 다시는 일어나지 않는다는 점이다.

시멘트 저항에서는 상당한 수준의 열이 나고 있었다. 도대체 얼마나 전력을 소모하는 것일까? 300옴 전체에 대해서 27 V 가까운 전압 강하가 일어나고 있으니 전체적으로는 2.43 W에 해당한다. 저항 하나에 대해서는 0.81 W를 소모하고 있는 것이다. 하지만 손을 대기 어려울 정도로 뜨겁다. 이대로는 앰프 케이스(플라스틱)이 녹을지도 모른다는 생각이 들어서 철판 조각 위에 저항을 올려놓기로 하였다. 방열판 목적이라고 보아도 무방하다. 여기에는 가구 DIY용 평철을 사용하였다.



시멘트 저항에서는 열이 얼마나 나는가? 아래에 인용한 그래프를 보자. 5 W 저항의 경우 100% 수준으로 작동하면 그 온도는 170도에 이르게 된다. 이 제품의 권장 사용 온도는 -40℃~+155℃라 한다. 70~80% 이내의 load 조건에서 쓰는 것이 안전하다.

출처: 대림전자(링크)

결론을 맺자면 X 와트급 저항에서 X 와트에 해당하는 전력 소모가 일어나게 해서는 안되겠다는 것이다. 방열판과 같은 적극적인 대책을 쓰지 않는다면 1/3에서 최대 1/2 정도 수준이 안전할 것이다. 이번 실험처럼 방열판에 해당하는 것을 사용하는 것도 좋은 아이디어이다. 시멘트 저항 고정용 방열 브라켓이라는 부품도 존재한다. 기존에 사용하던 전원회로 내의 전압강하용 저항은 1~2 와트급이었던 것으로 기억하는데, 아마 이 한계치에 다다를 정도의 전압강하를 하고 있었을 것이다. 시멘트 저항이 아니니 크기가 작은 일반 저항에서는 더욱 높은 열이 나게 되고, 가까이 위치한 다른 부품에도 영향을 미치고 있었을 것이다.

전자 회로의 안전하고도 안정적인 작동을 위해 방열 대책이 얼마나 중요한지를 깨닫게 된 유익한 경험이었다.

2020년 3월 20일 금요일

ABRicate는 무엇에 쓰는 물건인가?

3월 들어서 올린 글의 대부분은 진공관 앰프 리모델링 작업에 관한 것이었다. 식구들이 하나씩 늘어 파견근무지 숙소에서 벌써 세 대의 진공관 앰프를 굴리게 되었으니.. 그래서 활용도가 떨어지는 것 하나는 다른 사람에게 넘기기로 하였다.

왼쪽부터 6LQ8 푸시풀, 6J6  푸시풀(이것은 이영건 선생님 2018년 제작), 그리고 6N2P + 43 싱글.

이번에는 오랜만에 본업과 관계된 글을 좀 써보려 한다. 인간의 각 장기에 존재한 microbial signature가 다르다는 논문을 읽어보고 이에 대해서 뭔가 글을 쓰려는 강력한 동기에 사로잡혔으나 당장 급한 일 때문에 일단 소개만 해 두고 나중을 노려야 되겠다. Nature의 자매지가 하도 많아서 이제는 다 외지 못할 지경이 되었다.

Type 2 diabetes influences bacterial tissue compartmentalisation in human obesity. Nature Metabolism volume 2, pages 233–242(2020) 링크(전문 공개)

Akkermansia muciniphila의 연구로 유명한 Patice D. Cani가 이 저널의 News & Views에서 이 논문을 함축적으로 소개하였으므로 그것을 살펴보는 것도 도움이 된다. 제목은 'Microbial signatures in metabolic tissues: a novel paradigm for obesity and diabetes'(링크)이다. 3월 9일에 게재되었으니 정말 최신 연구이다. 해당 기사의 요약을 그대로 인용한다.

By analysing microbial profiles in three adipose tissue depots and the liver and plasma of morbidly obese individuals, a new study uncovers a unique organ-specific microbial signature, or potential internal ‘tissue microbiota’, in obese people with diabetes.

출처: Nature Metabolism

건강 상태가 나빠지면 gut barrier가 느슨해지면서 장내 미생물이 혈류를 타고 전신을 돌게 된다. Anhê 등은 혈장과 대사 조직에서 이러한 미생물의 '잔해'를 매우 정밀하게 측정하여 서로 다르게 분포한다는 것을 밝혔다. 여기서 잔해라 함은 16S rRNA를 뜻한다. 조직 내에 존재하는 미생물이 물론 살아있는 것은 아니다. 그리고 장 이외의 원천에서 유입된 것도 적지 않다고 한다. 지금까지의 마이크로바이옴 연구의 방향을 근본적으로 뒤흔드는 이야기가 될 수도 있겠다.

서론이 지나치게 길었다. 사실 오늘 블로그 편집창을 연 것은 abricate라는 생소한 프로그램에 관해 알아보게 된 경위를 쓰려는 것이었다. TORMES 메인 스크립트를 좀 고쳐서 쓸 일이 생겼다. Python이 아니라 shell script라서 다행이었다. abricate라는 명령어가 항생제 내성 및 병원성 인자 유전자를 탐색하는 명령행에서 계속 나타나길래 도대체 이것이 뭔가 싶어서 구글에서 검색을 해 보았다. 여러 균주 샘플에서 나온 결과 파일을 한데 합치는 데에도 같은 프로그램이 쓰인다는 것이 흥미로웠다.

ABRicate

Mass screening of contigs for antimicrobial resistance or virulence genes. It comes bundled with multiple databases: NCBI, CARD, ARG-ANNOT, Resfinder, MEGARES, EcOH, PlasmidFinder, Ecoli_VF and VFDB.
ABRicate는 호주 멜버른 대학교의 Torsten Seemann의 작품이었다. Prokka, snippy 등 미생물 유전체를 다루는 사람이라면 밥 먹듯이 쓰는 프로그램의 개발자 아닌가. GitHub 사이트에서도 밝혔듯이 ABRicate의 첫 세글자는 Anti-Biotic Resistance에서 유래했다고 한다. 내가 특히 흥미를 느꼈던 것은 여러 샘플의 결과 리포트를 병합하여 매트릭스를 만들어주는 기능이 포함되어 있는 점이다('Combining reports across samples'). 만약 이를 셸 스크립트나 R로 하려면 얼마나 성가시겠는가? 커스텀 DB를 만들어 쓸 수도 있다는 점도 이 프로그램의 유용성을 잘 보여준다.

Seemann의 블로그 The Genome Factory를 종종 방문하여 유용한 정보가 있는지 알아봐야 되겠다. 흠, 올린 글은 그렇게 많지 않다. 하지만 그는 GitHub를 통해서 더욱 왕성한 활동을 하고 있으니 내가 도움을 받을 일은 앞으로도 많을 것이다.

2020년 3월 17일 화요일

[2020년도 43 5극관 싱글앰프 리모델링] 8. 완성 - 뚜껑을 닫으며



핀바이스로 나무틀에 구멍을 뚫고 총 10 개의 나사못을 박아서 상판을 드디어 고정하였다. 전동 드릴이 없으면 어려운 일이라고 생각했었는데 막상 해 보니 그렇지도 않다. 고정을 마치고 정면에서 잘 살펴보니 상판이 완벽하게 가운데에 위치하지를 못하여 아주 미세한 차이가 발생하였다. 제작자가 아니라면 인지하기 어려운 수준이지만, 항상 아쉬움과 찜찜함 가운데 일을 마무리하게 된다. 나사를 다시 절반쯤 풀고 상판을 움직여 보았지만, 상판에 가공한 구멍이 워낙 딱 맞는 직경을 하고 있어서 조정할 여지가 별로 없다. 하기는 상판으로 가린 내부 배선의 복잡함은 남에게 보이기 싫은 사연이기도 하다. 배선이 비록 보기에 좋지 않다고는 하나 납땜 불량이나 단락이 발생하지 않았고 험(hum)이나 기타 잡음도 문제가 될 수준이 아니며 회로도를 암기하고 있을 수준이면 된 것 아니겠는가?





2020년 1분기에 이룬 개인적인 성과 중에서 가장 큰 의미를 지닌 일이 바로 43 앰프 리모델링 작업이 아닌가 싶다. 이제는 나도 허름하게 대충 만드는 것을 지양하고, 누구에게 내어 놓아도 부끄럼이 없는 모습이 되도록 완성도를 갖추어 나가는 데 주력해야 되겠다. 회로도까지 CAD로 남겨 놓으면 금상첨화가 될 것이다.

처음 만든 작품은 원형 그대로 두는 것도 기념이 되겠지만.


2019년에 만든 6LQ8 푸시풀 앰프(왼쪽)와 올해 리모델링한 43 싱글 앰프(오른쪽)의 비교. 왼쪽 앰프의 뒤엉킨 배선을 보면 머리가 아프다. 잘 만들어진 '상자'는 객체지향 프로그래밍에서 말하는 캡슐화와 흡사하다. 앰프의 사용자는 사실 내부에서 어떤 원리로 음성 신호의 증폭이 일어나는지는 몰라도 된다. 단지 조작법을 잘 이해하고 있으면 된다. 물론 불리함을 감추기 위한 포장에 급급해서는 안된다. 첫 작품의 보존과 개량의 기로에 서서 이제 어떻게 할 것인가? 


나사못에 담긴 의미를 잊지 말자. 완벽의 추구, 마무리, 그리고 다음 단계로 나아가기.