Jupyter notebook (주피터 노트북) Start

BioinformaticsAndMe





1. Jupyter notebook?


: Jupyter notebook은 코드/수식/미디어/텍스트 등의 문서를 만들고 공유할 수 있는 오픈소스 웹 프로그램

*코드/수식/미디어/텍스트 등을 하나의 문서로 표현 가능

: Ipython 커널 기반의 대화형 파이썬 셸

: 터미널 shell + 웹 기반의 데이터 분석 Notebook 제공

: 데이터 분석 Interactive Shell의 표준으로 널리 사용됨

https://jupyter.org/index.html





2. Jupyter notebook 실행


: Jupyter notebook 실행은 Anaconda prompt 환경에서 수행됨 (주피터 노트북은 설치/실행의 다양한 방법들이 존재)

*아나콘다 설치 → https://bioinformaticsandme.tistory.com/153

: Jupyter notebook 실행 과정

1) Anaconda Prompt 실행

2) cd(change directory) 커맨드로 작업 폴더로 이동

*작성된 코드가 작업 폴더에 저장됨

3) 이동 후, 'jupyter notebook'을 입력







3. Jupyter notebook 살펴보기


ㄱ) python3 notebook 파일 생성하기


ㄴ) Notebook에서 작성된 내용은 다양한 형식으로 다운 가능 (기본: .ipynb)


ㄷ) 'Find and Replace'로 특정 단어를 찾거나 대체할 수 있음 (단축키 f)





4. Jupyter notebook 단축키


▶ Enter : 편집 모드

Ctrl + Enter : 셀 실행

▶ Shfit + Enter : 셀 실행 후, 아래 셀 선택

▶ Alt + Enter : 셀 실행 후, 아래 셀 삽입

▶ Shfit + m : 아래 셀과 합치기

a : 셀 위에 새로운 셀 삽입

b : 셀 아래에 새로운 셀 삽입

▶ x : 셀 잘라내기

: 셀 복사하기
: 셀 붙여넣기
: 찾기 및 바꾸기
d, d : 셀 지우기
: 지웠던 셀 되돌리기
: 마크다운 변환
: 코드 변환

 Command mode (명령모드)

 Edit mode (편집모드)

 - 셀 외부 상태

 - ESC 또는 cell 밖을 클릭하면 command mode로 바뀜
 - 왼쪽 바 색깔 파란색

 - 코드 실행 시 사용

 - 셀 내부 상태

 - Enter 또는 cell을 클릭하면 edit mode로 바뀜
 - 왼쪽 바 색깔 초록색

 - 코드 작성 시 사용 






#Reference

1) https://jupyter.org/index.html

2) https://github.com/jupyter/notebook/blob/master/docs-translations/ko-KR/Installation.md

3) https://en.wikipedia.org/wiki/Project_Jupyter

4) https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/





Jupyter notebook (주피터 노트북) End

BioinformaticsAndMe

'Program' 카테고리의 다른 글

[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
API 기초 학습  (0) 2019.09.26
Docker 설치  (0) 2018.09.03
Docker 시작하기  (1) 2018.07.17
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

[Kubernetes] 쿠버네티스 소개 Start

BioinformaticsAndMe





Kubernetes (쿠버네티스)


: 쿠버네티스는 디플로이 자동화/스케일링/컨테이너 어플리케이션 관리를 위한 오픈 소스 시스템

: 구글의 10년 경험으로 설계되었고, 현재 리눅스 재단에 의해 관리

: 머신 클러스터의 시작/중지/업데이트/운영관리를 안정적인 자동화 상태로 운영 가능

: kube, k8s(= 'k' + 8 letters + 's')라고도 불림





Kubernetes 성장의 이유


1. Kubernetes helps you move faster


2. Kubernetes is cost efficient


3. Kubernetes is cloud agnostic


4. Cloud providers will manage Kubernetes for you


https://blog.newrelic.com/engineering/what-is-kubernetes/







#Reference

1) https://people.redhat.com/~eparis/kubernetes/kube.pdf

2) https://ko.wikipedia.org/wiki/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4

3) https://blog.newrelic.com/engineering/what-is-kubernetes/




[Kubernetes] 쿠버네티스 소개 End

BioinformaticsAndMe



'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
API 기초 학습  (0) 2019.09.26
Docker 설치  (0) 2018.09.03
Docker 시작하기  (1) 2018.07.17
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

API 기초 학습 Start

BioinformaticsAndMe






왜 API가 필요한가?

1. 데이터가 급속하게 변화된

주식시장의 주가를 생각해보자. 시시각각 변하는 주가를 웹사이트에서 매순간 다운받고, 로딩하는 일은 소모적인 일이다.

2. 변화된 작은 부분을 원한다

트위터의 코멘트를 생각해보자. 트위터에 달린 코멘트 몇 개를 얻기 위해, 트위터 모든 DB를 내려 받는 것은 슬픈 일이다.

3. 반복적인 작업이다

날씨 정보를 얻고싶다. 아침마다 기상청에 들어가 날씨 데이터를 다운받는 일은 힘들다..



위 언급된 이유 중 하나로 우리는 API를 시작한다







그래서 API가 뭐지?

: Application Program Interface

: 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
: 컴퓨터 코드를 사용하여 데이터를 검색하거나, 데이터를 보낼 수 있는 서버


API로부터 데이터를 받고자 할 때, 말그대로 Request(요청)가 필요하다.

Request는 모든 웹상에서 사용된다.


예를 들어, 방문자들이 여기 블로그 포스트(bioinformaticsAndMe)를 방문했을 때,

방문자의 웹브라우저는 bioinformaticsAndMe 웹 서버에 Request를 보낸다.

요청을 받은 bioinformaticsAndMe 서버는 응답하여 해당 콘텐츠를 보여준다







#Reference

1) https://www.dataquest.io/blog/python-api-tutorial/

2) https://www.testdevlab.com/blog/2018/06/an-introduction-to-testing-apis-using-rest-assured/

3) https://ko.wikipedia.org/wiki/API






API 기초 학습 End

BioinformaticsAndMe

'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
Docker 설치  (0) 2018.09.03
Docker 시작하기  (1) 2018.07.17
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

Docker 설치 Start.

BioinformaticsAndMe




Docker Installation을 진행해보자.



Docker의 최대 장점 중 하나는 어느 OS에서도 쉽게 설치가 가능하다는 점이다.

리눅스 모든 계열뿐만아니라 맥, 윈도우에서도 설치가 가능하다.

이 포스팅에서는 'Ubuntu 16.04' 를 기준으로 설치과정을 살펴보겠다.





1. Uninstall old versions

아래 명령어로 혹시 나도 모르게 설치해놨을지 모를 구버전 docker를 먼저 제거해준다.

구버전을 제거해주지 않고 진행하면, OS 내에 충돌이 일어나 설치가 안된다.

'/var/lib/docker' 는 Docker에 관련된 이미지, 컨테이너 정보 등등이 저장되는 곳이다.


$ sudo apt-get remove docker docker-engine docker.io

$ sudo apt-get purge docker-ce

$ sudo rm -rf /var/lib/docker




2. Install Docker CE

CE는 Community Edition이란 의미이다. EE(Enterprise Edition) 버전도 있지만, 대부분 일반 개발자들은 CE를 사용할 듯 싶다.

Docker 친절하게도 3가지 방법 중 하나를 선택해 설치를 진행할 수 있다.


1) Install using the repository : 호스트 저장소에 Docker를 등록해 설치

2) Install from a package : Docker 패키지를 다운받아 설치

3) Install using the convenience script : 설치스크립트를 다운받아 실행 설치


3가지 방법 모두 어렵지 않으므로 기호에 맞게 진행하면 되겠다.

필자는 개인적으로 3번째 방법이 제일 편했다.


'get-docker.sh' 란 이름의 sh 파일을 다운받아 실행해주면 설치 끝이다..


$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh



get-docker.sh

https://get.docker.com/




마무리하며..

사실 Docker 설치는 구글링하면, 여러 전문가분들이 쉽게 설명해주셨다.

참고로 Docker는 버전을 계속 업데이트 중이다. 공식 홈페이지에 있는 최신 버전은 '18.03.0 ce' 다.

간혹 다른 사람들이 올려놓은 Docker 관련 스크립트가 나한테만 안먹힐 때가있다.
ㅜㅜ굉장한 삽질끝에 알아낸 것은..
Docker 버전에 따라 command가 조금씩 달라지거나, 새롭게 추가 혹 제거된 것들이 있다.

똑같이 했는데 계속 오류가 났다면 Docker 버전을 점검해보는 것이 좋겠다...ㅠ





#Docker 공식홈페이지에서 자세한 설치과정을 볼 수 있다.

https://docs.docker.com/install/linux/docker-ce/ubuntu/





Docker 설치 End.

BioinformaticsAndMe

'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
API 기초 학습  (0) 2019.09.26
Docker 시작하기  (1) 2018.07.17
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

Docker 시작하기 Start.

BioinformaticsAndMe



#Docker 가 뭘까? 위키백과 정의를 살펴보면.. 아래와 같다.

도커(Docker)리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.

도커 컨테이너는 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

빨간색으로 표시해놓은 것이 Docker의 핵심이자, 그러한 이유로 많은 유저들이 사용 중이다.

구글, 아마존 등 자사시스템이나 클라우드 환경에서 Docker 활용은 엄청나다.


위 그림이 Dokcer의 마스코트 흰수염고래?인데, 저 고래가 나르는 Container(컨테이너)가 별개의 소프트웨어 정도라 생각하면 되겠다.

음.. 저 고래가 우분투에 가서 자리잡으면 저 컨테이너에 있는 소프트웨어를 사용할 수 있고,

맥으로 가던, 윈도우로 가던 자리만 잡아주면 컨테이너를 사용할 수 있다 (설명이 너무 유치해서 죄송합니다).



#자.. 그래서 Bioinformatics를 공부하는 생물전공자가 왜 Docker 에 관심이 생겼을까?

사실 여러가지 이유가 있는데, 오늘은 처음 접했던 이유만 말하겠다.

생물정보학 분석①자동화 ②유동화 때문이었다.

①자동화 : 우리가 알고 있듯이, 생물정보학 분석이 툴 하나 돌려서 끝나는건 거의 없다. 뭐 NGS calling(QC-Alignment-Calling) 과정도 GATK 가이드라인을 철저히 따라하면 Step이 10개가 넘는다. Docker를 사용하면 전반적인 분석과정을 모듈화해 Automation 하기 좋다. 뭐 나중에 계속 얘기하겠지만 버전 관리나 파라미터 조절이 쉽다.

②유동화 : 내 실험실에 Bioinformatics 파이프라인을 다 완성했었는데, 서버를 업그레이드 했더니.. 안된다.. 이런 경우가 꽤 흔하다. 대부분의 툴이 특정 환경에 맞추어 제작된 것이기에 OS 변동이 크다면 먹통이 된다. 또한,  A회사에서 작업하던 파이프라인을 B회사에 곧바로 사용할 수없다. 하지만 Docker는 앞에 언급한 모든 것을 유동적으로 적용시킬 수 있다.


https://f1000research.com/articles/4-997/v1

위 논문에서 참조한 아래 그림을 살펴보자.

#전형적인 NGS pipeline for variant calling 을 Docker Container 를 이용해 파이프라인화 했다.

1. Pre-alignment quality control

2. Sequence alignment

3. Raw alignment processing (e.g. local realignment around candidate indel sites and base quality score recalibration)

4. Post-alignment quality control

5. Variant calling



# 또한, 'BioContainer' 라는 주제로 생물정보학 분석 툴들을 모아둔 Docker 사이트도 존재한다.

https://hub.docker.com/u/biocontainers/

한 번 다운받아서 tutorial대로 실행해보면 간단하게 분석 툴을 사용할 수 있음을 알게된다.



마무리하며..

앞으로 docker의 설치, 기본 command 에서부터 Bioinformatics 툴 활용까지 다뤄볼 예정이다.

필자가 computer science 에 정통하지 않기 때문에, 실수가 있을 수도 있다 (그렇다면 댓글...).

쏟아지는 생물학 데이터와 늘어나는 분석 툴을 효율적으로 관리할 수 있는 Docker 를 함께 알아간다는 점에 초점을 둘 것이다.



Docker 시작하기 End

BioinformaticsAndMe

'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
API 기초 학습  (0) 2019.09.26
Docker 설치  (0) 2018.09.03
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

[Pachyderm] Splitting Data for Distributed Processing (분산처리) Start.

BioinformaticsAndMe





Splitting Data for Distributed Processing (분산처리)




Pachyderm을 사용하면 보유한 데이터를 여러 개의 'datums' 로 나누어 병렬 처리를 할 수 ​​있다.

단일 파일로 Pachyderm에 commit해야하는 데이터 세트인 경우,

Pachyderm은 분산 컴퓨팅을 위한 데이터 세트를 자동으로 분리하는 방법을 제공한다.


유저 정보로 이루어진 데이터 셋을 예로 들어보자.

CSV format의 단일 파일로 한 줄당 하나의 record가 담겨 있다.

user_data.csv

$ head user_data.csv
1,cyukhtin0@stumbleupon.com,144.155.176.12
2,csisneros1@over-blog.com,26.119.26.5
3,jeye2@instagram.com,13.165.230.106
4,rnollet3@hexun.com,58.52.147.83
5,bposkitt4@irs.gov,51.247.120.167
6,vvenmore5@hubpages.com,161.189.245.212
7,lcoyte6@ask.com,56.13.147.134
8,atuke7@psu.edu,78.178.247.163
9,nmorrell8@howstuffworks.com,28.172.10.170
10,afynn9@google.com.au,166.14.112.65


위 파일을 Pachyderm에 하나의 파일로 저장하면, 유저 record 각각을 별도의 "데이텀"으로 병렬 처리 할 수 ​​없다.

물론, 이러한 유저 record를 commit하기 전에 수동으로 개별 파일로 분리 할 수 ​​있지만, Pachyderm은 훨씬 쉬운 방법을 갖고 있다.


put-file API에는 파일을 별도의 데이텀으로 자동 분할하는 옵션이 있다. put-file--split 옵션을 사용해보자.

예를 들어, 아래는 user_data.csv 파일을 각 행의 개별 데이텀으로 자동 분할하는 command이다.

$ pachctl put-file users master -c -f user_data.csv --split line --target-file-datums 1

--split line : Pachyderm이 파일을 line에 따라 분리하도록 지정

--target-file-datums : 각 결과 파일이 최대 하나의 'datum'(one line)을 포함하도록 지정.


참고로, Pachyderm은 ​repo에서 user_data.csv를 여전히 ​하나의 entity로 표시한다.

$ pachctl list-file users master
NAME                 TYPE                SIZE                
user_data.csv   dir                 5.346 KiB


그러나 위 entity는 현재 모든 분할 record를 포함하는 디렉토리다.

$ pachctl list-file users master user_data.csv
NAME                             TYPE                SIZE                
user_data.csv/0000000000000000   file                43 B                
user_data.csv/0000000000000001   file                39 B                
user_data.csv/0000000000000002   file                37 B                
user_data.csv/0000000000000003   file                34 B                
user_data.csv/0000000000000004   file                35 B                
user_data.csv/0000000000000005   file                41 B                
user_data.csv/0000000000000006   file                32 B
etc...


/user_data.csv/*의 glob 패턴을 사용하여 repo 유저를 입력으로 사용하는 파이프 라인을 통해,

각 유저 record (즉, CSV의 각 행)를 병렬로 처리할 수 있다.


현재 Pachyderm은 라인이나 JSON blob에서 이러한 유형의 분할을 지원한다.


# Split a json file on json blobs, putting
# each json blob into it's own file.
$ pachctl put-file users master -c -f user_data.json --split json --target-file-datums 1

# Split a json file on json blobs, putting
# 3 json blobs into each split file.
$ pachctl put-file users master -c -f user_data.json --split json --target-file-datums 3

# Split a file on lines, putting each 100 
# bytes chunk into the split files.
$ pachctl put-file users master -c -f user_data.txt --split line --target-file-bytes 100




#Reference

https://medium.com/pachyderm-data/bioinformatics-with-pachyderm-shell-scripts-at-scale-ae1cce672b83




[Pachyderm] Splitting Data for Distributed Processing (분산처리) End.

BioinformaticsAndMe

'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
API 기초 학습  (0) 2019.09.26
Docker 설치  (0) 2018.09.03
Docker 시작하기  (1) 2018.07.17

+ Recent posts