# DDSolver: An Add-In Program for Modeling and Comparison of Drug Dissolution Profiles

## Authors

- First Online:

- Received:
- Accepted:

DOI: 10.1208/s12248-010-9185-1

- Cite this article as:
- Zhang, Y., Huo, M., Zhou, J. et al. AAPS J (2010) 12: 263. doi:10.1208/s12248-010-9185-1

- 94 Citations
- 6.2k Views

## Abstract

In recent years, several mathematical models have been developed for analysis of drug dissolution data, and many different mathematical approaches have been proposed to assess the similarity between two drug dissolution profiles. However, until now, no computer program has been reported for simplifying the calculations involved in the modeling and comparison of dissolution profiles. The purposes of this article are: (1) to describe the development of a software program, called DDSolver, for facilitating the assessment of similarity between drug dissolution data; (2) to establish a model library for fitting dissolution data using a nonlinear optimization method; and (3) to provide a brief review of available approaches for comparing drug dissolution profiles. DDSolver is a freely available program which is capable of performing most existing techniques for comparing drug release data, including exploratory data analysis, univariate ANOVA, ratio test procedures, the difference factor *f*_{1}, the similarity factor *f*_{2}, the Rescigno indices, the 90% confidence interval (CI) of difference method, the multivariate statistical distance method, the model-dependent method, the bootstrap *f*_{2} method, and Chow and Ki’s time series method. Sample runs of the program demonstrated that the results were satisfactory, and DDSolver could be served as a useful tool for dissolution data analysis.

### Key words

computer programDDSolverdissolution similaritydrug dissolutiondrug-release model## INTRODUCTION

*In vitro* dissolution testing plays an important role in drug formulation development and quality control. It can be used not only as a primary tool to monitor the consistency and stability of drug products but also as a relatively rapid and inexpensive technique to predict *in vivo* absorption of a drug formulation. Therefore, quantitative evaluation of drug dissolution characteristics is of great interest to pharmaceutical scientists.

A wide variety of mathematical models have been developed to fit the drug release data, most of which are presented as nonlinear equations. Because there is no available computer program for fitting drug release data using these specific nonlinear equations, it is desirable to develop a nonlinear fitting program for solving these problems in a convenient way. However, until now, only one special program has been reported for fitting dissolution data, and only five release models have been implemented, and these could be applied only over a limited range (1). Alternatively, the nonlinear fitting of dissolution data can be performed using other professional statistical software packages such as MicroMath Scientist (2), GraphPad Prism (3), SigmaPlot (4), or SYSTAT (5). However, these programs require the user to define the equation manually and to provide an initial value for each parameter. This may make it difficult for new users to implement the procedure. Therefore, it is necessary to investigate an easy-to-use program for fitting release data with more ready-to-use dissolution models.

Another important area in dissolution data analysis is assessment of the similarity between dissolution profiles. Several approaches have been developed for comparing dissolution profiles, including approaches using the difference factor *f*_{1} and the similarity factor *f*_{2} (6), the Rescigno indices approaches (7), ratio-test approaches (8), ANOVA-based approaches (9), multivariate statistical approaches (10), and model-dependent approaches (11). It can be seen that the mathematical theory in this field has been well developed for more than 10 years. However, to the authors’ knowledge, no computer software package has been developed to facilitate calculations in this field; therefore, data analysis can be done only by hand or be partially done by professional statistical programs. This is time-consuming, and transcription errors are a common problem. Therefore, it is worthwhile to explore a program to streamline these tasks.

This paper presents a versatile and freely available add-in program, called DDSolver, which can be used (1) to facilitate the modeling of dissolution data using nonlinear optimization methods based on a built-in model library containing forty dissolution models, (2) to simplify the task of assessing the similarity between dissolution profiles using various popular approaches, and (3) to speed up the calculation, reduce user errors, and provide a convenient way to report dissolution data quickly and easily. The aim of this article is to report on the development of the specialized program for analysis of dissolution data.

## MATERIALS AND METHODS

### Interface

### Drug Dissolution Models

*in vitro*drug release behavior. This work was not performed to assess any particular model or to discuss the statistical or mechanical meaning of each model parameter, because these topics have been well reviewed previously (13,14). In fact, this work was intended to establish a model library and to assemble it into a ready-to-use module which can be easily accessed through the DDSolver program. For this purpose, a wide range of dissolution models was collected. Table I summarizes all the models implemented in the program; in all cases,

*F*is the percentage of drug released at time

*t*. Once the model library has been established, the release data can be easily fitted to any available model followed by quick generation of scatter plots with fitted curves for each individual dataset and a scatter plot with error bars and fitted curves for average data.

Models Available in DDSolver for Fitting Drug Release Data^{a}

Module | Model | Equation | Parameter(s) | Reference(s) |
---|---|---|---|---|

# 301 | Zero-order | \( F = {k_0} \cdot t \) |
| (15) |

# 302 | Zero-order with T | \( F = {k_0} \cdot \left( {t - {T_{\rm{lag}}}} \right) \) |
| (16) |

# 303 | Zero-order with F | \( F = {F_0} + {k_0} \cdot t \) |
| (13) |

# 304 | First-order | \( F = 100 \cdot \left( {1 - {e^{ - {k_1} \cdot t}}} \right) \) |
| (8) |

# 305 | First-order with | \( F = 100 \cdot \left[ {1 - {e^{ - {k_1} \cdot \left( {t - {T_{\rm{lag}}}} \right)}}} \right] \) |
| (17) |

# 306 | First-order with | \( F = {F_{\max }} \cdot \left( {1 - {e^{ - {k_1} \cdot t}}} \right) \) |
| (18) |

# 307 | First-order with | \( F = {F_{\max }} \cdot \left[ {1 - {e^{ - {k_1} \cdot \left( {t - {T_{\rm{lag}}}} \right)}}} \right] \) |
| (19) |

# 308 | Higuchi | \( F = {k_{\rm{H}}} \cdot {t^{0.5}} \) |
| (12) |

# 309 | Higuchi with | \( F = {k_{\rm{H}}} \cdot {\left( {t - {T_{\rm{lag}}}} \right)^{0.5}} \) |
| (20) |

# 310 | Higuchi with | \( F = {F_0} + {k_{\rm{H}}} \cdot {t^{0.5}} \) |
| (21) |

# 311 | Korsmeyer–Peppas | \( F = {k_{\rm{KP}}} \cdot {t^n} \) |
| |

# 312 | Korsmeyer–Peppas with | \( F = {k_{\rm{KP}}} \cdot {\left( {t - {T_{\rm{lag}}}} \right)^n} \) |
| (20) |

# 313 | Korsmeyer–Peppas with | \( F = {F_0} + {k_{\rm{KP}}} \cdot {t^n} \) |
| (13) |

# 314 | Hixson–Crowell | \( F = 100 \cdot \left[ {1 - {{\left( {1 - {k_{\rm{HC}}} \cdot t} \right)}^3}} \right] \) |
| (24) |

# 315 | Hixson–Crowell with | \( F = 100 \cdot \left\{ {1 - {{\left[ {1 - {k_{\rm{HC}}} \cdot \left( {t - {T_{\rm{lag}}}} \right)} \right]}^3}} \right\} \) |
| (25) |

# 316 | Hopfenberg | \( F = 100 \cdot \left[ {1 - {{\left( {1 - {k_{\rm{HB}}} \cdot t} \right)}^n}} \right] \) |
| (26) |

# 317 | Hopfenberg with | \( F = 100 \cdot \left\{ {1 - {{\left[ {1 - {k_{\rm{HB}}} \cdot \left( {t - {T_{\rm{lag}}}} \right)} \right]}^n}} \right\} \) |
| (27) |

# 318 | Baker–Lonsdale | \( \frac{3}{2}\left[ {1 - {{\left( {1 - \frac{F}{{100}}} \right)}^{2/3}}} \right] - \frac{F}{{100}} = {k_{\rm{BL}}} \cdot t \) |
| (28) |

# 319 | Baker–Lonsdale with | \( \frac{3}{2}\left[ {1 - {{\left( {1 - \frac{F}{{100}}} \right)}^{2/3}}} \right] - \frac{F}{{100}} = {k_{\rm{BL}}} \cdot \left( {t - {T_{\rm{lag}}}} \right) \) |
| (28) |

# 320 | Makoid–Banakar | \( F = {k_{\rm{MB}}} \cdot {t^n} \cdot {e^{ - k \cdot t}} \) |
| (29) |

# 321 | Makoid–Banakar with | \( F = {k_{\rm{MB}}} \cdot {\left( {t - {T_{\rm{lag}}}} \right)^n} \cdot {e^{ - k \cdot \left( {t - {T_{\rm{lag}}}} \right)}} \) |
| (29) |

# 322 | Peppas–Sahlin_1 | \( F = {k_1} \cdot {t^m} + {k_2} \cdot {t^{2m}} \) |
| (30) |

# 323 | Peppas–Sahlin_1 with | \( F = {k_1} \cdot \left( {t - {T_{\rm{lag}}}} \right)^{m} + {k_2} \cdot {\left( {t - {T_{\rm{lag}}}} \right)^{2m}} \) |
| (21) |

# 324 | Peppas–Sahlin_2 | \( F = {k_1} \cdot {t^{0.5}} + {k_2} \cdot t \) |
| (30) |

# 325 | Peppas–Sahlin_2 with | \( F = {k_1} \cdot {\left( {t - {T_{\rm{lag}}}} \right)^{0.5}} + {k_2} \cdot \left( {t - {T_{\rm{lag}}}} \right) \) |
| (30) |

# 326 | Quadratic | \( F = 100 \cdot \left( {{k_1} \cdot {t^2} + {k_2} \cdot t} \right) \) |
| |

# 327 | Quadratic with | \( F = 100 \cdot \left[ {{k_1} \cdot {{\left( {t - {T_{\rm{lag}}}} \right)}^2} + {k_2} \cdot \left( {t - {T_{\rm{lag}}}} \right)} \right] \) |
| (8) |

# 328 | Weibull_1 | \( F = 100 \cdot \left[ {1 - {e^{ - \frac{{\left( {t - Ti} \right)^\beta }}{\alpha }}}} \right] \) |
| (31) |

# 329 | Weibull_2 | \( F = 100 \cdot \left( {1 - {e^{ - \frac{{{t^\beta }}}{{^a}}}}} \right) \) |
| (11) |

# 330 | Weibull_3 | \( F = {F_{\max }} \cdot \left( {1 - {e^{ - \frac{{{t^\beta }}}{\alpha }}}} \right) \) |
| (18) |

# 331 | Weibull_4 | \( F = {F_{\max }} \cdot \left[ {1 - {e^{ - \frac{{{{\left( {t - Ti} \right)}^\beta }}}{\alpha }}}} \right] \) |
| (32) |

# 332 | Logistic_1 | \( F = 100 \cdot \frac{{{e^{\alpha + \beta \cdot \log (t)}}}}{{1 + {e^{\alpha + \beta \cdot \log (t)}}}} \) |
| (11) |

# 333 | Logistic_2 | \( F = {F_{\max }} \cdot \frac{{{e^{\alpha + \beta \cdot \log (t)}}}}{{1 + {e^{\alpha + \beta \cdot \log (t)}}}} \) |
| |

# 334 | Logistic_3 | \( F = {F_{\max }} \cdot \frac{1}{{1 + {e^{ - k \cdot \left( {t - \gamma} \right)}}}} \) |
| |

# 335 | Gompertz_1 | \( F = 100 \cdot {e^{ - \alpha \cdot {e^{ - \beta \cdot \log (t)}}}} \) |
| (18) |

# 336 | Gompertz_2 | \( F = {F_{\max }} \cdot {e^{ - \alpha \cdot {e^{ - \beta \cdot \log (t)}}}} \) |
| |

# 337 | Gompertz_3 | \( F = {F_{\max }} \cdot {e^{ - {e^{ - k \cdot \left( {t - \gamma} \right)}}}} \) |
| |

# 338 | Gompertz_4 | \( F = {F_{\max }} \cdot {e^{ - \beta \cdot {e^{ - k \cdot t}}}} \) |
| (34) |

# 339 | Probit_1 | \( F = 100 \cdot \Phi \left[ {\alpha + \beta \cdot \log (t)} \right] \) |
| |

# 340 | Probit_2 | \( F = {F_{\max }} \cdot \Phi \left[ {\alpha + \beta \cdot \log (t)} \right] \) |
| (18) |

### Nonlinear Optimization Algorithm

*n*is the number of observations,

*w*

_{i}is the weighting factor, which can be optionally set as 1, 1/

*y*

_{i_obs}or 1/

*y*

_{i_obs}

^{2}for fitting dissolution data,

*y*

_{i_obs}is the

*i*th observed

*y*value, and

*y*

_{i_pre}is the

*i*th predicted

*y*value. To minimize the objective function SS or WSS and to find the best parameters, one of the most robust minimization algorithms, the Nelder–Mead simplex algorithm, was used (35). This method is a popular, computationally compact, and often effective method for nonlinear optimization. Compared with the classical Gauss–Newton algorithm or the modified Gauss–Newton algorithm (e.g., Marquardt’s algorithm), which require the linearization of the nonlinear model by taking a Taylor series expansion and which also involve matrix calculations, the simplex method has several advantages: (1) it does not require calculation of derivatives or partial derivatives and therefore can quickly find the best-fit values of the parameters; (2) it is less sensitive than other methods to a poor choice of initial estimates and rarely converges to a local minimum; and (3) it can be used with discontinuous functions (36). One of the disadvantages of the Nelder–Mead algorithm is that it can be very expensive and/or time-consuming for problems with objective functions that are severely elongated or when the number of the variables becomes large. Since most of the dissolution equations only have no more than four parameters and do not suffer severely from this problem, it appears to be suited for application in this situation.

### Initial Parameters

An initial value for each parameter in the equation must be provided before performing the iterative optimization. A good guess for the initial values will result in fast convergence and markedly reduce the possibility of falling into a local minimum. DDSolver provides a number of methods for obtaining appropriate initial values, including simple linear regression, multiple linear regression, trial and error, the empirical method, and various combinations of these. For model equations that can be rearranged into a linear form, the simple linear regression method is preferred. It is an effective way to obtain appropriate initial values for most dissolution models. Take the first-order model, for example; its equation is \( F = 100 \cdot \left( {1 - {e^{ - {k_1} \cdot t}}} \right) \), which can be rearranged into the form \( \ln {(1 - F/100 ) = - {k_1} \cdot t} \), from which an initial value of *k*_{1} can be easily estimated by fitting a linear equation with intercept zero to the transformed data.

However, in cases where linear transformation of the model equation produces multiple line segments, the multiple linear regression method should be used. The Makoid–Banakar model with a rearranged model equation, \( \ln (F) = \ln \left( {{k_{\rm{MB}}}} \right) + n \cdot \ln (t) - kt \), is a case of this type. The trial-and-error method is used for assessing the initial values of parameters when the Hopfenberg model is used, whose model equation is \( F = 100 \cdot \left[ {1 - {{\left( {1 - {k_{\rm{HB}}} \cdot t} \right)}^n}} \right] \), which cannot be linearized before the parameter *n* is determined. In this case, DDSolver will use *n* = 1 and a corresponding value of *k*_{HB} which is subsequently estimated by simple linear regression during the first trial to obtain a value of *WSS*. Then, *n* = 2 and *n* = 3 will be used for the second and the third trials, with the pair of *n* and *k*_{HB} values which produces the smallest value of *WSS* serving as the most appropriate initial values.

The empirical method is another effective way for obtaining initial values when the model equation cannot be linearly transformed. For example, when the Peppas–Sahlin model with equation \( F = {k_1} \cdot {t^m} + {k_2} \cdot {t^{2m}} \) is used, DDSolver will suggest an empirical value of 0.45 as the initial value of *m,* because *m* lies within the range from 0 to 1 in most cases. Besides the methods mentioned above, DDSolver also allows the user to specify an initial value for each parameter manually.

### Model Selection Criteria

The selection of a suitable model for fitting dissolution data is essential, not only for quantitative evaluation of drug release characteristics but also for comparison of dissolution profiles using model-dependent approaches. DDSolver provides a number of statistical criteria for evaluating the goodness of fit of a model, including the correlation coefficient (*R*_obs–pre), the coefficient of determination (Rsqr, *R*^{2}, or COD), the adjusted coefficient of determination (Rsqr_adj or *R*^{2}_{adjusted}), the mean square error (MSE), the standard deviation of the residuals (MSE_root or Sy.x), SS, WSS, the Akaike Information Criterion (AIC), and the Model Selection Criterion (MSC). Among these criteria, the most popular ones in the field of dissolution model identification are the *R*^{2}_{adjusted}, the AIC (37), and the MSC (38).

*R*

^{2}) can be used to discriminate the most appropriate model. However, when comparing models with different numbers of parameters, the adjusted coefficient of determination should be used:

*n*is the number of data points and

*p*is the number of parameters in the model. This is because

*R*

^{2}will always increase as more parameters are included, whereas

*R*

^{2}

_{adjusted}may decrease when over-fitting has occurred. Therefore, the best model should be the one with the highest

*R*

^{2}

_{adjusted}, rather than that with the highest

*R*

^{2}(13).

*n*is the number of data points, WSS is the weighted sum of squares, and

*p*is the number of parameters in the model. When comparing two models with different numbers of parameters, the model with a lower AIC value can be considered to be the better model, but how much lower the value needs to be to make the difference between the models statistically significant cannot be determined because the distribution of the AIC values is unknown. It should be noted that when a comparison is made, the weighting scheme used in each model must be the same.

*w*

_{i}is the weighting factor, which is usually equal to 1 for fitting dissolution data,

*y*

_{i_obs}is the

*i*th observed

*y*value,

*y*

_{i_pre}is the

*i*th predicted

*y*value, \( {\overline y_{\_ {\rm{obs}}}} \) is the mean of all observed

*y*-data points,

*p*is the number of parameters in the model, and

*n*is the number of data points. The MSC is a modified reciprocal form of the AIC and has been normalized so that it is independent of the scaling of the data points. When comparing different models, the most appropriate model will be that with the largest MSC. It is, therefore, quite easy to develop a feeling for what the MSC means in terms of how well the model fits the data. Generally, a MSC value of more than two to three indicates a good fit (40).

Although all the criteria mentioned above can be calculated by DDSolver to assess the goodness of fit of dissolution models, it should be noted that when mechanistic models are evaluated, model selection should be based, not only on the goodness of fit but also on the mechanistic plausibility of the model. More detailed discussions on the difference between mechanism-based models and empirical mathematical models can be found in previous reports (14,41).

### Dissolution Profile Comparison

Methods Available in DDSolver for Comparing Drug Dissolution Profiles

Module | Method | Reference(s) |
---|---|---|

# 401 | Exploratory data analysis | (42) |

# 402 | Univariate ANOVA | |

# 403 | Ratio test procedures | |

# 404 | Difference factor, | |

# 405 | Similarity factor, | |

# 406 | Rescigno index | (7) |

# 407 | 90% CI of difference method | (10) |

# 408 | Multivariate statistical distance method | |

# 409 | Model-dependent approaches | |

# 410 | Bootstrap | |

# 411 | Chow and Ki’s method | (46) |

### Other Dissolution Functions

Parameters for Characterizing Drug Release Curve

Abbreviation, description | Equation | Function in DDSolver | Reference(s) |
---|---|---|---|

AUC, area under the dissolution curve | \( {\hbox{AUC}} = \sum\nolimits_{i = 1}^n {\frac{{\left( {{t_i} - {t_{i - 1}}} \right)\left( {{y_{i - 1}} + {y_i}} \right)}}{2}} \) | DD_AUC | (47) |

ABC, area between the drug dissolution curve and its asymptote | \( {\hbox{ABC}} = {\hbox{MDT}} \cdot {M_{\rm{last}}} \) | DD_ABC | |

MRT, mean residence time of the drug substance molecules in the dosage form | \( {\hbox{MRT}} = \frac{{\int_0^t {t \cdot \left( {100 - y} \right) \cdot dt} }}{{\int_0^t {\left( {100 - y} \right)} \cdot dt}} \) | DD_MRT | (49) |

MDT, mean dissolution time | \( MDT = \frac{{\sum\nolimits_{i = 1}^n {{{\overline t }_i} \cdot \Delta {M_i}} }}{{\sum\nolimits_{i = 1}^n {\Delta {M_i}} }} \) | DD_MDT | |

VDT, variance of dissolution time | \( {\hbox{VDT}} = \frac{{\sum\nolimits_{i = 1}^n {{{\left( {\overline {{t_i}} - {\text{MDT}}} \right)}^2} \cdot \Delta {M_i}} }}{{\sum\nolimits_{i = 1}^n {\Delta {M_i}} }} \) | DD_VDT | |

| \( {m_k} = \frac{{\sum\nolimits_{i = 1}^n {\overline {{t_i}}^k \cdot \Delta {M_i}} }}{{\sum\nolimits_{i = 1}^n {\Delta {M_i}} }} \) | DD_MDTk | |

RD, relative dispersion of dissolution time, CV | \( {\hbox{RD}} = {\hbox{C}}{{\hbox{V}}^2} = \frac{\text{VDT}}{{{\hbox{MD}}{{\hbox{T}}^2}}} \) | DD_RD | |

DE, dissolution efficiency | \( {\hbox{DE}} = \frac{{\int_0^t {y \cdot dt} }}{{{y_{100}} \cdot t}} \cdot 100\% \) | DD_DE | (52) |

Parameters for Assessing the Difference Between Dissolution Profiles

Abbreviation, description | Equation | Function in DDSolver | Reference(s) |
---|---|---|---|

| \( {f_1} = \left[ {\sum\limits_{t = 1}^n {\left| {{R_t} - {T_t}} \right|/\sum\limits_{t = 1}^n {{R_t}} } } \right] \times 100 \) | DD_f1 | (6) |

| \( {f_2} = 50 \cdot \log \left\{ {\left. {{{\left[ {1 + \frac{1}{n}\sum\limits_{t = 1}^n {{{\left( {{R_t} - {T_t}} \right)}^2}} } \right]}^{ - 0.5}} \times 100} \right\}} \right. \) | DD_f2 | (6) |

| \( {f_1}\prime = \sum\limits_{t = 1}^n {\left| {{R_t} - {T_t}} \right|} /\left[ {\sum\limits_{t = 1}^n {\left( {{R_t} + {T_t}} \right)/2} } \right] \times 100 \) | DD_f1cp | (13) |

| \( {\xi_j} = {\left[ {\left( {\int_0^t {{{\left| {{R_i} - {T_i}} \right|}^j}dt} } \right)/\left( {{{\int_0^t {\left| {{R_i} + {T_i}} \right|} }^j}dt} \right)} \right]^{1/j}},j = 1 \) | DD_res1 | (7) |

| \( {\xi_j} = {\left[ {\left( {\int_0^t {{{\left| {{R_i} - {T_i}} \right|}^j}dt} } \right)/\left( {\int_0^t {{{\left| {{R_i} + {T_i}} \right|}^{j}}dt} } \right)} \right]^{1/j}},j = 2 \) | DD_res2 | (7) |

| \( {S_{\rm{d}}} = \frac{{\sum\limits_{t = 1}^{n - 1} {\left| {\log \left( {\frac{{AU{C_{Rt}}}}{{AU{C_{Tt}}}}} \right)} \right|} }}{{n - 1}} \) | DD_Sd | (53) |

| \( D = {\sum\limits_{i = 1}^p {\left( {{{\overline y }_{Ti}} - {{\overline y }_{Ri}}} \right)}^2} \) | DD_D | |

| \( {D_1} = \sum\limits_{i = 1}^p {\left| {{{\overline y }_{Ti}} - {{\overline y }_{Ri}}} \right|/p} \) | DD_D1 | |

| \( {D_2} = {\left[ {\sum\limits_{i = 1}^p {{{\left( {{{\overline y }_{Ti}} - {{\overline y }_{Ri}}} \right)}^2}/p} } \right]^{1/2}} \) | DD_D2 | (56) |

| \( {D_{\rm{AUC}}} = \sum\limits_{i = 1}^p {\left\{ {\left[ {\left( {{{\overline y }_{Ti}} + {{\overline y }_{T\left( {i - 1} \right)}}} \right) - \left( {{{\overline y }_{Ri}} + {{\overline y }_{R\left( {i - 1} \right)}}} \right)} \right] \cdot \left( {{t_i} - {t_{i - 1}}} \right)/2} \right\}} \) | DD_DAUC | (56) |

| \( {D_{\rm{ABC}}} = \sum\limits_{i = 1}^p {\left\{ {\left| {{{\overline y }_{Ti}} - {{\overline y }_{Ri}}} \right| \cdot \left[ {\left( {{t_{i + 1}} + {t_i}} \right)/2 - \left( {{t_i} + {t_{i - 1}}} \right)/2} \right]} \right\}} \) | DD_DABC | (56) |

Besides all the methods and parameters mentioned above, many other approaches have been reported for comparing dissolution profiles, such as principal component analysis (18), linear mixed-effects model (57), nonlinear mixed-effects model (58), artificial neural networks with similarity factor (59), partially Bayesian approach (60), and other analogous statistics of the Mann–Whitney statistic, the Kolmogorov–Smirnov “D” statistic and the chi-squared statistic (61).

## RESULTS AND DISCUSSION

Validation of a newly developed program is an important aspect of its acceptability. For this purpose, some typical modules of the DDSolver program were evaluated using previously published data. Because of the limitation on the length of this paper, the results have been provided in the supplementary material to this article. Sample runs were performed using one module for dissolution-model fitting using the Weibull model and five modules for comparison of dissolution profiles using *f*_{1}, *f*_{2}, the Rescigno index *ξ*_{1}, the Rescigno index *ξ*_{2}, the multivariate-confidence-region method, and Chow and Ki’s time series method.

Results of Sample Runs to Test the Reliability of the Program

Module | Results | Reference |
---|---|---|

Dissolution data modeling | All the model parameters calculated using DDSolver are nearly identical | (8) |

Pairwise procedures | All the | (8) |

Multivariate confidence region | The MSD and its 90% CI and other related statistics are identical | (10) |

Chow and Ki’s method | Both the results for global similarity and local similarity are identical | (46) |

Although DDSolver provides many types of approaches for comparing dissolution profiles, as pointed out by Polli et al. (8), “no one method appears as the best.” In fact, the main objective of the present research is to provide a software tool for facilitating the calculations in dissolution data analysis; more discussions on the advantages and disadvantages of each method can be found in previous review (42).

## CONCLUSIONS

The DDSolver program was developed to facilitate the modeling and comparison of drug dissolution data. The program can fit drug release data using nonlinear optimization techniques in an easy-to-use spreadsheet environment. It is the first reported program which is specifically designed to assess the similarity between dissolution profiles. The program is capable of performing most existing techniques for comparing drug release data, including exploratory data analysis, univariate ANOVA, ratio test procedures, the difference factor *f*_{1}, the similarity factor *f*_{2}, the Rescigno indices, the 90% CI of difference method, the multivariate statistical distance method, the model-dependent method, the bootstrap *f*_{2} method, and Chow and Ki’s time series method. In addition, several user-defined functions for characterizing drug-release curves and for assessing the similarity between dissolution profiles are also implemented in the program. These additional functions can be conveniently used in the same way as the built-in functions in Microsoft Excel. Sample runs of the program demonstrated that DDSolver can be considered a reliable program for dissolution data analysis.

The DDSolver program is freely available. The interested reader can obtain the program from the supplementary material to this article. The program was developed and tested in Microsoft Excel 2003 (both English and Simplified Chinese versions) in a Windows XP SP2 environment and was compatible with Microsoft Excel 2007 and 2010 on Windows platform.

## Acknowledgment

The authors would like to thank International Science Editing, Compuscript Ltd. for improving the English language of the manuscript. The authors thank partial financial support from Ministry of Science and Technology of the People’s Republic of China under project 2009ZX09310-004 and the Specialized Research Fund for the Doctoral Program of Advanced Education of China (No. 200803161017).