2018년 10월 12일 금요일

figshare에 데이터 파일을 올리고 공유하기

Elsevier의 학술지 Data in Brief에 소개된 어떤 유전체 서열 데이터셋의 파일을 받기 위해 URL을 확인하니 figshare였다. figshare는 (파워포인트) 문서 파일 정도를 올려서 공유하는 사이트가 아니었던가? 아, 그건 slideshare였던가? 그런지도 모르겠다.

웹사이트를 방문하니 Store, share, discover research라는 문구가 보였다. Elsevier와 협정을 맺고서 이 저널에 출판되는 논문에 부속되는 대용량 데이터에 한해서 업로드 및 공유가 가능한 것인지, 혹은 이 저널과 관계없이 누구나 회원 등록을 하면 데이터를 올릴 수 있는 것인지는 잘 모르겠다. 데이터 등록 요령 사이트를 방문해 보았다.

How to upload and publish my data

개인 공간에는 20 GB를, 공개하는 경우에는 용량에 제한이 없다고 한다. 한번에 올릴 수 있는 파일의 크기는 5 GB이다. 그러면 어떻게 수익을 창출하는지 매우 궁금하다. 혹시 이것 역시 공공 기관에서의 접속이 막혀있는 것은 아닌지 모르겠다. 구글 드라이브나 드롭박스가 그랬듯이 말이다. 백문이 불여일견이다. 회원 등록을 하고 웹 인터페이스에 논문 PDF 파일을 하나 드래그하여 넣었다. 나에게 저작권이 있는 것이 이나니 'Publish' 버튼을 클릭하지는 않았다.

잘 들어간다. 채워야 하는 메타데이터는 다음과 같다.


남들도 다 아는 것을 뒤늦게 발견한 것은 아닌지 모르겠다. 공공 목적이 큰 데이터라면 여기에 올리는 것도 좋을 것 같다는 생각이 들었다. 학술 목적이 아닌 것이면 또 어떠랴.

Publish or perish가 아니고 이제는 Share or perish의 시대가 되었는지도 모르겠다. 약간 냉소적으로 말한다면 공개는 곧 미덕이므로 '사생활도 없다'.

Awk를 이용한 간단한 텍스트 파일 조작

Awk는 개발자 세 사람 - Alfred Aho, Peter Weinberger 및 Brian Kerninghan - 이름의 머리글자를 따서 명명된 프로그래밍 언어이다. 이들은 전부 1940년대 초반에 출생하신 원로이다. 아마추어 무선을 하는 사람을 일컫는 ham (ham radio)역시 무선통신의 역사를 세운 세 사람의 이름인 Hertz, Armstrong, Marconi에서 왔다는 설도 있으나 이는 근거가 없다고 한다(Etymology of ham radio). 여담이지만 우리나라에서는 radio라 하면 공중파 방송을 듣는 라디오 수신기만을 생각하지만, 미국에서는 무선을 이용한 모든 활동을 뜻하는 것 같다. 무전기(휴대용 및 거치형 전부)를 two-way radio라고도 부른다고 하니 말이다.

우선 첫번째 AWK 사례를 설명해 보자. 왼쪽과 같이 의 조합으로 이루어진 단순한 텍스트 파일이 있다고 가정한다. 이를 오른쪽처럼 변환하려면 어떻게 하면 좋을까?


이때 awk의 associative array(예제 링크)가 쓰이게 된다. Associative array는 숫자가 아닌 것도 인덱스로 사용할 수 있는 배열을 의미한다. Perl에서 흔히 사용하는 hash와 매우 유사하다. 위에서 기술한 매우 간단한 과업을 수행하려면 다음의 명령어 한 줄이면 된다.
$ awk -F, '{a[$1] = a[$1] FS $2} END{for (i in a) print i a[i]}' file
-F,는 입력 파일의 field separator를 쉼표로 지정한다는 뜻이다. {}으로 둘러싼 AWK 명령어 내부에서는 FS가 같은 의미로 쓰였다.

다음으로는 약간 복잡한 응용 사례이다. Using Awk to join two files based on several columns를 참조하였다. 여러 컬럼으로 이루어진 두 개의 텍스트 파일 file_a.bed와 file_b.bed가 있다고 가정하자. 첫번째 파일의 컬럼 1-2와 두번째 파일의 컬럼 3-4가 동등한 종류의 내용을 담고 있다. 빨갛게 표시한 것은 값 자체가 같은 것이다. 컬럼을 구분하는 것은 공백이 아니고 탭문자이다.

$ cat file_a.bed
chr1 123 aa b c d
chr1 234 a b c d
chr1 345 aa b c d
chr1 456 a b c d
$ cat file_b.bed 
xxxx abcd chr1 123 aa c d e
yyyy defg chr1 345 aa e f g

이때 다음과 같이 두번째 파일에서 동일한 라인에 해당되는 결과를 끌어다가 첫번째 파일의 해당되는 라인에 출력하는 것이 목적이라고 하자. 아래 그림에서는 파랑색으로 표시하였다.

chr1 123 aa b c xxxx abcd
chr1 234 a b c
chr1 345 aa b c yyyy defg
chr1 456 a b c

다음과 같이 awk 명령어를 작성하면 된다.

$ awk 'NR==FNR{a[$3,$4,$5]=$1OFS$2;next}{$6=a[$1,$2,$3];print}' OFS='\t' file_b.bed file_a.bed

먼저 awk의 내장 변수에 대해서 이해를 넓힐 필요가 있다. NR는 현재 처리 중인 라인 번호를 의미한다. Awk가 여러 파일을 처리하는 경우 NR은 전체 파일에 대한 라인 번호를, FNR은 각 입력 파일에 대한 라인 번호를 의미한다. 다음을 실행해보면 감이 잡힐 것이다.

$ awk '{print FILENAME, NR, FNR}' file_a.bed file_b.bed
file_a.bed 1 1
file_a.bed 2 2
file_a.bed 3 3
file_a.bed 4 4
file_b.bed 5 1
file_b.bed 6 2

NR==FNR{}은 첫번째 인수로 주어진 파일(file_b.bed)에 대해서 {} 내의 명령을 실행하라는 뜻이다. next는 그 다음에 따라오는 {} 명령어 블록을 실행하지 말라는 뜻이다. 이것은 약간 어려운 개념이다. 그림으로 설명을 해 보겠다. 부디 내가 이해한 것이 옳기를 바란다.

numbers라는 파일은 각 라인에 1..10까지의 숫자를 수록하고 있다. 각 라인의 수와 홀수 또는 짝수줄 여부를 화면으로 프린트하려면 어떻게 하는지를 다음의 그림에 설명하였다. next가 왜 중요한지를 잘 보여준다.


그러면 다시 원래의 awk 문으로 돌아가자. 두번째 인수로 주어진 file_a.bed에 대해서는 NR==FNR이 FALSE가 된다. 따라서 두번째 {} 내부의 명령어를 수행하게 된다. 즉 file_a.bed를 읽어서 마지막 필드($6)를 associative array의 값으로 바꾸어서 프린트하게 된다.

어쩌면 if..else를 쓰는 것이 좀 더 명확할지도 모르겠다.

$ awk '{if(NR==FNR){a[$3,$4,$5]=$1OFS$2}else{$6=a[$1,$2,$3];print}}' OFS='\t' file_b.bed file_a.bed

첫번째 주어진 답을 다르게 표현하면 이렇게 된다. 오히려 이것도 이해하기 쉬운 해결책이다.

$ awk 'NR==FNR{a[$3,$4,$5]=$1OFS$2}NR!=FNR{$6=a[$1,$2,$3];print}' OFS='\t' file_b.bed file_a.bed

awk에서 다음을 잘 구별하는 노력이 필요하다.
  • 조건{...} {...} <= 조심해서 써야 한다!
  • 조건1{...} 조건2{...}
  • if문을 사용하는 것

2018년 10월 9일 화요일

43번 오극관(43 power pentode) 싱글 앰프 프로젝트 - [6] 최종 마무리

얼핏 보아서는 어제 찍어서 올린 사진과 별로 다르지 않다.


전원 트랜스와 정류회로 사이를 배선을 납땜으로 처리하였다. 오늘 아침까지는 악어클립 케이블이었다. 그리고 스피커 연결을 위한 바인딩 포스트를 아예 출력 트랜스 받침대에 고정해 버렸다. 출력 트랜스를 다른 앰프에도 연결하여 사용하기 쉽게 만들기 위한 사전 포석이다. 어수선한 배선들도 케이블 타이로 조여서 정리하였다. 전선을 깔끔하게 잘라내지 못하고 길게 유지하는 좋지 못한 버릇이 있다. 그러나 이렇게 프로토타입 형태로 만든 상황에서는 나무판에 고정한 부품을 잠시 떼어서 손을 볼 때 배선이 너무 짧으면 불편하다.


https://www.vivatubes.com/ 에서는 Super Silvertone을 포함한 브랜드의 43번 중고 5극관을 판매한다. 이베이 등에서도 이따금 눈에 뜨인다. 43번 오극관은 40번대 두자릿수 출력관 중에서 그렇게 고급 취급을 받지는 못하는 것 같다.

2018년 10월 8일 월요일

43번 오극관(43 power pentode) 싱글 앰프 프로젝트 - [6] 전원 스위치 장착

43번 오극관 싱글 앰프는 계속 변화의 길을 걷고 있다. 이번에는 전원 스위치를 달았다. 각재로 만든 R-core 출력 트랜스 받침대도 미처 설명을 하지 않았지만 개조를 하여 바닥 면적을 좁혔다. 이 시리즈물의 다섯번째 글(링크)의 사진을 보면 트랜스 받침대에 하얀 신발끈을 묶어 놓은 것이 보일 것이다. 톱질을 하여 길이를 줄인 뒤 목공용 접착제를 발라서 고정해 놓은 것이다.

아래의 사진은 어제까지의 작업 결과물이다. 약간 다른 각도에서 두 장의 사진을 촬영하였다.



왼쪽 끝의 전원 스위치 고정대는 'ㄱ'자형 알루미늄 판에 1t 포맥스판을 순간접착제로 붙인 것이다. 알루미늄판에 실톱으로 가공을 하다가 구멍을 너무 크게 뚫어버리는 바람에 이렇게 된 것이다. 포맥스는 가공성이 매우 좋으며 그 위에 글씨를 쓰거나 도색을 하기에 아주 좋지만 아무 처리를 하지 않으면 때가 잘 탄다.

램프형 파워 스위치(정식 명칭은 SPST illuminated rocker switch; SPST = single-pole, single-throw = 단극단투 스위치)를 달다가 실수를 하였다. 전원이 들어올 때 불이 켜지게 하려는 것이 원래 의도였으나 배선을 잘못하여 항상 불이 켜지는 것이 아닌가. 이에 대해서는 예전에 글을 작성해 둔 적이 있다(램프형 스위치의 올바른 결선법).


그런데 제품에 따라서는 핀 번호가 다르다. 다음을 보라. 위의 그림과 달리 가운데의 공통핀이 1번이다.

출처: https://www.fasett.info/spst-illuminated-rocker-switch-wiring-diagram/unusual-lastest-collection-lighted-rocker-switch-wiring-diagram/
따라서 배선을 하기 전에 꼭 확인을 하는 것이 현명하다.

아직 납땜을 하지 않고 악어클립으로 물어 놓은 곳이 있다. 두 개의 전원 트랜스 사이, 그리고 두번째 전원트랜스와 정류회로 사이이다. 첫번째 트랜스에서 나오는 13 V를 두번째 트랜스의 12 - 15 - 18 V에 취향껏 연결함으로써 B+ 전압을 선택하는 효과를 누릴 수 있기에 아직 어느 하나의 탭에 붙이지를 않은 것이다.

저전압(그래도 100 볼트를 넘는다)에서 작동하는 진공관 앰프가 매력이 있다!


FM 수신용 안테나 보수하기

발코니 난간에 현 상태로 FM 수신용 안테나가 설치된 것은 지금으로부터 꼭 3년 전이었다.

옥외용 FM 안테나 재설치(2015.9.6.)
FM 안테나 설치 상태 변경(2015.9.20.)

붐대(커튼용 봉을 자른 것)와 안테나를 고정하는데 케이블 타이를 몇 군데 사용하였었다. 이것이 햇볕에 장기간 노출되면서 하나씩 끊어지기 시작하였고, 급기야 안테나가 한쪽으로 기울었다. 다른 곳을 노끈으로 묶어 놓았기에 안테나가 추락할 염려는 없지만 보수 작업이 필요한 상태이다. 무엇보다도 케이블 타이를 대체할 다른 고정 장치가 필요하다. 그래서 택한 것은 바로 다음의 물건이다.


붐대와 안테나 암(arm; 도파기와 방사기 엘리먼트를 고정하는 중앙의 짧고 두꺼운 봉)이 이 부속에 의해서 전기적으로 접촉 상태에 있다는 것이 안테나의 성능에 영향을 미치게 될지는 잘 모르겠다. 안테나 엘리먼트가 발코니 난간 등 다른 금속성 물체에 닿지 않게 하나는 것은 안테나 설치의 상식이다. 이번 경우는 엘리먼트 자체가 아니므로 상관이 없지 않을까? 다른 기성품 안테나의 사진을 찾아보면 내가 사용한 부품에 해당하는 것에서 절연처리를 한 것은 보이지 않는다. 원래 이 물건은 대형 모니터 고정용 부속인데 엉뚱한 곳에서 최종 용처를 찾았다.

10월 초순의 햇살은 여전히 강렬하여 땀을 뻘뻘 흘리면서 설치 작업을 하였다. 아래 사진에서 붐대와 화분 설치대를 묶은 것은 운동화 끈이다. 합성수지로 만들어진 끈(케이블타이 포함)은 이러한 조건에서 사용하기에 적당하지 않다는 것을 알았기 때문이다. 물론 힘을 많이 받지 않는 곳에는 사용해도 괜찮다.

이 안테나는 우리집 기준으로 서쪽에 위치한 계룡산 송신소를 향하고 있다. 남쪽으로는 식장산 송신소가 위치한다. KBS Classic FM 청주(식장산)과 대전(계룡산) 방송을 전부 들을 수는 있는데 MBC FM(식장산)에 비하면 방송 수신의 질이 나쁘다.

새로 만든 진공관 앰프와 보수를 마친 안테나가 FM 방송 청취의 즐거움을 더한다.

2018년 10월 7일 일요일

43번 오극관(43 power pentode) 싱글 앰프 프로젝트 - [5] 발열과 험 문제 개선

나무판 위에 부품을 얼기설기 늘어놓아 만든 앰프는 계속 손길을 필요로한다. 케이스 안에 넣어버리면 귀찮다는 이유로 사소한 문제를 방치하고 싶을 것이다. 사실은 결코 사소한 문제가 아닐 수도 있다.

이번에 만든 43번 5극관은 꽤 좋은 소리를 내고 있다. 하지만 아직 완성의 단계는 아니다. 첫번째 문제는 히터 공급용 배전압 정류장치의 전류제한 저항에서 너무 열이 많이 난다는 것이다(아래에 보인 회로도에서 빨강 타원으로 둘러친 것). 5와트의 정격을 넘는 수준은 결코 아니나, 저항과 닿은 코팅 합판의 표면이 까맣게 탈 정도라면 방열 대책을 세워야 한다. 이 저항에 다이오드를 연결하는 리드선 역시 매우 뜨겁다. 저항에서 나는 열이 리드선을 타고 다이오드까지 가는 것 같았다.


재활용 부품을 이용하여 저항에 방열판을 달아주기로 하였다. PC용 파워서플라이에서 뜯어낸 방열판과 못쓰는 그래픽 카드의 마더보드 고정용 부속을 이용하였다. 직접 연결된 저항과 다이오드 사이를 끊은 다음 두꺼운 선재를 사이에 넣어서 연결하였다. 저항에서 발생한 열이 리드선을 타고 가지 말라는 의도였다. 시멘트 저항과 방열판 사이에 방열 시트를 삽입하여 잘 밀착하게 만든 다음 사무용 악어클립으로 고정하였다.



살다보니 저항에 방열판을 다는 일이 다 생긴다. 작동을 시키면서 발열 정도를 체크해 보았다. 방열판이 손을 댈 수는 있을 정도로 뜨거워진다. 방열 처리를 하기 전에는 거의 100도에 육박했을 것이다. 그런데 이렇게 한 이후에도 다이오드는 여전히 전과 같은 정도로 뜨겁다. 그렇다! 다이오드가 뜨거워진 것은 저항과 연결한 리드선을 타고 열이 전달되는 것이 아니라 다이오드 자체의 발열이었던 것이다. 1N400x 다이오드의 최대 작동 온도는 150도 가량이다. 이를 위협할 정도로 열이 나지는 않겠지만 신경을 늘 쓰는 것이 좋을 것이다.

다음은 험(hum)을 잡는 문제이다. 트랜스를 차폐하고, 회로를 금속제 섀시에 꽁꽁 가두고, 접지를 하고... 이런 대책들이 보통 요구된다. 나무판 위에 부품을 그대로 노출시켜서 만들면 온갖 잡음이 유입된다는 의견을 모르는바 아니지만, 합리적으로 잘 만들어진 앰프라면 충분히 극복 가능하다고 생각한다.

현재의 상태에서는 분명히 험이 들린다. 이는 볼륨 폿(프리앰프에서 조절)의 위치와는 무관하고, B 전압을 낮추면 줄어든다. 이를 어떻게 잡아야 하나? 해결책은 전원부에 RC 필터를 하나 더 추가하는 것이었다. 다음 회로도에서 빨강 점선 박스로 둘러싼 부분을 삽입하여 험을 사실상 제거하였다. 처음 설계할 때에는 이 필터를 사용하지 않았었다.


위의 그림에서 'Rectifier & filter'라고 표현된 파랑 상자는 PC의 파워서플라이 기판에서 잘래낸 것을 활용함을 의미한다. 이 회로의 출력부에 대용량의 전해 캐패시터가 이미 존재하므로 추가적인 캐패시터는 없어도 될 것이라고 생각했었다. 하지만 PC 파워서플라이에서는 입력 전압을 정류하여 반분한다. 다음 그림을 보면 빨강 원으로 표시한 곳에서 전선을 뽑아내어 진공관 B 전압용으로 쓰는 셈이다. 대용량의 캐패시터가 두 개 있지만 이들 각각은 출력 전압을 반분하는 곳에 걸쳐있다. 빨강색에 해당하는 곳을 직접 가로지르는 캐패시터는 없는 셈이다. 내가 삽입한 47 uF 캐패시터(100R 저항과 함께)가 정류후 남은 리플을 제거하는 효과가 있다고 생각하기로 했다. 대부분의 진공관 앰프용 전원회로가 이러한 형식을 따르고 있음을 물론이다.

그림 출처: https://www.pocketmagic.net/wp-content/uploads/2012/05/simple_smps_5.png

내가 만드는 진공관 앰프는 모두 이렇게 초크 코일이 없는 구조를 하고 있다. 그러나 음질에 특별한 문제가 느껴지지 않는다.

여기에 보인 RC 필터가 잡음 제거에 결정적인 역할을 하였다.



어제까지 끝낸 작업의 결과물이다. 오른쪽에 보이는 프리앰프도 나무판 위에 고정하였고, 남는 외가닥 인터케이블(노랑색 RCA 커넥터를 보라)을 잘라서 프리앰프를 연결하였다. 스피커를 연결하는 바인딩 포스트의 고정 방법도 바꾸었다.

하루 종일 소스를 연결하여 음질과 발열 상태 등을 점검하고 있다. 내 막귀로는 충분히 듣기 좋은 소리가 난다. 솔직히 말해서 다른 앰프와 무엇이 다른지를 잘 모르겠다. 6N1+6P1 싱글 앰프에 비하면 조금 더 부드러운 것 같기도 하다.

남은 일은 전원 스위치를 다는 일 정도이다. 이 앰프는 앞으로도 계속 실험의 대상이 될 것이므로 당분간은 섀시에 넣지는 않을 것이다. 순전히 호기심으로 시작된 프로젝트였지만 지금 생각해보니 뛰어들지 않았더라면 정말 후회했을 것이다.

2018년 10월 4일 목요일

43번 오극관(43 power pentode) 싱글 앰프 프로젝트 - [4] 조립 및 테스트

글 제목을 결정하기에 앞서서 약간의 고민을 하였다. '완성'이라고 할까, 아니면 '가조립'이라고 할까? 매우 간단한 5극관 전력증폭회로의 이해와 실습을 겸한 이번 프로젝트는 애초에 멋진 섀시를 꾸미는 것을 목표로 하지 않았었다. 따라서 현재의 상태로도 충분히 '완성'이라고 말해도 틀린 것은 아니다.

그러나 나무판 위에 대충 올려진 부품들을 보면 - 완벽한 소리를 들려주고 있다 하여도 - 언젠가는 싫증이 날지도 모르는 일이다. 그래서 앞으로 후속 작업이 있을 수도 있다는 여운을 남기기 위해 '조립'이라고만 하였다. 먼저 회로도를 소개한다. 오른쪽 위에 보인 5극관 전력증폭회로의 기본 모양은 Harry Lythall의 웹사이트("Valve basics")에서 빌려온 것이다.


전력증폭회로 앞에는 소위 초단 혹은 드라이브단에 해당하는 회로가 있어야 한다. 이번 프로젝트에서는 이미 내가 갖고있던 프리앰프를 쓰기로 했기에 이렇게 간단하게 앰프를 꾸미는 것으로 충분했다. 실제로 이 회로에 튜너를 직접 연결했더니 스피커(89 dB SPL/W/m)에서 미약하게 소리는 남을 확인하였다.

전원부를 미리 만들어 두었었기에 개천절 휴일 오전을 투자하여 조립을 마쳤다. 너무나 간단한 회로라서 오배선을 할 여지가 없었고 소리가 나오는 것을 확인하였다. 43번 5극관 두 개의 특성이 똑같지는 않아서 같은 고전압을 걸었지만 그리드와 플레이트에 배분되는 정도가 다르다. 그리드 전압은 대충 -13 ~ -15 V 수준이 나왔다. 플레이트 전압은 105 V 정도였다. 아마 출력은 1 와트 내외가 될 것이다.

저녁때에는 튜닝(이라는 표현을 쓰기에도 부끄럽지만...)을 하여 만족할만한 소리를 내게 만들었다. 오전 작업 때에는 스크린 그리드와 접지 사이에 아무런 캐패시터를 연결하지 않았더니 '웅~'하는 소리가 매우 심하게 나는 것이었다. 험(hum)인가? 아니면 발진인가? 고전압부의 정류 및 평활회로를 다른 것으로 바꾸어도 소용이 없었다. 초크 코일을 쓰지 않아서 그렇다고 생각하기는 싫었다. 제이앨범을 비롯한 다른 웹사이트를 방문한 기억을 되살려 스크린 그리드와 접지 사이에 47 uF 캐패시터를 삽입하였더니 이 잡음은 상당한 수준으로 줄어들어서 실제 음악감상에는 별 문제가 없을 수준으로 되었다. 아주 잘 만든 진공관 앰프의 배경 잡음과는 비교할 수 없겠지만, 취미 수준으로 만드는 앰프에서는 참을 수 있는 정도라고나 할까?



차마 보이기 부끄러운 배선 모습.



광활한(?) 합판을 이렇게 비능률적으로 사용하다니, 배선 모습을 보이기에는 너무나 부끄럽다. 데스크탑 앰프로 쓰기에는 너무나 크다. 물론 처음부터 그럴 생각은 별로 갖고 있지 않았다.

앞으로 어떤 일이 남았는가? 우선 전원 계통의 배선은 아직 악어 클립으로만 연결한 상태이므로 확실하게 납땜을 해야 한다. 필요하다면 전원 스위치(스파크 킬러를 넣으면 더욱 좋을 것이다)도 설치해야 한다. 그리고 프리앰프부를 이렇게 두지 않고 다른 실험을 할 수도 있다.

라디오에 널리 쓰이던 골동품 수준의 진공관을 사용하느라 히터 전압을 만들기 위해 전원부가 예상보다 복잡해졌다. 그러나 HV 자체가 ~120 V 수준으로 별로 높지 않아서 비교적 안전하게 사용 및 개조를 할 수 있다.

매우 즐거운 경험이었다. 기획부터 실행 완료까지 걸린 시간이 생각보다 길지 않았다. 연말까지는 더 이상 일을 벌이지 말아야 되겠다.

2018년 10월 2일 화요일

만약 인공지능 변호사가 일반화된다면

중앙일보에 실린 2018년 4월 5일자 기사이다.

로펌 간 한국 첫 AI 변호사··· 검사도 놓친 분석 '단 20초'

반면에 지난 8월에는 이런 기사도 실렸다.

AI 의사 가르칠 '데이터'가 없다. 수조원 쏟은 왓슨도 '위기'
(요즘 기사 제목에는 왜 이렇게 따옴표를 많이 쓰는지 모르겠다. 별로 마음에 들지 않는다.)
AI의 미래를 내다볼 때 데이터 부족 문제는 그렇게 심각하게 생각하지 않는 것 같다. 나 역시 그러한 다소는 안이한 생각을 갖고 있다. 어쨌든 방대한 자료에 의거해서 판단을 내려야 하는 업무는 점차 인공지능이 대체하게 될 것은 자명하다. 그러면 이득을 보는 자는 누구인가? 그것이 과연 바람직한가? 이러한 질문은 나중에 생각하기로 하자.

인공지능이 변호사 업무를 일상적으로 맡는 시대가 왔다고 가정하자. 법률 사무소를 찾는 고객의 주머니 사정이 전부 똑같지는 않을 터이니, 아마도 서비스 수준에 따른 차등 가격을 제시할 것이다.

  • 500만원: 10만 건의 판례를 분석한 서비스 제공
  • 1천만원: 30만 건의 판례를 분석한 서비스 제공
두 사람 사이에 민사 소송이 진행 중이라고 가정하자. 의뢰인 갑은 500만원짜리 AI 변호사를, 의뢰인 을은 1천만원짜리 AI 변호사에에세 사건을 맡겼다. 누가 재판에서 이기겠는가? 더 많은 판례로 무장한 비싼 변호사가 더 유리하지 않을까? 이건 좀 불공정하지 않다는 생각이 들지 않는가? 하지만 이는 AI 변호사라서 그런 것이 아니라 사람 변호사를 쓰는 지금도 마찬가지의 일이 이미 벌어지고 있다고 말할 수 있다. 그러면 다른 사례를 들어 보자.

만약 AI 변호사를 사용하는 법률 사무소가 통폐합을 거쳐서 하나의 회사가 되어버렸다고 하자. 그러면 서로 법률적으로 다투는 두 사람은 하나의 법률 사무소에 변론을 의뢰해야 한다. 이건 좀 이상한 사례이다. A와 B라는 자연인이 서로 다투고 있는데, 둘 다 C라는 법률 회사에 소송을 의뢰한다? 그러면 C는 어떤 태도를 취해야 하는가? 서로 다른 AI 변호사를 배정하여 일체 상호작용을 하지 못하게 만들 것인가? 아니면 무조건 높은 수임료를 내기로 내기로 한 고객 위주로 일을 한다?

만약 A와 B가 주장하는 바를 C가 다 전해 듣는다면, 누가 옳고 그른지(정확히 말하자면 누가 이길 가능성이 높은지)를 미리 명확하게 알 수 있을 것이다. 그러나 이러한 판단은 누가 더 많은 돈을 지불할 의사가 있는지에 따라서 얼마든지 달라질 수가 있다.

모든 법률 회사가 하나로 통합되어버릴 가능성이 얼마나 높은지는 나도 모르겠다. 그러나 우리나라처럼 규모나 간판 크기에 사람들이 쉽게 압도되어 버리는 사회에서는 충분히 있음직한 일이다. AI 변호사를 채용한 회사에 자연인 변호사가 밀려서 도태되고, 격심한 경쟁 속에 독점 혹은 과점 체제가 될 수도 있을 것이다.

그러면 정의로운 대한민국에서는 AI 변호사로만 이루어지는 소송에 대하여 어떤 규정을 만들지도 모른다.
  1. (가능하다면) 다툼의 당사자들이 같은 법률회사에 사건을 의뢰해서는 안된다.
  2. 각 AI 변호사의 수임료 차이는 4배를 넘어서는 안된다(잘 지켜질 것 같지는 않다. 자본주의 사회에서 시장 법칙에 따라서 월등히 높은 비용을 부담하고 더 높은 질의 법률 서비스를 받을 자유를 왜 제한하느냐고 항의한다면 할 말이 없으므로).
  3. 부득이하게 (1)의 규정을 지킬 수 없을 때에는(예를 들어 다른 법률 회사가 슈퍼 갑 회사 하나뿐이라면) 의뢰를 받은 각 AI 변호사는 절대로 서로 정보를 주고받지 않는다(수임료를 포함하여). 단, 사내 공용 데이터베이스에 있는 법률집이나 판례는 같이 활용하되, 고객이 지불하기로 약정한 비용에 따라서 활용 범위가 달라지는 것은 법률 회사의 자유이다.
그러나 (3)번 조항이 과연 잘 지켜질까? 법률 회사의 경영주가 수익을 올리는 데에만 너무 골몰한다면, 여러가지의 치시한 전략을 쓸 가능성이 있다. 가장 쉬운 시나리오는 돈을 더 많이 낸 고객이 일단 이기게 만들어 주는 것. 그렇게 해서 다음에도 또 찾아오게 만드는 것이다. 물론 독점 체제가 되면 그럴 필요조차 없을 것이다.

다른 한편으로 뒤집어 생각하면, 두 의뢰인 사이의 쟁점 사항을 면밀하게 판단하여 더 많은 돈을 지불하도록 '조작'을 해 나갈지도 모른다. 재판에서 누가 이기는지는 별로 중요하지 않다. 나는 이 세계가 어떻게 돌아가는지 잘 모른다. 따라서 고객이 법률 사무소를 찾아와서 사건을 맡기고 일단 계약을 하게 되면 약정한 금액 이상의 돈이 들어가는 일이 절대로 없는지, 혹은 간혹 있는지는 알지 못한다. 그러나 불가피한 경우 특약 조항이 있을지도 모른다. 어쩌면 나중에 재판이 잘 풀리지 않을 경우 수임료를 추가로 내야 하는 특약 조항을 눈에 잘 뜨이지 않게 하여 계약서에 인쇄해 놓았을 수도 있다. 그리고 법정에서 어떤 식으로 변론을 하면 재판이 질질 늘어지면서 결국 법률회사가 최대의 수익을 가져갈 수 있는지에 대한 전략을 세울 수도 있다. 이 전략 역시 AI가 알아서 할 것이다. 

흠. 단편 소설 하나를 쓸 수 있을 것 같다. 잘 되면 영화 시나리오라도..  아니다. 그럴 생각이었으면 블로그에 쓰지 말았어야 한다. 어쨌든 AI가 만드는 이런 미래는 별로 생각하고 싶지 않다.

2018년 10월 1일 월요일

LS-BSR의 에러 해결: "File is supposed to contain nucleotides, but doesn't look correct..exiting"

Marker gene 염기서열을 읽어들이는 과정에서 이러한 오류가 발생하였다. 사용한 gene database는 Virulence Factors of Pathogenic Bacteria(다운로드 링크)의 것이다.
File is supposed to contain nucleotides, but doesn't look correct..exiting
어느 유전자 서열에 문제가 있는지 해당하는 것의 ID라도 밝혀주면 좋으련만, 위에서 보인 에러 메시지 한 줄이 전부이다. 도대체 뭐가 문제일까? 마커 유전자 파일의 일부만을 이용하면 문제가 발생하지 않는다.

혹시 FASTA 파일에 non-ATGC character가 있어서 그런 것일까? Artemis에서 확인을 해 보았다.


이게 뭐란 말인가! 비정상적인 염기 문자를 갖는 서열을 FASTA file에서 아예 삭제를 해 버릴까? 아니다. 그렇게 되면 소중한 정보를 잃는 것이 아니겠는가? 이것을 펩티드 서열로 전환하여 실행하면 어떨까? 

EMBOSS:transeq을 사용하여 염기서열 파일을 펩티드 서열로 전환한 뒤 다시 LS-BSR을 실행해 보았다. 이번에는 잘 진행이 되었다.