« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : ... 38 : Next »



오늘 블로그 주제는 과거 2016년 구글 Google I/O 에서 소개된 웹 기술 프로그레시브 웹앱(Progressive Web Apps)을 다루어 보고자 합니다.

구글에서는 프로그레시브 웹앱(이하 PWA)을 최고의 웹과 최고의 앱을 결합한 경험으로 정의하고 있는데요, 브라우저를 처음 방문하는 사용자에게 유용하며, 별도의 설치를 요구하지 않습니다. 이러한 PWA라는 웹 기술이 탄생하게 된 배경과 자세한 내용을 차근차근 알아가 보도록 하겠습니다.




과학기술정보통신부에서 발표한 '2019년 인터넷이용실태조사' 결과를 보면, 우리나라 가구의 인터넷 접속률은 99.7%로 거의 모든 가구에서 인터넷을 접속하고, 접속 가구는 와이파이(100%), 모바일 인터넷(94.9%) 등 무선방식을 통해 주로 접속하는 것으로 나타났습니다. 
 

 
2007년 아이폰이 처음 등장한 후 스마트기기 보급률은 급속히 증가했고 이동통신 기술의 발전으로 통신서비스의 중심이 데스크톱에서 모바일로 이동하는 등 2016년을 기점으로 모바일 시장 점유율이 데스크톱을 넘어서게 됐습니다. 데스크톱 뿐만 아니라 스마트폰, 태블릿, 심지어 TV에서도 웹에 접속할 수 있는 환경이 만들어짐으로써 언제 어디서나 정보로의 접근이 가능해졌습니다.
 

[Flg.2] Desktop vs Mobile Market Share Worldwide

웹(Web)에 접근할 수 있는 기기의 폭이 넓어진 만큼, 다양한 기기에 대응하기 위해 유연한 너비와 유연한 이미지, 미디어 쿼리를 이용해서 기기 사이즈에 맞추어 레이아웃을 재구성하는 반응형 웹(Responsive Web) 기술이 보편화하였습니다.
 
그러나 그림에서 보듯이 모바일 환경에서는 대부분의 사람이 웹(Web)보다는 앱(App)에서 더 많은 시간을 보낸다는 것을 알 수 있습니다. 모바일 환경에서 웹보다 앱을 더 선호하는 이유는 앱이 웹보다는 더 빠르고 편하며 사용성이 좋기 때문입니다.


[Flg.3] Share of time spent on Mobile: App vs Web




2015년에 구글 크롬의 엔지니어 알렉스 러셀(Alex Russel)이 자신의 블로그에 'Progressive Web Apps: Escaping Tabs Without Losing Our Soul' 라는 제목의 글을 통해 차세대 웹의 개념, 즉 웹은 웹인데 점진적으로 앱 수준으로 근접해가는 웹이라는 개념의 아이디어를 제공했습니다. 그리고 이듬해 Google I/O(개발자 콘퍼런스) 2016에서 PWA를 미래의 웹 기술로 소개합니다.
비록 웹이지만 데스크톱이나 모바일에서 설치가 가능하고 앱과 유사한 사용자 환경을 제공해주며 하이브리드앱(Hybrid App)과 비교했을 때 보다 간편하게 설치와 개발을 할 수 있고 무엇보다 검색이 가능합니다. 앱과 유사한 경험을 지원하기 위해 푸쉬알림(Push Notification), 설치(Install), 오프라인 실행(Offline Access) 등의 기능도 지원합니다.
PWA에 대한 설명에서 가장 자주 등장하는 단어는 'App like'와 'Natively' 이지만 링크(URL)로 공유가 가능한 웹 페이지입니다. 즉, PWA는 다음 그림과 같이 앱(App)이 가지고 있는 높은 품질(Capability)과 웹(Web)의 넓은 도달 범위(Reach)를 결합한 개발 형태입니다.
 

[Flg.4] 앱과 웹, 프로그레시브 웹의 기능 및 도달 범위,



 
  • 반응형(Responsive) 기기에 따라 레이아웃을 자동으로 조정하는 등 다양한 플랫폼과 여러 기기에서 동일한 사용자 경험(UX)을 제공해줍니다.
  • 연결 독립적(Reliable) 로컬 기기의 캐시를 활용하여 오프라인이나 불안한 네트워크에서도 실행할 수 있습니다.
  • 재참여 가능(Engageble) 브라우저가 닫혀 있더라도 푸쉬 알람(Push Notification)을 보낼 수 있어서 재방문율을 높여줍니다.
  • 안전성(Safe) HTTPS 통신으로 제공되므로 기존 웹 대비 안전합니다.
  • 설치 가능한 경험 제공(Installable) 앱스토어를 찾지 않아도 브라우저에서 바로 빠르고 간단히 홈스크린에 앱을 둘 수 있습니다.
  • 검색을 통해 발견 가능(Search) 구글, 네이버 등 포털 검색 결과에 노출됩니다.
  • 링크 연결 가능 링크(URL)를 통해 손쉽게 공유할 수 있습니다.
  • 즉각적인 업데이트
  • 경량
 
 


  • 로딩 속도와 성능이 다소 떨어집니다.
  • 일부 플랫폼에 제한이 있습니다.
  • 크롬, 오페라, 파이어폭스에서는 동작하지만, 사파리 브라우저에서 지원되지 않습니다.
  • 아이폰에서 푸시알림을 보낼 수 없고 Siri와 통합할 수 없는 등 일부 기기에서 기본 기능에 제한이 있습니다.
  • 지오 펜싱, 지문 스캐닝, NFC, Bluetooth 및 고급 카메라 기능과 같은 장치 기본 기능을 지원하지 못합니다.
  • PWA를 사용하려면 인터넷에 액세스해야 하므로 배터리 수명을 더 빨리 소모합니다.




PWA는 최신 웹 기능을 활용합니다.
  • 웹 메니페스트(Web App Manifest) 브라우저가 웹 앱을 설치할 때 그리고 홈 화면에서 웹 앱을 적절히 표현하는 데 필요한 정보 등을 담고 있습니다.
  • 서비스 워커(Service Worker) 브라우저가 백그라운드에서 실행하는 스크립트로, 웹페이지와는 별개로 작동하며, 푸시 알림(Push Notification, Android Chrome 한정) 및 백그라운드 동기화(Background Sync, Android Chrome 한정)와 같은 기능 등 웹페이지 또는 사용자 상호작용이 필요하지 않은 기능에 대해 지원합니다.
  • 반응형 웹(Responsive Web) 현재 사용되는 대부분의 반응형 웹 기술들을 사용합니다.




앱을 다운로드하지 않고 웹주소를 클릭해 앱과 유사한 서비스를 이용하게 해주는 PWA 장점을 살려 여행, 유통, 뉴스 분야에 활용도가 높을 것으로 보입니다. 핀터레스트(Pinterest), 알리바바(Alibaba), 트위터 라이트(Twitter Lite) 등 PWA 도입으로 접속 시간은 상승하고, 이탈률은 감소하는 등 유의미한 결과를 얻는 많은 사례를 볼 수 있습니다.
  • 핀터레스트(Pinterest)
    • 평균 접속 시간이 40% 증가하였고 사용자 생성 광고 수익이 44% 증가, 핵심 사용자 참여율이 60% 증가하였다고 보고하고 있습니다.
    • 안드로이드 및 아이폰 앱과 비교하면 9.6MB 및 56MB에 비해 150KB로 매우 가볍습니다.
 


[Flag. 5] PWA Pinterest
 

 
현재 구글을 주축으로 마이크로소프트(MS), 모질라(Mozilla), 오페라(Opera) 등이 동참하고 있고 대부분의 안드로이드 기기에서는 PWA를 완벽하게 지원하지만 아쉽게도 iOS 기기에서는 여전히 제한적입니다.
그럼에도 불구하고 우리나라에서도 대표적 쇼핑몰 플랫폼 CAFE24가 PWA를 적용한 '스마트웹 앱'을 출시하는 등 점점 많은 전자 상거래 사이트에 PWA를 적용해서 구현하고 있습니다. 이는 앱을 개발하는데 드는 비용 대비 비교적 적은 자원으로 높은 효율을 기대하는 것을 목표로 하는 전자 상거래 사이트에 대안이 될 수 있기 때문입니다.
(주)인실리코젠의 자회사인 (주)디이프 에서도 현재 서비스중인 아이푸드진 앱을 개발할 당시 여러 기술들 중 하나로 PWA도 함께 고려한 바 있습니다. 비록 네이티브 앱의 기능을 충분히 활용하고 호환성에서 높은 점수를 얻은 플러터(Flutter)가 채택되었지만, 사용자 친화적인 앱을 만드는데 이제 더 이상 웹 기술을 포기할 필요가 없어졌습니다. PWA가 아직 완벽하지 않지만, iOS나 안드로이드 같은 플랫폼 전용 폐쇄적인 앱에 비해 유연하고 개방적이어서 플랫폼에 종속되지 않는 웹의 특성으로 볼 때 PWA의 더 큰 성장을 기대해봅니다.
 



작성 : FED 팀 김태영 선임 개발자
 

Posted by 人Co

2020/07/04 18:42 2020/07/04 18:42
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/350

[Fig.1] 인실리코젠 IX팀
(출처:(주)인실리코젠)

올해 인실리코젠의 Descign(Design+Science+Management)팀 명칭이 IX팀으로 개편되었습니다. IX는 다양한 기술을 통합(Integration)하여 상호작용(Interaction)적인 서비스와 혁신적인(Innovation) 사용자 경험을 디자인하는 부서로 변화하였습니다. 금일 준비한 포스트도 부서의 방향성과 어울리는 콘텐츠로 준비하였습니다.

사용성 테스트의 니즈

[Fig.2] Usability Testing Illustration

편리한 시스템과 서비스를 디자인할 때 필요한 요소 중 하나는 사용성 테스팅(Usability Testing) 입니다. 테스팅은 예측하지 못했던 문제나 유저(User)들의 어려움을 찾아낼 수 있도록 도와주는 데 큰 역할을 합니다. 그럼 언제 사용성 테스트를 진행하는 것이 좋을까요? 일반적으로 디자인(기획) 단계에서 구상한 아이디어를 프로토타입 하여 진행합니다. 테스트 과정 중에 문제를 미리 발견하여 기업이 투여 시간과 비용적인 손실을 최소화할 수 있게 도와주기 때문입니다. 현재 이를 도와주는 다양한 테스팅 방법들이 존재합니다. 그중 Wizard of Oz(WOZ) 테스팅 기법을 소개해 드리려 합니다.

Wizard of Oz(WOZ) 테스팅은 어떤 건가요?


[Fig.3] Wizard of Oz Film

누구나 한 번쯤은 오즈의 마법사(Wizard of OZ) 영화를 보셨을 것입니다. 이쯤 되면 테스팅 방법과 오즈의 마법사 스토리와의 연관성에 대해 궁금증이 생기실 듯합니다. 극 중 마법사인 오즈는 자신의 진짜 모습(서커스에서 마술하는 사람)을 복화술로 숨기고 엄청난 대마법사인 것처럼 모두를 속입니다. 마법사 오즈처럼 Wizard of Oz 테스팅도 사용자들이 실제 개발되지 않은 서비스를 실존하는 서비스처럼 착각하게 하여 테스팅을 진행하는 방법입니다. 아래 IBM의 ‘The listening type writer’ 일러스트 이미지를 보시면 조금 더 이해가 되실 겁니다. 사용자가 컴퓨터 마이크에 “Dear Henry”라고 말을 하면 커튼 뒤에 또 다른 사람(wizard)이 직접 사용자의 말을 듣고 타이핑을 해줍니다. 이를 모르는 사용자로서는 컴퓨터가 출력해주었다고 생각하며 편리한 기능이라고 생각할 것입니다.

[Fig.4] Wizard of Oz Prototyping

어떻게 활용되나요?

WOZ 방법론은 가설을 빠르게 검증할 수 없는 AI(인공지능) 프로젝트에서 많이 활용되며 데이터가 없거나 기술이 완벽하지 않은 상황에서도 테스트를 진행할 수 있습니다. 또한, 시스템에 대한 사용자의 반응을 확인하며 반복적인 테스트를 통해 사용자 경험을 점진적으로 발전시킬 수 있습니다. 테스팅을 진행하기 전 명심해야 할 부분은 얻고자 하는 인사이트가 무엇인지 결정하는 것과 테스트 시 사용자들이 느끼기에 그럴듯하게(Believable) 프로토타입을 제작해야 합니다. 그리고 너무 복잡한 인터페이스 보다는 간단한 형태의 기능을 테스트하는 것이 효율적입니다.

인실리코젠에서는 생물정보를 활용하여 다양한 시스템을 개발하고 있습니다. 사용자 친화적이며 효율적으로 서비스를 디자인 및 개발을 하기 위하여 WOZ 방법론에 대해 알아보았습니다. 향후 직접 프로젝트에 적용해본 후 그 효과나 장단점에 대해서 알려드리겠습니다.

출처

[Reference 1] "Wizard of Oz testing – a method of testing a system that does not yet exist.", 2020년 6월 10일 접속, https://www.simpleusability.com/inspiration/2018/08/wizard-of-oz-testing-a-method-of-testing-a-system-that-does-not-yet-exist/

[Reference 2] "Making the machine believable: Wizard of Oz-ing AI applications.", 2020년 6월 12일 접속, https://uxdesign.cc/making-the-machine-believable-wizard-of-oz-ing-ai-applications-293cfbb0f244

[Reference 3] "[인공지능 in IT] 인공지능 UX 디자인 – 디자인 프로세스로 사용자 경험 설계하기.", 2020년 6월 12일 접속, https://www.donga.com/news/article/all/20190515/95530568/1

작성 : IX Team 김지인 주임 UX/UI 디자이너

Posted by 人Co

2020/06/22 14:14 2020/06/22 14:14
, , , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/349

[Webinar] 제4회 유전체 데이터 분석 교육

Posted by 人Co

2020/06/11 14:22 2020/06/11 14:22
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/348

[모집공고] 人Co INTERNSHIP 2020 하계




[모집분야]
- 지원대상 : 학사 기졸업자 또는 졸업예정자
- 지원기간 : 2020년 6월 8일(월) ~ 6월 17일(수)
- 지원서류 : 지원서(첨부된 당사 양식),
                 성적증명서 및 졸업증명서(기졸업자 또는 졸업예정자 대상)
- 지원방법 : 지원서류를 메일로 발송 (recruit@insilicogen.com)

[전형일정]

- 1차 서류전형 : 2020년 6월 19일(금) 서류합격 발표 (개별연락)
- 2차 면접전형 : 2020년 6월 22일(월) ~ 6월 24일(수)
- 최종 합격자발표 : 2020년 6월 26일(금)
- 인턴근무지 : 본사(경기도 용인시)
- 인턴기간 : 총 6주(2020년 7월 6일(월) ~ 8월 14일(금))
- 인턴혜택 : 1. 생물정보 기초 교육 커리큘럼
                  2. 기업 공통업무 기본역량 습득
                  3. 점심 제공
                  4. 수료증 발급
- 별도 공지사항 : 인턴십 기간 동안 정직원과 동일하게 출퇴근 규정 엄수
                         중도 이탈자 수료 불인정

[입사지원서 양식]

Posted by 人Co

2020/06/08 19:39 2020/06/08 19:39
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/347

 
최근 여러 분야에서 딥러닝에 대한 관심이 많아지고 있습니다.
생물정보 분야에서는 MRI나 CT 같은 의료 이미지로 학습한 뒤, 질병을 진단하는 연구가 많이 진행되고 있습니다. 그렇다면 이미지를 이용한 딥러닝은 어떤 방식으로 진행될까요?

이미지 딥러닝은 어떠한지 알고 싶어도 코드 위주의 설명이 많아, 코드가 익숙하지 않은 분들은 시작부터 벽이 세워진 느낌이 드셨을 거예요.
코드가 익숙하신 분이시든 그렇지 않은 분이시든 이미지 딥러닝의 입문자분들께 개념 잡는 것에 대해 조금이나마 도움이 되셨으면 하여 알고리즘 개념 설명 위주로 이 글을 준비하였습니다. 그럼 이미지 딥러닝을 하기 위한 알고리즘에 대해 알아보기에 앞서, 컴퓨터는 이미지 파일을 어떤 방식으로 인식하는지에 대해 알아볼까요?
 
 


우리가 이미지를 인식하는 방식과 컴퓨터가 이미지를 인식하는 방식은 많이 다릅니다. 우리는 이미지를 눈에 보이는 모습을 그대로 받아들이지만, 컴퓨터의 경우는 숫자로 된 형태로 인식합니다. 숫자는 색의 명암을 나타내며, 0에 가까울수록 어두운색이고 255에 가까울수록 밝은색입니다. 그렇다면 색상은 어떻게 표현할까요? 흑백 이미지의 경우에는 1개의 채널로, 컬러 이미지의 경우엔 RGB(R-Red, G-Green, B-Blue) 3개의 채널로 빨강, 초록, 파란색 각각의 명암을 이용하여 이미지의 색상을 표현합니다.


[그림 1] 컬러 이미지의 구조 - Insilicogen (IX Team)

컬러 이미지는 각 픽셀을 채널별로 실수로 표현된 3차원 데이터입니다. 흑백 이미지는 2차원 데이터로, 1개의 채널로만 구성되어 있습니다.
[그림 2] 컬러 이미지의 3차 구조
위의 그림처럼 높이가 4 pixel, 폭이 4 pixel의 이미지일 경우,
 
컬러 이미지 데이터의 shape은 (4, 4, 3)
흑백 이미지 데이터의 shape은 (4, 4, 1)
 
로 표현합니다.
 
컴퓨터가 이미지를 어떤 방식으로 인식하는지에 대해 간단하게 알아봤습니다. 그럼 이제 이미지 딥러닝에선 어떤 알고리즘이 주로 사용되는지 알아볼까요? 딥러닝을 이용하여 이미지를 분류할 때에는 주로 CNN(Convolutional Neural Network) 알고리즘이 많이 사용되고 있습니다. 그렇다면, 이 CNN 알고리즘이 나오기 이전에는 어떻게 학습을 했을까요?
 

  
 
CNN 알고리즘 이전에는 Fully-connected Multi-layered Neural Network의 학습 방식을 이용하여 이미지 딥러닝을 수행했습니다.
 
[그림 3] Fully-connected Multi-layered Neural Network
형상을 가졌는지에 대해 알 수 없고, 각각의 픽셀을 1차원적으로 보게 됩니다. 이러한 학습 방식으로 인하여 이미지의 크기가 커져서 픽셀의 수가 많아진다거나 은닉층(Hidden layer)의 수가 증가하면 학습시간 및 학습해야 하는 매개변수(Parameter)의 수가 기하급수적으로 증가하게 됩니다. 또한, 이미지가 살짝 회전되었거나 gif처럼 이미지가 움직이는 상태라면 이를 같은 이미지라고 인식하지 못하므로, 조금이라도 변화가 생길 때마다 새로운 입력으로 이미지 데이터를 처리해 주어야 합니다. 그럼 이미지를 분류하기 위해 Fully-connected 학습 방식처럼 이미지의 모든 픽셀이 꼭 중요할까요? 그렇지 않습니다. 이미지의 특성을 찾는 데에 중요하게 작용하는 픽셀이 있지만, 단순히 배경인 부분이라 픽셀 정보를 가지고 있지 않더라도 이미지를 구분하는 데 큰 영향을 주지 않기 때문입니다. 이미지 분류를 하는 데 중요하지 않은 픽셀은 제거하고 학습을 하기 위해 고안된 알고리즘이 바로CNN(Convolutional Neural Network)입니다.
 

 
 
그렇다면 CNN 알고리즘은 어떠한 구조를 이루고 있을까요?
 
 
[그림 3] CNN 알고리즘의 구조
 
CNN은 크게 이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나뉩니다. 특징 추출 영역은 합성곱층(Convolution layer)과 풀링층(Pooling layer)을 여러 겹 쌓는 형태(Conv+Maxpool)로 구성되어 있습니다. 그리고 이미지의 클래스를 분류하는 부분은 Fully connected(FC) 학습 방식으로 이미지 분류를 합니다.
 

 
 
합성곱이란, 주어진 이미지 데이터를 합성곱 필터(Convolution filter)를 통해 이미지 분류에 중요하게 작용할 feature들을 추출하는 데 사용됩니다. CNN 알고리즘 이전에 사용되었던 FC 알고리즘과 달리, 이미지의 형태를 유지하기 때문에 합성곱층을 지나더라도 인접한 픽셀에 대한 정보를 알 수 있습니다. 그렇다면, 합성곱에서 사용되는 합성곱 필터는 무엇일까요? 우선, CNN에서 필터는 커널(Kernel)이라고도 합니다. 필터는 이미지의 공용 매개변수(weight)로 작용하며, 주어진 이미지를 슬라이딩하면서 이미지의 feature들을 찾아냅니다. 여기서 공용 매개변수라고 하는 이유는 합성곱을 진행할 때, 하나의 이미지에 대해서 하나의 필터가 사용되기 때문입니다. 일반적으로 (3, 3)이나 (4, 4)와 같은 정사각 행렬로 정의가 되고, 주어진 이미지를 지정된 간격(Stride)만큼 순회합니다. 그럼 합성곱 필터를 이용하여 합성곱 연산은 어떤 방식으로 진행되는지 알아보기 위해, 아래의 그림으로 설명하겠습니다.
 
 
[그림 5] Convolution 연산
 
위의 그림에서 주어진 이미지 데이터의 크기는 6x6이고, 필터의 크기는 3x3입니다. 이미지를 순회하는 간격(stride)은 1입니다. 연산은 이미지와 필터가 서로 겹쳐지는 부분은 곱을, 각각의 곱은 합하는 방식으로 진행됩니다. 위의 그림에서 Result 아래에 적힌 연산을 참고하시면 이해가 더 쉬우실 거예요.
 
Fig6.Convolution_layer.gif
 
위의 그림은 합성곱 연산이 진행되는 방식입니다. 이 그림 역시 필터가 이미지를 순회하는 간격은 1입니다. 이처럼 합성곱을 진행하여 얻어진 결과를 피처맵(Feature Map, 위의 그림에서는 오른쪽의 분홍색)을 만듭니다. 여기서 피처맵은 주어진 이미지에서 특징들을 추출한 것이고, 액티베이션맵(Activation Map)이라고도 합니다. 피처맵은 여러 가지의 의미로 사용되지만, 액티베이션맵은 주로 합성곱층의 최종 출력 결과를 의미합니다.

합성곱층에서 필터와 스트라이드의 작용으로 이미지(피처맵)의 크기는 입력 데이터보다 작아지게 됩니다. 그렇다면 합성곱층을 지나면 이미지가 자꾸 줄어드는데, 계속 반복적으로 합성곱층을 지나면 이미지가 없어지지 않을까? 라는 생각이 들게 되죠. 이를 방지하는 방법이 패딩(Padding)입니다. 패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미하고, 보통 0으로 값을 채워 넣습니다.
 

 
 
위의 그림을 보면, 3x3 이미지의 외각에 0이 채워진 것을 볼 수 있습니다.
 
 

 
[그림 8] Pooling
지금까지 합성곱에 대해서 알아보았습니다. CNN 알고리즘에서 이미지 특징을 추출하는 부분에서 합성곱층 다음으로 나오는 층은 풀링층(Pooling layer)입니다. 합성곱층의 출력 데이터(액티베이션 맵)를 입력으로 받아, 출력 데이터의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용됩니다. 풀링층을 처리하는 방법으로는 Max, Average, Min Pooling이 있습니다. 정사각 행렬의 특정 영역 안에 값의 최댓값, 평균 혹은 최솟값을 구하는 방식이고, 주로 Max Pooling을 사용합니다. 앞의 합성곱처럼 인접한 픽셀값만을 사용한다는 것은 비슷하지만, 합성곱처럼 곱하거나 더하는 연산 과정이 없어서 학습이 필요한 부분이 없고 입력 데이터의 변화에 영향을 적게 받습니다. 이는 최댓값, 평균값, 최솟값 중 하나를 구하는 것이기 때문에, 입력 데이터가 조금 변하더라도 풀링의 결과는 크게 변하지 않습니다.
  

 
 
앞에서 설명해드렸던 바와 같이, CNN은 크게 특징 추출(Feature extraction) 부분과 분류(Classification) 부분으로 나뉩니다. 특징 추출은 합성곱층과 풀링층이 반복적으로 수행되고, 분류는 앞에서 추출된 Feature들이 Fully-connected layer 학습 방식을 이용하여 어떤 이미지인지 분류합니다.
 
참고) 학습시킬 이미지가 부족하시다면! 이미지 학습을 위한 open data source
 
이미지 분류하기 위해 이미지를 학습시킬 때, 하나의 클래스(ex. 강아지 클래스, 고양이 클래스)당 최소 1,000장이 필요합니다. 학습을 많이 시키면 많이 시킬수록 이미지를 분류하는 정확도는 당연히 올라갑니다. 그렇다면, 이미지 학습을 하기 위해서 많은 양의 이미지 데이터가 필요하겠죠? 딥러닝이 활성화되면서 공개 이미지를 수집하는 데이터베이스가 많아졌고, 대표적으로 ImageNet과 Kaggle 등이 있습니다. 이미지를 학습하는 데 필요한 이미지 데이터를 공개적으로 제공하는 사이트이므로, 아래 사이트를 들어가시면 이미지 딥러닝 활용에 여러 방면으로 도움이 될 것입니다. :)
 

[그림 9] ImageNet
(http://www.image-net.org/)


[그림 10] Kaggle
(https://www.kaggle.com/)


CNN 알고리즘에 대해서 더 자세하게 설명해 드리고 싶었지만, 그러면 본 취지에 맞지 않을 것 같았어요. 제가 생각하기에 이미지 딥러닝의 입문자분들께 가장 필요한 부분 위주로 이 글을 작성하였습니다. 이 글에 적힌 것들을 바탕으로 궁금한 부분이 생길 때마다 조금씩 조금씩 자료를 찾다 보면, 깨닫지 못한 사이에 이미지 딥러닝에 대해 많이 알게 되실 거예요. 조금이나마 도움이 되셨길 바라며, 너무 두려워하지 마시고 힘내시길 바랍니다. :D
 
 

Posted by 人Co

2020/06/01 19:28 2020/06/01 19:28
, , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/346

오픈소스 가상화 플랫폼, Docker

 
오늘은 복잡하고 어려운 서버관리를 효율적으로 할 수 있도록 개발된 플랫폼 ‘Docker` 대하여 알아보고자 합니다.
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼으로서 환경에 구애받지 않고 신속한 배포와 확장이 가능하다고 하는데요,
Docker 가 이 이상 어떠한 장점과 특징들을 가졌는지 아래 내용에서 소개해드리고자 합니다.
 

[그림 1] Docker

서버 관리는 어렵고 복잡합니다. 고급 개발자도 서버를 관리하기 위해서는 아기를 다루듯이 섬세한 기술이 필요합니다. 개발에 필요한 언어인 JAVA나 Python 그리고 대표적 DBMS인 오라클과 MySQL 등 서버에서 사용 중인 서비스들이 업데이트 등에 의해 버전이 바뀌게 되고 이에 따라 다양한 버전의 서비스를 서버에서 관리하게 됩니다. 이렇듯 시간이 지날수록 서버에 점점 필요한 서비스들이 많아지게 되고, 관리는 어려워집니다. 서버 관리자나 개발자들은 필요한 서비스를 효율적으로 관리할 필요성을 느끼게 되고 이런 사용자의 욕구를 충족시키기 위해 개발된 오픈소스가상화플랫폼이 'Docker’입니다.


 
2013년 3월 산타클라라에서 열린 Pycon Conference에서 Docker의 창립자, 최고 기술 책임자 (CTO) 및 최고 설계자이며 Docker 오픈 소스 이니셔티브의 창시자인 Solomon Hykes가 'The future of Linux Containers(리눅스 컨테이너의 미래)' 라는 세션을 발표하면서 처음 세상에 알려졌습니다. 'The future of Linux Containers(리눅스 컨테이너의 미래)'는 5분 남짓한 짧은 발표로 이루어졌고, Docker를 사용하여 'Hellow World'를 찍는 것을 보여주었습니다. 이후 Docker가 인기를 얻으면서 2013년 10월 Docker Inc를 설립하고 2014년 6월 Docker 1.0을 발표하였습니다. 2016년에 진행한 Docker 선호도 조사에서는 90%가 개발에 사용 중이며, 80%가 DevOps에 사용할 예정이고 58%가 운영환경에서 사용 중이라고 합니다.
 

Docker는 프로그램이나 라이브러리, 시스템 도구 등과 같은 소프트웨어를 컨테이너라는 표준화된 방식으로 패키징 합니다. 패키징 된 컨테이너는 Docker 위에서 동작하며 가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷합니다. Docker는 각 서버에 설치되며 제공된 명령어를 사용하여 컨테이너를 구축, 시작 또는 중단할 수 있습니다.




Docker : Docker에서 사용하는 컨테이너는 코드와 종속성을 함께 패키지하는 앱 계층의 추상화입니다. 여러 컨테이너가 동일한 머신에서 실행될 수 있고 OS 커널을 다른 컨테이너와 공유할 수 있으며, 각각은 사용자 공간에서 격리된 프로세스로 실행됩니다. 컨테이너는 VM보다 공간을 덜 차지하며 (컨테이너 이미지는 일반적으로 수십 MB 크기) 더 많은 응용 프로그램을 처리할 수 있습니다.

[그림 3] Docker Container

Virtual Machine : 하나의 서버를 여러 서버로 바꾸는 물리적 하드웨어의 추상화입니다. 하이퍼 바이저를 사용하면 여러 VM을 단일 컴퓨터에서 실행할 수 있습니다. 각 VM에는 운영 체제, 응용 프로그램, 필요한 바이너리 및 라이브러리의 전체 사본이 포함되며 수십 GB를 차지합니다. VM의 부팅 속도가 느려질 수도 있습니다.

[그림 4] Virtual Machine


Docker는 소프트웨어 인터페이스를 하드웨어와 비슷하게 만들어주는 반가상화와는 다르게 경량화된 방식이며 Guest OS를 설치하지 않습니다. 그리고 Docker에서는 분리된 공간을 이용해 서버 운영을 위한 프로그램과 라이브러리를 쉽게 설치할 수 있습니다. Virtual Machine과는 다르게 Host의 자원을 직접 이용할 수 있으므로 메모리 접근이나 네트워크 속도, 파일시스템이 월등히 빠르게 동작합니다. 그렇기 때문에 Host와 Docker의 컨테이너 사이의 계층과 성능 차이는 크게 발생하지 않습니다.
정리하자면, 프로그램이나 라이브러리들을 쉽게 설치와 삭제를 할 수 있으며 성능도 뛰어나고, Docker 사용자들끼리는 구축해 놓은 환경을 간편하게 주고받을 수 있습니다. 이 같은 편리함 때문에 많은 사용자가 Docker를 사용하고 있고, Stack OverFlow에서 진행한 2019 Survey에서는 Docker가 가장 널리 사용하는 플랫폼 3위, 가장 좋아하는 플랫폼 2위를 차지하였습니다. 사람들이 많이 쓰고 좋아하는 플랫폼에는 이유가 있다고 생각합니다. 이 글이 Docker를 사용하기 위한 첫걸음을 내딛는 데 조금이라도 도움이 될 수 있었으면 좋겠습니다. 감사합니다.



 

Posted by 人Co

2020/05/20 11:20 2020/05/20 11:20
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/345

DevOps 란?



최근 IT 업계에서 지속적인 소통을 통한 협업 문화가 중시되고 있는데요, 이를 위해 여러 가지 방법론 또한 등장하고 있습니다. 오늘은 이러한 소통과 협업 방식인 디봅스(DevOps)를 주제로 유용한 정보를 공유해드릴까 합니다.
 
 



[출처] DevOps
 
DevOps는 소프트웨어개발(Development) 그리고 운영(Operations)의 합성어로, 일반적 정의는 개발과 운영을 하나의 조직으로 합쳐서 팀을 운영하는 문화이자 방법론입니다.
 
[출처] Dev vs Ops

개발자들은 고객에게 검토를 요청한 변경 사항을 빨리 확인하길 원합니다. 반면 운영진은 안정성에 더 무게 중심을 두고 싶어 합니다. 일반적인 업무 프로세스상 이 둘 간의 타협은 쉽게 이뤄지지 않게 되고 시장과 고객에 대처하는 속도 또한 더딜 수밖에 없습니다. 하지만 DevOps는 이 둘의 공통 지표를 맞추고 지속적인 커뮤니케이션을 통해 차이를 줄이며 설계부터 배포까지 하나의 조직으로 협업하여 빠르게 변화하는 고객 중심의 시장에 맞춰 효율적으로 신속하게 대처할 수 있도록 하는 "문화" 라고 할 수 있겠습니다.
 




[출처] DevOpsCycle

1. 속도 : 배포까지의 작업 속도가 빨라져 고객을 위해 더 빠르게 혁신하고 시장 변화에 빠르게 대처하여 더 효율적인 비즈니스 성과를 창출할 수 있습니다
2. 신속한 제공 : 빌드에서 배포까지 소프트웨어 릴리스 프로세스를 자동화하여 새로운 기능의 배포와 이슈에 대한 대처 속도를 개선하여 고객에게 제공한 제품을 더 빠르게 혁신, 개선하여 시장 경쟁 우위를 차지할 수 있습니다.
3. 안전성 : 소프트웨어 업데이트와 변경 시의 품질 보장, 지속적인 통합과 전달을 통해 변경 사항이 안전하고 정확하게 작동하는지 테스트하고 모니터링과 로깅 방식을 통해 실시간으로 성능에 대한 정보를 얻을 수 있습니다.
4. 확장 : 자동화와 일관성이 지원되어 안전성을 보장하며 복잡한 시스템 또는 변화하는 시스템을 효율적으로 관리할 수 있습니다.
5. 협업 강화 : 개발부서와 운영부서의 긴밀한 협력을 통해 비효율성을 줄이고 시간을 절약할 수 있습니다.
6. 보안 : 자동화된 규정 준수 정책, 세분화된 제어 및 관리 기술을 사용하여 DevOps 모델을 도입할 수 있습니다.
 



1. Cross Functional Team : 팀 하나에서 개발부터 운영까지 전부 할 수 있는 인원으로 채우는 것이 아닌 각 프로세스의 담당자들을 하나씩 팀원으로 구성하는 뜻으로 서비스 기획부터 개발, 테스트, 운영 배포 등 모든 제품 개발 프로세스를 하나의 팀에서 할 수 있도록 해야 한다는 것입니다.
2. Widely Shared Metrics : 팀 구성원 전체가 기준으로 삼을 수 있는 서비스 제품에 대한 공통적인 지표를 통해 개발 후 잘 운영되고 있는지, 사용자의 반응은 어떤지 등 서비스 진행 상태를 인지할 수 있어야 한다는 것입니다.
3. Automating repetitive tasks : 반복적인 일들을 CI(Continuous Integration)/CD(Continuous Delivery) 를 이용하여 프로세스를 자동화해야 한다는 것입니다. 반복적 작업에 투입되는 시간을 줄여 작업의 효율을 높이고 빠른 서비스 업데이트가 가능하며 전체 시스템에 대한 이해도를 높일 수 있습니다.
4. Post Mortem : 서비스의 장애나 이슈가 있을 때, Fix 후 팀 전체가 공유하여 이러한 이슈들의 심각도를 판단하고 차후 같은 이슈에 대해 예방을 할 수 있습니다.
5. Regular Release : 서비스 릴리즈는 개발, 테스트 배포 과정을 거치게 되고 릴리즈가 끝난 후엔 다음 릴리즈를 위한 기능 정의 등의 과정을 거쳐야 하므로 불필요한 많은 시간이 소요될 수 있습니다. 정기적으로 릴리즈를 하게 되면 팀의 협업시점이 명확해지고 서비스의 기능을 빠르게 개선하여 고객의 VOC(Voice Of Customer)를 반영해 나갈 수 있다는 것입니다.





[출처] CI,CD,CD

1. Continuous Integration : 개발자들이 개별적으로 개발한 프로그램 소스 코드를 하나로 모아 빌드하는 통합 빌드의 과정을 특정 시점에 하는 것이 아니라 주기적으로 수행하여 통합에서 발생하는 충돌 등의 오류를 각기 다른 레벨의 자동화 테스트(단위 및 통합 테스트가 일반적)를 통해 변경 사항이 잘 통합되었는지 확인하고 이슈 발생 시 사전에 해결, 복잡성을 제거하자고 시간을 단축하기 위한 기법을 말합니다. Agile 방법론이 대두하면서 더욱 주목받게 되었고 빌드, 테스트 단계 등에서 걸리는 시간을 절약하여 빠른 시장에서의 경쟁력을 확보할 수 있습니다. CI 시스템을 구축하기 위한 핵심 구성요소는 Jenkins,Travis CI등의 CI Server,subversion,Git 등의 소스 코드 형상 관리 시스템(Source code Management), Maven, Gradle, Ant 등의 Buil Tool, 그리고 테스트 코드에 따라 자동으로 테스트를 수행해주는 JUnit, Mocha 등의 Test Tool이 있습니다.

2. Continuous Delivery : 프로그램에 적용된 사항들을 자동을 빌드, 단위 및 통합 테스트 진행에 이어서 하나의 리포지토리에 (예를 들면 Git)에 업로드되는 것을 말합니다. 이를 통하면 운영부서는 리포지토리의 프로그램을 실시간으로 프로덕션 환경에 배포가 가능할 것입니다. 이것이 효율적인 방법이 되려면 앞서 언급했던 CI의 자동화 프로세스가 제대로 구축하고 작동하여야 가능할 것입니다.
 

3. Continuous Deployment : Continuous Delivery와 개념이 유사하여 살짝 헷갈릴 수 있는 부분이지만 쉽게 말씀드리자면 Continuous Delivery는 프로덕션은 수동으로 배포하고 Continuous Deployment는 프로덕션까지 자동으로 배포하는 것입니다.
 



조직이 오래 지속하였거나 프로젝트 중간에는 이런 DevOps 방식의 "문화"를 도입하기는 쉽지 않을 것입니다. 경영자 또는 PM이 DevOps에 대해 이해가 없다면 도입하더라도 단기성, 일회성에 불과하리라 생각합니다. 이미 다른 방법론인 애자일 방법론을 도입하려 한 수많은 기업의 실패도 앞서 말씀드린 내용에 근거가 됩니다. 물론 실패한 사례만 있는 것은 아닙니다. DevOps는 아니지만 한 소셜커머스 업체에서는 애자일 방법론을 성공적으로 도입한 조직이 하나가 되어 문화를 바꾼 의미 있는 사례도 있습니다.
"한 사람의 꿈은 꿈이지만 만인의 꿈은 현실이 된다."는 말이 있습니다. 이러한 문화, 방법론 도입을 수동적으로 도입하는 것보다는 직급을 떠나 조직 전체가 이를 공감하고 이해하여 능동적으로 받아들이고 형성할 자세가 되어 있어야 한다고 생각합니다. 고객 중심으로 빠르게 변화하는 시장에 알맞게 대응하기 위해 Google, Facebook, Netflix 등 세계 유명 기업들도 개선된 개발 방법론들을 도입하여 시장에 발맞춰 나가고 있습니다. DevOps를 잘 적용했을 때 이전보다 배포주기 46배, 개선속도 440배, 복구시간 96배, 매출 20% 신장 등 좋은 효과를 얻고 있는 사례들이 있는 만큼 조직에 알맞게 DevOps, 또는 개선된 개발 방법론을 도입하여 업무의 효율성과 만족도 향상 그리고 빠르게 변화하고 있는 시장에서의 경쟁력을 가져보는 것은 어떨까요.


Posted by 人Co

2020/05/07 08:16 2020/05/07 08:16
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/344

신종 코로나바이러스와 진단키트


 
지난 COVID-19에 관한 몇 가지 포스팅에 이어서 오늘은 신종 코로나바이러스(COVID-19) 진단키트에 대하여 알아볼까 합니다.
 
최근 한국의 바이오 기업이 제조, 생산하는 진단키트들의 높은 정확도와 세계적 찬사를 받으며 그 존재감이 날로 커지고 있는데요, 이탈리아, 스페인, 프랑스, 독일과 같은 유럽 국가를 비롯하여 미국에까지 수출하고 있습니다. 특히 미국 수출건의 경우 까다롭기로 유명한 FDA까지 긴급사용승인을 받아 한국의 진단키트에 대한 대내외적 인지도가 어느 정도인지 가늠해볼 수 있습니다. 이렇듯, 진단키트가 무엇이기에 이토록 한국의 진단키트들이 찬사를 받는지, 신종 코로나바이러스에 진단키트가 중요한 이유가 무엇인지 해당 포스트를 통해 유익한 정보 많이 얻어가시길 바랍니다!




최근 신종 코로나바이러스(SARS-CoV-2)로 인해 많은 사람들이 진단키트에 대한 관심이 높아졌습니다. 진단키트는 각종 질병, 임신 여부, 건강 상태, 친자 확인 등 여러 분야에서 각 목적에 맞게 필요한 시약 및 도구 등을 포함한 생화학 실험 도구를 뜻합니다. 신종 코로나바이러스(SARS-CoV-2)가 전 세계 보건의료를 극심하게 뒤흔들고 있는 상황에서 한국은 진단키트를 통해서 신속 정확하게 진단하여 대처하고 있습니다.



특히 '방역 한류'라 불릴 정도로 국내에 여러 업체들(씨젠, 솔젠트, 시선바이오 등)에서 제작한 진단키트를 전 세계 곳곳에서 구하려고 힘쓰는 상황입니다. 전 세계에서도 여러 업체가 진단키트를 생산하나 각국의 법적 규제, 생산 라인, 기술 등의 문제로 국내산 진단키트만큼 생산량도 많지 않고 정확도도 낮은 경우가 많습니다. 진단키트에 활용되는 여러 가지 기술은 배양법, 항원-항체 반응, qRT-PCR 등이 있으며 현재 승인이 된 방법은 항원-항체 반응, qRT-PCR입니다.


 



 

 


일반적으로, 코로나바이러스는 전염성은 강하지만 병원성이나 치사율은 낮은 바이러스입니다. 그러나 신종 코로나바이러스(SARS-CoV-2)는 전염성도 강하면서 제법 치명적인 병원성을 가지는 특이 변종입니다. SARS-CoV-2의 WHO 공식 치사율은 4월 현재 약 6.7%입니다.



코로나바이러스 중에서 치사율이 1%를 넘기는 사례는 SARS(치사율 9.6%), MERS(치사율 38%) 정도를 제외하면 거의 없습니다. MERS와 SAS가 치사율이 더 높아 보이지만 SARS-CoV-2는 현재 진행형이며, 언제까지 진행될지 예상할 수 없다는 문제가 있습니다. 신종 코로나바이러스에 대한 백신 및 치료제가 개발되지 않은 상황에선 감염자를 빠르고 정확하게 판별해서 격리하고 치료하는 게 최선의 방법입니다.




진단키트를 제작하기 위해선 목표하는 질병을 일으키는 세균이나 바이러스 등에서 타 병원체와는 다른 유전자 변이를 찾아내야 합니다. 이를 위해선 생물정보 기술을 활용하여 유전자 변이를 더 쉽게 찾아낼 수 있습니다.





인체 내에 바이러스가 들어올 경우 IgM·G(Immunoglobulin M·G) 항체가 형성됩니다. 신종 코로나바이러스(SARS-CoV-2)가 몸속에 소량이라도 들어오면 이를 방어하기 위해 IgM·G 항체가 생성됩니다. 이렇게 생성된 항체와 결합하는 항원을 통해서 진단할 수 있습니다. 물론 신종 코로나바이러스(SARS-CoV-2)만 특이적으로 검사할 수는 없으나 의심 환자에 대한 광범위한 검사를 진행하여 1차 선별이 가능합니다. 이후 정밀 검사(qRT-PCR등)를 통해 최종 감염 여부를 확인합니다. 1차 선별을 유전자 방식으로만 진행하게 되면 격리된 검사시설과 고가의 장비, 시약, 검사를 수행할 전문 임상 병리사 등이 필요하므로 의심 환자에 대한 광범위한 검사가 어려운 점을 보완할 수 있는 장점이 있습니다.





qRT-PCR은 PCR 증폭 산물을 실시간으로 모니터링하는 해석 방법으로, 기존의 PCR 방법으로는 측정하기 어려운 정확한 정량이 가능합니다. 또한, PCR 원리를 기본으로 하고 있으므로 검출감도가 높고, mRNA 발현 해석이나 SNPs typing 등의 유전자 해석에 요구되는 필수 기술입니다. qRT-PCR의 실험 조작은 비교적 간단하며 종래의 PCR법과 거의 유사하다고 생각하면 됩니다. 현재 qRT-PCR을 기반으로 하는 진단키트에 경우 의삼환자에서 객담(가래)을 추출해 코로나19 바이러스가 있는지를 검사하는 방식으로 정확하게 검출할 수 있습니다. 특히 1~2일 걸리는 배양법에 비해 6시간 가량이면 결과를 도출할 수 있어 신속한 진단에 크게 이바지한 방법입니다.


신종 코로나바이러스(SARS-CoV-2)를 특정할 수 있는 유전자 N, E, S, RdRp, Orf1a, Orf1ab 중에서 최소한 두개 이상의 유전자를 증폭하는 Specific primer를 통해서 감염의 여부를 체크할 수 있습니다.



코로나19 환자에게서 위에 나열된 코로나19 바이러스의 모든 유전자를 완전히 다 검출해서 완벽하게 대조하면 좋겠지만, 그건 오래 걸리고 비용면에서도 효율성이 떨어지기 때문입니다. 그래서 국가마다 검출 유전자는 조금씩 다르지만, 보통은 가장 변이를 덜 일으킬 것으로 보이는 유전자를 최소 2개 이상 검사해서 둘 다 '양성' 반응이 나타나는지를 보고 코로나19 감염 여부를 판단하고 있는 겁니다.
 



신종 코로나바이러스(SARS-CoV-2) 감염증의 사례로 알 수 있듯이 진단키트를 활용하여 빠르게 감염자를 선별하고 격리하여 2차 피해를 예방하고 조기에 치료하는 방법이 제일 좋은 방법입니다. 또한, 병원체 (바이러스, 세균 등)은 빠르게 변이되고 돌연변이를 통해 또 다른 질병을 일으킬 수 있으므로 이에 우리는 생물정보 기술을 통해 신속하게 병원체를 연구 및 분석하여 기존의 병원체와의 차이점을 찾아내고 진단키트로 제작하여 대처해야 합니다.
현재 (주)인실리코젠에서는 신종 코로나바이러스(SARS-CoV-2) 연구를 포함한 감염병 연구를 위해 생물정보 솔루션인 CLC Genomics ProSuite(CLC Genomics Workbench를 포함한 바이러스 및 미생물 NGS 분석 패키지)와 Ingenuity Pathway Analysis(IPA, 유전자 네트워크 분석 솔루션)의 단기 라이선스를 지원하고 있으니 신청하시면 6월 15일까지 사용해보실 수 있습니다.


COVID-19 연구를 위한 단기 라이선스 신청하기


하루 속히 신종 코로나바이러스(SARS-CoV-2) 감염 확산이 종식되길 바라며, 앞으로 이러한 생물정보 솔루션들의 활용을 통해서 바이러스 및 병원체 발생을 조기에 감지하고 제어하는 공중 보건의 보호에 도움이 되길 바랍니다.

Posted by 人Co

2020/04/26 16:36 2020/04/26 16:36
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/343



지난해 12월부터 지금까지 전 세계 보건의료를 극심하게 뒤흔들고 있는 SARS-CoV-2의 유전체는 29.8kb 염기서열로 구성되어 있으며 27개의 단백질을 코딩하는 14개의 ORF(Open Reading Frame)를 가지고 있습니다.

이번 SARS-CoV-2 관련한 환자 유래 바이러스 유전체 시퀀싱 데이터는 GISAID(https://www.gisaid.org/) 사이트에서 모두 공개하고 있습니다. 데이터베이스 내 유전체 계통분석 결과를 보면 바이러스 변이가 얼마나 빠르게 생겨나고 어떻게 확산되고 있는지 패턴을 확인할 수 있습니다.

NGS 장비를 활용한 유전체 해독 기술이 지속적으로 발전하면서 이번 COVID-19 사태에서는 메르스 때와는 다르게 감염 환자가 발생하고 늦어도 일주일 안에 유전체 정보가 해독되어 공개되는 것을 볼 수 있습니다.



중국 현장에서는 초소형 유전체 해독 장비인 MinION(Oxford Nanopore)을 활용해 환자 유래 SARS-CoV-2 유전체를 현장에서 24시간 내 시퀀싱 하는 데 활용하고 있으며, 중국 전역에서 발생한 다양한 이 바이러스 유전체 데이터 수백 개가 동시에 계속해서 공개되고 있습니다.



[출처] NANOPORE사의 MinION

MinION을 사용한 시퀀싱은 SARS-CoV-2의 진화를 추적하기 위한 빠르고 효율적인 방법입니다. 실험실 장비에 비용적으로 거의 투자하지 않고 몇 시간 안에 시퀀싱을 수행할 수 있지만, 샘플의 품질이 낮고 다른 출처의 RNA로 오염된 경우가 많기에 생물정보 분석이 굉장히 중요합니다.

이번 블로그에서는 metatranscriptomics 데이터의 한계를 극복하고, CLC Genomics Workbench를 사용하여 Oxford Nanopore MinION 장비에서 시퀀싱된 데이터를 최대한 활용할 수 있는 방법을 안내하도록 하겠습니다.

분석할 데이터는 중국 우한의 해산물 시장에서 처음 폐렴이 발생하였을 때의 샘플을 MinION 장비로 시퀀싱한 메타전사체 케이스입니다[Chan et al., 2020].

환자로부터 가래와 인후에서 면봉을 사용하여 기관지 폐포를 통해 샘플링 하였고, 질병의 직접적인 원인이 되는 바이러스 외의 RNA가 함께 포함되어 있으며, 염기서열에 비의존적으로 무작위 primer를 사용하여 새로운 병원체의 동정이 가능한 SISPA(Single-Primer Amplification) 프로토콜을 사용하였습니다.



CLC Genomics Workbench 20.0 버전 이상에서는 "Long Read Support(Beta)" 플러그인을 지원합니다. 해당 플러그인을 설치하면 Oxford Nanopore의 MinION 장비에서 시퀀싱한 raw 데이터를 import 할 수가 있습니다.



(Long Read Support Plug-in)

직접 시퀀싱한 데이터 외에 공개된 데이터를 기반으로 분석을 진행해보고 싶다면, SRA 데이터베이스를 연결하여 NGS raw 데이터와 메타데이터를 다운로드하여 분석에 사용할 수 있습니다.

분석에 활용한 데이터도 해당 논문 정보를 토대로 가래과 인후에서 면봉으로 채취한 2개의 샘플을 CLC Genomics Workbench내에 연동된 SRA에서 다운로드 해보았습니다.



(Search for reads in SRA)

더불어 변이 분석을 위한 참조 유전체 서열도 우한에서 등록된 최초의 SARS-CoV-2 바이러스 서열(MT135044)을 NCBI search 기능을 이용하여 준비하였습니다.



(NCBI search & Download)

 



해당 샘플에서는 바이러스 서열 농축을 위한 SISPA 프로토콜을 사용하였기 때문에, SISPA adapter를 제거하기 위한 adapter 서열을 별도로 저장한 후 trimming 과정을 통해 시퀀싱된 서열 내에 포함된 adapter를 제거하였습니다.



(
Adapter trim list)

 




Long Read Support 플러그인은 PacBio 또는 Oxford Nanopore 장비에서 생산된 long read의 de novo assembly와 reference mapping 분석을 지원합니다.

Quality 및 adapter trimming 과정을 거친 2개의 시퀀싱 데이터는 중국 우한에서 등록된 SARS-CoV-2 참조 유전체를 기준으로 맵핑을 진행하였고, 전체 시퀀싱된 서열 중에서 샘플 내 코로나 바이러스 서열이 포함되어 있음을 확인할 수 있었습니다.



(
Read mapping)

맵핑 리포트를 확인해보면, 인후 샘플에서는 채취된 샘플 내에 바이러스가 극소량이라 host genome 데이터가 많이 포함되었을 가능성을 나타냅니다.



참조 유전체 서열에 맵핑된 리드들을 기반으로 변이 분석을 수행할 때 CLC Genomics Workbench에서는 3가지 검출 알고리즘을 제공합니다.

이 중 Fixed Ploidy Variant Detection의 경우는 유전체 배수체를 기준으로 germline 변이 분석에 최적화된 알고리즘이지만, 시퀀싱 에러 모델도 함께 적용되어 있으므로 Oxford Nanopore 데이터의 변이 분석에 효과적일 수 있습니다.

분석 결과, 가래 샘플에서는 5개의 변이가 발견되었고, 인후 샘플에서는 3개의 변이가 발견되었습니다.



(Variant calls)

샘플링 날짜를 살펴보았을 때, 참조 유전체 서열인 MT135044의 경우는 2020년 1월 28일이고 MinION 2개의 시퀀싱 샘플은 2020년 1월 11일로 활동적인 발병 상황에서 시간이 지남에 따라 돌연변이를 추적할 수 있음을 나타냅니다.

추가로 해당 변이의 아미노산 변화에 영향을 미치는지도 확인할 수 있으며, 이를 기반으로 단백질 구조에도 변화를 일으키는지 3차원 형태로 확인할 수 있습니다.



(Protein model of a non-synonymous variant)

 



각 샘플별로 참조 유전체 서열에 맵핑된 consensus 서열을 별도로 저장하여 NCBI의 BLAST를 수행하면, 다른 샘플의 SARS-CoV-2 서열들과도 비교할 수 있습니다.

COVID-19 사태로 별도의 BLAST DB도 운영하고 있으므로, 필요 시 local 환경에 Betacoronavirus DB를 다운로드 받아서 Local BLAST 분석도 가능합니다.



(BLAST output hit table)

 



더불어 여기까지 분석은 워크플로우를 만들면 다량의 샘플을 분석할 때 굉장히 효율적으로 쉽게 운영할 수 있습니다.


 
 (A workflow reproducing the bioinformatics pipeline)

이처럼 생물정보 분석은 전체 유전체 수준에서 전염병의 원인이 되는 병원체를 분석하고 비교할 수 있습니다. 더불어 메타 데이터를 이용하여 환자 유래의 바이러스 및 병원체의 유전체 정보를 함께 비교하면 발생 원인을 역으로 추적할 수 있습니다.

현재 (주)인실리코젠에서는 COVID-19 연구를 포함한 감염병 연구를 위해 CLC Genomics ProSuite(CLC Genomics Workbench를 포함한 바이러스 및 미생물 NGS 분석 패키지)와 Ingenuity Pathway Analysis(IPA, 유전자 네트워크 분석 솔루션)의 단기 라이선스를 지원하고 있으니 신청하시면 6월 15일까지 사용해보실 수 있습니다.



하루 속히 COVID-19 감염 확산이 종식되길 바라며, 앞으로 이러한 생물정보 솔루션들의 활용을 통해서 바이러스 및 병원체 발생을 조기에 감지하고 제어하는 공중 보건의 보호에 도움이 되길 바랍니다.



  • Chan, J. et al., A familial cluster of pneumonia associated with the 2019 novel coronavirus indicating person-to-person transmission: a study of a family cluster. Lancet, 395(15):514-523
  • Aiping Wu, Yousong Peng, et al., Genome Composition and Divergence of the Novel Coronavirus (2019 nCoV) Originating in China. Cell Host and Microbe, 27
  • GISAID, https ://www.gisaid.org/epiflu applications/next betacov app/

작성 : insilico Lab 김경윤 책임

Posted by 人Co

2020/04/14 10:52 2020/04/14 10:52
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/342

p-value(유의 확률)의 역설



전 세계 30만 명이 넘는 확진자와 증가세를 보이는
코비드-19(COVID-19, Corona virus disease 2019)!
세계보건기구 WHO가 최고 경보단계 '팬데믹(pandemic)'을
선언한 지금 어느 때보다 바이오 연구가 높은 관심과 집중을 받고 있습니다.
오늘은 이와 관련한  p-value에 대해 알아보도록 하겠습니다!
 
먼저 p-value란 무엇일까요? 불과 서너 달 사이 코비드-19와 관련하여 출판된 논문만 1만여 편에 달하는데요. (국제 코비드-19 연관 연구 현황) 확산세 경감과 치료제, 백신 개발 등 다양한 생명연구에서 사용되는 통계지표 p-value! 그 정의부터 연구사례까지 차근차근 보겠습니다!

p-value 정의
p-value(유의 확률, significance probability)
p-value는 '귀무가설(Null hypothesis)이 맞는다고 가정할 때 얻은 결과보다 극단적인 결과(관측 결과)가 나타날 확률'로 정의됩니다. 일반적으로 p-value < 0.05 혹은 0.01을 기준으로 합니다. 계산된 p-value가 기준값보다 작은 경우 귀무가설을 기각하는 것으로 즉, 극단적으로 귀무가설이 일어날 확률이 매우 낮은 상태를 의미합니다.
 
단측검정(위 : left-tail p-value, 아래 : right-tail p-value)



코비드-19 연구 단측검정 사례 : 지난 3월 19일에 한국방사선학회지(Korean J Radiol)에 게재된 논문입니다.(Korean J Radiol, 2020) 이 연구의 가설은 '코비드-19 감염 천식 증상을 보이는 환자 중 폐섬유화(fibrosis)가 나타난 경우는 나이가 많을수록 높다.'는 것입니다. 귀무가설은 '환자 중 섬유화가 일어난 사람과 일어나지 않은 사람의 평균 연령은 같다.' 입니다 . 여기서 세워진 가설은 '섬유화가 같이 일어난 환자의 평균 나이가 일어나지 않은 환자보다 많다.' 라고 할 수 있습니다. 이렇게 대립가설에서 '높다.' 혹은 '낮다.' 라는 방향성이 있는 경우 우리는 단측검정을 사용합니다.
 
양측검정



[출처] 유의 확률

코비드-19 연구 양측검정 사례 : 지난 2월 Cell Discovery에 게재된 논문입니다. ACE2 라는 SARS-coronavirus 수용체 단백질의 서열이 인종 별로 차이가 있는지를 확인한 연구입니다.(Cell Discov, 2020) 귀무가설은 인종 간 단백질 서열의 '차이가 없다.'이고 대립가설은 '차이가 있다.' 입니다. 이렇게 우리가 주장하는 가설의 방향성이 정해지지 않았을 때 우리는 양측검정을 사용할 수 있습니다.
 
미국통계학회(ASA, American Statistical Association) 2016 성명서
우리는 연구 과정에서 수립한 가설을 증명하기 위한 척도로 p-value를 사용합니다. 즉, 가설이 참인지 거짓인지를 가려내는 갈림길에 서게 되는 것이죠. 앞서 '극단적인 결과가 실제로 관측될 확률' 부분을 잘 읽어보세요! p-value=0.05라는 것은 귀무가설을 참이라고 가정할 때 대립가설에 따른 결과가 우연히 일어날 확률이 5%라는 것을 의미할 뿐, p-value 그 자체로는 어떤 가설의 참/거짓 여부를 판단하는 지표가 될 수 없다는 것이죠.
 
2016년 3월 미국통계학회는 이러한 과학자들의 p-value에 대한 의존성에 일침을 가합니다.
성명의 6가지 원칙 원문:미국통계학회, 2017
1. P-values can indicate how incompatible the data are with a specified statistical model. 
 - P-value는 주어진 데이터가 얼마만큼 통계모델을 따르지 않는지를 나타낼 수 있다.
2. P-values do not measure the probability that the studied hypothesis is true, or the probability that the data were produced by random chance alone.
 - P-value는 대립가설이 참일 확률, 또는, 우연히 발생할 확률을 측정하는 값이 아니다.
3. Scientific conclusions and business or policy decisions should not be based only on whether a p-value passes a specific threshold.
 - 어떤 과학적, 정책적인 결론의 근거로 p-value만을 그 지표로써 사용해서는 안 된다.
4. Proper inference requires full reporting and transparency.
 - 합당한 추론을 위해 완전한 보고와 투명성이 보장되어야 한다.
5. A p-value, or statistical significance, does not measure the size of an effect or the importance of a result.
 - p-value는 연구 결과에 중요성이나 효과의 크기를 측정한 값이 아니다.
6. By itself, a p-value does not provide a good measure of evidence regarding a model or hypothesis. 
 - p-value 자체만으로는 모형 또는 가설에 대한 좋은 증거가 되지 못한다.


논지는 'p-value 자체는 내가 세운 가설이 참인지 거짓인지를 판단하는 근거의 하나일 뿐이다.' 입니다. 즉, 이 값이 나의 연구 결과의 중요성이나 효과의 크기를 설명하는 데 있어서 어떤 근거를 제시하지 않는다는 것입니다. 여기서 오해하시면 안 됩니다. 미국통계학회는 p-value가 갖는 의미를 곡해하지 말고 본 의미에 맞게 사용하고 해석하자는 것이 핵심입니다. 통계 도구를 사용하는 많은 사람이 쉽게 빠지게 되는 오류중의 하나인 '확실성'에 대한 추종은 그동안 p-value를 일종의 절대적 지표로써 사용되게 하였습니다.

p-value의 오용
그렇다면 우리가 겪을 수 있는 p-value에 의존한 결론 도출이 가져오는 오류는 어떤 것들이 있을까요? 아래 두 가지 오류를 살펴보도록 하겠습니다.

1. 2종 오류(Type II error)로 인한 실제 의미 있는 결과의 배제
2. 기준점 5%를 맞추기 위한 지나친 표본 수의 증가

첫 번째 오류는 이렇습니다. 질병 A 환자군과 정상인 군에서 유전자 B 발현 값 평균을 검정한 결과 p-value=0.06가 나왔다면 우리는 유전자 B와 질병 연관성이 없다고 결론을 내려왔습니다. p-value의 정의로 해석해보면 다음과 같습니다. '질병 A 환자군과 정상인의 유전자 B 발현 값 평균이 같을 확률은 6%이다. = 100번의 테스트 중 6번의 결과가 A, B에서 동일하게 확인되었다.' 뭔가 이상하지 않나요? 전자는 p-value 0.05 이하의 경우 유(有) 의미(반대로 p-value 0.05 초과는 무(無)의미)하다는 확정성에 근거하여 질병 A와 유전자 B 연관성을 부정하였습니다. 하지만 실제로 4%, 5%, 6%가 유/무의미를 결정지을 만큼의 절대적 기준이 될 수 있을까요?
두 번째 오류는 먼저 p-value 계산에 사용되는 통계치인 Z 통계치(Z statistic) 산정식입니다.



뭔가 이상한 점을 찾으셨나요? 바로 'n' 표본 수입니다. 동일한 표본 평균과 분산을 가질 때 이 n이 커지게 되면 p-value는 낮아지지는 경향이 있습니다.

마무리
이번 글에서는 통계학에서의 p-value의 의미와 해석 방법 그리고 오용했을 때 발생할 수 있는 오류에 대해 살펴보았습니다. 어떠신가요? 그동안 여러분들을 옭아매던 p-value < 0.05의 굴레에서 벗어나셨나요? 생물학에는 정말이지 셀 수조차 없는 변수들이 존재합니다. 그중에서 질서를 찾기 위해 하나의 지표로써 p-value는 분명히 의미를 갖습니다. 통계 도구의 올바른 적용과 해석으로 가치 있는, 즐거운 연구 되시기를 바랄게요~!

참고문헌

작성자 : RDC 경동수 주임

Posted by 人Co

2020/03/25 16:11 2020/03/25 16:11
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/341



« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : ... 38 : Next »