2017년 5월 24일 수요일

[R] prop.table()을 이용한 비율 계산

지극히 초보적인 수준의 R 코드를 가지고 잠시 혼란에 빠졌다가 해결책은 찾은 이야기를 기록으로 남기고자 한다. 다음 그림의 (A)와 같은 가상 데이터를 조작하여 열(B) 혹은 행(C) 합계에 대한 proportion으로 나타내는 것이 원래의 작업 목표였다. 각각의 계산에서 분모로 들어갈 수치들은 표 (A)의 노랑색(column 합) 혹은 파랑색(row 합) 마진에 표시되어 있다. 실제 데이터는 shotgun sequencing 방식으로 얻은 metagenome read의 taxonomic composition이다. 참고한 사이트는 Making heatmaps with R for microbiome analysis이다. 이 예제에서는 각 샘플의 데이터를 row로 나타나는 반면 나는 column으로 표현하고자 하였다. Microarray data analysis 사례에서 흔히 나타나듯 서로 다른 샘플을 컬럼으로 나타내는 것이 매우 일반적이다.


먼저 데이터 매트릭스를 만들어 보겠다.
> x = cbind(c(2,5,3), c(9,7,4), c(4, 3, 13))
> colnames(x) = c("A", "B", "C")
> rownames(x) = c("John", "Tom", "Bart")
> x
     A B  C
John 2 9  4
Tom  5 7  3
Bart 3 4 13
내가 원하는 proportion 수치는 각 셀의 값을 컬럼 합으로 나누는 것이다. 따라서 위의 표 (B)의 결과를 얻는 것이 목표였다. 예제 사이트에서는 샘플이 서로 다른 row로 배열되어 있으므로 row 합으로 나누는 것을 기준으로 설명하였다. 여기에서 사용된 명령은 data.prop <- all.data="" colsums="" div="" rowsum="" rowsums="">
> x.prop = x/colSums(x)
> x.prop
        A    B    C
John 0.20 0.90 0.40
Tom  0.25 0.35 0.15
Bart 0.15 0.20 0.65
> x.prop.2 = x/rowSums(x)
> x.prop.2
             A         B         C
Jone 0.1333333 0.6000000 0.2666667
Tom  0.3333333 0.4666667 0.2000000
Bart 0.1500000 0.2000000 0.6500000
전혀 의도하지 않은 결과가 나온다. 처음에는 예제가 잘못 짜여진 것이 아닌가 의심을 했었다. 일단은 인터넷 검색을 통해 prop.table() 함수가 (B) 및 (C) 모두의 경우에 쓰일 수 있음을 알았다. margin=2로 설정하면 column 합에 대한 비율을, margin=1로 두면 row 합에 대한 비율이 나온다.
> x.prop = prop.table(x, margin=2)
> x.prop
       A    B    C
John 0.2 0.45 0.20
Tom  0.5 0.35 0.15
Bart 0.3 0.20 0.65
> x.prop = prop.table(x, margin=1)
> x.prop
             A         B         C
John 0.1333333 0.6000000 0.2666667
Tom  0.3333333 0.4666667 0.2000000
Bart 0.1500000 0.2000000 0.6500000
물론 이보다 훨씬 미련한 방법을 이용하여 계산하는 것이 가능하다. 그러나 prop.table()이 가장 완벽한 해답을 제공한다. 그러면 왜 x/colSums(x)가 원하는 결과를 내지 못했는지를 알아보자. 매트릭스에 대한 연산을 왜 조심스럽게 해야 하는지도 이번 논의를 통해 알 수 있을 것이다.

매트릭스의 모든 셀에 같은 값을 더하거나 빼는 것은 대단히 쉽다.  그러나 row 혹은 column 단위로 계산을 할 때에는 매우 조심해야 한다. 원래 목표했던 것은 (10, 20, 20)을 각 컬럼의 값에 대해 나누는 것이었다. 즉 첫번째 컬럼A/10, 컬럼B/20, 컬럼C/20이 계산되기를 바랐던 것이다. 그러나 매트릭스를 벡터로 나누면 R은 그렇게 행동하지 않는다. John-A는 10으로 나누고,  Tom-A는 20으로 나누고, Bart-A는 20으로 나눈다. 그 다음으로는 컬럼 B로 넘어가서 각 셀에 대해서 같은 값이 아닌 (10, 20, 20)을 분모로 할당하여 나누고 또 컬럼 C로 넘어가는 것이다.  다시 말하자면 A, B, C 컬럼의 값을 일렬로 세운 다음 (10, 20, 20), (10, 20, 20), (10, 20, 20)..의 값을 순차적으로 대입하여 나눗셈을 한 것이다. rowSums() 함수가 원하는 값이 나왔던 것은 값을 대입하는 순서와 잘 맞아떨어졌기에 가능했던 것이다. 기억을 돌이켜보니 예전에 수강했던 R 강좌에서 이러한 내용을 다루었던 것 같다. 병합된 table은 low frequency row를 제거한 뒤 hclust2로 heatmap을 그리면 된다.

비록 시간이 많이 걸리더라도 실수를 통해 배우는 것이 가장 확실한 방법이 된다. 왜냐하면 같은 실수를 다시 반복하지 않을테니까 말이다.

2017년 5월 23일 화요일

dRep을 이용한 metagenome data set의 중복 제거

동일한 생태계에서 수집한 관련성 있는 메타게놈 샘플을 shotgun 방식으로 시퀀싱을 하는 것은 요즘 매우 흔히 볼 수 있는 연구 방법이다. 예를 들자면 어떤 항생제를 투여한 뒤 장내 microbiome을 일정 시간 간격으로 샘플링하여 분석함으로써 외부에서 주어진 변동 요인(항생제)에 따라서 미생물 군집이 어떻게 변화하는지를 살펴 보는 것이다. 일반적으로 거의 동일한 미생물들이 단지 그 비율만 샘플링 시점에 따라서 달라질 것임을 예상할 수 있다.

실제 분석에서는 각 샘플에서 생성된 read를 모두 합쳐서 조립을 한 다음(co-assembly) 이를 바탕으로 각 샘플 read를 다시 매핑하는 방법을 많이 사용한다고 들었다. 이러한 방법에서는 데이터의 규모가 커지고 이에 따라서 복잡성이 증가하며, 동일 species의 서로 다른 strain이 존재하면 fragmented assembly를 유발하게 된다.

그렇다면 각 샘플을 독립적으로 조립하는 것이 유리할지도 모른다. 그러나 이렇게 얻어진 assembly간의 중복을 제거하는 de-replication 과정이 필요하게 된다. 뿐만아니라 각 replicate set에서 가장 품질이 좋은 게놈 데이터를 선발하는 일도 필요해진다. UC Berkeley의 Banfield lab에서는 이러한 필요성을 충족시킬 수 있는 새로운 도구인 dRep을 bioRxiv에 발표하였다(학과 소식 사이트). 논문의 제목은 "dRep: A tool for fast and accurate genome de-replication that enables tracking of microbial genotypes and improved genome recovery from metagenomes(링크)"이다.

이 도구는 당장 나에게도 큰 도움이 된다. 입원 환자에게서 분리된 소위 'emerging pathogen'에 해당하는 어떤 세균의 MiSeq sequencing data를 분석할 일이 최근 생겼다. 총 112개 스트레인의 시퀀싱 결과로서 단일 프로젝트로 나에게 주어진 것으로는 가장 큰 규모이다. 그중에는 분명히 엉뚱한 균주도 몇 개는 섞여있을 것이다. 이를 점검하는 용도로 dRep을 활용하자는 것이다. 실은 reference sequence 하나에 대해서 112개 균주의 데이터를 1:1로 비교하면 별로 많은 시간이 걸리지는 않는다. 하지만 각 샘플 간의 거리는 알기 어려워진다. pyani를 돌려서 ANI(average nucleotide identity) matrix를 만드는 것도 가능하나, 모든 샘플 사이에서 1:1 비교를 해야 하므로 나의 소박한 컴퓨터로는 엄청난 시간이 걸린다. dRep도 pair-wise 비교를 하는 것은 마찬가지이다. 그러나 빠르기로 소문난 Mash를 이용하여 primary cluster를 신속하게 만든 뒤, MUMmer를 이용하여 각 cluster 내에서 ANI를 계산하는 전략을 취하고 있다.

설치는 생각보다 까다로왔다. 필요로 하는 다른 프로그램의 목록은 별로 길지 않으나 이를 설치하려면 또 다른 dependency가 있어서 꼬리에 꼬리를 무는 느낌이다. 게다가 dRep은 파이썬 3.x이 필요한 반면에 같이 실행되는 checkm 파이썬 2.x이 필요하여 pyenv를 잘 활용해야만 한다. 내 리눅스 시스템은 linuxbrew와 pyenv 등으로 뒤죽박죽이 된 상태라서 계정을 새로 만들어가면서 시행착오를 겪은 끝에 겨우 테스트 러닝에 성공하였다. 설치 방법을 문서로 정리해야 하는데 하도 실타래처럼 꼬여서 잘 기억이 나질 않는다... 패키지에 포함된 예제를 통과했으니 다음은 22개 genome set를 투입해 보았다. Primary 및 secondary cluster의 덴드로그램을 소개한다.


checkm은 genome completeness & contamination을 점검하는 도구이다(소개).

2017년 5월 21일 일요일

Dell Inspiron 660s의 은퇴(2012-2017)

지메일에 남아있는 Dell Inspiron 660s의 구매 내역을 찾아보았다. 주문 내역서가 만들어진 것은 2012년 10월 4일. 아직 만 5년은 되지 못했다. 경제적 상황이 좋은 경우 업무용 PC의 교체 주기는 보통 3-4년, 가정용은 5-6년으로 보는 것이 일반적이다. 요즘은 운영체제가 많이 좋아져서 교체 주기가 과거보다 늘어난 추세이다(인텔 CEO "PC 교체주기 5~6년으로 더 늘어났다"). 나의 경우는 업무용이나 가정용 모두 5년 정도에 교체를 하는 편이다.

Dell Inspiron 660s를 2012년에 구입할 당시에는 윈도우 7이 설치된 상태였다. 2103년 초에 윈도우 8 Pro K를 프로모션 가격 16,300원에 구입하여 써 오다가 나도 모르는 순간에 윈도우 10으로 바뀌게 되었다. 비록 매우 저렴한 가정용 PC 제품이지만 윈도우 7을 쓰던 당시에는 별 불편한을 느끼지 못하고 그런대로 잘 사용하였다. 그러다가 상위 윈도우로 바뀌면서 속도가 점점 느려지는 것을 경험하였다. 지난주에는 아예 부팅이 되지 않는 상태가 발생하여 본체 뚜껑을 열고 커넥터를 한번씩 뺐다가 꽂는 것으로 문제가 해결되었다 생각했으나(먹통이 된 Dell Inspiron 660s 되살리기) 그 상태는 오래 가지를 못하고 또다시 부팅 불능 상태가 되었다. 하다못해 윈도우 매체를 ODD에 넣으면 부팅이라도 되어야 할 것 아닌가? 비프음 없이 첫화면(Dell 컴퓨터 로고)까지는 나오니 하드웨어에 특별한 장애는 없어 보이는데 그 다음으로 진행이 되지를 않는 것이다.  Dell의 <부팅 후 시스템 진단 유틸리트>를 작동하면 CPU 체크 단계에서 아예 진도가 나가지 않는 이해하지 못할 상황이 계속되었다. CPU가 고장이 날 가능성은 매우 낮은데...

최근 약 일년 동안의 기억을 더듬어보니 화면이 꺼진 상태로 컴퓨터가 쉬고 있을 때 갑자기 큰 소리와 함께 CPU 팬이 돌다가 조용해지는 일이 지속적으로 반복되곤 하였다. 어쩌면 이것이 시스템 부조화의 전조증상이었는지도 모르겠다.

이번에는 CPU 쿨러를 한번 떼었다가 붙여 보았다. 그러고나서 다시 시스템 진단 유틸리티 실행. CPU 테스트가 무사히 끝나고 모든 하드웨어에 이상이 없다는 진단이 나왔다. 부팅을 시도하니 무사히 진행이 된다. 그런데 이번에는 윈도우 10의 인증이 되지 않았다는 표시가 나온다. 지난주까지 인증 상태에 대해서는 아무런 일이 없었는데 갑자기 이건 무슨 일이란 말인가? 대대적인 하드웨어 교체가 벌어진 것으로 인식한 것일까? 마이크로소프트 고객지원 센터의 하드웨어 변경 후 Windows 10 다시 정품 인증이라는 글이 도움이 될 것 같기는 하지만, 되살아난 컴퓨터는 느려도 너무 느리다. 이번 장애를 겪기 이전에도 느린 것은 마찬가지이나 이렇게 꼬박 주말을 매달리고나니 짜증이 밀려오면서 느린 속도를 견디기 어려워졌다.

이 컴퓨터는 이제 퇴역을 할 시기가 되었다! 약간의 데이터가 들어있는 HDD는 떼어내고, 굴러다니던 다른 HDD를 연결하여 우분투 데스크탑 16.04를 설치해버렸다. 이 글도 한글 입력 환경을 세팅한 뒤에 쓰는 것이다.


이렇게 되면 윈도우 라이센스는 어떻게 해야 하는 것일까? 보통 PC 구매시에 딸려온 OS(OEM,  COEM 혹은 DSP 제품)는 해당 PC에서만 사용 가능한 것으로 알려져있다. 그러면 나의 경우와 같이 윈도우를 업그레이드한 경우에도 그러할까? 즉, 컴퓨존 등에서 OS가 없는 조립 PC를 구매하면 여기에 내가 갖고있는 윈도우 8이 정식으로 설치될 것인가? 윈도우 7은 Dell Inspiron 660s와 운명을 같이 하는 것이니 안 될 것이다.

윈도우 8 사용자를 위한 무료 10 업그레이드는 이미 오래전에 종료되었지만  보조 기술을 사용자를 위하여 그 혜택을 입을 수 있는 길을 계속 열어놓은 것으로 보인다(링크).

2017년 5월 18일 목요일

Goodbye genome paper, hello genome report

이것은 2016년 6월 23일에 Brief Funct Genomics라는 학술지에 실린 리뷰의 제목 일부이다. 저자는 David Roy Smith.

Goodbye genome paper, hello genome report: the increasing popularity of 'genome announcements' and their impact on science. PMID: 27339634

인간 게놈 프로젝트가 가져다준 기술 혁신, 이어서 차세대 유전체 염기서열해독기술(NGS)의 등장으로 유전체 시퀀싱 데이터가 그야말로 쏟아지는 세상이 되었다. 이제는 유전체 시퀀싱 결과를 논문에 싣기도 어려운 상황이다. 그래서 500-1500 영단어 수준의 짧은 '논문'을 출판하는 것이 유행이 되었다. Peer review는 있기도 하고 없기도 하다. 기본적인 서열 데이터는 DDBJ/ENA/GenBank에 등록이 되지만, 연구의 목적이나 실험 방법 및 복잡한 유전체 구조를 다루려면 문서화된 정보, 즉 논문이 필요하다. Accession number 말고도 인용 가능한 문헌 자료가 필요하다는 뜻이다. 문제는 너무나 많은 사람이 너무나 쉽게 이런 일을 하게 되었다는 것이다. 그래서 announcement(발표 또는 공고 정도로 번역하자)류의 저널이 어쨌든 필요하게 되었고 또 인기를 끈다.

David R. Smith는 이에 대해서 몇 가지의 문제점과 대안을 다음과 같이 논하였다.

  • 게재료가 너무 비싸다. $1-2/word라는 출판 비용은 이제 염기서열당 시퀀싱 비용을 훨씬 상회하고 있다.
  • Peer review를 거치지 않는 것도 많다. 따라서 announcement류의 논문은 취업용(혹은 이직용) 이력서를 장식하거나 연구신청서를 쓰는데 도움이 되는 업적으로 취급받지는 못한다.
  • Peer review가 꼭 필요한 것이 아니라면 open preprint server를 쓰는 것도 고려해봄직하다. 이에 대해서는 내 블로그에 두 건의 글을 올린 적이 있다(생명과학 분야의 프리프린트 학술지, 처음으로 bioRxiv에 논문을 제출하다).
연구 환경의 변화가 기술 혁신 및 상업주의와 적절히 어우려저 현재와 같은 상황이 되었다고 보는 것이 맞을 것이다. 확실하게 말할 수 있는 것은 시퀀싱은 이제 대단히 규모가 큰 시장이 되었다는 것인데, 그 성과물의 학술적 가치는 예전과는 매우 달리 낮아진 것이 현실이다. 앞으로 어떤 돌파구가 생길지는 아무도 모른다. 최소한 기술이 부족해서 하고 싶은 일을 하지 못하는 세상은 아니다. 그럼에도 불구하여 여전히 새로운 기술은 눈길을 끈다. 이번달 말에 Oxford Nanopore의 관계자가 방한하여 기술 세미나를 하게 되었다. Illumina와 PacBio의 기술도 따라잡기가 쉽지 않았는데 여기에 Nanopore까지 공부를 하지 않을 수없는 상황이 되고 말았다. 

참으로 빠르게 변하는 세상이다.


2017년 5월 17일 수요일

FASTX-Toolkit의 이상한 행동(fastq_to_fasta)

어제 남세균(Phylum: Cyanobacteria, NCBI Tax ID: 1117)의 MiSeq sequencing read를 다루다가 pair의 수가 맞지 않아서 무척 애를 먹었다. 그 원인은 FASTX-Toolkit에 포함된 fastq_to_fasta 명령어의 작동이 원활하지 않아서 그런 것으로 잠정적인 결론을 내렸었다. 오늘은 이 문제를 심층적으로 다루어 보려고 한다.

이제 고전이 된 FASTX-Toolkit은 2010년에 공개된 버전 0.0.13이 최신판일만큼 업데이트가 되지 않고 있다. 이는 다른 관점에서 보면 더 이상 손을 댈 필요가 없을 정도로 완벽하다는 뜻도 되겠다. 물론 마지막 버전 공개 당시에는 quality encoding이 phred64인 시퀀싱 결과물이 상대적으로 많았기에, 요즘의 표준인 phred33 데이터를 다루려면 -Q33이라는 옵션을 별도로 주어야 한다는 점이 좀 불편하다. FASTX-Toolkit을 능가할 수준의 유틸리티가 요즘 많이 있겠지만, 표준 입출력을 지원하여 파이프 구성이 편리하고, 심플하며 일관성있는 인터페이스를 갖고 있어서 아직도 쓸모가 많다.

어제 사용한 read의 길이 분포를 알아보자. MiSeq에서 유래한 것이라서 HiSeq read처럼 모든 서열의 길이가 일정하지 않다. 내가 원했던 작업은 280 bp 미만의 read는 제거하고, 그보다 긴 것은 앞부분 280 bp만을 취하여 paired read 형태로 정리하는 것이었다. 종종 고정된 길이의 read를 요구하는 후속 프로그램이 있었기 때문이다.


기준 길이 이상의 read만을 선별하고자 할 때 나는 SolexaQA++을 이용한다. CLC Genomics Workbench에서도 이 작업이 가능하지만(Microbial Genomics Module의 Fixed Leng Trimming) read를 불러들여서 작업을 하고 다시 파일로 내보내는 것이 귀찮아서 명령행 인터페이스를 이용하고자 한 것이다.
$ SolexaQA++ lengthsort -l 280 -c MA-KW_1.fastq MA-KW_2.fastq
리포트에 의하면  4244152 + 4244152 read가 만들어졌다고 한다. 실체 출력 파일을 확인해 보면 이 수치가 잘 맞는다. 그러면 다음과 같이 한 줄 명령어를 만들면 원하는 일이 다 이루어질 것으로 생각하였다. '_2' 파일에 대해서도 같은 방식으로 실행을 하였다.
$ fastx_trimmer -Q33 -l 280 –i MA-KW_1.fastq.paired | fastq_to_fasta -Q33 > temp_1.fastq
그런데 최종 파일이 수록한 read의 수가 달라졌다. 이 명령어에서는 필터가 전혀 작동하지 않으므로 최초에 공급한 파일의 read 수(4244152 + 4244152)를 그대로 유지해야 정상이다. 하지만 실제 결과 파일에서는 4244144 + 4244137가 되었다. file 1과 file 2에서 전부 read 수가 조금씩 줄어든 것이었다. 세부적으로 조사를 해 보니 fastq_to_fasta를 거치면서 read가 변했다. fastq_to_fasta 대신에 fastq2fasta.pl(by Brian J. Knaus)를 사용하면 read 수는 전혀 바뀌지 않았다.

좀 더 궁극적인 해결 방법은 없을까? 파일 조작의 마지막 단계에서 pair 여부를 다시 한번 점검하는 것이 필요할 것으로 생각된다. 이런 용도에 딱 맞는 도구가 무엇이 있을지 조사를 해 보았다.  DOE Joint Genome Institute의 BBTools에 포함된 여러 shell script 중에서 repair.sh를 쓰면 될 것 같다. BB는 이 프로그램을 만든 Brian Bushnell의 이니셜이다. 흥미를 가지고서 사용법을 조사해 보니... 쓸 수가 없다. 왜냐하면 repair.sh가 인식하는 입력 파일은 fasta가 아니라 fastq이기 때문이다. BBTools는 정말 쓸모가 많은 다양한 기능의 명령어를 포함하고 있으니 좀 더 시간을 두고 공부를 해 보자.

FASTX-Toolkit의 fastq_to_fasta가 가장 중요한 용의자이므로, 표준 입출력을 지원하는 다른 종류의 포맷 전환기를 사용해 보자. seqtk가 적당하겠다.
$ fastx_trimmer -Q33 -l 280 -i MA-KW_1.fastq.paired | seqtk seq -a > temp_1.fa
$ fastx_trimmer -Q33 -l 280 -i MA-KW_2.fastq.paired | seqtk seq -a > temp_2.fa
4244152 + 4244152 read라는 완벽한 결과가 나와주었다.


2017년 5월 16일 화요일

기타 넥 수리기

밤늦게 야간자율학습을 마치고 집에 돌아온 딸아이가 거실장 곁에 기대어 놓은 액자를 넘어뜨리면서 스탠드에 세워둔 일렉기타도 같이 쓰러뜨렸다. 기타에서 가장 취약한 부분인 넥과 헤드 사이 부분이 똑 부러졌다. 2000년 초에 갤러리아 타임월드 근처의 비바체 악기(지금은 없어짐)에서 구입한 나의 삼익 세미 할로우바디 일렉기타가 이렇게 망가지고 말았다. 10대 시절 생일 선물로 막내 작은아버지로부터 받은 클래식 기타도 이것과 똑같은 상황에서 부러진 일이 있다.

어쩌겠는가. 얄팍한 목공 기술을 가지고 고치는 수밖에는. 이런 순간에는 수도권에 거주하지 못하는 현실이 안타깝다. 주말에 시간을 내어 낙원상가를 가면 기타를 고치는 장인들이 수두룩할텐데 말이다. 이곳 대전에도 검색을 해 보면 수리를 하는 업자가 있겠지만, 마침 목공 본드를 갖고 있어서 직접 수리하기로 마음을 먹었다. 깨진 마감재는 어쩔 도리가 없다.

스트링을 전부 풀고 부품 일부를 제거한 뒤 부러진 부분에 목공본드를 붙이고 노끈으로 잘 묶어서 24시간 정도를 두었다. 목공용 클램프 같은 것이 있을 턱이 없으니 접합 부분을 완벽하게 맞추는 것은 사실상 불가능하다. 갈라진 틈은 대충 검정색 매니큐어로 칠하였다. 아쉬운대로 사진과 같이 잘 붙었다.


MADE IN KOREA라 새겨진 모습이 선명하다. 시리얼 번호로 추정하건대 아마도 99년에 제작한 것으로 보인다. 프로토타입으로 만들어진 것이라 삼익 마크는 없다.



예전과 같은 강도를 유지하는 것은 어려울 것이다. 만약 다시 부러진다면 전문 수리점에 보내야 될 것이다. 줄을 다시 매어 놓고 상태를 지켜보다가 줄의 장력을 이기지 못하고 다시 부러지면 다음 링크와 같은 대규모의 수리를 해야 될 것이다. 수리가 불가능하여 결국 기타를 버려야 한다고는 결코 생각하지 않는다.

기타수리 넥 부러짐 - 수리 불가능한 넥 살리기

이번 일을 기회로 지판용 오일과 피니시 제품도 구비하여 관리를 하는 시늉이라도 해야 되겠다.

오늘은 Korg X2의 액정 디스플레이를 위한 EL 백라이트도 배달되었다. 본의 아니게 악기 수리에만 몰두하는 일주일이 되었다.




2017년 5월 14일 일요일

먹통이 된 Dell Inspiron 660s 되살리기

Dell Inspiron 660s는 집에서 사용하는 데스크탑 컴퓨터이다. 2012년에 구입하여 지금까지 그럭저럭 사용을 해 왔다. 처음에는 윈도우 7이 설치된 상태였는데 프로모션 가격으로 윈도우 8로 업그레이드를 했었고, 어느날 나도 모르게 윈도우 10으로 자동으로 업그레이드가 되었다. 다음의 화면 캡쳐에 잘 나타났듯이 분명히 정품을 사용하는 중이다.


예전에서는 제품 키를 매우 중요하게 관리해야 했지만 윈도우 10이 되면서 그럴 필요가 없어졌다. 이에 대한 글을 인용해 본다.

윈도우 10으로 업그레이드하면 제품 키를 찾을 수 없는 이유

어제 외출 후 집에 돌아오니 컴퓨터가 부팅이 되지 않는 것을 발견하였다. 전원을 넣으면 Dell Inspiron 660s라는 화면이 나오기까지는 하였는데, OS로 넘어가지를 않는 것이었다. DVD ROM drive로 부팅히 되도록 바이오스 셋업을 바꾼 다음 보유한 윈도우 DVD 매체를 넣고 재부팅을 시도하였으나 상황은 전혀 달라지지 않았다. 하드디스크 문제라면 최소한 DVD 매체로 부팅이 되어야 할 것 아니겠는가? 컴퓨터가 하드웨어적으로 완전히 망가진 것일까? 딸아이는 요즘 극성을 부리는 랜섬웨어에 감염된 것이 아니냐고 한다. 하지만 돈을 버는 것이 목적인 랜섬웨어가 아무런 협박 메시지 없이 컴퓨터를 단순히 부팅 불능에 빠지게 할 것 같지는 않다.

최근 들어서 컴퓨터가 대기 모드에서 갑자기 주기적으로 쿨링팬이 돌다가 다시 조용해지는 일을 종종 경험하였다. 벌써 5년이나 사용을 했으니 이제 컴퓨터를 바꿀 때도 되었다는 생각이 들었다. 작년 말에는 컴퓨터가 너무나 느려지고 프린터가 그 어떤 방법을 동원해도 인식이 되질 않아서 완전히 초기화를 한 일이 있다. 정확한 원인은 아직 알 수 없지만 아마도 딸아이가 너무나 많은 이미지 파일을 하드디스크에 저장해서 그랬던 것으로 생각한다.

가정용으로 구입한 최저 사양의 컴퓨터를 이제 버리고 새로 구입해야 하는가? 컴퓨터를 좋아하고 늘상 업무용으로 끼고 살지만, 막상 새로 구입을 하기 위해 하드웨어 사양을 결정하는 일은 너무 어렵다. 직장에서 업무용으로 쓸 컴퓨터를 새로 구입하는 일은 차라리 쉽다. 적당한 예산 범위를 선정한 다음 납품업체에게 '적당한 것으로 하나 조립해 주세요' 하면 그만이니까.

컴퓨터를 새로 구입하기로 마음을 먹었다 해도 내부를 열어서 점검조차 한번 안하고 이를 내친다는 것은 내 자존심이 허락하지 않는다. 어쩌면 커넥터를 한번씩 뺐다가 다시 연결하면 부팅이 될지도 모르니까 말이다. 진공청소기를 준비하고 나서 컴퓨터 분해에 돌입하였다. Dell 컴퓨터는 분해가 매우 쉽다는 것이 장점이다. ODD와 HDD 뭉치까지 꺼내서 커넥터를 다시 꽂은 다음 진공청소기로 먼지를 빨아내었다. CPU 쿨링 팬을 떼어내야 쿨러 냉각핀 사이사이에 붙은 먼지를 제거할 수 있을텐데, 도저히 그 방법을 알 수가 없었다. 이쑤시개로 큰 먼지 덩이를 떼어내는 정도로 만족하기로 하였다. 아직 옆판을 덮지 않은 상태에서 부팅을 시도해 보았다.

'삑삑 삑삑 삑삑'

이번에는 화면도 전혀 나오지 않고 2회의 비프음이 연속해서 발생하였다. Inspiron 660s의 사용 및 문제 해결 방법 웹문서에 의하면 2회 비프음(연속)은 RAM이 인식되지 않을 때 발생하는 것이라 하였다. 모듈램을 소켓에서 뽑은 뒤 다시 장착한 다음 다시 전원을 넣었다. 이번에는? 무사히 부팅이 되었다! 이 글도 성공적인 재부팅 후 Inspiron 660s에서 작성하는 것이다. 분해 전에는 비프음이 분명히 들리지 않았었다. 그런데 분해하여 커넥터를 한번씩 다시 꽂은 뒤에는 메모리 인식 불가에 따른 비프음이 나고, 메모리를 다시 꽂으니 완벽하게 부팅이 되었다. 도대체 무엇이 문제였단 말인가? 미세먼지에 의해서 몇군데의 커넥터에서 접촉 불량이 발생했던 것이었을까?

이로써 5년만의 컴퓨터 업그레이드는 없던 일이 되었다. 어쩌면 아이들은 아쉬워할지도 모르겠다.