Mechanism of Doxorubicin-induced Cardiotoxicity
Organism Mus musculus
To compare expression profiles in the cardiomyocytes with wild type top2b and those with top2b deletion after in vivo treatment of mice with doxorubicin or drug vehicle
Doxorubicin is widely used in modern cancer treatments, despite the advent of targeted therapy. However, a dose-dependent cardiotoxicity often limits its clinical use. The prevailing theory hypothesizes that doxorubicin-induced cardiotoxicity is the result of reactive oxygen species (ROS) generation due to redox-cycling of doxorubicin. Here is shown that cardiomyocyte-specific deletion of Topoisomerase II beta (Top2b) markedly reduced DNA double-strand breaks, apoptosis, and functional damages in doxorubicin-treated hearts. To investigate transcriptomic changes after doxorubicin treatment in wild type mouse and mouse with cardiac specific deletion of Top2b, researchers have examined the expression profiles in 4 groups of mice (3/group), ie. wildtype mice with or without doxorubicin treatment and mice with Top2b deletion in the cardiomyocytes with or without doxorubicin treatment. Mice were treated with doxorubicin (25mg/kg, i.p.) or PBS (drug vehicle) for 16 hr or 72 hr. The heart was removed and cardiomyocytes were isolated by using a Langendorff apparatus. After purification, total RNA was extracted from the cardiomyocytes, purified, and used for gene expression analysis. Compared with that in control cardiomyocytes or cardiomyocytes with Top2b deletion, doxorubicin caused a significant expression change in the genome of cardiomyocytes from the wildtype mice. Among the changes, multiple genes encoding mitochondrial structural protein and components of the respiratory chain complexes were down-regulated 72 hr after treatment while multiple genes in the p53 pathway were up-regulated 16 hr after treatment in the wildtype cardiomyocytes.
Overall design: Expression changes were examined in 2 groups of mice (wild type and conditional knockout of top2b in the cardiomyocytes) treated with doxorubicin or PBS for 16 or 72 hours
library(limma)
library(tidyverse)
library(dplyr)
library(magrittr)
Features Samples
29532 12
treatment
genotype dox pbs
top2b 3 3
wt 3 3
Feature Inspection from Density-plot and Pre-processing
eset <- doxiru
exprs(eset) <- log(exprs(eset))
plotDensities(eset, group = pData(eset)[,"genotype"], legend = "topright")

# Quantile normalize
exprs(eset) <- normalizeBetweenArrays(exprs(eset))
plotDensities(eset, group = pData(eset)[,"genotype"], legend = "topright")
abline(v=0)

# Determining the genes with mean expression level greater than 0
keep <- rowMeans(exprs(eset)) > 0
sum(keep)
[1] 18361
eset <- eset[keep,]
plotDensities(eset, group = pData(eset)[,"genotype"], legend = "topright")

NA
NA
Boxplot of top2b

As expected, the expresssion of Top2b is much lower in the null mice (top2b) compared to wild type (wt).
Batch Effects & Checking Sources of Variations
Visualized the variation effect in PCA with Multidimensional Scaling. Both treatment and genotypic variates are checked.
plotMDS(eset, labels = pData(eset)[,"genotype"], gene.selection = "common")

plotMDS(eset, labels = pData(eset)[,"treatment"], gene.selection = "common")

Reassuringly, the samples cluster by their genotype and treatment. Interestingly, the Top2b null samples cluster more tightly compared to the wild type samples.
This supports the hypothesis that, top2b null mice are resistant to cardiotoxic effect of Doxorubicin.
Data Modelling
Factorial Design Using Group-mean Parameterization Model for Doxorubicine Study;
\(Y \:= \:\beta_1 X_1 \:+\: \beta_2 X_2 \:+\:\beta_3 X_3\:+\: \beta_4 X_4\:+\: \epsilon\)
- \(β_1\) - Mean expression level in top2b mice treated with dox
- \(β_2\) - Mean expression level in top2b treated with pbs
- \(β_3\) - Mean expression level in wt mice treated with dox
- \(β_4\) - Mean expression level in wt mice treated with pbs
Contrasts for Doxorubicine Study
- Response of wild type mice to dox treatment: \(β_3 − β_4\) = 0
- Response of Top2b null mice to dox treatment: \(β_1 − β_2\) = 0
- Differences between Top2b null and wild type mice in response to dox treatment: \((β_1 − β_2) - (β_3 − β_4) = 0\)
group <- with(pData(eset), paste(genotype, treatment, sep = "."))
group <- factor(group)
design <- model.matrix(~0 + group)
colnames(design) <- levels(group)
colSums(design)
top2b.dox top2b.pbs wt.dox wt.pbs
3 3 3 3
This resulted in 4 coefficients that each model 3 samples.
To test for the effect of doxorubicin on the hearts of wild type and Top2b null mice (and any interaction between treatment and genotype), it’s needed to contrast the coefficients from the design matrix.
cm <- makeContrasts(dox_wt = wt.dox - wt.pbs,
dox_top2b = top2b.dox - top2b.pbs,
interaction = (top2b.dox - top2b.pbs) - (wt.dox - wt.pbs),
levels = design)
# View the contrasts matrix
cm
Contrasts
Levels dox_wt dox_top2b interaction
top2b.dox 0 1 1
top2b.pbs 0 -1 -1
wt.dox 1 0 -1
wt.pbs -1 0 1
Model Fitting
fit <- lmFit(eset, design)
fit2 <- contrasts.fit(fit, contrasts = cm)
fit2 <- eBayes(fit2)
results <- decideTests(fit2)
summary(results)
dox_wt dox_top2b interaction
Down 3180 0 1254
NotSig 12265 18361 15621
Up 2916 0 1486
# Create a Venn diagram
vennDiagram(results)

As expected, the doxorubucin only had an effect on the wild type mice.
Contrast Specified P-value Histogram
stats_dox_wt <- topTable(fit2, coef = "dox_wt", number = nrow(fit2),
sort.by = "none")
stats_dox_top2b <- topTable(fit2, coef = "dox_top2b", number = nrow(fit2),
sort.by = "none")
stats_interaction <- topTable(fit2, coef = "interaction", number = nrow(fit2),
sort.by = "none")
hist(stats_dox_wt[,"P.Value"])

hist(stats_dox_top2b[,"P.Value"])

hist(stats_interaction[,"P.Value"])

The contrasts dox_wt and interaction were enriched for low p-values, and the p-values for the contrast dox_top2b were uniformly distributed.
Contrast Specified Volcano-Plot
# Extract the gene symbols
gene_symbols <- fit2$genes[,"symbol"]
# Create a volcano plot for the contrast dox_wt
volcanoplot(fit2, coef = "dox_wt", highlight = 5, names = gene_symbols)

# Create a volcano plot for the contrast dox_top2b
volcanoplot(fit2, coef = "dox_top2b", highlight = 5, names = gene_symbols)

# Create a volcano plot for the contrast interaction
volcanoplot(fit2, coef = "interaction", highlight = 5, names =gene_symbols)

The difference in the x- and y-axis ranges for the dox_top2b contrast comapred to the other two are noted.
Pathway Enrichment Analysis
To better understand the effect of the differentially expressed genes in the doxorubicin study, enrichment of known biological pathways curated in the KEGG database are tested.
entrez <- fit2$genes[,"entrez"]
enrich_dox_wt <- kegga(fit2, coef = "dox_wt", geneid = entrez, species = "Mm")
topKEGG(enrich_dox_wt)
enrich_interaction <- kegga(fit2, coef = "interaction", geneid = entrez, species = "Mm")
topKEGG(enrich_interaction)
One of the top hits for both contrasts was a pathway for cardiomyopathy, so the genes in this pathway would be worth investigating further.
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets methods base
other attached packages:
[1] limma_3.40.6 plotly_4.9.2.1 annotables_0.1.91
[4] forcats_0.5.0 stringr_1.4.0 dplyr_0.8.3
[7] purrr_0.3.3 readr_1.3.1 tidyr_1.0.0
[10] tibble_2.1.3 ggplot2_3.3.2 tidyverse_1.3.0
[13] magrittr_1.5 SummarizedExperiment_1.14.1 DelayedArray_0.10.0
[16] BiocParallel_1.18.1 matrixStats_0.57.0 Biobase_2.44.0
[19] GenomicRanges_1.36.1 GenomeInfoDb_1.20.0 IRanges_2.18.3
[22] S4Vectors_0.22.1 BiocGenerics_0.30.0
loaded via a namespace (and not attached):
[1] colorspace_1.4-1 ellipsis_0.3.1 rsconnect_0.8.16 htmlTable_2.1.0
[5] XVector_0.24.0 base64enc_0.1-3 fs_1.3.1 rstudioapi_0.11
[9] remotes_2.2.0 bit64_4.0.5 AnnotationDbi_1.46.1 fansi_0.4.1
[13] lubridate_1.7.4 xml2_1.2.2 splines_3.6.1 geneplotter_1.62.0
[17] knitr_1.30 Formula_1.2-4 jsonlite_1.7.1 broom_0.5.3
[21] annotate_1.62.0 GO.db_3.8.2 cluster_2.1.0 dbplyr_1.4.4
[25] png_0.1-7 BiocManager_1.30.10 compiler_3.6.1 httr_1.4.2
[29] backports_1.1.5 assertthat_0.2.1 Matrix_1.2-18 lazyeval_0.2.2
[33] cli_2.1.0 org.Mm.eg.db_3.8.2 htmltools_0.5.0 tools_3.6.1
[37] gtable_0.3.0 glue_1.3.1 GenomeInfoDbData_1.2.1 Rcpp_1.0.3
[41] cellranger_1.1.0 vctrs_0.3.4 nlme_3.1-143 xfun_0.18
[45] rvest_0.3.6 lifecycle_0.2.0 XML_3.99-0.3 zlibbioc_1.30.0
[49] scales_1.1.1 hms_0.5.3 RColorBrewer_1.1-2 yaml_2.2.1
[53] curl_4.3 memoise_1.1.0 gridExtra_2.3 rpart_4.1-15
[57] latticeExtra_0.6-29 stringi_1.4.4 RSQLite_2.2.1 genefilter_1.66.0
[61] checkmate_2.0.0 rlang_0.4.8 pkgconfig_2.0.3 bitops_1.0-6
[65] evaluate_0.14 lattice_0.20-38 htmlwidgets_1.5.2 bit_4.0.4
[69] tidyselect_0.2.5 R6_2.4.1 generics_0.0.2 Hmisc_4.4-1
[73] DBI_1.1.0 pillar_1.4.6 haven_2.3.1 foreign_0.8-74
[77] withr_2.3.0 survival_3.1-8 RCurl_1.98-1.2 nnet_7.3-12
[81] modelr_0.1.8 crayon_1.3.4 rmarkdown_2.5 jpeg_0.1-8.1
[85] locfit_1.5-9.4 grid_3.6.1 readxl_1.3.1 data.table_1.13.0
[89] blob_1.2.1 reprex_0.3.0 digest_0.6.26 xtable_1.8-4
[93] munsell_0.5.0 viridisLite_0.3.0
LS0tDQp0aXRsZTogIlJOQS1zZXEgRGF0YSBBbmFseXNpcyAoTGltbWEpIg0KYXV0aG9yOiAiTWQuIFRhYmFzc3VtIEhvc3NhaW4gRW1vbiINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgaW5jbHVkZXM6DQogICAgICBhZnRlcl9ib2R5OiBmb290ZXIuaHRtbA0KICAgIHRoZW1lOiBkYXJrbHkNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBkZl9wcmludDogcGFnZWQNCi0tLQ0KDQo8YnI+DQo8YnI+DQoNCjxoMSBhbGlnbj0nY2VudGVyJz48c3Ryb25nPk1lY2hhbmlzbSBvZiBEb3hvcnViaWNpbi1pbmR1Y2VkIENhcmRpb3RveGljaXR5PC9zdHJvbmc+PC9oMT4NCg0KPGJyPg0KDQoqKk9yZ2FuaXNtKiogCSpNdXMgbXVzY3VsdXMqDQoNClRvIGNvbXBhcmUgZXhwcmVzc2lvbiBwcm9maWxlcyBpbiB0aGUgY2FyZGlvbXlvY3l0ZXMgd2l0aCB3aWxkIHR5cGUgdG9wMmIgYW5kIHRob3NlIHdpdGggdG9wMmIgZGVsZXRpb24gYWZ0ZXIgaW4gdml2byB0cmVhdG1lbnQgb2YgbWljZSB3aXRoIGRveG9ydWJpY2luIG9yIGRydWcgdmVoaWNsZSBeWyJaaGFuZyBTLCBMaXUgWCwgQmF3YS1LaGFsZmUgVCwgTHUgTFMgZXQgYWwuIElkZW50aWZpY2F0aW9uIG9mIHRoZSBtb2xlY3VsYXIgYmFzaXMgb2YgZG94b3J1YmljaW4taW5kdWNlZCBjYXJkaW90b3hpY2l0eS4gTmF0IE1lZCAyMDEyIE5vdjsxOCgxMSk6MTYzOS00Mi4gUE1JRDogMjMxMDQxMzIiXQ0KDQo8YnI+DQoNCkRveG9ydWJpY2luIGlzIHdpZGVseSB1c2VkIGluIG1vZGVybiBjYW5jZXIgdHJlYXRtZW50cywgZGVzcGl0ZSB0aGUgYWR2ZW50IG9mIHRhcmdldGVkIHRoZXJhcHkuIEhvd2V2ZXIsIGEgZG9zZS1kZXBlbmRlbnQgY2FyZGlvdG94aWNpdHkgb2Z0ZW4gbGltaXRzIGl0cyBjbGluaWNhbCB1c2UuIFRoZSBwcmV2YWlsaW5nIHRoZW9yeSBoeXBvdGhlc2l6ZXMgdGhhdCBkb3hvcnViaWNpbi1pbmR1Y2VkIGNhcmRpb3RveGljaXR5IGlzIHRoZSByZXN1bHQgb2YgcmVhY3RpdmUgb3h5Z2VuIHNwZWNpZXMgKFJPUykgZ2VuZXJhdGlvbiBkdWUgdG8gcmVkb3gtY3ljbGluZyBvZiBkb3hvcnViaWNpbi4gSGVyZSBpcyBzaG93biB0aGF0IGNhcmRpb215b2N5dGUtc3BlY2lmaWMgZGVsZXRpb24gb2YgVG9wb2lzb21lcmFzZSBJSSBiZXRhIChUb3AyYikgbWFya2VkbHkgcmVkdWNlZCBETkEgZG91YmxlLXN0cmFuZCBicmVha3MsIGFwb3B0b3NpcywgYW5kIGZ1bmN0aW9uYWwgZGFtYWdlcyBpbiBkb3hvcnViaWNpbi10cmVhdGVkIGhlYXJ0cy4gVG8gaW52ZXN0aWdhdGUgdHJhbnNjcmlwdG9taWMgY2hhbmdlcyBhZnRlciBkb3hvcnViaWNpbiB0cmVhdG1lbnQgaW4gd2lsZCB0eXBlIG1vdXNlIGFuZCBtb3VzZSB3aXRoIGNhcmRpYWMgc3BlY2lmaWMgZGVsZXRpb24gb2YgVG9wMmIsIHJlc2VhcmNoZXJzIGhhdmUgZXhhbWluZWQgdGhlIGV4cHJlc3Npb24gcHJvZmlsZXMgaW4gNCBncm91cHMgb2YgbWljZSAoMy9ncm91cCksIGllLiB3aWxkdHlwZSBtaWNlIHdpdGggb3Igd2l0aG91dCBkb3hvcnViaWNpbiB0cmVhdG1lbnQgYW5kIG1pY2Ugd2l0aCBUb3AyYiBkZWxldGlvbiBpbiB0aGUgY2FyZGlvbXlvY3l0ZXMgd2l0aCBvciB3aXRob3V0IGRveG9ydWJpY2luIHRyZWF0bWVudC4gTWljZSB3ZXJlIHRyZWF0ZWQgd2l0aCBkb3hvcnViaWNpbiAoMjVtZy9rZywgaS5wLikgb3IgUEJTIChkcnVnIHZlaGljbGUpIGZvciAxNiBociBvciA3MiBoci4gVGhlIGhlYXJ0IHdhcyByZW1vdmVkIGFuZCBjYXJkaW9teW9jeXRlcyB3ZXJlIGlzb2xhdGVkIGJ5IHVzaW5nIGEgTGFuZ2VuZG9yZmYgYXBwYXJhdHVzLiBBZnRlciBwdXJpZmljYXRpb24sIHRvdGFsIFJOQSB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIGNhcmRpb215b2N5dGVzLCBwdXJpZmllZCwgYW5kIHVzZWQgZm9yIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4gQ29tcGFyZWQgd2l0aCB0aGF0IGluIGNvbnRyb2wgY2FyZGlvbXlvY3l0ZXMgb3IgY2FyZGlvbXlvY3l0ZXMgd2l0aCBUb3AyYiBkZWxldGlvbiwgZG94b3J1YmljaW4gY2F1c2VkIGEgc2lnbmlmaWNhbnQgZXhwcmVzc2lvbiBjaGFuZ2UgaW4gdGhlIGdlbm9tZSBvZiBjYXJkaW9teW9jeXRlcyBmcm9tIHRoZSB3aWxkdHlwZSBtaWNlLiBBbW9uZyB0aGUgY2hhbmdlcywgbXVsdGlwbGUgZ2VuZXMgZW5jb2RpbmcgbWl0b2Nob25kcmlhbCBzdHJ1Y3R1cmFsIHByb3RlaW4gYW5kIGNvbXBvbmVudHMgb2YgdGhlIHJlc3BpcmF0b3J5IGNoYWluIGNvbXBsZXhlcyB3ZXJlIGRvd24tcmVndWxhdGVkIDcyIGhyIGFmdGVyIHRyZWF0bWVudCB3aGlsZSBtdWx0aXBsZSBnZW5lcyBpbiB0aGUgcDUzIHBhdGh3YXkgd2VyZSB1cC1yZWd1bGF0ZWQgMTYgaHIgYWZ0ZXIgdHJlYXRtZW50IGluIHRoZSB3aWxkdHlwZSBjYXJkaW9teW9jeXRlcy4NCiAJDQoqKk92ZXJhbGwgZGVzaWduOioqCUV4cHJlc3Npb24gY2hhbmdlcyB3ZXJlIGV4YW1pbmVkIGluIDIgZ3JvdXBzIG9mIG1pY2UgKHdpbGQgdHlwZSBhbmQgY29uZGl0aW9uYWwga25vY2tvdXQgb2YgdG9wMmIgaW4gdGhlIGNhcmRpb215b2N5dGVzKSB0cmVhdGVkIHdpdGggZG94b3J1YmljaW4gb3IgUEJTIGZvciAxNiBvciA3MiBob3Vycw0KDQo8YnI+DQoNCioqKg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShsaW1tYSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobWFncml0dHIpDQpgYGANCjxicj48YnI+DQoNCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBwYWdlZC5wcmludD1UUlVFfQ0KZG94aXJ1IDwtIHJlYWRSRFMoImNhbmNlcl9kb3hpcnViaWNpbi1leHByLnJkcyIpDQoNCmBgYA0KDQpgYGB7ciBlY2hvPUZBTFNFfQ0KDQplc2V0IDwtIGRveGlydQ0KZGltKGVzZXQpDQpgYGANCg0KPGJyPg0KDQpgYGB7ciBlY2hvPUZBTFNFfQ0KDQp0YWJsZShwRGF0YShlc2V0KVssIGMoImdlbm90eXBlIiwgInRyZWF0bWVudCIpXSkNCg0KYGBgDQoNCg0KDQo8YnI+PGJyPjxicj48YnI+DQoNCioqKioqKg0KDQo8aDIgYWxpZ249ImNlbnRlciI+RmVhdHVyZSBJbnNwZWN0aW9uIGZyb20gRGVuc2l0eS1wbG90IGFuZCBQcmUtcHJvY2Vzc2luZzwvaDI+DQoNCmBgYHtyIGZpZy5oZWlnaHQ9NywgZmlnLndpZHRoPTEwfQ0KZXhwcnMoZXNldCkgPC0gbG9nKGV4cHJzKGVzZXQpKQ0KcGxvdERlbnNpdGllcyhlc2V0LCAgZ3JvdXAgPSBwRGF0YShlc2V0KVssImdlbm90eXBlIl0sIGxlZ2VuZCA9ICJ0b3ByaWdodCIpDQpgYGANCg0KPGJyPjxicj4NCg0KYGBge3IgZmlnLmhlaWdodD03LCBmaWcud2lkdGg9MTB9DQojIFF1YW50aWxlIG5vcm1hbGl6ZQ0KZXhwcnMoZXNldCkgPC0gbm9ybWFsaXplQmV0d2VlbkFycmF5cyhleHBycyhlc2V0KSkNCnBsb3REZW5zaXRpZXMoZXNldCwgIGdyb3VwID0gcERhdGEoZXNldClbLCJnZW5vdHlwZSJdLCBsZWdlbmQgPSAidG9wcmlnaHQiKQ0KYWJsaW5lKHY9MCkNCmBgYA0KDQo8YnI+PGJyPg0KDQoNCmBgYHtyfQ0KIyBEZXRlcm1pbmluZyB0aGUgZ2VuZXMgd2l0aCBtZWFuIGV4cHJlc3Npb24gbGV2ZWwgZ3JlYXRlciB0aGFuIDANCmtlZXAgPC0gcm93TWVhbnMoZXhwcnMoZXNldCkpID4gMA0Kc3VtKGtlZXApDQpgYGANCg0KPGJyPjxicj4NCg0KDQpgYGB7ciBmaWcuaGVpZ2h0PTcsIGZpZy53aWR0aD0xMH0NCmVzZXQgPC0gZXNldFtrZWVwLF0NCnBsb3REZW5zaXRpZXMoZXNldCwgZ3JvdXAgPSBwRGF0YShlc2V0KVssImdlbm90eXBlIl0sIGxlZ2VuZCA9ICJ0b3ByaWdodCIpDQoNCg0KYGBgDQoNCjxicj48YnI+DQo8YnI+PGJyPg0KDQoNCjxoMyBhbGlnbj0iY2VudGVyIj5Cb3hwbG90IG9mIHRvcDJiPC9oMz4NCg0KDQoNCmBgYHtyIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NywgZmlnLndpZHRoPTEwfQ0KdG9wMmIgPC0gd2hpY2goZkRhdGEoZXNldClbLCJzeW1ib2wiXSA9PSAiVG9wMmIiKQ0KDQpib3hwbG90KGV4cHJzKGVzZXQpW3RvcDJiLCBdIH4gcERhdGEoZXNldClbLCJnZW5vdHlwZSJdLA0KICAgICAgICBtYWluID0gZkRhdGEoZXNldClbdG9wMmIsInN5bWJvbCJdKQ0KYGBgDQoNCjxicj4NCg0KDQo8cCBhbGlnbj0iY2VudGVyIj5BcyBleHBlY3RlZCwgdGhlIGV4cHJlc3NzaW9uIG9mIFRvcDJiIGlzIG11Y2ggbG93ZXIgaW4gdGhlIG51bGwgbWljZSAodG9wMmIpIGNvbXBhcmVkIHRvIHdpbGQgdHlwZSAod3QpLjwvcD4NCg0KPGJyPg0KDQo8YnI+PGJyPg0KPGJyPjxicj4NCjxicj48YnI+DQoNCjxoMyBhbGlnbj0iY2VudGVyIj5CYXRjaCBFZmZlY3RzICYgQ2hlY2tpbmcgU291cmNlcyBvZiBWYXJpYXRpb25zPC9oMz4NCg0KPGJyPg0KPHAgYWxpZ24gPSJjZW50ZXIiPlZpc3VhbGl6ZWQgdGhlIHZhcmlhdGlvbiBlZmZlY3QgaW4gUENBIHdpdGggTXVsdGlkaW1lbnNpb25hbCBTY2FsaW5nLiBCb3RoIHRyZWF0bWVudCBhbmQgZ2Vub3R5cGljIHZhcmlhdGVzIGFyZSBjaGVja2VkLjwvcD4NCg0KYGBge3IgZmlnLmhlaWdodD03LCBmaWcud2lkdGg9MTB9DQpwbG90TURTKGVzZXQsIGxhYmVscyA9IHBEYXRhKGVzZXQpWywiZ2Vub3R5cGUiXSwgZ2VuZS5zZWxlY3Rpb24gPSAiY29tbW9uIikNCmBgYA0KDQoNCmBgYHtyIGZpZy5oZWlnaHQ9NywgZmlnLndpZHRoPTEwfQ0KDQpwbG90TURTKGVzZXQsIGxhYmVscyA9IHBEYXRhKGVzZXQpWywidHJlYXRtZW50Il0sIGdlbmUuc2VsZWN0aW9uID0gImNvbW1vbiIpDQpgYGANCg0KPGJyPg0KDQpSZWFzc3VyaW5nbHksIHRoZSBzYW1wbGVzIGNsdXN0ZXIgYnkgdGhlaXIgZ2Vub3R5cGUgYW5kIHRyZWF0bWVudC4gSW50ZXJlc3RpbmdseSwgdGhlIFRvcDJiIG51bGwgc2FtcGxlcyBjbHVzdGVyIG1vcmUgdGlnaHRseSBjb21wYXJlZCB0byB0aGUgd2lsZCB0eXBlIHNhbXBsZXMuDQoNCjxicj4NCg0KVGhpcyBzdXBwb3J0cyB0aGUgaHlwb3RoZXNpcyB0aGF0LCB0b3AyYiBudWxsIG1pY2UgYXJlIHJlc2lzdGFudCB0byBjYXJkaW90b3hpYyBlZmZlY3Qgb2YgRG94b3J1YmljaW4uDQoNCg0KPGJyPjxicj4NCjxicj48YnI+DQo8YnI+PGJyPg0KDQoqKioNCg0KPGgzIGFsaWduPSJjZW50ZXIiPkRhdGEgTW9kZWxsaW5nPC9oMz4NCg0KPGJyPg0KDQpGYWN0b3JpYWwgRGVzaWduIFVzaW5nIEdyb3VwLW1lYW4gUGFyYW1ldGVyaXphdGlvbiBNb2RlbCBmb3IgRG94b3J1YmljaW5lIFN0dWR5Ow0KDQoNCiRZIFw6PSAgXDpcYmV0YV8xIFhfMSBcOitcOiBcYmV0YV8yIFhfMiBcOitcOlxiZXRhXzMgWF8zXDorXDogXGJldGFfNCBYXzRcOitcOiBcZXBzaWxvbiQNCg0KPGJyPg0KDQotICTOsl8xJCAtIE1lYW4gZXhwcmVzc2lvbiBsZXZlbCBpbiB0b3AyYiBtaWNlIHRyZWF0ZWQgd2l0aCBkb3gNCi0gJM6yXzIkIC0gTWVhbiBleHByZXNzaW9uIGxldmVsIGluIHRvcDJiIHRyZWF0ZWQgd2l0aCBwYnMNCi0gJM6yXzMkIC0gTWVhbiBleHByZXNzaW9uIGxldmVsIGluIHd0IG1pY2UgdHJlYXRlZCB3aXRoIGRveA0KLSAkzrJfNCQgLSBNZWFuIGV4cHJlc3Npb24gbGV2ZWwgaW4gd3QgbWljZSB0cmVhdGVkIHdpdGggcGJzDQoNCjxicj48YnI+DQoNCjxoNCBhbGlnbj0iY2VudGVyIj5Db250cmFzdHMgZm9yIERveG9ydWJpY2luZSBTdHVkeTwvaDQ+DQoNCjxicj4NCg0KLSBSZXNwb25zZSBvZiB3aWxkIHR5cGUgbWljZSB0byBkb3ggdHJlYXRtZW50OiAkzrJfMyDiiJIgzrJfNCQgPSAwDQotIFJlc3BvbnNlIG9mIFRvcDJiIG51bGwgbWljZSB0byBkb3ggdHJlYXRtZW50OiAkzrJfMSDiiJIgzrJfMiQgPSAwDQotIERpZmZlcmVuY2VzIGJldHdlZW4gVG9wMmIgbnVsbCBhbmQgd2lsZCB0eXBlIG1pY2UgaW4gcmVzcG9uc2UgdG8gZG94IHRyZWF0bWVudDogJCjOsl8xIOKIkiDOsl8yKSAtICjOsl8zIOKIkiDOsl80KSA9IDAkDQoNCjxicj4NCg0KYGBge3J9DQpncm91cCA8LSB3aXRoKHBEYXRhKGVzZXQpLCBwYXN0ZShnZW5vdHlwZSwgdHJlYXRtZW50LCBzZXAgPSAiLiIpKQ0KZ3JvdXAgPC0gZmFjdG9yKGdyb3VwKQ0KDQoNCmRlc2lnbiA8LSBtb2RlbC5tYXRyaXgofjAgKyBncm91cCkNCmNvbG5hbWVzKGRlc2lnbikgPC0gbGV2ZWxzKGdyb3VwKQ0KDQoNCmNvbFN1bXMoZGVzaWduKQ0KYGBgDQoNCjxwIGFsaWduPSJjZW50ZXIiPlRoaXMgcmVzdWx0ZWQgaW4gNCBjb2VmZmljaWVudHMgdGhhdCBlYWNoIG1vZGVsIDMgc2FtcGxlcy48L3A+DQoNCjxicj48YnI+DQoNCjxicj4NCg0KVG8gdGVzdCBmb3IgdGhlIGVmZmVjdCBvZiBkb3hvcnViaWNpbiBvbiB0aGUgaGVhcnRzIG9mIHdpbGQgdHlwZSBhbmQgVG9wMmIgbnVsbCBtaWNlIChhbmQgYW55IGludGVyYWN0aW9uIGJldHdlZW4gdHJlYXRtZW50IGFuZCBnZW5vdHlwZSksIGl0J3MgbmVlZGVkIHRvIGNvbnRyYXN0IHRoZSBjb2VmZmljaWVudHMgZnJvbSB0aGUgZGVzaWduIG1hdHJpeC4NCg0KDQoNCmBgYHtyIGVjaG89VFJVRX0NCmNtIDwtIG1ha2VDb250cmFzdHMoZG94X3d0ID0gd3QuZG94IC0gd3QucGJzLA0KICAgICAgICAgICAgICAgICAgICBkb3hfdG9wMmIgPSB0b3AyYi5kb3ggLSB0b3AyYi5wYnMsDQogICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uID0gKHRvcDJiLmRveCAtIHRvcDJiLnBicykgLSAod3QuZG94IC0gd3QucGJzKSwNCiAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gZGVzaWduKQ0KY20NCmBgYA0KDQo8YnI+PGJyPg0KDQoNCjxoMyBhbGlnbj0iY2VudGVyIj5Nb2RlbCBGaXR0aW5nPC9oMz4NCg0KDQpgYGB7ciBmaWcuaGVpZ2h0PTcsIGZpZy53aWR0aD0xMH0NCg0KZml0IDwtIGxtRml0KGVzZXQsIGRlc2lnbikNCmZpdDIgPC0gY29udHJhc3RzLmZpdChmaXQsIGNvbnRyYXN0cyA9IGNtKQ0KZml0MiA8LSBlQmF5ZXMoZml0MikNCg0KcmVzdWx0cyA8LSBkZWNpZGVUZXN0cyhmaXQyKQ0Kc3VtbWFyeShyZXN1bHRzKQ0KDQojIENyZWF0ZSBhIFZlbm4gZGlhZ3JhbQ0KdmVubkRpYWdyYW0ocmVzdWx0cykNCmBgYA0KDQoNCjxwIGFsaWduPSdjZW50ZXInPkFzIGV4cGVjdGVkLCB0aGUgZG94b3J1YnVjaW4gb25seSBoYWQgYW4gZWZmZWN0IG9uIHRoZSB3aWxkIHR5cGUgbWljZS48L3A+DQoNCjxicj48YnI+DQoNCjxicj4NCg0KDQo8aDMgYWxpZ249ImNlbnRlciI+Q29udHJhc3QgU3BlY2lmaWVkIFAtdmFsdWUgSGlzdG9ncmFtPC9oMz4NCg0KPGJyPg0KDQpgYGB7ciBmaWcuaGVpZ2h0PTcsIGZpZy53aWR0aD0xMH0NCnN0YXRzX2RveF93dCA8LSB0b3BUYWJsZShmaXQyLCBjb2VmID0gImRveF93dCIsIG51bWJlciA9IG5yb3coZml0MiksDQogICAgICAgICAgICAgICAgICAgICAgICAgc29ydC5ieSA9ICJub25lIikNCg0Kc3RhdHNfZG94X3RvcDJiIDwtIHRvcFRhYmxlKGZpdDIsIGNvZWYgPSAiZG94X3RvcDJiIiwgbnVtYmVyID0gbnJvdyhmaXQyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0LmJ5ID0gIm5vbmUiKQ0KDQpzdGF0c19pbnRlcmFjdGlvbiA8LSB0b3BUYWJsZShmaXQyLCBjb2VmID0gImludGVyYWN0aW9uIiwgbnVtYmVyID0gbnJvdyhmaXQyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQuYnkgPSAibm9uZSIpDQoNCg0KaGlzdChzdGF0c19kb3hfd3RbLCJQLlZhbHVlIl0pDQpoaXN0KHN0YXRzX2RveF90b3AyYlssIlAuVmFsdWUiXSkNCmhpc3Qoc3RhdHNfaW50ZXJhY3Rpb25bLCJQLlZhbHVlIl0pDQpgYGANCg0KDQo8cCBhbGlnbj0nY2VudGVyJz4NClRoZSBjb250cmFzdHMgZG94X3d0IGFuZCBpbnRlcmFjdGlvbiB3ZXJlIGVucmljaGVkIGZvciBsb3cgcC12YWx1ZXMsIGFuZCB0aGUgcC12YWx1ZXMgZm9yIHRoZSBjb250cmFzdCBkb3hfdG9wMmIgd2VyZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQuPC9wPg0KDQo8YnI+DQoNCg0KPGgzIGFsaWduPSJjZW50ZXIiPkNvbnRyYXN0IFNwZWNpZmllZCBWb2xjYW5vLVBsb3Q8L2gzPg0KDQo8YnI+DQoNCmBgYHtyIGZpZy5oZWlnaHQ9NywgZmlnLndpZHRoPTEwfQ0KZ2VuZV9zeW1ib2xzIDwtIGZpdDIkZ2VuZXNbLCJzeW1ib2wiXQ0KDQp2b2xjYW5vcGxvdChmaXQyLCBjb2VmID0gImRveF93dCIsIGhpZ2hsaWdodCA9IDUsIG5hbWVzID0gZ2VuZV9zeW1ib2xzKQ0Kdm9sY2Fub3Bsb3QoZml0MiwgY29lZiA9ICJkb3hfdG9wMmIiLCBoaWdobGlnaHQgPSA1LCBuYW1lcyA9IGdlbmVfc3ltYm9scykNCnZvbGNhbm9wbG90KGZpdDIsIGNvZWYgPSAiaW50ZXJhY3Rpb24iLCBoaWdobGlnaHQgPSA1LCBuYW1lcyA9Z2VuZV9zeW1ib2xzKQ0KDQpgYGANCg0KPHAgYWxpZ249J2NlbnRlcic+DQpUaGUgZGlmZmVyZW5jZSBpbiB0aGUgeC0gYW5kIHktYXhpcyByYW5nZXMgZm9yIHRoZSBkb3hfdG9wMmIgY29udHJhc3QgY29tYXByZWQgdG8gdGhlIG90aGVyIHR3byBhcmUgbm90ZWQuPC9wPg0KDQoNCjxicj4NCjxicj48YnI+DQo8YnI+DQoNCioqKg0KDQoNCjxoMyBhbGlnbj0iY2VudGVyIj48c3Ryb25nPlBhdGh3YXkgRW5yaWNobWVudCBBbmFseXNpczwvc3Ryb25nPjwvaDM+DQoNCjxicj4NCg0KPHAgYWxpZ249J2NlbnRlcic+VG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGVmZmVjdCBvZiB0aGUgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGluIHRoZSBkb3hvcnViaWNpbiBzdHVkeSwgZW5yaWNobWVudCBvZiBrbm93biBiaW9sb2dpY2FsIHBhdGh3YXlzIGN1cmF0ZWQgaW4gdGhlIEtFR0cgZGF0YWJhc2UgYXJlIHRlc3RlZC48L3A+DQoNCg0KYGBge3J9DQplbnRyZXogPC0gZml0MiRnZW5lc1ssImVudHJleiJdDQoNCmVucmljaF9kb3hfd3QgPC0ga2VnZ2EoZml0MiwgY29lZiA9ICJkb3hfd3QiLCBnZW5laWQgPSBlbnRyZXosIHNwZWNpZXMgPSAiTW0iKQ0KdG9wS0VHRyhlbnJpY2hfZG94X3d0KQ0KZW5yaWNoX2ludGVyYWN0aW9uIDwtIGtlZ2dhKGZpdDIsIGNvZWYgPSAiaW50ZXJhY3Rpb24iLCBnZW5laWQgPSBlbnRyZXosIHNwZWNpZXMgPSAiTW0iKQ0KdG9wS0VHRyhlbnJpY2hfaW50ZXJhY3Rpb24pDQpgYGANCg0KPGJyPg0KT25lIG9mIHRoZSB0b3AgaGl0cyBmb3IgYm90aCBjb250cmFzdHMgd2FzIGEgcGF0aHdheSBmb3IgY2FyZGlvbXlvcGF0aHksIHNvIHRoZSBnZW5lcyBpbiB0aGlzIHBhdGh3YXkgd291bGQgYmUgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLg0KDQo8YnI+DQoNCmBgYHtyIGVjaG89RkFMU0V9DQpzZXNzaW9uSW5mbygpDQpgYGANCg0KPGJyPjxicj4=
A work by Md. Tabassum Hossain Emon
emon.biotech.10th@gmail.com