2019년 7월 14일 일요일

르 몽드 디플로마티크 한국어판

오늘은 네이버 그린팩토리에서 새롭게 발견한 읽을 거리인 르 몽드 디플로마티크(Le Monde Diplomatique)를 소개해 본다. 진보 성향의 프랑스 일간지인 '르 몽드'의 자매지이자 국제뉴스를 다루는 월간지로 20개 언어로 37개 국제판이 발간되고 있다고 한다. 논조는 매우 진보적이고 비판적이어서 자칫 지엽적인 문제에 매몰되기 쉬운 우리에게 세계 곳곳에서 벌어지는 일을 자세히 바라보게 해 준다. 다음의 기사를 보면 광고가 거의 실리지 않는 매체가 한국 실정에서도 어떻게 살아남았는지를 보여준다.

[이 언론이 사는 법] 르 몽드 디플로마티크 "관점을 가진 언론만 살아 남을 수 있다"

인터넷으로 시답지않은 소식을 찾아볼 것이 아니라 이런 매체를 정기구독하는 것이 백번 나을 것 같다. '종이신문(실제로는 월간지) + 온라인 1개월' 이용료는 12,000원인데 정기 구독을 정말로 진지하게 고려하고 있다. 생각이 다른 사람들에게는 웬 빨갱이 월간지를 돈 주고 보냐는 소리를 듣겠지만 말이다. 이 뜨거운 날씨 속에서 군복 차림으로 성조기를 들고 광화문 네거리를 서성이며 구호를 외치는 사람들에게는 불온한 사상을 퍼뜨리는 신문으로 보일 수도 있을 것이다.

르 몽드 디플로마티크가 마음에 드는 것은 기사 중간에 삽입된 시의적절한 현대미술 작품 때문이다. 

2019년 1월부터 연재되는 기획기사 [새로 쓰는 '비판경제 교과서'] 몇 편을 인상 깊게 보았다. 연재 순서는 다음과 같다. 앞으로 그린 팩토리에 갈 때마다 빼놓지 않고 전체를 찾아 읽을 생각이다.

  1. 경제학은 과학인가?
  2. 생산 증대, 무조건 더 많이!
  3. 노사관계(다리와 버팀목의 관계)
  4. 부의 분배 희망과 난관
  5. 고용, 어떠한 대가를 치러야 하나?
  6. 장을 따를 것인가 명증된 법칙을 따를 것인가?
  7. 세계화 국민간의 경쟁
  8. 화폐, 금전과 현찰의 불가사의
  9. 부채 협박
  10. 금융 지속 가능하지 않은 약속
국내에서 워낙 많은 이슈가 발생하고 있어서 국외에서 발생한 일에 대하여 미국의 관점이 아닌 균형잡힌 시각으로 관심을 갖는 것이 쉽지 않다. 날이 갈수록 어려워지는 고용과 실물경제, 남북 관계, 엽기적인 가족 살해 사건, 세대·계층·성별 간 갈등, 미세먼지, 탈원전과 지속 가능한 에너지 정책, 쓰레기, 일본과의 무역 갈등... 이런 상황에서 신장 위구르 자치구에서 벌어지는 상황이 우리와 무슨 상관이 있느냐고 할 수도 있다. 그러나 모든 나라가 밀접한 관계를 맺고 사는 요즘은 더 이상 남의 일이 아니다.

이번에 집중적으로 읽은 6월호에서는 미국에서 불어오는 사회주의 열풍과 전세계를 잠식해 들어가는 마약 자본주의에 대한 기사가 실렸다(발행인 칼럼 링크). 우리에게 마약이란 아직 일부 연예인이나 재벌 2세의 방종 정도로 여겨지지만, 마약 소비자를 망가뜨림과 동시에 재배자와 말단 공급자를 계속 착취의 하부 구조에 종속시키는 글로벌한 문제가 아닐 수 없다.

미국의 사회주의 관련 기사에서 좀바르트의 저서 [사회주의는 왜 미국에 존재하지 않는가]의 일부가 실렸기에 인용해 본다.
임금 노동자는 경제적 여건과 생활환경이 나아짐에 따라 물질적 타락에 빠졌고, 온갖 쾌락을 제공하는 경제체제를 점점 선호할 수밖에 없었다. 임금 노동자는 정신적으로 점차 자본주의 경제 메커니즘에 순응했고, 결국 대부분의 사람들은 물질과 자본의 강력한 매력에 굴복해버렸다. '진보'(자본주의)를 행한 도정에서 미국이 다른 국가를 앞서간다고 생각하며 생겨난 자부심은 미국인을 검소하며 계산적인 비즈니스맨으로 만들었다. 이는 오늘날 우리가 알고 있는 상업정신을 바탕으로 형성된 미국인의 이미지다. 이렇게 모든 사회주의 유토피아는 로스트 비프와 애플파이(먹고 사는 문제를 상징함-역주)를 넘어서지 못하고 실패했다.
이 잡지와 더불어 읽은 것은 서가에서 바로 옆에 위치한 [포춘 코리아]였다. 부(富)가 최상위층에게 몰린다는 것은 어제 오늘이 일이 아니지만, 포춘 500대 기업에서도 이와 같은 일이 벌어지고 있다고 한다. 2018년 기준으로 500대 기업 전체 매출의 47.7%가 상위 50개 기업에 몰려 있는데, 이는 어느 때보다 높은 수치이다. 과연 이것이 자연적이고 바람직한 변화일까? 절대 그렇지 않다. 기득권을 가진 기업은 더욱 유리한 위치를 차지하게 만드는 제도, 그리고 과다한 인수 합병의 산물이다. 흔히 '규모의 경제'라는 말을 통해서 거대 기업에 부가 집중되면 더욱 싼 값에 물건을 만들 수 있고 이에 따라 소비자가 혜택을 보게 된다고 한다. 그러나 지나친 인수 합병은 성장도 하기 전에 가능성이 있는 작은 기업을 나꿔챔으로써 '경쟁'을 원천적으로 막는다. 이는 혁신의 열매가 열리기도 전에 새싹 수준에서 베어 먹는 것에 비유할 수 있을 것이다. 

구글의 규모가 커지면서 의사 결정 과정에서의 투명성이 사라지고 직원 통제가 강화되며, 군사 기술이나 검열이 적용된 검색 기술(독재 국가에 팔리기 좋은 기술)을 개발하게 되면서 이에 반발하는 직원이 퇴사를 하거나 적극적으로 반대 의사를 표명한다는 기사도 흥미롭게 읽었다. '사악해지지 말자'는 이러한 활동가들이 내세우는 주장이다.

6LQ8 푸시풀 앰프 - NFB(negative feedback) 실험

NFB은 세포 혹은 개체 수준의 향상성을 유지하는 주요 메커니즘으로 생물계에서 널리 찾아볼 수 있으며, 인간에 의해 공학적으로 설계된 시스템에서도 흔히 이용된다. 오디오 앰플리파이어에서는 증폭기의 왜곡 등 결점을 줄이기 위한 방법으로 응용되고는 한다. 심각한 수준으로 들어가면 NFB을 제대로 걸기 위해서 설계까지 필요하다지만, 나는 몇 킬로옴의 저항을 연결하는 것으로 마무리를 하였다. 제작 지침서에는 350옴~2k옴 수준에서 최적의 값을 결정하라고 나와 있으나 실제로 연결을 해 보니 이 값의 저항으로는 피드백 수준이 너무 커서 소리가 거의 들리지 않을 지경이었다.

출력 트랜스의 1차쪽 배선을 짧게 정리하였다. 5극관 결선 상태이다.

10k옴 가변저항을 달아서 노브를 돌려보면 음질이 가장 좋은 위치를 찾을 수 있을 것이라 생각했었지만, 최대 저항에서는 소리가 가장 크고(물론 NFB를 전혀 걸지 않은 상태보다는 소리가 줄어들었음), 최소치에서는 가장 많은 피드백이 걸리므로 음성 신호는 전혀 나지 않으나 약간의 발진이 출력되는 것을 확인하였다. 음질이 가장 좋은 중간 위치를 찾는다는 것은 계측기와 파형 발생기 없이는 알기가 힘들다는 생각이 들었다.

그래서 가장 소리가 크게 나도록 5극관 접속 상태로 만든 다음, 10k옴 고정 저항(100pF 캐패시터를 병렬로 연결)을 연결하기로 하였다. 5극관 접속 상태에서는 소리가 매우 크고 거칠다는 느낌이 분명히 있다. 다만 커넥터를 중간에 달아서 취향에 따라 NFB를 걸지 않게 만들기로 하였다.

NFB용 저항의로 10k옴은 너무 큰 것이 아닐까? 출력의 수준과 사용한 관은 다르지만 Dynaco ST35 푸시풀 앰프(6BQ5 사용)의 회로도에는 28k옴이 쓰였다.

출처: [DIY Audio Projects] Dynaco Dynakit Stereo 35 (ST35) Schematics and Manual

심지어 PCL86 푸시풀 앰프에서는 100k옴을 쓴 사례도 있었다.

[DIY Audio Projects] PCL86 - Worth a try?

10k옴 고정저항이 없어서 페놀 만능기판 위에 2k옴 5개를 직렬로 연결하였다. 보기에 그렇게 흉하지는 않다. 출력도 적절히 유지하고 어느 수준의 NFB을 적용하는 선에서 타협을 보았다. 20원짜리 10k 1/2W 메탈필름저항 두 개면 충분할 것을 무려 열 개나 쓰다니...


출력 트랜스 2차 탭의 납땜 상태가 다소 마음에 들지 않아서 조만간 다시 납땜 인두를 들게 될 것 같다. 비록 외관은 소박하지만 음질에는 만족한다.

2019년 7월 12일 금요일

pip와 conda의 행복한 동거는 어렵다

"Conda 환경 안에서 pip로 새로운 파이썬 패키지를 설치하는 것은 좋지 않다."
Unfortunately, issues can arise when conda and pip are used together to create an environment. [Using Pip in a Conda Environment]
LS-BSR에 포함된 파이썬 스크립트를 실행하는 과정에서 pandas와 관련한 에러가 발생하였다. 에러 메시지를 이용하여 구글을 검색해 보면 흔하디흔한 에러 중 하나다. 참고삼하 말하자면 나는 파이썬 초급 교육을 몇 번 받은 일이 있고 패키지 관리와 활용 정도는 하는 편이지만 파이썬 문법 자체는 잘 모른다.

$ python ../../tools/BSR_to_cluster_dendrogram.py -b bsr_matrix_values.txt
Traceback (most recent call last):
  File "../../tools/BSR_to_cluster_dendrogram.py", line 117, in <module>
    main(options.bsr_matrix,options.cluster_method)
  File "../../tools/BSR_to_cluster_dendrogram.py", line 99, in main
    write_tree(cluster_method)
  File "../../tools/BSR_to_cluster_dendrogram.py", line 76, in write_tree
    dmx = pd.read_csv("distance_matrix", index_col=0, sep="\t")
AttributeError: module 'pandas' has no attribute 'read_csv'

분명히 설치를 했는데 왜 그런 것일까?  해결책을 찾아보다가 conda 내부에서 pip를 이용하여 파이썬 패키지를 관리하는 것은 매우 바람직하지 않다는 글을 발견하였다. Conda가 애써 설치한 파일들을 pip가 건드리게 되지만, conda는 이를 알지 못하기 때문이다. 그러면 conda로 뭔가를 새로 설치하게 되고, 시스템은 뒤죽박죽이 되어 재현하기 어려운 문제를 발생하게 된다는 것이다.

프로그램 설치 기록을 살펴보았다. Conda를 썼다가 다시 pip로 설치를 하고 이어서 또 conda를 쓰는... 매우 바람직하지 않은 방법으로 컴퓨터를 관리해오고 있었다. Conda 4.6.0에서는 아직 베타 수준이지만 pip가 설치한 패키지들을 점검하여 유연한 관리를 하는 기능이 포함되어 있다고 한다.

아나콘다 웹사이트에서 제시한 "Best Practices Checklist"는 다음과 같다.
  • Conda를 써서 되도록 많은 패키지를 설치한 뒤에 pip를 써라
  • 필요하다면 Conda 환경을 새로 만들어라
  • Conda 패키지를 추가 설치하는 가장 좋은 방법은 conda environment를 새로 만드는 것이다
  • Conda와 pip 설정 상태를 텍스트 파일로 저장해 두어라
하나의 conda 환경에 되도록 많은 추가 패키지를 설치하는 버릇을 들여왔었는데, 오늘 찾은 모범답안에 의하면 그것은 매우 바람직하지 않은 일이었다. 그러나 프로그램마다 conda environment를 하나씩 만들면 오히려 관리하기는 더 나빠진다. 특히 연달아 실행해야 하는 프로그램이 전부 다른 conda environment에 있다면 그 실행 과정이 얼마나 불편할지는 불을 보듯이 뻔하다.

보다 합리적인 운용 방안을 위해서 고민해 보자.

grep의 현명한 사용법 - 검색할 패턴(파일로 제공)이 없는 라인을 출력하기

grep은 텍스트 파일 혹은 표준 입력으로부터 주어진 패턴이 존재하는 라인을 출력하는 유틸리티이다. 검색할 패턴은 보통 명령행 옵션으로 하나가 주어진다. 그런데 찾아야 할 패턴이 여러개라면, 이를 별도의 파일('FILE')로 지정해 놓고 -f FILE 옵션으로 제공하면 된다. 검색할 패턴은 FILE 내에서 각각 별도의 라인으로 저장되어 있어야 한다. 좀 더 유식하게 말하자면 FILE 내에서 newline(개행 문자 혹은 쉬운 우리말로는 새줄 문자)로 패턴들이 분리되어 있어야 한다.

이와는 반대로, 특정 패턴이 없는 라인만을 파일에서 출력하고 싶다면? 패턴이 하나라면 -v(--invert-match) 옵션을 사용하면 된다. 그렇다면 좀 더 복잡한 상황을 가정해 보자. 배제하고 싶은 패턴이 여럿이라면 어떻게 하면 되나?

ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/assembly_summary.txt 파일을 다운로드하여 내가 연구하는 어떤 미생물종에 해당하는 라인만을 골라내어 별도로 저장했다고 가정하자(my_species_summary.txt). 그런데 상세히 조사를 해 보니 어떤 레코드는 assembly가 불량하여 배제를 해야 되겠다고 마음을 먹었다. 배제할 레코드의 assembly accession(GCF_로 시작하는)을 따로 추려서 REJECTION이라는 텍스트 파일에 저장을 하였다. my_species_summary.txt에서 이 억세션에 해당하는 라인만을 제외한 나머지를 출력하려면 이렇게 하면 된다.

grep -Fv -f <(cat REJECTION) my_species_summary.txt

-F (--fixed-strings, --fixed-regexp)가 열쇠를 쥐고 있다. grep 매뉴얼에 의하면, -F 옵션은 newline으로 분리된 패턴을 일종의 목록으로 간주하여 각각에 대하여 매치 작업을 하는 것이다. 이것이 -v와 결합된 상태이니 딱 내가 바라는 작업을 할 수 있는 것이다.

힌트는 다음의 웹페이지에서 얻었다.

[Stack Overflow] Search multiple pattern in file and delete line if pattern matches

2019년 7월 10일 수요일

같은 미생물 균주의 유전체가 여러 기관에 의해 시퀀싱되어 등록된 경우의 처리 문제

한 종의 미생물 균주(strain)는 비록 동일한 것이라 해도 균주 기탁 기관에 따라 다른 고유 번호를 부여받게 된다. 예를 들어 Paenabacillus polymyxa의 표준 균주인 ATCC 842의 경우를 보자. 이것이 갖고 있는 균주 번호, 즉 신분증은 이렇게나 많다.

DSM 36, ATCC 842, BUCSAV 162, CCM 1459, JCM 2507, LMG 13294, NCIB 8158, NCTC 10343, CCUG 7426

과거에는 StrainInfo라는 사이트에서 특정 균주 번호를 가지고 이것이 표준 균주(type strain)인지, 그리고 다른 균주 번호는 어떤 것이 있는지를 확인할 수가 있었다. 그런데 여기를 최근 방문해 보면 다음과 같은 슬픈 소식이 눈에 뜨인다. 2019년 1월 1일부터 '영업 중단'인 것이다.

StrainInfo has permanently been put out of commission and will no longer be available.
1-januari-2019


이를 대신할 수 있는 웹사이트는 무엇이 있을까? 바로 DSMZ에서 운영하는 BacDive(The Bacterial Diversity Metadatabase)가 이에 해당한다. 이름을 참 잘 지었다고 생각한다. 단, 완벽하지는 않음에 주의해야 한다. 예를 들어서 Clostridium sporogenes의 표준 균주인 NCTC 13202는 Public Health England(NCTC를 관리하는 기관)에서는 ATCC 3584임이 잘 나타나지만(근거), BacDive에는 이 번호로 찾기가 어렵다.

연구자들이 개별적으로 근처에 있는 컬쳐 콜렉션으로부터 어떤 종의 표준 균주를 입수하여 시퀀싱을 하여 등록을 하면 이는 그대로 INSDC(International Nucleotide Sequence Database: DDBJ, EMBL-EBI & NCBI)의 데이터베이스에 등록이 된다. 특정 종의 모든 유전체를 다운로드하여 포괄적인 comparative genomic analysis를 하는 경우 이는 상당한 번거로움을 초래한다. 근본적으로 동일한 균주에 대한 레코드가 중복하여 존재하는 것이기 때문이다. 그래서 보통은 assembly level이 높은 것 하나만 택하여 쓰기도 한다. 시퀀싱 결과가 표준 균주에서 유래했는지의 여부는 RefSeq 혹은 GenBank의 assembly summary 파일(설명 파일)에서는 22번째 컬럼인 "relation_to_type_material"의 값이 'assembly from type material'인지를 이를 참조하면 된다. 그러면 표준 균주가 아니지만 다른 번호를 갖는 동일한 균주의 중복된 서열을 정리하려면? BacDive를 고독하게 들이파는 수밖에...

하지만 동일한 (표준)균주라 해도 각 기탁 기관에 배포된 뒤 유지를 하는 과정에서 조금씩 변이가 생길 수도 있다. 그렇기 때문에 독립적인 기관에서 같은 균주를 시퀀싱한 복수의 결과를 가끔은 진지하게 들여다볼 필요성은 있다. 간단한 사례를 들어보자. 재조합 단백질의 대량 생산에 쓰이는 유명한(?) 대장균인 Escherichia coli BL21(DE)의 유전체 서열은 완성된 것으로서 두 건이 존재한다. Assembly accession으로는 GCF_000022665.2와 GCF_000009565.1이다. 전자는 나의 작품이고(KRIBB) 후자는 오스트리아의 Universität für Bodenkultur Wien에서 등록한 것이다. Journal of Microbiolgy에 논문(PMID 19786035)이 출간된 것이 2009년이니 10주년 기념을 뭔가 해야 되는데...

두 유전체의 길이는 각각 4,558,953 bp와 4,558,947 bp이다. 딱 6 bp의 길이 차이에 해당한다. 서열 내부를 서로 비교하면 SNV 수준의 차이가 있을지도 모른다. 이 정도라면 시퀀싱 결과가 내포하는 오차의 범위 내라고 보아도 무방하고, 어쩌면 실제로 두 샘플 사이에 존재하는 염기의 차이를 반영하는 것일지도 모른다. 이에 대해서 학문적인 관심을 가지고 집중적으로 연구하는 것도 재미있는 일이 될 것이다.

내가 등록한 대장균 BL21(DE3)는 EZBioCloud에서 검색되지 않는다. 반면에 오스트리아에서 시퀀싱한 게놈은 등록이 되어 있다. EZBioCloud는 내가 알기로 한 균주에 대한 유전체 서열이 중복하여 존재하는 경우 어느 하나만 유지한다. 위에서 살펴본 Clostridium sporogenes의 경우도 DSM 795만이 type으로 등록이 되어 있다. 그러면 왜 EZBioCloud에서는 대장균 BL21(DE3)의 유전체 정보에 대해서 시기적으로도 먼저 공개되었고 논문도 출간된 우리 것을 택하지 않고 오스트리아의 것을 선택하였단 말인가. 살짝 자존심이 상하려고 하네~

EZBioCloud에서 찾은 어떤 유전체 정보의 assembly accession, 즉 GCA_000111222.3을 RefSeq에서는 찾지 못할 수도 있다. RefSeq에 있는 것이 최신 버전이라면(GCF_000111222.4) 이는 당연하다. 매일 증가하는 NCBI의 유전체 정보가 EZBioCloud에 실시간으로 반영되지는 못하기 때문이다. 아마 몇 달에 한번 정도의 업데이트가 있을 것이다. 또 다른 가능성으로는 같은 서열이라 해도 RefSeq에서는 reject된 유전체가 종종 존재한다. 즉 GCA_000111222.1(GenBank)는 NCBI에 등록된 상태이나 이와 동등한 RefSeq 레코드인 GCF_000111222.1은 없는 경우이다. Pseudogene이 너무 많거나, contig의 수가 너무 많거나 등이 사유가 있을 때 RefSeq에는 오르지 못한다. RefSeq에서 배제되는 구체적인 이유에 대해서는 다음을 참고하라. 이런 유전체는 위에서 소개한 assembly summary 파일의 21번째 "excluded_from_refseq" 컬럼에 나름대로의 사연을 담게 된다.

Assembly anomalies and other reasons a genome assembly may be excluded from RefSeq

2019년 7월 7일 일요일

도시재생의 희망과 한계 - 다시 세운상가에서

폭염이 이어지던 주말 한낮에 꽤 많은 거리를 돌아다녔다. 카카오맵에서 하루 종일 걸은 거리를 따져보니 4.5 km 정도가 되었다. 동대입구역에서 출발하여 DDP - 청계천 - 세운상가 - 서울극장(존 윅 3편 파라벨룸을 보았다) - 익선동 - 인사동까지. 하루가 지난 오늘까지 햇볕에 탄 얼굴과 팔뚝은 여전히 화끈거리고, 아직 노곤함이 가시지 않았다. 주말의 끝자락에 앉아서 몇 가지 느낀 점을 적어보고자 한다.

어릴 적 사는 동네가 달랐기 때문에 사실 나는 태극당에 대한 추억은 갖고 있질 않다. 2010년에 이 제과점의 위생상태를 고발하는 충격적인 TV 프로가 방송되면서 질타를 받았으나 그 이후 경영진이 바뀌면서 충분히 개선된 것으로 여겨진다. 당시의 TV 화면은 아직도 인터넷에 돌아다닌다. 충분히 반성을 하고 개선을 했어도 인터넷에 남은 기록은 사라지질 않으니 정말 무섭다. 손님도 많았고, 빵과 빙수의 맛도 좋았다. 지나치게 달거나 자극적이지 않고 약간 슴슴하다고나 할까. 

동행한 아들.

세운상가에는 특별히 살 것이 있어서 간 것은 아니었다. 서울시의 대표적인(성공적인?) 도시재생사업 대상으로 알려진 세운상가를 아직까지 제대로 둘러보지 못했기 때문이었다. 




세운부품도서관에 전시된 류재용 장인의 진공관 앰프 Knot Audio 'Integrated Amp-v'. 6V6GC에 해당하는 구 소련의 진공관 러시아 6П6С(6P6S)를 사용한 푸시풀 앰프이다.

간간이 오가는 관광객도 보이고 젊은 제작자의 작업 공간이 보이기도 했지만 전반적인 느낌은 너무 한산하다는 것이었다. 가게를 비워도 불은 켜 놓아 달라는 상가 번영회의 안내문이 왠지 옹색하게 느껴졌다. 아무리 밥상과 그릇이 예쁘면 무엇을 하겠는가? 먹음직한 음식이 담겨있지 않다면 의미가 없지 않은가? 서울시를 조망할 수 있는 높은 전망대, 멋진 조명, 카페와 갤러리를 예쁘게 만들어 봐야 인증샷이나 찍으러 오는 사람만 반짝 늘 뿐이다.


세운전자상가를 지켜온 기술자와 주변의 부품·공구상가, 주민, 그리고 이곳을 단지 맛집 탐험이나 인증샷 촬영 목적으로 찾는 것이 아니라 실제로 이곳에서만 구입할 수 있는 물건을 사러 오는 고객들이 잘 어우러질 때 참다운 도시재생이 가능할 것이다. 그러한 측면에서 '메이커'라는 키워드는 충분히 고심하여 뽑아 낸 흔적이 엿보인다. 재생사업 이후 일단 임대료가 올랐다는 것은 좋은 일은 아니다. 부디 좋은 성과가 있기를 바랄 뿐이다. 

세운상가의 주변 지구는 정비가 시급해 보인다. 만약 화재라도 발생하면 어떻게 될 것인가? 보수를 하지 못하고 천막으로 간신히 씌운 지붕, 온갖 물건이 방치된 옥상, 폐허가 된 듯한 옥탑방 등 안전상으로도 문제가 심각해 보이는 건물이 즐비하다. 김수근이 설계한 세운상가는 당시로는 현대적인 건물이었지만 그 주변부의 외형적 발전(단순한 방문객의 눈으로 보기에는 그렇다)까지는 품지 못했던 모양이다.





서울극장에서 아들과 함께 영화를 본 뒤 친구를 만나고 돌아온 아내와 인근 식당에서 저녁을 먹었다. 어디를 갈까? 늘 가던 인사동 말고 익선동 한옥거리는 어떨까? 종로 3가 사거리를 북쪽으로 올라가다가 익선동쪽으로 접어들던 우리 식구는 눈을 의심하게 만드는 정경을 보고 놀라지 않을 수 없었다. 양 팔을 좌우로 뻗으면 벽이 닿을 듯한 좁은 골목길에 이렇게 많은 식당들이 있다니! 아예 건물을 헐어내고 조성한 빈 터에 간이 테이블을 빼꼭하기 채워서 만든 식당에서 젊은 사람들이 연신 고기를 구워내고 있었다. 현대적인 분위기로 한껏 멋을 내어 내부 인테리어를 바꾼 곳도 있었다. 익선동이 이렇게 힙&핫한 곳이었단 말인가? 그저 '노포(老鋪 - 요즘 지나치게 많이 쓰이는 낱말이 되었음)가 좀 있으리라는 생각만 갖고 갔다가 사람의 물결에 놀라고 말았다. 오죽하면 사람이 너무 많으니 주말에는 가지 말라는 글까지 인터넷에서 볼 수 있었다.

저녁 무렵이 되면 불이 꺼지고 사람들 발길이 뜸해지는 코앞의 세운전자상가에 비한다면 익선동은 분명히 상업적으로는 성공한 곳이다. 하지만 먹는 것, 입는 것, 악세사리 말고는 사람들을 끌 수 있는 아이템이 없는 것일까? 나열하고 보니 전부 관광지에서 팔리는 것들이다. 수고롭게 사진을 찍어서 소셜 미디어에 올릴 수 있는 '매력'만이 모든 것을 결정한다면 그것은 너무 서글프다. 두 시간이나 기다려야 음식을 먹을 수 있는 식당이라면, 가지 않는 것이 현명하다. 고객도 힘들고, 종업원도 힘들다. 그리고 한번 입소문이 나기 시작하면 곧바로 젠트리피케이션의 타겟이 된다. 익선동은 건물과 골목이 너무 좁아서 상업 자본에 의한 대형 프랜차이즈가 들어오기 어렵다는 것이 방어 요인이 될지도 모르겠다. 

경제 논리와 정책 어느 하나만으로는 해결하기 힘든 것이 도시재생 문제일 것이다. 지역민(주거민으로서 혹은 그 지역에서 일터를 갖고 있는 사람으로서)의 충분한 참여가 있어야 하고, 그러면서도 가벼운 관광지로 전락하지 않는 묘책을 강구해야 하니까.

2019년 7월 5일 금요일

PhyloSift 마커 데이터베이스 다운로드 에러가 발생하는 이유

업무용 서버의 CentOS를 6.x에서 7.6.1810으로 업그레이드 한 뒤 처음으로 PhyloSift를 실행하게 되었다. 예전의 프로그램 디렉토리를 그대로 유지하고는 있지만 새롭게 설치하는 것이 낫겠다 싶어서 GitHub의 것을 git clone 명령으로 가져왔다. 나중에 README 파일에서 확이한 것이지만 이것은 PhyloSift를 설치하는 가장 어려운 방법이었다. 테스트 실행을 하려미 Perl 모듈이 없다고 나온다. cpanm으로 하나를 설치하면 다른 것이 없다고 하고, 그것을 설치하면 또 다른 것이 없다고 나오고...

GitHub의 PhyloShift 페이지를 보면 마지막 업데이트는 5년 전이었다. 혹시 더 나은 프로그램이 그 이후에 나온 것이 있지 않을까? NCBI에서 PhyloSift를 인용하는 새로운 프로그램 논문이 없는지 검색을 해 보았으나 별달리 눈에 뜨이는 것은 없었다. 아주 철저하게 찾아보지는 않았다.

이러다간 끝이 없겠다 싶어서 예전에 설치하여 둔 디렉토리에 있는 것을 쓰기로 했다. 이것은 필요한 모듈이 이미 묶여서 배포한 파일을 가져다가 푼 것이니까. 그런데 유전체 서열 파일 하나를 가져다가 테스트를 하는데 마커 서열 데이터베이스를 다룬로드하는 과정에서 그런 주소가 없다는 메시지가 나왔다. '왜 마커 서열 DB를 또 다운로드하려는 것이지? 예전에 실행을 했었는데...' 정리를 해 보자. 마커 서열 DB가 어디에 설치되어 있는가? ~/share/phylosift이다. CentOS를 업그레이드하면서 하드디스크의 파티션 작업을 했었고, 그 과정에서 홈 디렉토리는 싹 정리가 되었다. 이전 홈 디렉토리의 백업본을 가져다가 복구를 하였다.

마커 DB 파일은 README 파일에 따르면 다음의 위치에 있다고는 하나 이제는 유효하지 않다. 그래서 다운로드가 되지 않았던 모양이다.


$marker_base_url = "http://edhar.genomecenter.ucdavis.edu/~koadman/phylosift_markers";
$ncbi_url = "http://edhar.genomecenter.ucdavis.edu/~koadman/ncbi.tgz";

GitHub 페이지가 최신 정보를 담고 있으리라고 생각한 것이 착각이었다. 최신 정보는 'PhyloSift | mining the global metagenome' 이라는 워드프레스 기반의 웹사이트에 있다. 여기에는 마커 DB 다운로드 위치가 바뀌었다는 2018년 1월의 글이 가장 위에 올라와 있다. 기억을 더듬어 보니 이 공지를 최소한 열 번도 넘게 보았었다. 그러나 http://edhar...로 시작하는 위치에서 자동으로 다운로드한 이후 다시 DB를 설치할 일이 없었으니 신경을 쓸 일이 없었던 것이 너무나 당연하다.

Markers Database download change

PhyloSift 마커와 프로그램 패키지 등은 FigShare에 있다는 것이다. 그리고 이 사이트의 것은 코드를 고치기 전까지는 자동 다운로드가 되지 않는다고 밝혀 놓았다.

모든 phylum을 아우르는 미생물 유전체의 global phylogenetic analysis를 그리고 싶다면 아직까지는 PhyloSift를 능가하는 도구는 없는 것 같다.