[R] Circos plot Start

BioinformaticsAndMe






Circos plot


: Circos plot은 보유한 데이터를 종합적으로 보여주기 위한 시각화 방법

: 데이터를 원형 레이아웃으로 시각화하여, 특정 정보 사이의 위치 관계를 탐색하기에 유리함

: R 패키지 'OmicCircos'를 통해, 오믹스 데이터 간의 관계를 Circos plot으로 나타냄

: http://bioconductor.org/packages/release/bioc/html/OmicCircos.html





1. 데이터 준비


1) 패키지 설치 및 데이터 로딩 options(stringsAsFactors = F) source("https://bioconductor.org/biocLite.R") biocLite("OmicCircos") library("OmicCircos")

data("UCSC.hg19.chr") data("TCGA.BC.gene.exp.2k.60") dat <- UCSC.hg19.chr dat$chrom <- gsub("chr", "",dat$chrom) dat[dat[,1]==1,]

2) 시뮬레이션 데이터 생성 colors <- rainbow(10, alpha = 0.8)    #alpha : 투명도 lab.n <- 50 cnv.n <- 200 arc.n <- 30 fus.n <- 10


arc.d <- c() for(i in 1:arc.n){ chr <- sample(1:19, 1) chr.i <- which(dat$chrom == chr) chr.arc <- dat[chr.i,] arc.i <- sample(1:nrow(chr.arc), 2) arc.d <- rbind(arc.d, c(chr.arc[arc.i[1], c(1,2)], chr.arc[arc.i[2], c(2,4)])) } colnames(arc.d) <- c("chr", "start", "end", "value")


2-1) Gene funsion 시뮬레이션 데이터

fus.d <- c() for(i in 1:fus.n){ chr1 <- sample(1:19, 1) chr2 <- sample(1:19, 1) chr1.i <- which(dat$chrom == chr1) chr2.i <- which(dat$chrom == chr2) chr1.f <- dat[chr1.i,] chr2.f <- dat[chr2.i,] fus1.i <- sample(1:nrow(chr1.f), 1) fus2.i <- sample(1:nrow(chr2.f), 1) n1 <- paste0("geneA", i) n2 <- paste0("geneB", i) fus.d <- rbind(fus.d, c( chr1.f[fus1.i, c(1,2)], n1, chr2.f[fus2.i, c(1,2)], n2 )) } colnames(fus.d) <- c("chr1","po1","gene1","chr2","po2","gene2")


2-2) Copy number 시뮬레이션 데이터
cnv.i <- sample(1:nrow(dat), cnv.n) vale <- rnorm(cnv.n) cnv.d <- data.frame(dat[cnv.i,c(1,2)], value=vale)
2-3) Genomic position 시뮬레이션 데이터 gene.pos <- TCGA.BC.gene.exp.2k.60[,1:3] 2-4) Gene expression 시뮬레이션 데이터 gene.exp <- TCGA.BC.gene.exp.2k.60 2-5) p-value 시뮬레이션 데이터 gene.pos$p <- rnorm(250,0.01,0.001)* sample(c(1,0.5,0.01,0.001,0.0001),250,replace=TRUE)




2. Circos plot 그리기


1) 염색체 그리기 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=T, print.chr.lab = T)    #R : 반지름, W : 원형 너비


2) 같은 높이의 bar chart 그리기 par(mar=c(1,1,1,1)) plot(c(1,800),c(1,800),type="n",axes=FALSE,xlab="",ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=T, print.chr.lab = T) circos(R=355, cir="hg19", type="b3", W=40, mapping=cnv.d, B=T, col=colors[7])    #b3 : 같은 높이의 형태로 bar chart 생성

3) 고정된 반지름을 점으로 표시 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=TRUE, print.chr.lab=TRUE) circos(R=355, cir="hg19", type="b3", W=40, mapping=cnv.d, B=TRUE, col=colors[7]) circos(R=355, cir="hg19", type="s2", W=40, mapping=cnv.d, B=FALSE, col=colors[1], cex=0.5)    #s2 : 고정된 반지름 점 표시

4) 고정된 반지름으로 원호 그리기 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=TRUE, print.chr.lab=TRUE, cex=14) circos(R=355, cir="hg19", type="b3", W=40, mapping=cnv.d, B=TRUE, col=colors[7]) circos(R=355, cir="hg19", type="s2", W=40, mapping=cnv.d, B=FALSE, col=colors[1], cex=0.5) circos(R=320, cir="hg19", type="arc2", W=35, mapping=arc.d, B=TRUE, col=colors, lwd=10, cutoff=0) #color는 matrix의 row 순서대로 들어감

5) cutoff value 반대편에 bar chart 그리기 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=TRUE, print.chr.lab=TRUE) circos(R=355, cir="hg19", type="b3", W=40, mapping=cnv.d, B=TRUE, col=colors[7]) circos(R=355, cir="hg19", type="s2", W=40, mapping=cnv.d, B=FALSE, col=colors[1], cex=0.5) circos(R=320, cir="hg19", type="arc2", W=35, mapping=arc.d, B=TRUE, col=colors, lwd=10) circos(R=280, cir="hg19", type="b2", W=40, mapping=cnv.d, B=TRUE, col=colors[c(5,9)], lwd=2, cutoff=-0.2, col.v=3) #col.v : 값이 있는 칼럼 위치,    cutoff : +이상값제외/-이하값제외

6) type 파라미터를 계속해서 추가해주면서, Circos plot을 그려나감 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=TRUE, print.chr.lab=TRUE) circos(R=355, cir="hg19", type="b3", W=40, mapping=cnv.d, B=TRUE, col=colors[7]) circos(R=355, cir="hg19", type="s2", W=40, mapping=cnv.d, B=FALSE, col=colors[1], cex=0.5) circos(R=320, cir="hg19", type="arc2", W=35, mapping=arc.d, B=TRUE, col=colors, lwd=10, cutoff=0) circos(R=280, cir="hg19", type="b2", W=40, mapping=cnv.d, B=TRUE, col=colors[c(7,9)], lwd=2, cutoff=-0.2, col.v=3) circos(R=240, cir="hg19", type="arc", W=40, mapping=arc.d, B=TRUE, col=colors[c(1,7)], lwd=4, scale=TRUE, col.v=4) circos(R=200, cir="hg19", type="box", W=40, mapping=cnv.d, B=TRUE, col=colors[1], lwd=0.1, scale=TRUE, col.v=3) circos(R=160, cir="hg19", type="h", W=40, mapping=cnv.d, B=FALSE, col=colors[3], lwd=0.1, col.v=3) circos(R=120, cir="hg19", type="link", W=10, mapping=fus.d, col=colors[c(1,7,9)], lwd=2)

7) 바깥쪽으로 Label을 두고 그리기 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=300, cir="hg19", type="chr", W=10, scale=FALSE, print.chr.lab=FALSE) circos(R=310, cir="hg19", type="label", W=40, mapping=gene.pos, col=c("black","blue","red"), cex=0.4, side="out") circos(R=250, cir="hg19", type="b3", W=40, mapping=cnv.d, B=TRUE, col=colors[7]) circos(R=250, cir="hg19", type="s2", W=40, mapping=cnv.d, B=FALSE, col=colors[1], cex=0.5) circos(R=220, cir="hg19", type="arc2", W=30, mapping=arc.d, B=TRUE, col=colors, lwd=10, cutoff=0) circos(R=190, cir="hg19", type="b2", W=30, mapping=cnv.d, B=TRUE, col=colors[c(7,9)], lwd=2, cutoff=-0.2, col.v=3) circos(R=160, cir="hg19", type="arc", W=30, mapping=arc.d, B=TRUE, col=colors[c(1,7)], lwd=4, scale=TRUE, col.v=4) circos(R=130, cir="hg19", type="box", W=30, mapping=cnv.d, B=TRUE, col=colors[1], lwd=0.1, scale=TRUE, col.v=3) circos(R=100, cir="hg19", type="h", W=30, mapping=cnv.d,B=FALSE, col=colors[3], lwd=0.1, col.v=3) circos(R=90, cir="hg19", type="link", mapping=fus.d, col=colors[c(1,7,9)], lwd=2)

6) Heatmap circos plot 그리기 par(mar=c(1,1,1,1)) plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="") circos(R=400, cir="hg19", type="chr", W=10, scale=FALSE, print.chr.lab=T) circos(R=300, cir="hg19", type="heatmap2", W=100, mapping=gene.exp, col.v=4, cluster=F, col.bar=T, lwd=0.1, col="green") circos(R=200, cir="hg19", type="s", W=100, mapping=gene.pos, col.v=4, col=colors, scale=TRUE, B=TRUE) sig.gene <- gene.pos[gene.pos$p<0.000001,] circos(R=190, cir="hg19", type="label", W=40, mapping=sig.gene, col=c("black","blue","red"), cex=0.4, side="in")







#Reference

1) http://circos.ca/

2) Hu, Ying, et al. "OmicCircos: a simple-to-use R package for the circular visualization of multidimensional omics data." Cancer informatics 13 (2014): CIN-S13495.

3) http://felixfan.github.io/circos/

4) http://bioconductor.org/packages/release/bioc/html/OmicCircos.html





[R] Circos plot End

BioinformaticsAndMe



'R' 카테고리의 다른 글

[R] Multiple linear regression (다중회귀분석)  (1) 2020.01.14
[R] ChIP-seq 분석  (1) 2020.01.05
[R] ggplot2  (0) 2019.12.16
[R] 상자그림(Box plot)  (0) 2019.12.10
[R] 파이차트(Pie plot)  (0) 2019.12.03

[Real time PCR] 실시간 중합효소연쇄반응 Start

BioinformaticsAndMe






1. Real time PCR (=qPCR;quantitative PCR)


: Real time PCR(실시간 PCR)은 사이클마다 증폭된 산물의 양을 실시간으로 정량 확인하는 실험법

: 일반적으로 유전자 발현을 측정하는 데 사용

: 미세한 발현 변화를 탐지에는 효과적이지만, 대규모 RNA 연구에는 적합하지 않음

→대규모 RNA 연구는 Microarray 또는 RNAseq 추천

: Real time PCR은 타겟하는 유전자 서열이 필요하기에, 알려진 유전자 연구만 가능함




2. Real time PCR 과정


1) 역전사(Reverse transcription)를 통해, RNA를 cDNA(complementary DNA)로 변환

2) 특정 유전자를 증폭하고 탐지하기 위해, Fluorescent reporter 및 PCR 반응을 사용

*Fluorescent reporter

-SYBR Green probe: 형광을 띠는 삽입 물질인 SYBR Green을 넣고 PCR 수행

-Taqman probe: 형광물질과 형광활성억제물질이 끝에 붙은 탐침으로 PCR 수행

3) SYBR Green probe 또는 Taqman probe를 사용하여, 증폭 산물을 실시간으로 정량함






#Real time PCR 소개 영상





#일반 PCR 설명은 아래를 참조

https://bioinformaticsandme.tistory.com/159






#Reference
1) https://www.bio-rad.com/en-dk/applications-technologies/what-real-time-pcr-qpcr?ID=LUSO4W8UU
2) https://www.ebi.ac.uk/training/online/course/functional-genomics-ii-common-technologies-and-data-analysis-methods/real-time-pcr
3) https://www.youtube.com/watch?v=EaGH1eKfvC0




[Real time PCR] 실시간 중합효소연쇄반응 End

BioinformaticsAndMe

'Technology' 카테고리의 다른 글

[Chromatography] 크로마토그래피  (0) 2019.12.16
[Gene cloning] 유전자클로닝  (0) 2019.12.10
[Intrauterine Insemination] 인공수정  (0) 2019.12.03
[Dialysis] 인공투석  (0) 2019.11.26
[ELISA] 효소결합면역흡착검사  (0) 2019.11.18

줄기세포 (Stem cell) Start

BioinformaticsAndMe







1. 줄기세포 (Stem cell)


: 줄기세포는 신체의 고유한 세포 형태로 발달할 수 있는 세포

: 신체가 성장하면서, 새로운 세포를 제공하고 손상된 세포를 대체함

: 줄기세포는 새로운 세포를 생성하기 위해, 반복적으로 분열함

- 골수/소장 줄기세포는 주기적으로 분열

- 전립선/심장 줄기세포는 특수 상황에서 분열

: 분열을 거듭하면서, 몸을 구성하는 다른 형태의 세포로 전환 가능





2. 줄기세포 종류


: 줄기세포 종류에 따라 특징적인 분화능을 갖음

ㄱ) 전능성(Totipotency) - 배아의 모든 세포 또는 개체를 형성할 수 있는 분화능

ㄴ) 만능성(Pluripotency) - 포배의 Inner cell mass에서 유래하여, 성체의 모든 세포로 가는 분화능 (영양막 제외)

ㄷ) 다분화성(Multipotent) - 몇 종류의 세포로 분화 가능한 성체 줄기세포 (조혈/유방 줄기세포)

ㄹ) 이분화성(Bipotent) - 두 종류의 세포로 분화 가능한 줄기세포

ㅁ) 단일분화성(Unipotent) - 한 종류의 특정 세포로 분화 가능한 줄기세포 (정원세포)

: 줄기세포에는 3가지 종류가 존재함


1) 배아줄기세포(Embryonic stem cells)

- 배아를 통해 다양한 종류의 세포로 분화할 수 있는 전분화능 줄기세포(Pluripotent stem cell)

- 포배의 Inner cell mass에서 유래

- 조직 거부 현상 발생

- 배아 사용에 관한 윤리적 문제 존재



2) 성체줄기세포(Adult stem cells)

- 개체가 자라면서 손상된 세포를 대체하고 새로운 세포를 공급하는 다분화능 줄기세포(Multipotent stem cell)

- 신체 각 조직에 산재되어 소량만이 존재함

- 본인 세포를 이식하기에 조직 거부 X

- 피부줄기세포는 피부, 후각신경세포는 후각신경세포로 분화되도록 정해짐



3) 유도만능줄기세포(Induced pluripotent stem cells;iPS cells)

- 인간 체세포를 배아줄기세포와 같은 줄기세포로 역분화

- ‘유도’란 피부/혈액세포의 성체세포를 취하여, 줄기세포가되도록 재프로그래밍함을 의미함

- 배아줄기세포와 같이 만능이므로 모든 세포 유형으로 발달 가능

- iPSC 생성을 위해서는, 배아줄기세포 특이적으로 발현되는 전사인자들을 사용함(Oct4, Sox2, Klf4, c-Myc)







#Reference

1) https://www.yourgenome.org/facts/what-is-a-stem-cell

2) https://ko.wikipedia.org/wiki/%EC%A4%84%EA%B8%B0%EC%84%B8%ED%8F%AC

3) https://peerj.com/articles/4370/





줄기세포 (Stem cell) End

BioinformaticsAndMe



'Biology' 카테고리의 다른 글

진핵생물 vs 진정세균 vs 고세균  (0) 2020.01.06
전사인자 (Transcription factor)  (0) 2020.01.02
신경교세포 (Neuroglia cell)  (0) 2019.12.27
효소 (Enzyme)  (0) 2019.12.20
체온조절 (Thermoregulation)  (0) 2019.12.18

신경교세포 (Neuroglia cell) Start

BioinformaticsAndMe







신경교세포 (=교세포;신경아교세포;아교세포)


: 신경교세포(Neuroglia;Glial cell)는 중추 신경계 조직을 지탱하는 세포

: 뉴런에 필요한 물질을 조절하며, 적합한 화학적 환경을 위한 항상성 유지

: 정보를 전달하는 뉴런과는 달리, 신경교세포는 정보전달 기능이 없음

: 뉴런과 다르게, 신경교세포는 손실 후 회복 가능 (뇌에 발생하는 암은 뉴런이 아닌, 교세포)

: 신경교세포는 신경계의 약 90%를 구성




1. Neuroglia in the CNS


: 중추 신경계(Central Nervous System)에는 4가지 신경교세포가 존재

ㄱ) 성상세포(Astrocyte)

- 혈액뇌장벽(Blood-Brain Barrier;BBB)을 유지하고 화학적 항상성을 유지

- 혈액에서 포도당을 흡수해 뉴런에 공급

- 뉴런들을 지탱함


ㄴ) 희소돌기세포(Oligodendrocyte)

- 중추 신경계 수초(Myelin sheath)를 형성

- 한 개 세포가 여러 축삭을 감싸고 있음


ㄷ) 뇌실세포(상의세포;Ependymal cell)

- 뇌척수액(Cerebrospinal fluid)을 생산하고, 섬모를 통해 뇌척수액이 흐르게 함

- 신경 줄기세포(Neural stem cell) 역할 수행


ㄹ) 소교세포(Microglia)

- 중추 신경계의 면역 세포 역할을 함

- 식균 작용을 통해, 세포 파편/병원균 제거




2. Neuroglia in the PNS


: 말초 신경계(Peripheral Nervous System)에는 2가지 신경교세포가 존재

ㄱ) 슈반세포(Schwann cell)

- 말초 신경계 수초를 형성함

- 한 개 세포가 한 개 축삭을 감싸고 있음


ㄴ) 위성세포(Satellite cell)

- 신경절(Ganglion)의 신경세포체를 둘러 감싸서 보호

- 뉴런 주변의 영양소 및 신경 전달 물질을 조절






#신경교세포 설명 영상







#Reference

1) https://namu.wiki/w/%EA%B5%90%EC%84%B8%ED%8F%AC

2) http://www.aistudy.com/physiology/brain/glia_cell.htm

3) https://www.onlinebiologynotes.com/nervous-tissue-neuron-neuroglia/

4) https://ib.bioninja.com.au/options/option-a-neurobiology-and/a1-neural-development/types-of-neuroglia.html

5) https://www.youtube.com/watch?v=AwES6R1_9PM





신경교세포 (Neuroglia cell) End

BioinformaticsAndMe



'Biology' 카테고리의 다른 글

전사인자 (Transcription factor)  (0) 2020.01.02
줄기세포 (Stem cell)  (0) 2019.12.28
효소 (Enzyme)  (0) 2019.12.20
체온조절 (Thermoregulation)  (0) 2019.12.18
진핵세포 구조 (Eukaryote structure)  (0) 2019.12.18

2020 한국유전체학회 동계 심포지엄 워크샵 포스터.pdf



제16회 동계심포지엄 워크샵 사전등록 안내
 
2020년 2월 5일(수) ~ 2월 7일(금)까지 3일간 강원도 홍천, 대명리조트 비발디파크에서 "Genomics, from ambiguity to clarity"라는 주제로 제 16회 동계심포지엄을 개최합니다.

해마다 급속히 발전하고 있는 유전체 연구에 대한 토론과 최신 정보들의 교환이라는 목적 아래, 새롭고 값진 프로그램과 저명한 석학들의 초청으로 구성되는 본 학회의 심포지엄은 매년 많은 산·학·연의 연구자들이 모이는 협동의 장으로 성황리에 열리고 있습니다.
여러분의 많은 관심과 참여 부탁 드립니다.






#한국유전체학회 동계심포지엄 워크샵 신청 홈페이지

http://kogo.or.kr/Conference/ConferenceRegistration.asp?AC=2&CODE=CI20191101&CpPage=R#CONF

2020년_상반기_질병관리본부_공무직_모집_공고.hwp

2020년_상반기_질병관리본부_공무직_모집_공고.pdf







1. 자격요건, 등급, 수행업무

* 자격요건 등급에 해당하는 자격기준을 모두 충족하는 경우 지원 가능

 

< 등급별 자격기준 >

등급

기준

책임

1. 의사 또는 박사학위 소지자로서 관련업무 수행이 가능한 사람

2. 채용예정 직무분야와 관련된 석사 학위 취득 후 관련분야 경력 5 이상 또는 학사학위 취득 후 관련분야 경력 7 이상인 사람으로서 관련업무 수행이 가능한 사람

3. (IT 관련분야) 채용 예정 분야와 관련된 기사 이상의 자격 취득 후 동일분야 7년 이상 경력이 있는 사람

선임

1. 채용예정 직무분야와 관련된 석사 학위 이상 취득자로서 관련업무 수행이 가능한 사람

2. 채용예정 직무분야와 관련된 학사학위 취득 후 관련분야 경력 3년 이상인 사람으로서 관련업무 수행이 가능한 사람

3. (IT 관련분야) 채용 예정 분야와 관련된 기사 이상의 자격 취득 후 동일분야 3년 이상 경력이 있는 사람

기술

1. 학사학위 소지자 이하로서 관련업무 수행이 가능한 사람

응시

분야

소속

자격요건

등급

(채용인원)

수행업무

1

기획조정부

정보화TF

컴퓨터공학, 컴퓨터과학, 수학, 통계학, 산업공학, 경영정보학 등 IT관련 분야 전공자 중 정보화사업 관리 및 정보시스템 운영 유경험자

책임

(1)

정보시스템 구축 및 운영

업무시스템, 대국민홈페이지, 보안시스템, 네트워크장비 등

정보화사업 추진계획 수립 및 사업관리

2

정보화TF

선임

(1)

정보시스템 구축 및 운영

업무시스템, 대국민홈페이지, 보안시스템, 네트워크장비 등

정보화사업 추진계획 수립 및 사업관리

3

위기소통담당관실

광고홍보, 신문방송, 영상미디어, 보건학 등 관련분야 전공자로서 위기소통(위기관리 커뮤니케이션) 홍보사업 수행이 가능한 자

*홍보(위기소통 등) 분야 현업근무 경험자 우대

책임

또는 선임

(1)

위기소통 대응 관리

유관기관 위기소통체계 관리 및 운영

위기소통 교육·훈련 및 조사연구 등

소통관련 국제협력

기관 소통관리 지원 등

4

긴급상황센터

위기분석국제협력과

동시통역 혹은 통번역 분야 석사학위 이상 소지자

또는 영어권 대학 학사 이상 학위 취득 후 통번역 실무경력 3년 이상인 자

*보건의료 및 질병관리 분야 업무 경험자 또는 전공자 우대

선임

(1)

질병관리 및 감염병분야 국제회의 및 행사 등 통·번역

외국에 제출하는 문서나 서신의 영문번역 또는 교정

질병관리 및 감염병관련 해외정보 수집 자료 번역

5

긴급상황센터

위기분석국제협력과

보건학, 간호학 등 보건의료분야 전공자

*헬스 커뮤니케이션 전공자 및 영어능통자 우대

책임

또는 선임

(1)

해외감염병 정보수집

해외여행자 건강정보시스템 기획 추진 및 관리

각종 국제기구 회의 의제 관리 등

6

감염병관리센터

감염병총괄과

관련 업무 수행이 가능한 자

기술

(1)

감염병관리센터장실 부속실 업무

센터 및 부서내 관서운영경비 집행·관리 지원

부서 물품관리 관련 업무 등

7

감염병총괄과

의학, 간호학, 보건학, 보건통계학 등 관련분야 전공자

선임

(1)

수인성·식품매개감염병 사업관리

감염병콘퍼런스 운영

8

인수공통감염병관리과

의학, 간호학, 보건학, 보건통계학 등 관련분야 전공자

선임

(1)

인수공통감염병 및 매개체 감염병 사업관리

연구용역 및 보조사업 관리

내외 홍보, 교육, 지침개정 지원

9

의료감염관리과

간호학, 보건학, 의학 등 관련분야 전공자

 

*감염관리전문간호사 자격증 소지자 우대

선임

(1)

의료관련감염 예방관리사업연구용역 관리 지원

의료관련감염 표준예방지침 자문·상담

국가항생제내성관리대책 관련 사업·연구용역 관리지원 등

의료관련감염 및 항생제 내성 예방홍보

10

감염병분석센터

바이러스분석과

통계학, 보건통계학, 보건학, 보건행정학, 분자생물학 등 관련분야 전공자

선임

(1)

부서 자료 통계 분석 업무

부서 사업 예산 및 행정 업무

11

고위험병원체분석과

미생물학, 바이러스학, 면역학, 병리학, 수의학, 생물정보학 등 생명과학 관련분야 전공자

선임

(1)

출혈열 등 고위험병원체 진단 및 진단법 개발

차세대 고위험병원체 진단·탐지법 개발

12

질병예방센터

만성질환관리과

전산학, 컴퓨터공학, 컴퓨터과학 등 IT 관련분야 전공자

책임

또는 선임

(1)

만성질환관리과 정보화사업 운영 관리

13

만성질환관리과

보건학, 간호학 등 관련분야 전공자로서 의무기록사 면허증 소지자

 

*지방출장(숙박) 가능자

*의무기록조사 경험자 우대

선임

또는 기술

(3)

퇴원손상심층조사 수행 및 주요결과 검토

14

결핵·에이즈관리과

(보건, 의료)통계학 또는 보건학 전공자로서 관련업무 수행 가능자

책임

또는 선임

(1)

결핵관리지표 18개 관리,

결핵관리 소식지, 결핵환자 신고연보 제작 등의 통계 제반 업무

잠복결핵검진 및 환자치료 등 코호트 데이터 질 관리

15

질병예방센터

건강영양조사과

영양학 전공자로서 영양사 면허증 소지자

 

주말 근무 및 지방출장 가능자

국민건강영양조사 유경험자 우대

지방출장시 근무기간(3) 숙박 발생

서울수도권 50%, 이외 시도 50% 근무

기술

(1)

국민건강영양조사 현장조사(영양조사 부문)

16

건강영양조사과

보건학, 간호학, 역학 등 관련분야 전공자

선임

(1)

흡연폐해조사연구사업 관리

국민건강영양조사 및 청소년행태조사 건강설문 기획 및 관리

17

결핵조사과

(보건)통계학 등 관련 분야 전공자

 

*통계소프트웨어(SAS) 사용 가능자 우대

선임

또는 기술

(1)

결핵환자관리사업 통계분석 및 자료 질 관리

결핵환자관리사업 운영

18

결핵조사과

간호사 면허 소지자

*임상경력자 우대

선임

또는 기술

(1)

결핵역학조사 현장조사 수행 및 관리

지자체 결핵역학조사 교육 지원

강원지역 출장가능자(사무실 춘천 소재)

19

질병예방센터

결핵조사과

간호사 면허 소지자

*임상경력자 우대

기술

(1)

결핵역학조사 현장조사 수행 및 관리

지자체 결핵 역학조사 교육 지원

대전, 충북, 충남 지역 출장가능자(사무실 대전 소재)

20

장기이식관리센터

혈액안전감시과

보건학, 간호학, 임상병리학 등 보건관련 분야 전공자로서, 혈액관리업무에 대한 이해가 충분하여 관련 업무수행이 가능한 자

 

*간호사 또는 임상병리사 면허증 소지자 우대

선임

(1)

혈액관리업무 심사평가

혈액원 점검사항 감시 등 혈액원 관리 및 제도 개선 등에 관한 업무

헌혈혈액 안전성 관련 제도 개선 등에 관한 업무

21

생물안전평가과

수의학, 생물학, 미생물학, 분자생물학, 세포학, 유전학 등 생물 분야 전공자로서 실험동물 관리가 가능한 자

 

*실험동물 실험 및 동물 감염실험 경험자 우대

선임

(1)

실험동물 검수 및 검역

유전자변형생물체(LMO) 실험동물 관리

동물실험시설 운영 지원

감염동물실험시설 출입자 기법교육

감염동물실험 지원 및 안전관리

22

생물안전평가과

생물학, 미생물학, 수의학, 분자생물학, 세포학, 유전학 등 생물 분야 전공자로서 감염병병원체 관리가 가능한 자

선임

(1)

감염병병원체 안전관리방안 마련

감염성물질 안전수송관리 개선

유전자재조합실험 등 생물안전 관련 지침 제개정

23

감염병연구센터

신종감염병매개체연구과

생물학, 바이러스학, 미생물학, 분자생물학, 면역학, 수의학, 의학 등 생명과학 관련분야 전공자

*수행업무 분야 경력자 우대

선임

(1)

신경계 바이러스 치료제, 백신 개발 및 효능분석 연구

동물실험 등을 통한 효능평가 연구

신경계 바이러스 기전 및 특성분석 연구

24

백신연구과

생물학, 생명공학, 미생물학, 바이러스학, 면역학, 수의학 등 관련분야 전공자로서

동물실험 경력자

선임

(1)

3세대 두창백신 접종법 평가 연구

공공백신개발지원센터의 유효성평가(동물실험) 지원 업무

공공백신개발지원센터 유효성평가 등 동물시설 관리,운영 지원업무

25

생명의과학센터

난치성질환과

의학, 간호학, 약학, 수의학, 생물학, 분자생물학, 세포학, 유전학 등 줄기세포·재생의료 분야 전공자로서 임상연구 관리가 가능한 자

책임

또는 선임

(1)

첨단재생의료 임상연구 안전성 모니터링 등 안전관리체계 마련

26

난치성질환과

전산학, 정보통신학 등 관련분야 전공자 중 정보시스템 구축 및 운영 가능한 자

 

* 시스템 운영 경력자 우대

책임

또는 선임

(1)

첨단재생의료 임상연구 관리를 위한 정보시스템 구축 및 운영

27

호흡기·알레르기질환과

보건학, 통계학, 생물정보학, 의료정보학, 전산학, 생물학, 유전학 등 관련분야 전공자

선임

(1)

호흡기·알레르기질환 임상·역학 및 유전정보 통계분석 연구 및 데이터 질관리 등

28

유전체센터

유전체역학과

역학, 보건학, 보건·의학통계학 등 관련 분야 전공자

책임

(1)

코호트 기반 유전체역학연구

코호트 기획 및 운영 실무

29

유전체센터

유전체역학과

역학, 보건학, 보건·의학통계학 등 관련 분야 전공자

책임

(1)

코호트-환경자료 연계 분석 및 역학연구

코호트 자료 분석 교육 프로그램 기획 및 운영

코호트 수집자료 품질관리

30

유전체연구과

유전학, 생물학, 전산학, 통계학, 생물정보학 등 관련분야 전공자

선임

(1)

질환유전체 데이터 분석지원

31

바이오뱅크과

간호학, 임상병리학, 보건학, (보건, 의료) 통계학, 의학, 생물학, 생물정보학, 유전체학 관련 분야 전공자

선임

또는 기술

(1)

인체자원(인체유래물, 임상·역학정보, 유전 정보) 관리업무

인체자원분양위원회 운영지원

32

의과학지식관리과

보건학, 의료정보학, 문헌정보학, 바이오인포메틱스, 생명과학분야(생화학, 분자생물학, 세포생물학 등), 간호학 등 관련분야 전공자

선임

(1)

임상연구정보서비스(CRIS) 운영

MeSH 색인 및 관련 사업 지원

국제협력 및 영문에디팅 업무

 

채용 후 3개월간의 시용기간을 두며, 부서평가를 통하여 결격사유 및 평가결과에 따라 계약 종료될 수 있음

월 기본급 한계액(2019년 기준)

구 분

하한액

상한액

책임

2,245,600

4,284,200

선임

1,821,900

3,616,700

기술

1,745,150

3,055,000


신규채용자의 월 기본급은 우선 2019년 하한액(1호봉)으로 하되, 호봉 획정 시 군복무기간 및 유사경력 등을 별도 반영

- 다만, 2020년 임금협상이 진행 중으로 임금이 결정되면, 이에 따라 별도 소급하여 지급 예정

- 기본급과 별도로 정액급식비, 명절상여금 등 내부규정에 의해 별도 지급

- 책임공무직 중 의사에게는 부가연봉 지급 (700,000/)

         상기 자격기준에 해당하는 경력 외 추가 경력에 대한 인정비율은 질병관리본부 공무직 등 근로자 관리규정의 유사경력 인정표 준용





2. 출서류


응시원서 1(양식 이용, 반명함판 사진부착, 자필작성)

이력서(양식 이용)

자기소개서(양식 이용)

성적증명서(대학원, 학부)

남자의 경우 병역사항이 기재된 주민등록초본 1

최종학위증명서 또는 졸업증명서

최종학위를 자격기준으로 하지 않을 경우, 자격기준에 해당하는 학위증명서 추가 제출

경력(재직) 증명서(건강보험납입확인서·국민연금가입증명서는 미 인정, 이력서상의 경력일자와 동일, 상근/비상근 여부, 담당업무 및 발급담당자 연락처 기재)

최근연구실적(선택사항, 응시원서 접수 시 논문 초록 또는 요약본만 제출)

등록장애인 및 북한이탈주민 증명서, 국가유공자확인서(해당자에 한함)

개인정보 수집이용 동의서 1

 

              ※ 사본제출을 명기하지 않은 모든 서류는 원본 제출을 원칙으로 하며, 부득이 사본 제출 시에는 원본을 지참한 경우에 한하여 인정

(우편접수자의 경우 면접 시 원본지참)




 

3. 채용 시 우대사항(응시원서 내 가산특전해당유무 표시)


등록장애인 및 북한이탈주민

국가유공자(유족포함)




 

4. 응시원서 및 서류접수 일정


기 간 : 2019. 12. 23.() ~ 2020. 1. 6.()

접수방법 : 우편(등기) 또는 방문 접수

            - 제출처 : 충청북도 청주시 흥덕구 오송읍 오송생명2187 오송보건의료행정타운

                                    질병관리본부 1210(운영지원팀), 우편번호 : 28159

서류 봉투에 반드시 공무직 응시원서 재중표기

마감시간(20201618:00) 도착분에 한하며, E-mail 접수는 받지 않음.

 




5. 전형일시


서류전형 : 2020. 1. 14. () 예정

    - , 응시분야별 응시인원이 선발예정인원의 3배수 이상인 때에는 선발예정인원의 3배수를 합격자로 결정, 서류전형 합격자에 대한 개별통지 예정(1.17() 예정)

 ○ 면접시험 : 2020. 1. 21. () 예정

    - 일시 및 장소 : 서류전형 합격자에 한해 면접시험을 실시하며, 합격자에 대한 개별통지 예정

상기일정은 기관 사정에 따라 변경될 수 있음

 




6. 합격자 발표


                    ○ 2020. 1. 29.()(예정) 질병관리본부 홈페이지(www.cdc.go.kr) 게시 및 개별 통보

최종합격자가 임용을 포기하는 등의 사정으로 결원을 보충할 필요가 있는 때에는 합격자 발표일로부터 3개월 이내에 불합격 기준에 해당하지 아니하는 사람 중에서 면접시험 평정성적 우수자 순으로 추가 합격자를 결정할 수 있음

 




7. 기타 유의사항

            ○ 제출된 서류는 일체 반환하지 아니하며, 응시원서상의 기재 착오 또는 누락이나 연락불능, 합격자발표

 미확인 등으로 인한 불이익은 응시자의 책임이 되니, 격자 발표일 등 시험일정과 합격여부는 반드시 확인하시기 바라며, 추후 허위사실이 발견될 때에는 합격 또는 임용을 취소합니다.(제출서류 미비 시 접수 불가)

 ※경력인정 관련사항 : 시간강사 및 산학협력단 등에서 발급된 연구참여실적(연구보조는 해당없음) 경력은 50% 인정,

동일기간에 대해 중복인정 불가

            ○ 시험시행결과 채용계획에 합당한 적격자가 없을 경우에는 선발하지 아니할 수 있으며, 합격자 통지 후라도

 신원조사 및 채용신체검사 등을 통하여 임용하기 부적합한 결격사유가 있을 경우 임용하지 않을 수 있습니다.

              응시원서는 다른 모집단위에 중복으로 지원 불가합니다

  ○ 졸업예정자의 경우 아래 서류 모두 제출 시 원서 접수 가능

학위취득예정증명서 또는 졸업예정증명서

전체 학기 성적 표시된 성적증명서 

  ○ 우편접수 확인은 우편발송 익일 오후(16:00~18:00)043-719-7036로 문의하여 주시고, 해외에서 우편 발송 시 수취인 연락처(043-719-7036) 기재 바랍니다. 

  ○ 기타 문의사항은 질병관리본부 운영지원팀(043-719-7036)로 문의하시기 바랍니다.








#질병관리본부 채용 홈페이지

https://www.cdc.go.kr/board/board.es?mid=a20506000000&bid=0018&list_no=365538&act=view

페닐케톤뇨증 (Phenylketonuria) Start

BioinformaticsAndMe







1. 페닐케톤뇨증 (Phenylketonuria;PKU)


: 페닐알라닌 산물이 몸 안에 쌓여. 지능장애/담갈색모발/피부색소결핍을 유발하는 상염색체 열성 질환

: 페닐알라닌 대사에 이상이 생겨, 혈중에 페닐알라닌 및 페닐케톤이 많아짐
: 페닐케톤뇨증은 '백인은 1명/14,000명,  한국인은 1명/70,000명'의 발생빈도를 가짐



2. 페닐케톤뇨증 원인


: 페닐알라닌수산화효소(Phenylalanine hydroxylase;PAH) 유전자는 12번 염색체의 장완에 위치함

: PAH 유전자에 돌연변이가 생기면, 페닐알라닌수산화효소 결손이 초래되어 저하된 활성도의 효소가 발생

: 부모 모두가 PAH 유전자 변이를 1개씩 보유한 상황에서,
ㄱ) 자식 4명 중 1명은 페닐케논뇨증 (페닐알리닌 축적 증상 d)
ㄴ) 자식 4명 중 2명은 부모와 같이 PAH 유전자 변이를 1개씩 보유 (페닐알리닌 축적 증상 x)
ㄷ) 자식 4명 중 1명은 정상 (페닐알리닌 축적 증상 x)




3. 페닐케톤뇨증 증상


: 영아기에 구토/습진/담갈색모발/흰피부 등이 보이며, 앉기/뒤집기/걷기/언어 발달이 지연됨

: 환자의 땀과 소변에서는 독특한 쥐오줌 냄새가 발생

: 생후 1년이 되어도 치료를 받지 못하면, IQ는 50 미만으로 저하되며, 잘 걷지 못하고 근육/관절이 뻣뻣해짐

: 그러나 생후 1개월 안으로 치료되면, 앞서 증상은 보이지 않음








#Reference

1) http://www.samsunghospital.com/home/healthInfo/content/contenView.do?CONT_SRC_ID=09a4727a8000f362&CONT_SRC=CMS&CONT_ID=2854&CONT_CLS_CD=001020001015

2) http://www.amc.seoul.kr/asan/healthinfo/disease/diseaseDetail.do?contentId=32402

3) http://www.snuh.org/health/nMedInfo/nView.do?category=DIS&medid=AA000089

4) https://emedicine.medscape.com/article/947781-overview

5) https://ghr.nlm.nih.gov/condition/phenylketonuria

6) https://slideplayer.com/slide/9718930/





페닐케톤뇨증 (Phenylketonuria) End

BioinformaticsAndMe

'Medicine' 카테고리의 다른 글

폐흡충 논문 리뷰  (0) 2021.02.01
뇌척수 약물투여방법  (0) 2021.01.30
비스테로이드 항염증제 (NSAID)  (0) 2019.12.02
겸상적혈구빈혈증 (Sickle cell anemia)  (0) 2019.11.26
[Medical terminology] 의학용어2  (0) 2019.11.01

효소 (Enzyme) Start

BioinformaticsAndMe







1. 효소 (Enzyme)


: 효소는 기질과 복합체(Enzyme Substrate complex)를 형성하여, 활성화에너지를 낮추는 단백질 촉매

*활성화에너지(Activation energy) - 화학반응 발생의 필요한 에너지

*기질과 산물의 에너지 준위는 일정

: 효소는 효율적으로 촉매할 수 있는 고유의 온도와 pH가 있음

: 촉매의 특성을 갖는 효소는 화학 반응 후 효소 자체의 변화는 없음

: 동종효소(Isozyme)는 기질결합부위의 서열은 다르지만, 같은 대사과정에 관여함




2. 효소 종류


1) 산화환원효소(Oxidoreductase) - 산화환원 반응을 촉매

2) 전이효소(Transferase) - 메틸기/인산기와 같은 한 기질 작용기를 다른 기질로 옮기는 반응을 촉매

3) 가수분해효소(Hydrolase) - 물을 첨가하여 기질을 분해하는 반응을 촉매

4) 분해효소(Lyase) - 다양한 화학 결합의 절단 반응을 촉매

5) 이성질화효소(Isomerase) - 단일 분자 내 원자 배열을 바꾸어 이성질체 생성 반응을 촉매

6) 연결효소(Ligase) - 두 개의 기질을 서로 연결시키는 반응을 촉매




3. 효소 활성 억제


ㄱ) 경쟁적저해제(Competitive inhibitor) - 저해제가 기질과 비슷한 구조이므로, 효소 기질 결합 부위에 서로 경쟁적으로 결합

ㄴ) 비경쟁저해제(Non-competitive inhibitor) - 저해제가 효소 기질 결합 부위 이외의 다른 자리에 결합해 효소 기능을 저해
ㄷ) 무경쟁저해제(Uncompetitive inhibitor) - 저해제가 효소 기질 복합체에만 기질 겹합 부위 이외의 다른 자리에 결합
ㄹ) 비가역저해제(Irreversible inhibitor) - 저해제가 효소 기질 결합 부위에 공유 결합하여 비가역적인 저해를 유발 (페니실린, 암피실린)




4. 효소 반응속도론 (Enzyme kinetics)


: 효소 반응속도론은 효소가 기질과 결합하고 생성물로 전환시키는 메커니즘에 대한 연구

: 미하엘리스-멘텐식(Michaelis-Menten equation)은 효소 반응이 두 단계로 발생한다고 설명
1) 기질은 효소에 가역적 결합하여 효소-기질 복합체를 형성
2) 효소는 화학 반응 촉매 후, 생성물을 방출

: 라인웨버-버크식(Lineweaver-Burk equation)은 미하엘리스-멘텐 식의 역수를 취한 1차 방정식






#Reference

1) https://ko.wikipedia.org/wiki/%ED%9A%A8%EC%86%8C

2) https://biologydictionary.net/enzyme-substrate-complex/

3) https://namu.wiki/w/%ED%9A%A8%EC%86%8C

4) https://slideplayer.com/slide/9892933/

5) https://study.com/academy/lesson/enzyme-inhibitor-definition-examples-quiz.html

6) https://tuitiontube.com/the-michaelis-menten-equation/

7) http://orgchem.tsu.ru/enzyme/Lineweaver-Burk%20plot.htm





효소 (Enzyme) End

BioinformaticsAndMe



'Biology' 카테고리의 다른 글

줄기세포 (Stem cell)  (0) 2019.12.28
신경교세포 (Neuroglia cell)  (0) 2019.12.27
체온조절 (Thermoregulation)  (0) 2019.12.18
진핵세포 구조 (Eukaryote structure)  (0) 2019.12.18
RNA 종류 (Types of RNA)  (0) 2019.12.12

헬스케어 챗봇(ChatBot) Start

BioinformaticsAndMe






헬스케어 챗봇(ChatBot)


: 챗봇(ChatBot)은 메신저에서 유저와 소통할 수 있는 채팅로봇 프로그램

: 머신러닝/딥러닝/자연어처리 등의 AI 기술 발전으로 챗봇의 인공지능화는 현재 진행 중

: 헬스케어 산업에서 챗봇은 시간/장소에 제한을 두지 않고 지속적인 건강 관리에 목표를 둠

: 국내외 다양한 헬스케어 챗봇 기업들이 존재함

1) Youper

2) Safedrugbot

3) HealthTap

4) Sensely

5) 핑거앤

6) Intuition Robotics




1. Youper


: Youper AI 기반의 심리기술은 개인 맞춤 대화를 제공하여, 챗봇 사용자의 정서 건강을 모니터링하고 개선함

: 정서 건강을 향상시키기 위해, 챗봇은 개인 맞춤의 명상 기능을 포함해 다양한 기능들을 탑재함

https://www.youper.ai/




2. Safedrugbot


: Safedrugbot은 모유 수유 중 적절한 약물 사용 정보를 제공하는 채팅 서비스

: 또한, 약물 및 대체의약품에 존재하는 유효성분에 대한 정보를 제공

https://www.safeinbreastfeeding.com/safedrugbot-chatbot-medical-assistant/




3. HealthTap


: HealthTap은 의사와 환자를 서로 연결하여, 의료 정보를 제공하는 플랫폼

: 미국 내 10만명이 넘는 의사가 등록됐으며, 대략 64억건의 의료 답변을 환자들에게 제공

: 최근, '헬스탭 프라임'라는 명칭으로 원격진료 서비스 확장

: https://www.healthtap.com/




4. Sensely


: Sensely(센스리)는 Molly(몰리)라는 인공지능 간호사 아바타를 개발하여, 환자와의 고급 음성 커뮤니케이션을 통해 질병을 간호함

: Molly는 환자와의 실시간 대화로 환자 상태를 분석하여, 다음 병원 방문때까지 환자를 모니터링

: 또한, 환자는 Molly의 지시로 혈압을 측정하고, 약을 복용하며, 화상으로 의사 진찰을 받게 됨.




5. 핑거앤


: 핑거앤은 당뇨환자들을 위한 혈당관리 도우미 앱으로 혈당측정기 연결이 가능함

: 혈당/복용약/인슐린투여/식사/운동습관을 입력하면, 챗봇이 혈당관리를 조언

: 보험회사는 당뇨발병률 감소를 위해, 핑거앤 사용자에게 보험료 혜택 프로그램 제안




6. Intuition Robotics


: Intuition Robotics는 노인들과 대화하는 챗봇 ‘엘리큐(Elli.Q)’를 개발

: 엘리큐는 사회적 고립감을 느끼지 않도록 노인들과 대화하고, 약 복용을 관리함

: 노인들이 건강한 생활을 유지하도록, 독서/산책/게임 등을 권유하거나 친구/가족에게 전화를 걸도록 제안









#Reference

1) http://www.bioin.or.kr/InnoDS/data/upload/tech/d49fbe8a11c443728f32b9248e655cd9.pdf

2) https://namu.wiki/w/%EC%B1%97%EB%B4%87

3) https://medicalfuturist.com/top-12-health-chatbots/

4) https://www.youper.ai/
5) https://www.safeinbreastfeeding.com/safedrugbot-chatbot-medical-assistant/
6) https://www.healthtap.com/

7) https://www.sensely.com/

8) https://www.youtube.com/watch?v=AU1nGpOmZpQ#action=share

9) www.bioin.or.kr/fileDown.do?seq=31441

10) http://www.fingern.co.kr/

11) http://www.wolyo.co.kr/news/articleView.html?idxno=47595

12) http://www.irobotnews.com/news/articleView.html?idxno=9629

13) https://intuitionrobotics.com/

14) https://www.youtube.com/watch?v=URcuVfzwB4g#action=share






헬스케어 챗봇(ChatBot) End

BioinformaticsAndMe



'Healthcare Industry' 카테고리의 다른 글

건강 관리 인공지능  (0) 2020.01.17
질병 예측 인공지능  (0) 2020.01.07
중환자실 인공지능 솔루션  (0) 2019.12.14
[Blockchain] 블록체인과 헬스케어 (3)  (0) 2019.12.05
[BIG 4] 헬스케어 생태계  (0) 2019.11.27

[TensorFlow] 심장질환 예측 Start

BioinformaticsAndMe









[TensorFlow] 심장질환 예측


: TensorFlow 2.0 에서 만들어진 DNN(심층신경망) 모델에 근거하여, 환자데이터로부터 심장병 유무를 예측

: 심장병은 사망률이 높은 질환으로 정확한 예측을 위해선, 훨씬 더 복잡한 데이터와 상호관계 분석이 필요

*아래 예제는 간단한 파일럿테스트

: 텐서플로우를 통한 심장질환 예측은 아래 순서로 진행

1) 데이터 준비

2) 환자데이터 살펴보기

3) 데이터 전처리

4) Neural Network 모델 만들기

5) 모델 Training

6) 심장질환 예측




1. 데이터 준비


: 분석데이터 다운로드 → https://www.kaggle.com/ronitf/heart-disease-uci (kaggle 가입 필요)

*heat.csv - 303명 환자기록과 14가지 속성(변수)

# 분석에 필요한 라이브러리 로딩 !pip install tensorflow-gpu==2.0.0-alpha0 import numpy as np import tensorflow as tf from tensorflow import keras import pandas as pd import seaborn as sns from pylab import rcParams import matplotlib.pyplot as plt from matplotlib import rc from google.colab import drive from sklearn.model_selection import train_test_split %matplotlib inline sns.set(style='whitegrid', palette='muted', font_scale=1.5) rcParams['figure.figsize'] = 14, 8 RANDOM_SEED = 42 np.random.seed(RANDOM_SEED)

# 구글드라이브 마운트 및 파일경로 지정

drive.mount("/content/drive")

heart_csv_path = "/content/drive/My Drive/Colab Notebooks/tensorflow-2/data/heart.csv"

# 데이터 로딩 후, 출력

data = pd.read_csv(heart_csv_path)

data.describe()

#age - 나이 #sex - (1 = 남성; 0 = 여성) #cp - 가슴 통증 유형(0, 1, 2, 3, 4) #trestbps - 안정 혈압(병원 입원시 mm Hg) #chol - 혈청 콜레스테롤(mg/dl) #fbs - (공복 혈당 > 120 mg/dl)(1 = true; 0 = false) #restecg - 안정 심전도 결과(0, 1, 2) #thalach - 최대 심박동수 #exang - 협심증 유발 운동(1 = yes; 0 = no) #oldpeak - 비교적 안정되기까지 운동으로 유발되는 ST depression #slope - 최대 운동 ST segment의 기울기 #ca - 형광 투시된 주요 혈관의 수(0-3) #thal - (3 = 보통; 6 = 해결된 결함; 7 = 해결가능한 결함) #target - 심장병 진단(1 = true; 0 = false)

# 데이터 구조 확인

data.shape

(303, 14)

# 데이터 변수 확인

data.columns

Index(['age', 'sex', 'cp', 'trestbps', 'chol', 'fbs', 'restecg', 'thalach', 'exang', 'oldpeak', 'slope', 'ca', 'thal', 'target'], dtype='object')




2. 환자데이터 살펴보기


: 환자데이터를 직접 시각화하여, 데이터의 특징을 직관적으로 이해

# 303명의 환자에서 심장병 유무를 확인

f = sns.countplot(x='target', data=data) f.set_title("Heart disease presence distribution") f.set_xticklabels(['No Heart disease', 'Heart Disease']) plt.xlabel("")

# 303명의 환자에서 심장병 유무를 남녀로 나누어 확인

f = sns.countplot(x='target', data=data, hue='sex') plt.legend(['Female', 'Male']) f.set_title("Heart disease presence by gender") f.set_xticklabels(['No Heart disease', 'Heart Disease']) plt.xlabel("");

# 변수(Feature) 사이에서의 상관관계 정도를 Heatmap으로 구현

# +1에 가까울수록, positive correlation

# -1에 가까울수록, negative correlation

heat_map = sns.heatmap(data.corr(method='pearson'), annot=True, fmt='.2f', linewidths=2) heat_map.set_xticklabels(heat_map.get_xticklabels(), rotation=45);




3. 데이터 전처리


: 보유한 데이터는 범주형/숫자형의 혼합 형태로, 원활한 텐서플로우 모델링을 위해 데이터 전처리가 필요함

: 머신러닝 모델에서는 범주형/숫자형을 떠나 모든 Feature들이 숫자로 처리됨

# feater column은 'raw 데이터'와 '모델링하는 데이터'를 연결짓는 브릿지 역할

feature_columns = [] # 수치형 열(Numeric col)은 실수값을 변형시키지 않고 그대로 전달

for header in ['age', 'trestbps', 'chol', 'thalach', 'oldpeak', 'ca']: feature_columns.append(tf.feature_column.numeric_column(header)) # 버킷형 열(Bucketized column)은 수치값을 구간을 나누어 범주형으로 변환 age = tf.feature_column.numeric_column("age") age_buckets = tf.feature_column.bucketized_column(age, boundaries=[18, 25, 30, 35, 40, 45, 50, 55, 60, 65]) feature_columns.append(age_buckets) # 범주형 열(Categorical column)은 특정 문자열을 수치형으로 매핑하여 전달 data["thal"] = data["thal"].apply(str) thal = tf.feature_column.categorical_column_with_vocabulary_list( 'thal', ['3', '6', '7']) thal_one_hot = tf.feature_column.indicator_column(thal) feature_columns.append(thal_one_hot) data["sex"] = data["sex"].apply(str) sex = tf.feature_column.categorical_column_with_vocabulary_list( 'sex', ['0', '1']) sex_one_hot = tf.feature_column.indicator_column(sex) feature_columns.append(sex_one_hot) data["cp"] = data["cp"].apply(str) cp = tf.feature_column.categorical_column_with_vocabulary_list( 'cp', ['0', '1', '2', '3']) cp_one_hot = tf.feature_column.indicator_column(cp) feature_columns.append(cp_one_hot) data["slope"] = data["slope"].apply(str) slope = tf.feature_column.categorical_column_with_vocabulary_list( 'slope', ['0', '1', '2']) slope_one_hot = tf.feature_column.indicator_column(slope) feature_columns.append(slope_one_hot) # 임베딩 열(Embedding column)은 범주형 열에 가능한 값이 많을 때 사용 thal_embedding = tf.feature_column.embedding_column(thal, dimension=8) feature_columns.append(thal_embedding) # 교차특성 열(Crossed column)은 여러 특성을 연결하여 하나의 특성으로 만듦

age_thal_crossed = tf.feature_column.crossed_column([age_buckets, thal], hash_bucket_size=1000) age_thal_crossed = tf.feature_column.indicator_column(age_thal_crossed) feature_columns.append(age_thal_crossed) cp_slope_crossed = tf.feature_column.crossed_column([cp, slope], hash_bucket_size=1000) cp_slope_crossed = tf.feature_column.indicator_column(cp_slope_crossed) feature_columns.append(cp_slope_crossed)

# Pandas 데이터프레임 → Tensorlfow 데이터셋

def create_dataset(dataframe, batch_size=32): dataframe = dataframe.copy() labels = dataframe.pop('target') return tf.data.Dataset.from_tensor_slices((dict(dataframe), labels)) \ .shuffle(buffer_size=len(dataframe)) \ .batch(batch_size)

# 전체데이터를 Training set과 Test set으로 나누기

train, test = train_test_split(data, test_size=0.2, random_state=RANDOM_SEED)

train_ds = create_dataset(train) test_ds = create_dataset(test)




4. Neural Network 모델 만들기


# 오버피팅을 줄이기 위해, Dense layer 사이에 Dropout layer 배치

model = tf.keras.models.Sequential([ tf.keras.layers.DenseFeatures(feature_columns=feature_columns), tf.keras.layers.Dense(units=128, activation='relu'), tf.keras.layers.Dropout(rate=0.2), tf.keras.layers.Dense(units=128, activation='relu'), tf.keras.layers.Dense(units=1, activation='sigmoid') ])




5. 모델 Training


# 모델 컴파일 후, 학습되면서 생기는 손실과 정확도 지표 출력

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) history = model.fit(train_ds, validation_data=test_ds, epochs=100, use_multiprocessing=True)

# model.evaludate 함수로 Test set 정확도 평가 model.evaluate(test_ds)

2/2 [==============================] - 0s 23ms/step - loss: 0.3431 - accuracy: 0.8852 [0.3430721387267113, 0.8852459]

# 모델의 정확도 시각화 plt.plot(history.history['accuracy']) plt.plot(history.history['val_accuracy']) plt.title('model accuracy') plt.ylabel('accuracy') plt.xlabel('epoch') plt.ylim((0, 1)) plt.legend(['train', 'test'], loc='upper left');

# 모델의 손실 시각화 plt.plot(history.history['loss']) plt.plot(history.history['val_loss']) plt.title('model loss') plt.ylabel('loss') plt.xlabel('epoch') plt.legend(['train', 'test'], loc='upper left') plt.show()




6. 심장질환 예측


# 만들어진 DNN 모델로 심장질환을 예측

# 앞서 얻은 accuracy에 상관없이, precision/recall/f1-score가 높지 않음을 확인

*precision = 정밀도

*recall = 재현율

*f1-score = 정밀도와 재현율의 조화 평균

from sklearn.metrics import classification_report, confusion_matrix

predictions = model.predict(test_ds)

bin_predictions = tf.round(predictions).numpy().flatten()

print(classification_report(y_test.values, bin_predictions))

precision recall f1-score support 0 0.59 0.66 0.62 29 1 0.66 0.59 0.62 32 micro avg 0.62 0.62 0.62 61 macro avg 0.62 0.62 0.62 61 weighted avg 0.63 0.62 0.62 61

# Confusion matrix(혼동 행렬)로 결과 시각화

class_names = [0,1] fig,ax = plt.subplots() tick_marks = np.arange(len(class_names)) plt.xticks(tick_marks,class_names) plt.yticks(tick_marks,class_names) sns.heatmap(pd.DataFrame(cnf_matrix),annot=True,cmap="Blues",fmt="d",cbar=False) ax.xaxis.set_label_position('top') plt.tight_layout() plt.ylabel('Actual label') plt.xlabel('Predicted label');





#Reference

1) https://towardsdatascience.com/heart-disease-prediction-in-tensorflow-2-tensorflow-for-hackers-part-ii-378eef0400ee

2) https://colab.research.google.com/drive/13EThgYKSRwGBJJn_8iAvg-QWUWjCufB1

3) https://www.kaggle.com/ronitf/heart-disease-uci

4) https://www.tensorflow.org/tutorials/structured_data/feature_columns

5) https://locslab.github.io/Tensorflow-feature-columns(1)/





[TensorFlow] 심장질환 예측 End

BioinformaticsAndMe

+ Recent posts