#생물정보학 교육정보






[ChIP-seq 강의 목표]


  - ChIP-seq 실험의 기본 원리와 목적의 이해

  - ChIP-seq 실험 과정의 이해

  - ChIP-seq Quality 확인 방법의 이해

  - 실험적 Trouble-shooing 능력 함양




[일정]


 - 신청기간 : 2019년 10월 1일 ~ 10월 31일

 - 교육기간 : 2019년 10월 7일 ~ 11월 10일


 


[커리큘럼]


 - 제1강. ChIP Experiment & Quality Check

 - 제2강. ChIP-seq 데이터 분석

 - 제3강. Epigenome and Histone modification

 - 제4강. 후성유전적 유전자 조절

 - 제5강. Visualization & advanced analysis


 


[수료기준]


 - 모든 온라인 강좌 70% 이상 이수

 - 설문조사 참여




[신청]


 - https://www.kobic.re.kr/edu/local/course_application/course_info.php?courseid=112&gubun=1#list01


#생물정보학 교육정보





○ 교육명칭 : 2019년도 유전체 분석 분야 재직·연구자 전문 교육

○ 교육기관 : 한국바이오협회

○ 모집대상 : 유전체 분석 분야 재직 및 연구자, 데이터 분석 결과에 대한 이해 및 해석이 필요한 자

○ 교육기간 : 2019년 10월 24일~25일(2일)

○ 모집기간 : 2019년 10월 20일(일)까지

○ 교육장소 : 판교 코리아바이오파크 B동 세미나실

○ 준 비 물 : 실습교육을 위해 무선인터넷이 가능한 노트북 지참

○ 비 고 : 자세한 교육 내용 및 신청 방법은 붙임,

교육신청 페이지 주소(http://naver.me/F8LwJ7aT)

○ 문의사항 : 한국바이오협회 유전체 분석 교육 담당자

(전화) 031-628-0032 / (이메일) winner@koreabio.org




1.          

      목         적  :  한국바이오협회  유전      직종  재직·연구자  직무능  향상  단기과정의 교육 프로그램을 운영함.

      지 원 부 처  :  산업통상자원부, 한국산업기술평가관리원

      교 육 주 관  :  한국바이오협회

            :  유전체  분석  분야  ·연구자  전문  교육

      교   육   비  :  무료 (단, 식비 및 교통비, 주차비는 본인부담)

2.       교육 프로그램

 

일 자

교육 시간

세부 내용

강 사 명

 

 

1일차

10/24

(목)

10:00~11:00

  Metagenome 연구개요 동향

3BIGS

박준형 대표

11:00~12:00

  Metagenome 분석 16S rRNA 분석(Tools & Database)

  Whole Metagenome 분석

3BIGS

김광민 선임

12:00~13:00

점 심

13:00~14:00

  Metagenome 분석 결과를 활용한 임상 연구 사례

3BIGS

김광민 선임

14:00~14:50

  16S rRNA Metagenome 분석 방법

3BIGS

김광민 선임

14:50~15:10

휴식    추가  질문 사항

15:10~17:00

  Metagenome 분석에 필요한 기초 Linux 이론 실습

3BIGS

김광민 선임

 

 

2일차

10/25

(금)

10:00~12:00

  Metagenome 샘플데이터(분변) 분석 기초 이론 실습

(QIIME1 프로그램 사용)

3BIGS

김광민 선임

12:00~13:00

점심    추가  질문 사항

13:00~14:00

  Metagenome 분석 결과의 이해 해석

데이터베이스 결과 비교

3BIGS

김광민 선임

14:00~14:50

  분석결과 데이터를 활용한 Advanced 분석 방법 이론

3BIGS

김광민 선임

14:50~15:00

휴식    추가  질문 사항

15:00~17:00

  분석결과 데이터를 활용한 Advanced 분석 방법 실습

3BIGS

김광민 선임

 


- 1일 차


  Metagenome 연구개요 및 동향

최근 트랜드로 부상하고 있는 장내미생물 등의  Metagenome  분석이  활발하게  진행되고 있다. 이러한 Metagenome 연구에 대한 전반적인 내용 및 동향에 대해서 살펴본다.

1.      Metagenome 연구개요

2.      Metagenome 시장현황 및 전망

3.      Metagenome 주요 정책 및 동향

4.      마이크로바이옴 치료제 산업 전망


  Metagenome 분석 16S rRNA 분석(Tools & Database)

Metagenome 분석에는 크게 16S rRNA 분석과 Whole  Metagenome  분석이 있는데  그 중 첫 번째인 16S rRNA 분석에 대한 기본적인 내용에 대해서 공부한다. 16S rRNA 분석에 활용되는 전반적인 Tools의 종류와 활용  방법에  대하여  공부하며  사용 할 수 있는 Database에 대한 중요성을 인지한다.

1.      마이크로바이옴  유전체  정보 생산방법

2.      16S rRNA hypervariable region

3.      다양한 16S rRNA 분석 방법 및 데이터베이스 소개


  Whole Metagenome 분석

Metagenome 분석 중 두 번째인 whole Metagenome 분석에 대한 기본적인  설명  및  16S  rRNA  분석과의  차이점  그리고  Whole  Metagenome  분석의  필요성에  대한 이해를 학습한다.


  Metagenome 분석 결과를 활용한 임상 연구 사례

최근에 다양한 분야에서 활용하고 있는 Metagenome 임상 연구 사례를 예로 들어 분석의 중요성과 앞으로 어떻게 분석을 진행해야 할지에 대한 방향을 제시한다.

-      Human Metagenome 분석 연구 사례

-      Animal Metagenome 분석 연구 사례

-      Marine  Metagenome  분석  연구 사례

-      Food & Probiotics 분석 연구 사례


  16S rRNA Metagenome 분석 방법

16S rRNA 분석을 진행하기 위해서는 다양한 분석 방법 및 Tools이 있으며 다양한 데이터베이스를 사용할 수 있다. 가장 적합한 분석 방법을 이용하여 분석하는 방법을 처음부터 자세하게 설명한다.


  Metagenome 분석에 필요한 기초 Linux 이론 및 실습

Metagenome 분석을 하기 위해서는 기본적인  Linux  사용이  익숙해야지  분석이  가능하다. 리눅스는 일반 윈도우와는 달리 command 기반의 OS이기 때문에 기본적인 명령어들을 숙지하고 반복 학습하여 분석 실습에 도움이 되고자 한다.


  Metagenome 분석 결과를 활용한 임상 연구 사례

최근에 다양한 분야에서 활용하고 있는 Metagenome 임상 연구 사례를 예로 들어 분석의 중요성과 앞으로 어떻게 분석을 진행해야 할지에 대한 방향을 제시한다.



- 2일 차


  Metagenome 샘플데이터(분변) 분석 기초  이론  및  실습(QIIME1  프로그램  사용)

실제 Metagenome 샘플데이터를 활용하여 분석을 진행한다. 실습을 진행하면서 기초 이론을 한번더 복습하고 자세하게 학습한다.

QIIME1 분석 프로그램을 사용하며 기본적인  명령어  input,  output  값들에  대한  정보  및 분석 parameter에 대한 설명을 제공한다.

1.      전체 Workflow 설명

2.      Demultiplexing & Quality filtering

3.      Chimera checking

4.      OTU clustering

5.   Diversity Analysis


  Metagenome 분석 결과의 이해 및 해석 및 데이터베이스 결과 비교

분석을 완료한 후 결과 파일을 이용하여 우리가 얻을 수 있는 정보에 대해서 학습한다. 다양한 정보를 얻을 수 있으며 또한 데이터베이스의 차이에 따른 결과 비교도 학습한다.

1.      기초 QIIME 분석 결과 확인 및 해석

2.      Taxonomy annotation

3.      α  - Diversity

4.   β  - Diversity


  분석결과 데이터를 활용한 Advanced 분석 방법 이론

분석결과를 활용하여 기본적인 분석내용을 학습이 가능하지만 좀 더 다양한 분석 방법 및 통계 기법을 활용하여 보기 쉽고 이해하기 쉬운 그래프 활용방법에 대한 이론을 공부한다.

     -   Heatmap, Multivariate, Univariate, Coremicrobiome, LEfSe & Group analysis


  분석결과 데이터를 활용한 Advanced 분석 방법 실습

다양한 통계 기법 및 분석 프로그램을 활용하여 대한 분석을 진행했던 결과 파일에  대한 새로운 결과 분석 실습을 공부한다. 

    -   Heatmap, Multivariate, Univariate, Coremicrobiome, LEfSe & Group analysis

※ 상기 교육내용은 교육기관 및 강사 사정에 의해 변경될 수 있음.

3.       교육 대상

      모집대상  -  유전체  분석  관련  기업이나  연구소에  재직  중이며, 

                   

                       Metagenome 분석에 관심 있거나 분석을 공부하고 싶으신 분



-  리눅스 활용 가능여부 확인과 Metagenome 분석에 대한 이해도를 확인하기 위한 사전 설문조사 실시 예정 (신청 시 설문조사 첨부)


               원 : 30명 (설문조사 확인 후 선발)

4.       교육 신청

      신청기간 : 2019년 10월 20일(일)까지

      신청방법 : 온라인 신청페이지 (http://naver.me/F8LwJ7aT) 에서 접수 (설문조사 첨부)

      준 비 물 : 실습을 위한 무선인터넷 연결이 가능한 노트북 지참

(클라우드 서버 사용 예정)

5.       교육 장소

      판교 코리아바이오파크 B동  B1F 세미나실 (경기도 성남시 분당구 대왕판교로 700)

      자가용 이용 시 주차지원(주차비) 불가 (건물 주차장이 협소하여 대중교통 이용 바람)

6.       문의 사항

      교육진행 문의 : 한국바이오협회 유전체 분석 교육 담당자, 031-628-0032

      교육내용 문의 : 3BIGS 김광민 선임 031-8064-1877


1종, 2종 오류 (Type 1, 2 error) Start

BioinformaticsAndMe






Type I and Type II errors


: 1종 오류(type I error)와 2종 오류(type II error)는 각각 귀무가설을 잘못 기각하는 오류와 귀무가설을 잘못 채택하는 오류

1. Type I error

→ 귀무가설이 실제로 참이지만, 귀무가설을 기각하는 오류

→ 실제 음성(negative)인 것을 양성(positive)으로 판정

→ 거짓 양성(false positive) 또는 알파 오류(α error)라 불림

→ Type I error의 0.05 및 5% 유의수준은 귀무가설이 5% 확률로 잘못 기각된다는 의미


2. Type II error

→ 귀무가설이 실제로 거짓이지만, 귀무가설을 채택하는 오류

→ 실제 양성(positive)인 것을 음성(negative)으로 판정

→ 거짓 음성(false negative) 또는 베타 오류(β error)라 불림





1종 오류 예제


ㄱ) '한 사람이 무고하다'는 귀무가설 하에서, 죄가 없는 사람에게 유죄를 내린 경우 (false positive, α error)

ㄴ) '메일은 스팸이 아니다'는 귀무가설 하에서, 스팸이 아닌 메일이 스팸박스로 보내진 경우 (false positive, α error) 

ㄷ) '승객 가방에 금속이 없다'는 귀무가설 하에서, 금속이 없는 가방에 대해 금속탐지기가 울린 경우 (false positive, α error)


#Type 1 error: 임신하지 않은 사람에게 '너는 임신이다' 라고 말함 (잘못된 인정)

#Type 2 error: 임신한 사람에게 '너는 임신이 아니다' 라고 말함 (잘못된 부정)




2종 오류 예제


ㄱ) '한 사람이 무고하다'는 귀무가설 하에서, 죄가 있는 사람에게 무죄를 내린 경우 (false negative, β error)

ㄴ) '메일은 스팸이 아니다'는 귀무가설 하에서, 스팸메일을 스팸박스로 보내지 못한 경우 (false negative, β error)

ㄷ) '승객 가방에 금속이 없다'는 귀무가설 하에서, 금속이 있는 가방에 대해 금속탐지기가 울리지 않은 경우 (false negative, β error)


# α error와 β error 확률은 서로 상반됨 (하나가 커지면, 나머지가 작아짐)

# 일반적으로 α error에 기준을 두고 가설을 채택하거나 기각함







#Reference

1) https://www.tutorialspoint.com/statistics/type_ii_error.htm

2) https://www.abtasty.com/blog/type-1-and-type-2-errors/

3) https://ko.wikipedia.org/wiki/1%EC%A2%85_%EC%98%A4%EB%A5%98%EC%99%80_2%EC%A2%85_%EC%98%A4%EB%A5%98

4) https://effectsizefaq.com/2010/05/31/i-always-get-confused-about-type-i-and-ii-errors-can-you-show-me-something-to-help-me-remember-the-difference/

5) https://stats.stackexchange.com/questions/110433/examples-for-type-i-and-type-ii-errors





1종, 2종 오류 (Type 1, 2 error) End

BioinformaticsAndMe

'Statistics' 카테고리의 다른 글

경향분석 (Cochran-Armitage Trend test)  (0) 2019.10.22
피셔정확검정 (Fisher exact test)  (0) 2019.10.15
카이제곱검정 (Chi square test)  (0) 2019.10.01
FDR (False Discovery Rate)  (1) 2019.09.23
심슨의 역설 (Simpson's Paradox)  (0) 2019.09.03

[R Shiny] 샤이니 소개 Start

BioinformaticsAndMe







What is R Shiny?


: R Shiny(샤이니)는 R 사용자들에게 Interactive web app 제작을 가능케하는 R 패키지

: Shiny code로 HTML, CSS로 제작되는 웹앱을 동등하게 구현

: 웹앱 제작에 대한 지식이 부족해도 R script로 간단하게 웹앱 개발

: R 사용자들은 분석 과정에서 보유한 데이터를 쉽게 어플리케이션에 연동 가능





Installing R Shiny


# R Shiny 패키지 설치
install.packages('shiny')


# Shiny 패키지 로딩 library(shiny)




Structure of a Shiny app


1. User Interface (UI)

: 사용자 인터페이스(UI)는 앱의 레이아웃과 모양을 결정

: 앱에서 사용되는 Input(입력)/Ouput(출력)이 포함

: 탭, 메뉴 등 앱 내부의 각 요소들을 정의



2. Server

: 샤이니 앱의 서버 로직을 정의

: 입력에서 출력까지 생성하는 어플리케이션의 전반적인 과정 포함

: 샤이니 앱을 로딩할 때 서버 기능이 호출됨



3. ShinyApp

: shinyApp은 UI 및 Server 기능을 호출하여, Shiny App을 만드는 샤이니 웹앱의 핵심

: 아래는 ShinyApp의 개요





#Reference

1) https://www.edureka.co/blog/r-shiny-tutorial/

2) https://deanattali.com/blog/building-shiny-apps-tutorial/





[R Shiny] 샤이니 소개 End

BioinformaticsAndMe

'R' 카테고리의 다른 글

[R] subset (데이터추출 함수)  (0) 2019.10.17
[R] p value 보정  (0) 2019.10.14
Hierarchical clustering (R 계층적 군집화)  (0) 2019.10.04
K-medoids clustering (R PAM)  (0) 2019.09.30
K-means clustering (R 군집분석)  (0) 2019.09.24

[TensorFlow] Linear Regression Start

BioinformaticsAndMe










[TensorFlow] Linear Regression

: TensorFlow 2.0 에서 수행되는 선형회귀 low-level approach 과정

# '__future__' : python 2에서 python 3 문법 사용 가능

from __future__ import absolute_import, division, print_function

# 텐서플로우, 넘파이 라이브러리 임포트

import tensorflow as tf import numpy as np rng = np.random # 난수 생성을 위한 변수 준비

# 학습 파라미터 설정

learning_rate = 0.01 # 학습률 training_steps = 1000 # train될 총 스텝 display_step = 50 # 학습과정에서 보여질 스텝

# Training 데이터 생성 (numpy 배열)

X = np.array([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167, 7.042,10.791,5.313,7.997,5.654,9.27,3.1]) Y = np.array([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221, 2.827,3.465,1.65,2.904,2.42,2.94,1.3]) n_samples = X.shape[0] # shape 함수로 array 차원 확인 print(n_samples)

17

# 처음 학습에 사용될 Weight와 Bias 값을 랜덤하게 생성

W = tf.Variable(rng.randn(), name="weight") # tf.Variable: 텐서플로우 변수 생성 b = tf.Variable(rng.randn(), name="bias") # rng.randn: 임의의 숫자(난수) 생성 # Linear regression (Wx + b) 수식 정의 def linear_regression(x): return W * x + b # 손실함수인 Mean Square Error (MSE;평균 제곱 오차) 수식 정의 def mean_square(y_pred, y_true): return tf.reduce_sum(tf.pow(y_pred-y_true, 2)) / (2 * n_samples) # Stochastic Gradient Descent (SGD;확률적경사하강법) 알고리즘 optimizer = tf.optimizers.SGD(learning_rate)

# 학습 알고리즘 최적화 과정 정의

def run_optimization():

# 텐서플로우는 자동 미분(주어진 입력 변수에 대한 연산의 gradient를 계산하는 것)을 위한 tf.GradientTape 함수 사용

with tf.GradientTape() as g: pred = linear_regression(X) loss = mean_square(pred, Y) # gradients 계산 gradients = g.gradient(loss, [W, b]) # gradients에 따라 Weight(W)와 bias(b) 업데이트 optimizer.apply_gradients(zip(gradients, [W, b]))

# 주어진 스텝에 맞춰 training 시작

for step in range(1, training_steps + 1):

# Weight(W)와 bias(b) 업데이트를 위해 사전 정의된 최적화 과정 실행 run_optimization()

# display_step(50, 100, 150...)에서 적용 중인 파라미터값 출력 if step % display_step == 0: pred = linear_regression(X) loss = mean_square(pred, Y) print("step: %i, loss: %f, W: %f, b: %f" % (step, loss, W.numpy(), b.numpy()))

step: 50, loss: 0.133085, W: 0.117284, b: 1.751286 step: 100, loss: 0.126663, W: 0.125200, b: 1.695165 step: 150, loss: 0.120975, W: 0.132650, b: 1.642350 step: 200, loss: 0.115937, W: 0.139661, b: 1.592647 step: 250, loss: 0.111476, W: 0.146259, b: 1.545872 step: 300, loss: 0.107524, W: 0.152467, b: 1.501854 step: 350, loss: 0.104025, W: 0.158310, b: 1.460430 step: 400, loss: 0.100926, W: 0.163809, b: 1.421446 step: 450, loss: 0.098182, W: 0.168984, b: 1.384759 step: 500, loss: 0.095751, W: 0.173854, b: 1.350234 step: 550, loss: 0.093598, W: 0.178437, b: 1.317743 step: 600, loss: 0.091692, W: 0.182750, b: 1.287166 step: 650, loss: 0.090003, W: 0.186809, b: 1.258391 step: 700, loss: 0.088508, W: 0.190628, b: 1.231312 step: 750, loss: 0.087184, W: 0.194223, b: 1.205827 step: 800, loss: 0.086011, W: 0.197606, b: 1.181845 step: 850, loss: 0.084972, W: 0.200789, b: 1.159276 step: 900, loss: 0.084052, W: 0.203785, b: 1.138036 step: 950, loss: 0.083237, W: 0.206604, b: 1.118049 step: 1000, loss: 0.082516, W: 0.209258, b: 1.099238

# Linear regression(선형회귀) 결과 시각화

import matplotlib.pyplot as plt # matplotlib: 차트(chart)나 플롯(plot)으로 데이터를 시각화하는 라이브러리

plt.plot(X, Y, 'ro', label='Original data') plt.plot(X, np.array(W * X + b), label='Fitted line') plt.legend()

plt.show()





#참고 - [TensorFlow] 용어

ㄱ) Epoch:  전체 데이터를 한 바퀴 돌며 학습하는 것(1 epoch)

ㄴ) Step:  weight와 bias를 1회 업데이트하는 것(1 step)

ㄷ) Batch size:  1회 step에서 사용된 데이터 수





#Reference

1) https://github.com/aymericdamien/TensorFlow-Examples/tree/master/tensorflow_v2

2) https://m.blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221333529176&proxyReferer=https%3A%2F%2Fwww.google.com%2F

3) https://www.tensorflow.org/tutorials/customization/autodiff?hl=ko






[TensorFlow] Linear Regression End

BioinformaticsAndMe

'Machine Learning' 카테고리의 다른 글

랜덤포레스트(Random Forest)  (1) 2019.10.17
[TensorFlow] Logistic Regression  (0) 2019.10.09
[TensorFlow] 기본 연산  (0) 2019.10.04
[TensorFlow] 문자열 출력  (0) 2019.10.03
경사하강법 종류  (0) 2019.09.26

Hierarchical clustering (R 계층적 군집화) Start

BioinformaticsAndMe






Hierarchical clustering (R 계층적 군집화)

: 주어진 데이터에서 모든 두 군집간의 거리를 계산하는 알고리즘 (데이터의 이진트리 구성)

ㄱ) 가장 가까운 거리에 있는 데이터를 서로 묶음 (반복 수행)

ㄴ) 최종적으로 하나의 클러스터로 합쳐질 때까지 진행

ㄷ) Dendrogram 형태의 자연적인 계층 구조로 정렬






Cluster Linkage

: 두 클러스터 간 거리 측정에서 기준점 삼을 데이터를 결정하는 방법

: Linkage 알고리즘에 따라 클러스터 형태가 다르기에, 주어진 데이터에 적절한 Cluster Linkage를 적용

ㄱ) Single Linkage: 두 클러스터 간 가장 가까운 거리를 사용

ㄴ) Complete Linkage: 두 클러스터 간 가장 먼 거리를 사용

ㄷ) Average Linkage: 클러스터 내 모든 데이터와, 다른 클러스터 내 모든 데이터 사이의 거리 평균을 사용




Hierarchical clustering 과정

1) iris 데이터 전처리

# 1~150 사이에서 랜덤하게 40개 추출 idx <- sample(1:nrow(iris), 40) # 랜덤하게 뽑혀진 40개 숫자 인덱스에 대응하는 iris 행 추출 irisSample <- iris[idx,] # Species 칼럼 제거 irisSample$Species <- NULL

2) hclust 함수로 계층적 클러스터링 수행

# dist 함수는 데이터 간 거리 계산 (거리가 멀수록 차이가 큼)

hc <- hclust(dist(irisSample), method="average")

Call:
hclust(d = dist(irisSample), method = "average")

Cluster method   : average 
Distance         : euclidean 
Number of objects: 40 
3) 계층적 클러스터링 시각화 

# 'hang=-1' 은 모든 데이터의 y축(height)을 0부터 시작하게 함

plot(hc, hang=-1, labels=iris$Species[idx])

4) Dendrogram을 3개 클러스터로 나누기

# 'k=3' 은 3개의 클러스터 생성을 의미

rect.hclust(hc, k=3)

5) 각 데이터가 속한 클러스터 확인

groups <- cutree(hc, k=3) groups

 98  73  34  68 133  79  95 150 136  71 123  36 118  42  38  49 117  97  19 129 120  53 149  75 115  89 
  1   1   2   1   1   1   1   1   3   1   3   2   3   2   2   2   1   1   2   1   1   1   1   1   1   1 
143  47  18 147  55  57  10 111 134  54  17  48 100 102 
  1   2   2   1   1   1   2   1   1   1   2   2   1   1







#Reference

1) https://rstudio-pubs-static.s3.amazonaws.com/249084_09c0daf4ceb24212a81ceddca97ba1ea.html

2) http://ropatics.com/data-mining/r-and-data-mining/RDM-Clustering.html

3) https://www.brandidea.com/hierarchicalclustering.html

4) http://blog.naver.com/PostView.nhn?blogId=wjddudwo209&logNo=220046493579&parentCategoryNo=&categoryNo=42&viewDate=&isShowPopularPosts=true&from=search

5) http://girke.bioinformatics.ucr.edu/GEN242/pages/mydoc/Rclustering.html

6) https://bcho.tistory.com/1204




Hierarchical clustering (R 계층적 군집화) End

BioinformaticsAndMe

'R' 카테고리의 다른 글

[R] p value 보정  (0) 2019.10.14
[R Shiny] 샤이니 소개  (0) 2019.10.06
K-medoids clustering (R PAM)  (0) 2019.09.30
K-means clustering (R 군집분석)  (0) 2019.09.24
if, else, else if, ifelse (R 조건문)  (0) 2019.09.16

[TensorFlow] 기본 연산 Start

BioinformaticsAndMe










[TensorFlow] 기본 연산

: TensorFlow 2.0 에서 사용되는 기본 수식 연산의 간단한 예제

# 텐서플로우 라이브러리 임포트 from __future__ import print_function # python2에서 python3 몇몇 문법을 사용 가능하게 함 (print 함수) import tensorflow as tf

# tf.constant() 함수로 정수인 상수 텐서 생성

a = tf.constant(2) b = tf.constant(3) c = tf.constant(5)

# 다양한 텐서 연산 함수 ( '+,-' 와 같은 수식 기호도 사용 가능)

add = tf.add(a, b) sub = tf.subtract(a, b) mul = tf.multiply(a, b) div = tf.divide(a, b)


# 텐서 값 출력 (텐서를 넘파이 배열로 변환) print("add =", add.numpy()) print("sub =", sub.numpy()) print("mul =", mul.numpy()) print("div =", div.numpy())

add = 5
sub = -1
mul = 6
div = 0.6666666666666666

# 차원 제거 후 평균(reduce_mean)/합계(reduce_sum)

mean = tf.reduce_mean([a, b, c]) sum = tf.reduce_sum([a, b, c]) # 텐서 값 출력 print("mean =", mean.numpy()) print("sum =", sum.numpy())

mean = 3
sum = 10

# 2차원 행렬(Matrix) 텐서 생성

matrix1 = tf.constant([[1., 2.], [3., 4.]]) # '.'은 해당 숫자를 float32(실수)로 인식되게 함

matrix2 = tf.constant([[5., 6.], [7., 8.]])


# 행렬 곱(Matrix multiplications)

product = tf.matmul(matrix1, matrix2) product

<tf.Tensor: id=25, shape=(2, 2), dtype=float32, numpy= array([[19., 22.], [43., 50.]], dtype=float32)>

# 텐서를 넘파이 배열로 변환

product.numpy()

array([[19., 22.],
       [43., 50.]], dtype=float32)




#참고 - [TensorFlow] 용어

ㄱ) Scalar(스칼라):  하나의 숫자

ㄴ) Vector(벡터):  숫자(스칼라)의 배열

ㄷ) Matrix(행렬):  2차원의 배열

ㄹ) Tensor(텐서):  다차원의 배열









#Reference

1) https://github.com/aymericdamien/TensorFlow-Examples/tree/master/tensorflow_v2

2) https://medium.com/@manish54.thapliyal/machine-learning-basics-scalars-vectors-matrices-and-tensors-e120ecd0e6f7






[TensorFlow] 기본 연산 End

BioinformaticsAndMe

'Machine Learning' 카테고리의 다른 글

[TensorFlow] Logistic Regression  (0) 2019.10.09
[TensorFlow] Linear Regression  (0) 2019.10.05
[TensorFlow] 문자열 출력  (0) 2019.10.03
경사하강법 종류  (0) 2019.09.26
학습률 (Learning rate)  (0) 2019.09.24

[TensorFlow] 문자열 출력 Start

BioinformaticsAndMe









[TensorFlow] 문자열 출력

: TensorFlow 2.0 으로 'hello world' 문자열을 출력하는 간단한 예제

# 텐서플로우 라이브러리 임포트 import tensorflow as tf

# "hello world" 문자열을 가지는 Tensor 생성 (Tensor: 다차원배열)

hello_tensor = tf.constant("hello world") print(hello_tensor)

tf.Tensor(b'hello world', shape=(), dtype=string)

# Tensor 값에 접근하기 위해, numpy 형태로 변환하여 출력

print(hello_tensor.numpy())

b'hello world'

# Tensor 클래스 변환 (bytes → str)

print(hello_tensor.numpy().decode('utf-8'))

hello world




#Reference

1) https://github.com/aymericdamien/TensorFlow-Examples/tree/master/tensorflow_v2

2) https://colab.research.google.com/notebooks/mlcc/hello_world.ipynb






[TensorFlow] 문자열 출력 End

BioinformaticsAndMe

'Machine Learning' 카테고리의 다른 글

[TensorFlow] Linear Regression  (0) 2019.10.05
[TensorFlow] 기본 연산  (0) 2019.10.04
경사하강법 종류  (0) 2019.09.26
학습률 (Learning rate)  (0) 2019.09.24
경사하강법 (Gradient descent)  (0) 2019.09.18

눈의 구조 (Human Eye Anatomy) Start

BioinformaticsAndMe





눈의 구조 (Human Eye Anatomy)


1. 홍채(Iris) - 동공 주위에 있는 도넛 모양의 막으로, 동공의 수축과 이완을 통해 안구로 들어오는 빛의 양을 조절


2. 각막(Cornea) - 공막이 눈 앞쪽으로 연장된 부분으로, 눈의 창문 역할을 하며 외부로부터 눈을 보호하고 빛을 통과시키고 굴절


3. 안구방수(Aqueous humor) - 홍채와 수정체 사이를 가득 채운 물 모양의 투명한 액으로 각막과 수정체에 양분 공급


4. 수정체(Lens) - 걸이인대(진대)에 매달려 있는 볼록한 렌즈 형태의 투명한 조직으로 빛을 굴절시켜 초점을 맞춤


5. 모양근(Ciliary muscle) - 섬모체근이라 불리며, 걸이인대를 이용해 수정체를 지지하고 두께 조절


6. 맥락막(Choroid) - 멜라닌 색소가 풍부하며 외부에서 들어온 빛이 분산되지 않도록 하는 역할


7, 시신경(Optic Nerve) - 시각을 인지하는 지각신경으로, 망막에 맺힌 상을 뇌로 전달하는 뇌신경


8. 중심와(Fovea) - 망막의 영역인 중심와에는 추상체(원추세포)만 밀집되어 있으므로, 가장 해상력이 좋고 예민하게 반응하는 곳


9. 망막(Retina) - 안구의 가장 안쪽을 덮고 있는 투명한 신경조직으로, 광수용기 세포들이 있어서 시각 성립에 관여


10. 황반(Macula) - 중심와 주위에 노란색을 띠는 부분으로, 시세포가 밀집되어 있어 빛을 선명하고 정확하게 받아들이는 부분


11. 유리체방수(Vitreous humor) - 콜라겐, 하이알루론산 등 투명한 젤리같은 물질들로 이루어져 눈의 모양을 유지


12. 공막(Sclera) - 눈의 겉을 감싼 흰자로 보이는 부분으로, 외부 충격으로부터 눈을 보호하고 지지


13. 모양소체(Zonule Fibers) - 가는 섬유로 수정체에 결합하여 수정체를 주위에서 고정









#Reference

1) https://eyecheck.com/anatomy-of-the-eye-101

2) https://en.wikipedia.org/wiki/Eye

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

4) http://m.amc.seoul.kr/asan/mobile/healthinfo/body/bodyDetail.do?bodyId=234&partId=B000004

5) https://terms.naver.com/entry.nhn?docId=1122380&cid=40942&categoryId=32315

6) https://ko.wikipedia.org/wiki/섬모체




눈의 구조 (Human Eye Anatomy) End

BioinformaticsAndMe

Python JSON Start

BioinformaticsAndMe








Python JSON

: JSON(JavaScript Object Notation)

→ "키-값 쌍"으로 이루어진 데이터 오브젝트 전달을 위해, 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

→ 머신에 의해 쉽게 읽혀지도록 데이터를 구조화하는 형태

→ API 서버에서 데이터가 오고 갈때, JSON 포맷을 사용


: API로 받은 JSON 결과를 살펴보면, 파이썬 딕셔너리/리스트/문자열/정수 자료형의 혼합 형태임을 알 수 있음





Open Notify API 를 통해서, Python JSON 예시를 살펴보자

ISS(International Space Station; 국제우주정거장)에 대한 자료이다


우리가 예제로 사용될 Endpoint는 http://api.open-notify.org/astros.json

*Endpoint(엔드포인트) - 사용자들이 접속하는 웹 서버 등의 서버 시스템

    (보통 API 요청시 도메인 끝에 붙이는 URL, 'astros.json')



1. JSON response in Python

# requests 라이브러리 import requests

# 엔드포인트의 우주비행사 데이터 리턴

response = requests.get("http://api.open-notify.org/astros.json") print(response.status_code)

200   #200은 우리의 request가 성공적이었음을 의미

# API response가 json 포맷임을 확인

print(response.json())

{'people': [{'name': 'Alexey Ovchinin', 'craft': 'ISS'}, {'name': 'Nick Hague', 'craft': 'ISS'}, {'name': 'Christina Koch', 'craft': 'ISS'}, {'name': 'Alexander Skvortsov', 'craft': 'ISS'}, {'name': 'Luca Parmitano', 'craft': 'ISS'}, {'name': 'Andrew Morgan', 'craft': 'ISS'}, {'name': 'Oleg Skripochka', 'craft': 'ISS'}, {'name': 'Jessica Meir', 'craft': 'ISS'}, {'name': 'Hazzaa Ali Almansoori', 'craft': 'ISS'}], 'number': 9, 'message': 'success'}




2. json library

: 파이썬에는 JSON 포맷을 다루기 위한 표준 라이브러리 존재 → json package

: json을 임포트하여, 딕셔너리나 리스트를 JSON 포맷으로 변환할 수 있음

: json 라이브러리는 두 가지 주요한 기능을 가짐

json.dumps() - 파이썬 객체를 받아 문자열로 변환(dump)

json.loads()JSON 문자열을 가져와 파이썬 객체로 변환(load)

# json 라이브러리 ​import json

# Python JSON 객체의 구조화된 형태를 출력하는 definition

def jprint(obj): text = json.dumps(obj, sort_keys=True, indent=4) print(text)

# 데이터 구조를 더 쉽게 이해하도록 출력 (우주에 있는 9명과 각각의 이름)

jprint(response.json())

{ "message": "success", "number": 9, "people": [ { "craft": "ISS", "name": "Alexey Ovchinin" }, { "craft": "ISS", "name": "Nick Hague" }, { "craft": "ISS", "name": "Christina Koch" }, { "craft": "ISS", "name": "Alexander Skvortsov" }, { "craft": "ISS", "name": "Luca Parmitano" }, { "craft": "ISS", "name": "Andrew Morgan" }, { "craft": "ISS", "name": "Oleg Skripochka" }, { "craft": "ISS", "name": "Jessica Meir" }, { "craft": "ISS", "name": "Hazzaa Ali Almansoori" } ] }




3. Using an API with Query Parameters

: API endpoint에서 쿼리 파라미터를 갖는 것은 매우 일반적

파라미터를 딕셔너리로 만든 후, requests.get 함수에 전달 가능

파라미터를 URL에 직접 추가하여, 동일한 작업을 직접 수행 가능

*http://api.open-notify.org/iss-pass.json?lat=40.71&lon=-74.

# lat(latitude;위도), lon(longitude;경도) 파라미터 지정 parameters = { "lat": 40.71, "lon": -74 }

# 파라미터에 지정된 좌표를 사용하여 request

response = requests.get("http://api.open-notify.org/iss-pass.json", params=parameters)

# JSON 포맷으로 response 결과 확인

jprint(response.json())

{ "message": "success", "request": { "altitude": 100, "datetime": 1570007025, "latitude": 40.71, "longitude": -74.0, "passes": 5 }, "response": [ { "duration": 410, "risetime": 1570037505 }, { "duration": 643, "risetime": 1570043152 }, { "duration": 614, "risetime": 1570048982 }, { "duration": 553, "risetime": 1570054871 }, { "duration": 593, "risetime": 1570060715 } ] }





#API 기초 학습을 위해 아래 포스트 참조

https://bioinformaticsandme.tistory.com/135

https://bioinformaticsandme.tistory.com/136





#Reference

1) https://ko.wikipedia.org/wiki/JSON

2) https://blog.naver.com/zzzcc33/221594710730

3) https://realpython.com/python-json/






Python JSON End

BioinformaticsAndMe

'Python' 카테고리의 다른 글

[Python] 주석 처리  (0) 2019.10.15
Anaconda 설치  (0) 2019.10.08
Python API  (0) 2019.09.30
Variable (Python 변수)  (0) 2019.09.25
Python이 성장하는 7가지 이유  (0) 2019.09.17

+ Recent posts