diff --git a/Output-ncar/txtNCA-Theoph.txt b/Output-ncar/txtNCA-Theoph.txt index 98829c4..c8909b1 100644 --- a/Output-ncar/txtNCA-Theoph.txt +++ b/Output-ncar/txtNCA-Theoph.txt @@ -2,7 +2,7 @@ Package version 0.5.0 (2023-11-19) R version 4.3.2 (2023-10-31) -Date and Time: 2024-02-06 13:24:03.16293 Asia/Seoul +Date and Time: 2024-02-06 13:34:58.640232 Asia/Seoul Calculation Setting ------------------- diff --git a/_bookdown.yml b/_bookdown.yml index 8b7268a..51605e2 100644 --- a/_bookdown.yml +++ b/_bookdown.yml @@ -10,8 +10,8 @@ language: ui: edit: "Edit" chapter_name: "Chapter " -#rmd_files: ["index.Rmd", "01.Rmd", "02.Rmd", "03.Rmd", "04.Rmd", "05.Rmd", "90-appendix.Rmd", "99.Rmd"] -rmd_files: ["index.Rmd", "01.Rmd", "02.Rmd", "03.Rmd", "04.Rmd", "05.Rmd", "06.Rmd", "90-appendix.Rmd", "99.Rmd"] +rmd_files: ["index.Rmd", "01.Rmd", "02.Rmd", "03.Rmd", "04.Rmd", "05.Rmd", "90-appendix.Rmd", "99.Rmd"] +#rmd_files: ["index.Rmd", "01.Rmd", "02.Rmd", "03.Rmd", "04.Rmd", "05.Rmd", "06.Rmd", "90-appendix.Rmd", "99.Rmd"] #"06.Rmd", #rmd_files: ["index.Rmd", "02.Rmd"] diff --git a/docs/404.html b/docs/404.html index ec0b9af..e3489db 100644 --- a/docs/404.html +++ b/docs/404.html @@ -20,7 +20,7 @@ - + @@ -166,8 +166,7 @@
5장 구획분석의 자료해석의 5.7절에서 언급된 wnl::nlr()
실행결과를 별첨으로 수록하였다.
library(wnl)
+tData = Theoph
+colnames(tData) = c("ID", "BWT", "DOSE", "TIME", "DV")
+
+fPK = function(THETA) # Prediction function
+{
+ DOSE = 320000 # in microgram
+ TIME = e$DATA[,"TIME"] # use data in e$DATA
+
+ K = THETA[1]
+ Ka = THETA[2]
+ V = THETA[3]
+
+ Cp = DOSE/V*Ka/(Ka - K)*(exp(-K*TIME) - exp(-Ka*TIME))
+ return(Cp)
+}
+
+IDs = unique(tData[,"ID"])
+nID = length(IDs)
+for (i in 1:nID) {
+ Data = tData[tData$ID == IDs[i],]
+ Theoph_nlr = nlr(fPK, Data,
+ pNames=c("k", "ka", "V"), IE=c(0.1, 3, 500),
+ SecNames=c("CL", "Thalf", "MRT"),
+ SecForms=c(~V*k, ~log(2)/k, ~1/k))
+ print(paste("## ID =", i, "##"))
+ print(Theoph_nlr)
+}
## [1] "## ID = 1 ##"
## $Est
## k ka V AddErrVar AddErrSD
@@ -428,7 +431,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.22720
##
## $`Elapsed Time`
-## Time difference of 0.01963 secs
+## Time difference of 0.03354 secs
##
## [1] "## ID = 2 ##"
## $Est
@@ -507,7 +510,7 @@ B Theoph의 nlr의 전체 실행
## [11] -0.002829
##
## $`Elapsed Time`
-## Time difference of 0.009244 secs
+## Time difference of 0.006591 secs
##
## [1] "## ID = 3 ##"
## $Est
@@ -586,7 +589,7 @@ B Theoph의 nlr의 전체 실행
## [11] -0.31466
##
## $`Elapsed Time`
-## Time difference of 0.006913 secs
+## Time difference of 0.006918 secs
##
## [1] "## ID = 4 ##"
## $Est
@@ -665,7 +668,7 @@ B Theoph의 nlr의 전체 실행
## [11] -0.15385
##
## $`Elapsed Time`
-## Time difference of 0.006624 secs
+## Time difference of 0.009309 secs
##
## [1] "## ID = 5 ##"
## $Est
@@ -744,7 +747,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.08349
##
## $`Elapsed Time`
-## Time difference of 0.006501 secs
+## Time difference of 0.006563 secs
##
## [1] "## ID = 6 ##"
## $Est
@@ -823,7 +826,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.11708
##
## $`Elapsed Time`
-## Time difference of 0.009629 secs
+## Time difference of 0.006665 secs
##
## [1] "## ID = 7 ##"
## $Est
@@ -902,7 +905,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.167295
##
## $`Elapsed Time`
-## Time difference of 0.007036 secs
+## Time difference of 0.006954 secs
##
## [1] "## ID = 8 ##"
## $Est
@@ -981,7 +984,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.19116
##
## $`Elapsed Time`
-## Time difference of 0.006433 secs
+## Time difference of 0.009353 secs
##
## [1] "## ID = 9 ##"
## $Est
@@ -1060,7 +1063,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.10785
##
## $`Elapsed Time`
-## Time difference of 0.009931 secs
+## Time difference of 0.007591 secs
##
## [1] "## ID = 10 ##"
## $Est
@@ -1139,7 +1142,7 @@ B Theoph의 nlr의 전체 실행
## [11] -0.04181
##
## $`Elapsed Time`
-## Time difference of 0.008337 secs
+## Time difference of 0.007993 secs
##
## [1] "## ID = 11 ##"
## $Est
@@ -1218,7 +1221,7 @@ B Theoph의 nlr의 전체 실행
## [11] 0.034880
##
## $`Elapsed Time`
-## Time difference of 0.008024 secs
+## Time difference of 0.01042 secs
##
## [1] "## ID = 12 ##"
## $Est
@@ -1297,7 +1300,7 @@ B Theoph의 nlr의 전체 실행
## [11] -0.03683
##
## $`Elapsed Time`
-## Time difference of 0.006556 secs
+## Time difference of 0.006656 secs
3장 비구획분석의 자료해석의 3.7.1절에서 언급된 NonCompart::tblNCA()
실행결과를 별첨으로 수록하였다.
## Subject b0 CMAX CMAXD TMAX TLAG CLST CLSTP
## 1 1 2.369 10.50 0.03281 1.12 0 3.28 3.2801
## 2 2 2.411 8.33 0.02603 1.92 0 0.90 0.8886
@@ -435,7 +411,7 @@ A Theoph의 tblNCA의 전체 실
한성필10
+한성필8
약동학 구획분석을 한 문장으로 표현하자면 시간 농도(time-concentration data) 자료에 대한 약동학 파라미터 추정값(pharmacokinetic parameter estimates)을 구하는 과정이다. @@ -392,7 +367,7 @@
약동학 자료의 분석은 복잡하고 시간이 많이 걸리는 일이다. 모든 생물학 자료가 그러하듯 높은 변동성과 많은 노이즈가 PK 자료에 포함되어 있다. (Gabrielsson 2006) 따라서 비선형 회귀분석(Nonlinear regression analysis)이 필요한 구획분석을 위해서는 컴퓨터 소프트웨어의 사용이 필수적이다. -이 때 Certara Phoenix NLME11, Monolix12와 같은 여러가지 소프트웨어들이 사용되고 있지만, 가장 널리쓰이는 도구는 ICON사의 NONMEM13이라고 하는 소프트웨어이다. (그림 5.2) +이 때 Certara Phoenix NLME9, Monolix10와 같은 여러가지 소프트웨어들이 사용되고 있지만, 가장 널리쓰이는 도구는 ICON사의 NONMEM11이라고 하는 소프트웨어이다. (그림 5.2) 이것은 FORTRAN 코드로 프로그램 되어 있으며 2021년 현재 버전 7.5.0까지 지속적으로 업데이트 되고 있는 소프트웨어로, 구획분석 및 계량약리학 분야에서 가장 표준적인 도구로 쓰이고 있다. 이에 대한 각종 자료를 이곳에서 다루기는 지면의 제약과 이론의 어려움 때문에 별도의 참고서적을 활용하는 것이 바람직할 것이다. (Bauer 2020; Gabrielsson 2006; D. S. Yim 2020)
상용 소프트웨어를 통한 구획분석 방법은 GUI 기반이고 많은 사용자가 확보되어 있다는 장점이 있으나, 상당한 비용을 매년 지불하여야 하며, 접근이 다소 쉽지 않다는 단점을 가지고 있다.
@@ -426,7 +401,7 @@실제 여기에서 derivation 을 정규 분포에만 적용한 것이 최대 가능도 측정법(maximum likelihood estimation method)14이라면, 정규 분포라는 가정 없이도 적용한 것이 NONMEM이며 이 방식을 `확장된 최소 제곱법’(extended least square method)이라고 한다.
+실제 여기에서 derivation 을 정규 분포에만 적용한 것이 최대 가능도 측정법(maximum likelihood estimation method)12이라면, 정규 분포라는 가정 없이도 적용한 것이 NONMEM이며 이 방식을 `확장된 최소 제곱법’(extended least square method)이라고 한다.
이 책의 예제에서는 NONMEM의 확장된 최소 제곱법을 적용한 wnl 패키지의 nlr()
함수를 사용하였다.
각 모델에 맞는 적합한 모델에 따라 다음과 같은 script 형태로 입력해 주게 되며, 그에 대한 표준 오차(standard error of estimates), 공분산 행렬(covariance matrix of estimates), run test results on residuals, AIC, AICc, SBC를 내부 계산을 통하여 도출하게 된다.
이때 run test란 잔차(residual)들이 무작위적으로 분포하는지를 보기 위해서 각각의 @@ -438,7 +413,7 @@
아래의 코드로 wnl 라이브러리를 불러오고 hands-on1.csv15 파일을 읽어올 수 있다.
+아래의 코드로 wnl 라이브러리를 불러오고 hands-on1.csv13 파일을 읽어올 수 있다.
library(wnl)
dPK02 = read.csv("data/hands-on1.csv", skip=1)
colnames(dPK02) = c("TIME", "DV")
@@ -479,7 +454,7 @@ 5.4 1구획모델을 이용한
## [34] "min" "min" "min"
## attr(,"UsedPoints")
## [1] 7 8 9 10 11 12 13
-아래에서 경구 복용 후 1차식16에 의해 소실되는 약물의 약동학 모델을 사용한다. +
아래에서 경구 복용 후 1차식14에 의해 소실되는 약물의 약동학 모델을 사용한다. 이 경우에는 wnl 패키지 내부에 기본적 equation이 정의되어 있으므로 추가적인 equation을 입력하지 않고 각각의 파라미터의 값에 해당하는 THETA에 대해서만 입력하였다. 필요한 THETA는 k(제거속도상수), ka(흡수속도상수), V(부피), tlag(흡수가 지연되는 시간)이다.
wnl 라이브러리를 불러오고 자료를 읽어온다.
이전 예제에서는 1명의 경구투약 후 농도 자료였고, 이번 예제는 4명의 i.v.투약 후 농도 자료이다. (그림 5.4)
-hands-on2.csv
17를 읽어 들인 후 그림을 통해 자료의 탐색을 수행한다.
hands-on2.csv
15를 읽어 들인 후 그림을 통해 자료의 탐색을 수행한다.
library(wnl)
dPK01 <- read.csv("data/hands-on2.csv", skip=1)
colnames(dPK01) <- c("TIME", "DV", "ID")
@@ -709,7 +684,7 @@ 5.5.2 모델링 결과
5.6 2구획모델 경구 흡수 이용한 약동학 자료 분석
wnl 라이브러리를 불러오고 자료를 읽어온다.
-hands-on3.csv
18를 읽어 들인 후 모델링을 수행한다.
+hands-on3.csv
16를 읽어 들인 후 모델링을 수행한다.
library(wnl)
dPK14 <- read.csv("data/hands-on3.csv", skip=1)
colnames(dPK14) = c("TIME", "DV") ; dPK14
@@ -868,6 +843,9 @@ 5.8 맺음말
@@ -888,16 +866,16 @@ 참고문헌
-
-약동학 데이터를 분석하여 PK 파라미터를 찾는 업무를 하지 않는 독자들은 이 장을 읽지 않고 넘어가도 좋습니다.↩︎
-
-
-
-최대 가능도 측정법(maximum likelihood estimation method)은 점 추정치를 찾는데까지는 오래 걸리나, 표준 오차(standard error of estimates)를 구하는게 유리하다. 최근에는 최소 제곱법(least square method) 보다 널리 쓰이고 있다.↩︎
+
+약동학 데이터를 분석하여 PK 파라미터를 찾는 업무를 하지 않는 독자들은 이 장을 읽지 않고 넘어가도 좋습니다.↩︎
+
+
+
+최대 가능도 측정법(maximum likelihood estimation method)은 점 추정치를 찾는데까지는 오래 걸리나, 표준 오차(standard error of estimates)를 구하는게 유리하다. 최근에는 최소 제곱법(least square method) 보다 널리 쓰이고 있다.↩︎
+
+1차식(first-order kinetics)에 의한 소실이란 체내에 남이 있는 특정시점의 약물량의 일정 분율만큼 약물이 단위시간당 소실되는 것을 말한다.↩︎
-1차식(first-order kinetics)에 의한 소실이란 체내에 남이 있는 특정시점의 약물량의 일정 분율만큼 약물이 단위시간당 소실되는 것을 말한다.↩︎
-
-
+
@@ -906,7 +884,7 @@ 참고문헌
-
+
2024-02-06
실전약동학1의 초판이 나온 지 3년이 흘렀습니다. 초판을 낼 때 정리할 시간이 없어서 다루지 못했던 항체의약품의 약동학을 추가한 개정판을 내게 되었습니다. 이 개정판도 초판과 같이 웹북1으로 만들기 위해 애써주신 한성필 교수님과 이정현 학생께 고마움을 전합니다.
-교육의 질은 교사의 질을 넘어설 수 없다는 격언이 있습니다. 마찬가지로 대학원 교육, 수련의 품질 역시 교수의 질을 넘어설 수 없습니다. 학계의 무슨 권력이나 자리, 연줄, 헛된 이름 등에 연연치 않고 본질적 가치를 추구하겠다는 소신을 가진 교수들이라야 이 나라의 귀한 젊은이들을 나이 든 사람들의 이익을 위해 소모시키지 않고 자신들의 잠재력을 펼치게 도울 수 있습니다. 이런 신념을 공유하며 실천해 주신 가톨릭의대/서울성모병원의 임상약리학 교수님들과 수련에 도움주시는 졸업생들께 깊은 감사를 드립니다.
-저희 팀은 신약개발의 여러 단계에서 과학적 의사결정에 필수적 도구인 임상약리학의 역할을 제대로 구현하기 위해 관·산·학을 대상으로 PK/PD 모델링을 십 년 이상 가르치며 보급해 왔습니다. 그러나 지식을 전파하는 것만으로는 변화를 일으키기에 부족함을 절감하여 졸업생들과 함께 회사를 창업하여 제약, 바이오 기업들의 과학적 의사결정을 현장에서 돕고 있습니다. 또한 신약개발 현장에서 필요한 산 지식과 경험들을 체계적이고 지속적으로 교육시키기 위해 뜻을 같이하는 분들과 사단법인 청람바이오아카데미2를 2023년에 창립하여 학계와 산업계의 간극을 좁히고자 노력하고 있습니다.
-2024년 봄, 성의교정 연구실에서
-가톨릭의대 약리학교실 교수 임동석 拜
+이 책은 제약·바이오 업계의 신약 연구자들이 약동학(pharmacokinetics)을 이해하는 것을 돕기 위해 만들어졌습니다.
++약동학은 신약의 발견부터 시판허가 이후의 관리에 이르기까지 모든 단계에서 쓰이는 가장 기본적이고 필수적인 지식이며 도구입니다. +오늘날 다양한 생명과학 분야의 전문인력들이 우리나라에서 신약의 발견과 초기개발과정, 임상개발 과정에서 핵심적인 역할들을 수행하고 있습니다. +그러나 학위과정 중에 약동학이나 약력학을 공부할 기회가 없었던 분들이 많아서 업무 수행 중 의사결정이나 소통에 있어서 늘 크고 작은 어려움을 겪고 있습니다. +이런 현실은 본격적인 신약개발의 역사가 일천한 우리나라에서 거쳐갈 수밖에 없는 과정이지만, 소수의 전문가들이 제약회사에 가서 강의 몇시간 하는 식으로는 해결되지 않습니다.
+물론 ‘임상약동학’ 또는 ‘약동학’ 이라는 제목의 좋은 책들은 이미 국내에도 +여러 권 나와 있습니다. 그러나 약동학 데이터를 직접 들여다보고 분석하는 +학문(임상약리학, 약제학 등)을 대학원에서 전공하지 않은 이상, 그 두꺼운 교재들의 복잡한 수식을 다 읽어야 할 절박함도 없을 것이고, 설혹 읽어본다 +한들 쉽게 이해할 수도 없습니다. +또한 많은 책들이 약동학 수식들을 충실히 +다루고는 있지만 신약을 실제로 개발하는 과정에서 제약사 연구원들이 부딪히는 의문들을 해결하는데 주안점을 두고 저술된 것이 아니므로 현장의 답답함을 풀어주는 데에는 한계가 있어왔습니다.
+이런 현실을 조금이라도 타개하기 위해서는 국내 제약, 바이오 기업에서 신약개발 업무를 수행하고 있는 다양한 전공의 연구자들이 시공간의 제약없이 공부할 수 있는 온라인 강의 동영상, 그리고 그와 함께 읽을 수 있는 교재를 만드는 작업이 절실하였습니다. +그래서 저자들은 지난 20여년간 대학과 기업의 연구원들을 대상으로 약동학을 가르치며 겪은 학습자들의 질문과 반응들을 토대로 꼭 필요한 내용들을 이해하기 쉽게 설명하고자 영상 제작과 함께, 이 교재를 만들게 되었습니다. 1
+저자들은 “약동학”이라는 방법론 자체를 전공했다기 보다는 그것을 기본적인 +도구로 사용하는 학문인 임상약리학을 공부해 온 사람들입니다. 이 책에 담긴 +지식들 중 저자들이 새롭게 만들어낸 것은 거의 없으므로 이 책은 오랜 세월 +동안 세상의 많은 학자들이 만들어 온 지식들을 모아서 시중에 유통시킨 것에 +지나지 않습니다. 다만 신약개발을 위해 임상약리학을 적용하는 과정에서, +함께 일해왔던 기업들에서 만들어진 물질들의 약효, 독성, 약동학에 관한 +비임상, 임상 연구자료들을 들여다보면서 수없이 토의하고 질문했던 내용들을 +책 속에 충실히 반영하고자 하였습니다. 그 내용을 독자들이 좀 더 +효율적으로 학습할 수 있도록 오래된 지식들을 새로운 방식으로 자르고 묶고 +다듬어 내놓고자 노력했습니다. 약동학 책에는 수식들이 꽤 등장하기 때문에, 이 책의 내용 역시 어렵게 느껴질 수 있으므로 온라인상에 공개되어 있는 강의 동영상을 책과 함께 공부하시기를 권합니다. +이 책은 제약/바이오 기업의 연구자를 대상으로 쓰여진 것이지만, 관련된 전공을 공부하는 대학원생들에게도 도움이 될 것입니다. +그러므로 학생들의 책값 부담을 덜어주기 위해 책 전체를 웹북과 pdf로 온라인 상에 공개하였습니다. 2 +종이책은 print on demand 방식으로 출판하면서 저자들은 인세를 받지 않음으로써 복사/제본비 수준의 책값을 책정하였습니다.
+이를 위해 원고 집필 뿐 아니라 책의 조판에까지 많은 시간과 수고를 쏟아야 했던 한성필 교수님께 고마움을 전합니다.
+이 책과 강의동영상이 우리나라에서 신약의 비임상, 임상개발 과정에 참여하고 있는 각 분야 전문가들의 역량을 더욱 잘 발휘할 수 있게 돕는 디딤돌이 된다면 저자들 모두의 기쁨이겠습니다. +
+ +2021년 9월, 성의교정 연구실에서
+대표저자 임동석 拜
+한성필5 +
한성필3
상용 소프트웨어 중 가장 많이 사용되는 것이 Certara 사의 Phoenix WinNonLin이다. 오랜 시간 많은 연구자들이 사용하여 익숙한 GUI 인터페이스를 제공하고 있고, 혈액, 소변 자료의 NCA 등을 제공하고 간단한 설계의 생물학적 동등성 판정 등 통계 분석도 지원하여 비교적 진입장벽이 낮은 자료 분석 도구라 할 수 있다.
그러나 소규모 제약사나 학교에서 사용하기에 비싼 사용료를 지불해야 한다. NCA를 빈번하게 사용하지 않는 제약사나 바이오텍에서는 이러한 유지비용이 부담으로 다가올 수 있다. -분석 초보자의 경우 유료 강의를 통한 학습이 필요하며, CDISC(Clinical Data Interchange Standards Consortium)6 표준 용어로 파라미터를 제공하지 않아 그 의미를 따로 파악해야 하는 어려움이 있다. +분석 초보자의 경우 유료 강의를 통한 학습이 필요하며, CDISC(Clinical Data Interchange Standards Consortium)4 표준 용어로 파라미터를 제공하지 않아 그 의미를 따로 파악해야 하는 어려움이 있다. 비교적 경험이 쌓인 연구자에게는 분석 워크플로우를 프로그래밍 코드를 통해 자동화하는게 불가능한 것이 단점으로 여겨질 수 있다. 윈도우 환경에서만 실행 가능하다는 것도 특정 운영체제를 선호하는 사람에게 제한점이 될 수 있다.
식약처, 미국 FDA(Food and Drug Administration), 유럽 EMA(European Medicines Agency)를 비롯한 대부분의 규제기관에서는 NCA에 쓰는 특정 소프트웨어를 규정하고 있지 않아, 상용 소프트웨어를 사용하지 않고 약동학적 지표를 구하는 것을 허용하고 있다.
@@ -408,7 +383,7 @@이를 사용하기 위해 아래의 순서로 R과 Rstudio를 설치해야 한다.
Download R for Windows
링크를 선택한다.Subdirectories
유형에서 base - install R for the first time
을 선택한다.read_csv()
함수를 사용해서 자료를 불러 온다.
엑셀 파일을 사용하는 경우 readxl
패키지(Wickham and Bryan 2019)를 설치한 후에 read_excel()
함수를 사용해서 불러올 수 있다.
-다만 read_csv(), read_excel()
을 사용하는 경우 tibble
형태로 자료가 변형되고 이러한 형태의 자료는 tblNCA()
사용시 오류를 일으키기 때문에 사전에 as.data.frame()
을 사용해서 데이타프레임으로 변형해주어야 한다. 8
다만 read_csv(), read_excel()
을 사용하는 경우 tibble
형태로 자료가 변형되고 이러한 형태의 자료는 tblNCA()
사용시 오류를 일으키기 때문에 사전에 as.data.frame()
을 사용해서 데이타프레임으로 변형해주어야 한다. 6
ncar::RptCfg의 일부를 첨부한다. (표 3.2) PPTESTCD
는 NonCompart 패키지에서 출력하는 파라미터 이름이며, CDISC SDTM PPTESTCD (Parameter Short Name)9와 같은 값이다. WNL
열은 Certara Phoenix WinNonLin에서 구한 파라미터 이름이다.
ncar::RptCfg의 일부를 첨부한다. (표 3.2) PPTESTCD
는 NonCompart 패키지에서 출력하는 파라미터 이름이며, CDISC SDTM PPTESTCD (Parameter Short Name)7와 같은 값이다. WNL
열은 Certara Phoenix WinNonLin에서 구한 파라미터 이름이다.