Introduction

This article is intended as supplementary information for a CZI EOSS Cycle 6 grant proposal asking for funding to support efforts to modernize SciPy’s aging Fortran dependencies. There are myriad reasons why this effort would vastly improve the health of SciPy as a whole, but the grant proposal did not go into just how widely applicable the tools provided by this Fortran code are in the biomedical sciences.

First, a short summary. SciPy is an open source library for mathematics, science, and engineering [1]. It provides user-friendly APIs to a wide range of tools for statistics, optimization, numerical integration, linear algebra, Fourier transforms, signal and image processing, solutions of ordinary differential equations, and more. SciPy owes much of its success to wrappers around venerable scientific computing libraries that were posted on NETLIB [2]: a repository of freely available software, documents, and databases of interest to the numerical, scientific computing, and other communities [3] created by Jack Dongarra of Argonne National Laboratory and Eric Gross of Bell Labs in the 1980s [4]. Much of this software is written in Fortran 77, with a monolithic and unstructured GOTO laden style which can be difficult for even modern subject experts to untangle. It is consequently now mostly unmaintained. To serve as an aid in understanding how modernization and structural improvement of these libraries could benefit the biomedical sciences, we catalog the Fortran libraries wrapped by SciPy and list ways these tools are or could be applied to biomedical research and development. This is just a cursory survey of applications, and is not intended to be exhaustive.

ODEPACK and dop: Systems of ordinary differential equations

Ordinary differential equations (ODEs) are a fundemental tool for modeling dynamical processes. ODEPACK [5] contains a collection of ODE solvers developed in the Lawrence Livermore National Library (LLNL). Although there are 9 solvers in this collection, SciPy only uses LSODA [6][7], an adaptive solver which automatically switches between methods suitable for stiff or nonstiff problems [8], giving it the flexibility to tackle a diverse range of problems without needing advanced knowledge of the problems characteristics. Though not strictly part of ODEPACK, SciPy vendors LLNL’s variable-coefficient VODE and ZVODE solvers [9] together with ODEPACK, which can be preferable when the user has a good grip on a problem’s stiffness characteristics and needs closer control over the integration process. dop [10] implements the Dormand-Prince method, an explicit Runge-Kutta method. This simpler algorithm offers superior performance and accuracy, with good error estimates, for smooth and non-stiff problems. SciPy exposes all of these methods through the functions scipy.integrate.solve_ivp, scipy.integrate.ode, and offers a direct interface to LSODA through scipy.integrate.odeint.

Applications of systems of ODEs to biomedicine include:

  • Systems biology: for modeling networks of biomolecular interactions [11]
  • Cardiology: for modeling electrical activities of the heart [12], dynamics of blood flow [13], and other cardiovascular phenomena
  • Epidemiology: to model the spread of infectious disease [14]
  • Pharmacokinetics and Pharmacodynamics (PK/PD): for modeling how drugs are processed by and impact the body [15][16]
  • Neuoroscience: for modeling electrical activity of neurons and neural networks [17]
  • Cancer Biology: for modeling tumor growth and interactions between cancer cells and the immune system [18]
  • Biomechanics: for modeling things like muscle dynamics and joint movements [19][20]

quadpack: Adaptive numerical integration

quadpack provides a suite of mostly adaptive methods for numerical integration of one-dimensional functions [21]. Adaptive routines can adjust automatically to a problem, offering the ability to integrate a wide range of functions without needing to study their particular properties. Integration is a fundamental operation with applications too numerous to list. SciPy exposes quadpack through the function scipy.integrate.quad.

fitpack: Smoothing splines

Smoothing splines are used to create smooth approximations to a function based on noisy observations. Not to be confused with the FITPACK library of Alan Cline, this is a package of Fortran subroutines for calculating smoothing splines for various kinds of data and geometries, and with automatic knot selection, and is also known as DIERCKX [22]. SciPy exposes fitpack through the classes scipy.interpolate.UnivariateSpline, scipy.interpolate.InterpolatedUnivariateSpline, and scipy.interpolate.LSQUnivariateSpline, directly through wrappers for fitpack’s individual subroutines, and through the legacy function interp1d.

Some applications of smoothing splines to biomedicine include:

  • Biomedical signal processing: e.g. for smoothing and noise reduction of electrocardiogram (ECG) data [23]
  • Medical Imaging: used in the image reconstruction process to reduce noise and improve image clarity [24]
  • Statistical Curve Fitting: fitting curves to biological data to capture trends, e.g. dose response modeling in pharmacology [25], modeling growth curves in developmental biology [26], survival curves in epidemiology [27], relationships between biomarkers and clinical outcomes [28] etc.

id_dist: Low rank matrix approximation

Low rank matrix approximation aims to find more compact representations of data while limiting loss of information. SciPy vendors the low-rank matrix approximation package ID [29] as id_dist and exposes it through the module scipy.linalg.interpolative. Some of the numerous applications of low rank matrix approximation in biomedicine include:

  • Omics analysis: completion of gene expression data from partial measures [30], predicting biomarker-disease associations [31], finding clusters of co-expressed genes from gene expression microarray or RNASeq data [32],
  • Medical imaging: separating signal from noise in image reconstruction [33].
  • Machine learning: feature extraction/dimensionality reduction as a preprocessing step for machine learning models applied to biomedical problems [34].
  • Systems biology Finding important interactions within biological networks, e.g. protein-protein interactions, gene regulatory networks [35].

odrpack: Orthogonal distance regression

Orthogonal distance regression is designed to handle problems where there are measurement errors in the predictor variables. Ordinary least squares regression assumes the predictor variables are fixed. ODRPACK is a software package for weighted orthogonal distance regression [36] which can handle linear and non-linear fitting functions. SciPy exposes ODRPACK through the scipy.odr module. Orthogonal distance regression has a range of biomedical applications, including calibration of biomedical instruments [37], dose-response analysis [38], and other noisy problems [39].

cobyla: Derivative free constrained optimization

The Constrained Optimization By Linear Approximation (COBYLA) algorithm, developed by M.J.D Powell is a numerical optimization method for constrained problems where the derivative of the objective function is not known [40]. Such problems arise when trying to optimize a quantity which is noisy and/or difficult to compute. A classic example is molecular design [41], for instance trying to optimize the binding affinity of a drug to a target under physical and biological constraints [42].

Some applications from recent biomedical articles that cite COBYLA specifically include generation of realistic human anatomical models [43], as part of a pipeline for identifying functionally relevant brain regions from functional magnetic resonance imaging data [44], as part of a pipeline for removing artifacts in x-ray cone beam computed tomography images [45], and for pre-operative planning for liver cryosurgery [46].

L-BFGS-B and slsqp: Gradient aware constrained optimization

The derivative or gradient gives information on how a function is changing at a given point. Optimization methods which take gradient information into account can converge more rapidly to better solutions for smooth functions. L-BFGS-B (Limited-memory Broyden–Fletcher–Goldfarb–Shanno algorithm) [47] and slsqp (sequential least squares programming) [48] are quasi-Newton methods which generate and work with approximations of the gradient and Hessian (higher dimensional analog of the second derivative) to guide where the solver checks next. They differ in that L-BFGS-B, while faster and more memory efficient, allows only simple bound constraints like \(a \leq x_i \leq b\) while slsqp allows for more complicated linear and nonlinear equality and inequality constraints. Recent applications from papers citing L-BFGS-B include aperture shape optimization for radiation therapy [49], planning of non-pharmaceutical interventions for the COVID-19 pandemic while accounting for social end economic costs of lockdown measures [50], and optimal control problems related to bioproduction, the production of clinically and commercially important biological products and chemicals from living cells [51]. Recent applications from papers citing slsqp include estimating gene regulatory networks from time series data [52], predicting the distribution of fitness effects of new mutations [53], and causal inference of the impact of the microbiome on disease states [54].

minpack: nonlinear equations and least squares minimization

minpack is a collection of Fortran subroutines for solving systems of nonlinear equations and for solving linear and nonlinear least squares fitting problems [55]. Such problems are of fundamental importance in statistics and mathematical modeling. A small sample of applications from papers citing Minpack include the Tinker 8 library for molecular design and simulation, where nonlinear least squares problems appear for local search [56], a weighted exact-test for mutually exclusive mutations in cancer [57], and determining parameters from data in an ODE model of cellular spread of HIV-1 [58.

ARPACK and PROPACK: sparse linear algebra

ARPACK is a numerical library for solving eigenvalue problems for large sparse or structured matrices [59]. Similarly, PROPACK is a library for singular value decomposition problems for large sparse or structured matrices [60]. Sparse eigenvalue and singular value decomposition problems are essential for dealing with large, sparse matrices (where most elements are zero) which are common in biomedical data. Recent applications from papers citing ARPACK include identification of genetic loci associated with risk of major depression [61], coping with uncertainty when making inferences from low depth next generation sequencing data [62], and establishing a link between clinical outcome of cancer and the immune contexture [63]. Recent applications from papers citing PROPACK include medical imaging resolution enhancement [64], assembly of haplotypes (clusters of genes which tend to vary together) from next generation sequence data [65], and dimensionality reduction of single cell RNASeq data [66].

AMOS, cdflib, and specfun: special functions

AMOS computes Bessel functions [67], cdflib inverse cumulative distribution functions (CDFs) of common statistical distributions [68], and specfun [69] is used in SciPy for special functions of a complex variable. Inverse CDFs have clear statistical applications. Bessel functions and other special functions of mathematical physics appear frequently in biophysical modeling. These are fundamental functions with a wide range of applications. The Fortran implementations SciPy relies on have a host of numerical issues, both subtle and obvious, as can be seen by searching for issues tagged with special on the SciPy GitHub repo.

mvndist: multivariate normal distribution function

Multivariate normal probability computation software from Alan Genz [70]. The normal, or Gaussian distribution is of critical importance in statistics, it maximizes the entropy among distributions with a given mean and covariance matrix and due to the Central Limit Theorem, its presence within the sciences is ubitiquous.

Conclusion

Even after a relatively short search, I’ve managed to unearth a vast number of applications of these libraries to biomedicine. On the way, I’ve found much more that I simply do not have time to condense and write down. My impression is that an exhaustive list at a similar level of detail could fill a book length tome. Let no one doubt that structural improvements to these libraries would be of strong benefit to biomedical research.

References

[1] Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, Stéfan J. van der Walt, Matthew Brett, Joshua Wilson, K. Jarrod Millman, Nikolay Mayorov, Andrew R. J. Nelson, Eric Jones, Robert Kern, Eric Larson, CJ Carey, İlhan Polat, Yu Feng, Eric W. Moore, Jake VanderPlas, Denis Laxalde, Josef Perktold, Robert Cimrman, Ian Henriksen, E.A. Quintero, Charles R Harris, Anne M. Archibald, Antônio H. Ribeiro, Fabian Pedregosa, Paul van Mulbregt, and SciPy 1.0 Contributors. (2020) SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python. Nature Methods, 17(3), 261-272.

[2] https://www.netlib.org

[3] https://www.netlib.org/misc/faq.html#2.1

[4] https://steppi.github.io/siam_history/Dongarra_returned_SIAM_copy.pdf

[5] Hindmarsh AC. ODEPACK, A Systematized Collection of ODE Solvers. In: Stepleman RS, et al, eds. Scientific Computing. Vol 1 of IMACS Transactions on Scientific Computation. Amsterdam, Netherlands: North-Holland; 1983:55-64.

[6] Petzold LR. Automatic selection of methods for solving stiff and nonstiff systems of ordinary differential equations. SIAM J Sci Stat Comput. 1983;4:136-148.

[7] https://github.com/scipy/scipy/blob/deeb67ffc68d66a9b3069c1bb9cc3bb195c91b66/scipy/integrate/odepack/lsoda.f#L1C69-L1C69

[8] Wikipedia contributors. (n.d.). Stiff equation. Wikipedia. Retrieved December 5, 2023, from https://en.wikipedia.org/wiki/Stiff_equation.

[9] Brown PN, Byrne GD, Hindmarsh AC. VODE: A Variable-Coefficient ODE Solver. SIAM J Sci Stat Comput. 1989;10(5):1038-1051. doi:10.1137/0910062.

[10] Hairer E, Norsett S, Wanner G. Solving Ordinary Differential Equations I: Nonstiff Problems. 1993. doi:10.1007/978-3-540-78862-1.

[11] Städter P, Schälte Y, Schmiester L, et al. Benchmarking of numerical integration methods for ODE models of biological systems. Sci Rep. 2021;11:2696. doi:10.1038/s41598-021-82196-2.

[12] Sundnes J, Lines GT, Tveito A. Efficient solution of ordinary differential equations modeling electrical activity in cardiac cells. Math Biosci. 2001;172(2):55-72. doi:10.1016/S0025-5564(01)00069-4.

[13] Myers TG, Ribas Ripoll V, Sáez de Tejada Cuenca A, Mitchell SL, McGuinness MJ. Modelling the cardiovascular system for assessing the blood pressure curve. Math Ind Case Stud. 2017;8(1):2. doi:10.1186/s40929-017-0011-1

[14] Beira MJ, Sebastião PJ. A differential equations model-fitting analysis of COVID-19 epidemiological data to explain multi-wave dynamics. Sci Rep. 2021;11:16312. doi:10.1038/s41598-021-95494-6.

[15] Krzyzanski W. Interpretation of transit compartments pharmacodynamic models as lifespan based indirect response models. J Pharmacokinet Pharmacodyn. 2011;38:179-204. doi:10.1007/s10928-010-9183-z.

[16] Rodríguez-Díaz JM, Sánchez-León G. Design optimality for models defined by a system of ordinary differential equations. Biom J. 2014;56:886-900. doi:10.1002/bimj.201300145.

[17] Ashby FG, Helie S. The Neurodynamics of Cognition: A Tutorial on Computational Cognitive Neuroscience. J Math Psychol. 2011;55(4):273-289. doi:10.1016/j.jmp.2011.04.003

[18] Koziol JA, Falls TJ, Schnitzer JE. Different ODE models of tumor growth can deliver similar results. BMC Cancer. 2020;20(1):226. Published 2020 Mar 17. doi:10.1186/s12885-020-6703-0

[19] Walcott S. Muscle activation described with a differential equation model for large ensembles of locally coupled molecular motors. Phys Rev E Stat Nonlin Soft Matter Phys. 2014;90(4):042717. doi:10.1103/PhysRevE.90.042717

[20] van den Bogert AJ, Blana D, Heinrich D. Implicit methods for efficient musculoskeletal simulation and optimal control. Procedia IUTAM. 2011;2(2011):297-316. doi:10.1016/j.piutam.2011.04.027

[21] Piessens R, deDoncker-Kapenga E, Uberhuber C, Kahaner D. Quadpack: A Subroutine Package for Automatic Integration. Series in Computational Mathematics v.1. Berlin, Germany: Springer-Verlag; 1983. 515.43/Q1S 100394Z.

[22] Dierckx P. Curve and Surface Fitting with Splines. Oxford, UK: Oxford University Press; 1993.

[23] Abdul, Ehab & Hussein, Razzaq & Abdulridha, Hayder & N. Hassan, Ashwaq. (2015). Feature Extraction of ECG Signal using Cubic Spline Technique. 128. 97-107.

[24] Unser M. Splines: A Perfect Fit for Medical Imaging. Proc SPIE Int Soc Opt Eng. 2002;4684. doi:10.1117/12.467162.

[25] Kirby S, Colman P, Morris M. Adaptive modelling of dose-response relationships using smoothing splines. Pharm Stat. 2009;8(4):346-355. doi:10.1002/pst.363

[26] Unser M. Splines: A Perfect Fit for Medical Imaging. Proc SPIE Int Soc Opt Eng. 2002;4684. doi:10.1117/12.467162.

[27] Noorkojuri H, Hajizadeh E, Baghestani A, Pourhoseingholi M. Application of smoothing methods for determining of the effecting factors on the survival rate of gastric cancer patients. Iran Red Crescent Med J. 2013;15(2):166-172. doi:10.5812/ircmj.8649

[28] Gauthier, J., Wu, Q.V. & Gooley, T.A. Cubic splines to model relationships between continuous variables and outcomes: a guide for clinicians. Bone Marrow Transplant 55, 675–680 (2020). https://doi.org/10.1038/s41409-019-0679-x

[29] Martinsson P-G, Rokhlin V, Shkolnisky Y, Tygert M. ID: A Software Package for Low-Rank Approximation of Matrices via Interpolative Decompositions, Version 0.2. 2008.

[30] Kapur A, Marwah K, Alterovitz G. Gene expression prediction using low-rank matrix completion. BMC Bioinformatics. 2016;17:243. doi:10.1186/s12859-016-1106-6.

[31] Lu C, Yang M, Luo F, et al. Prediction of lncRNA-disease associations based on inductive matrix completion. Bioinformatics. 2018;34(19):3357-3364. doi:10.1093/bioinformatics/bty327

[32] Li J, Lai Y, Zhang C, Zhang Q. TGCnA: temporal gene coexpression network analysis using a low-rank plus sparse framework. J Appl Stat. 2019;47(6):1064-1083. Published 2019 Sep 16. doi:10.1080/02664763.2019.1667311

[33] Mohd Sagheer SV, George SN. Ultrasound image despeckling using low rank matrix approximation approach. Biomed Signal Process Control. 2017;38:236-249. doi:10.1016/j.bspc.2017.06.011.

[34] Markovsky I. Low Rank Approximation: Algorithms, Implementation, Applications. Springer; 2014.

[35] Li L-P, Wang Y-B, You Z-H, Li Y, An J-Y. PCLPred: A Bioinformatics Method for Predicting Protein–Protein Interactions by Combining Relevance Vector Machine Model with Low-Rank Matrix Approximation. International Journal of Molecular Sciences. 2018; 19(4):1029. https://doi.org/10.3390/ijms19041029

[36] Boggs PT, Donaldson JR, Byrd RH, Schnabel RB. Algorithm 676: ODRPACK: Software for Weighted Orthogonal Distance Regression. ACM Trans Math Softw. 1989;15(4):348-364. doi:10.1145/76909.76913.

[37] https://blog.minitab.com/en/orthogonal-regression-for-instrument-calibration

[38] Walsh L, Shore R, Azizova TV, Rühm W. On the choice of methodology for evaluating dose-rate effects on radiation-related cancer risks. Radiat Environ Biophys. 2021;60(3):493-500. doi:10.1007/s00411-021-00920-y

[39] Pallavi, Joshi S, Singh D, et al. Comprehensive Review of Orthogonal Regression and Its Applications in Different Domains. Arch Computat Methods Eng. 2022;29:4027-4047. doi:10.1007/s11831-022-09728-5.

[40] M. J. D. Powell. A direct search optimization method that models the objective and constraint functions by linear interpolation. In S. Gomez and J. P. Hennart, editors, Advances in Optimization and Numerical Analysis, pages 51–67, Dordrecht, NL, 1994. Springer.

[41] Sun Y, Sahinidis N, Sundaram A, Cheon MS. Derivative-free optimization for chemical product design. Curr Opin Chem Eng. 2020;27:98-106. doi:10.1016/j.coche.2019.11.006.

[42] Boitreaud J, Mallet V, Oliver C, Waldispühl J. OptiMol: Optimization of Binding Affinities in Chemical Space for Drug Discovery. J Chem Inf Model. 2020;60(12):5658-5666. doi:10.1021/acs.jcim.0c00833.

[43] Demirel, D, Yu, A, Baer-Cooper, S, Halic, T, Bayrak, C. Generative Anatomy Modeling Language (GAML). Int J Med Robotics Comput Assist Surg. 2017; 13:e1813. https://doi.org/10.1002/rcs.1813

[44] Whiteman AS, Bartsch AJ, Kang J, Johnson TD. Bayesian inference for brain activity from functional magnetic resonance imaging collected at two spatial resolutions. Ann Appl Stat. 2022;16(4):2626-2647. doi:10.1214/22-AOAS1606.

[45] Würfl T, Hoffmann M, Aichert A, Maier AK, Maaß N, Dennerlein F. Calibration-free beam hardening reduction in x-ray CBCT using the epipolar consistency condition and physical constraints. Med Phys. 2019;46(11):e810-e822. doi:10.1002/mp.13625.

[46] Jaberzadeh A, Essert C. Pre-operative planning of multiple probes in three dimensions for liver cryosurgery: comparison of different optimization methods. Math Meth Appl Sci. 2016;39:4764-4772. doi:10.1002/mma.3548.

[47] Morales JL, Nocedal J. Remark on Algorithm 778: L-BFGS-B, FORTRAN Routines for Large Scale Bound Constrained Optimization. ACM Trans Math Softw. 2011;38(1).

[48] Kraft D. A Software Package for Sequential Quadratic Programming. DFVLR-FB 88-28. 1988.

[49] Zhang LY, Gui ZG, Zhang PC, et al. Aperture shape optimization in intensity-modulated radiation therapy planning. NUCL SCI TECH. 2023;34:140. doi:10.1007/s41365-023-01300-5

[50] Siradjuddin I, Agiska IN, Ningrum BC, et al. A Non-Pharmaceutical Intervention Policy for Mitigating COVID-19 Pandemic Using Predictive Control Scheme and SEIR Compartmental Model. Paper presented at: 10th International Conference on Information Technology, Computer, and Electrical Engineering (ICITACEE); 2023; Semarang, Indonesia. doi:10.1109/ICITACEE58587.2023.10277389.

[51] Lunz D, Bonnans JF, Ruess J. Optimal control of bioproduction in the presence of population heterogeneity. J Math Biol. 2023;86(3):43. Published 2023 Feb 6. doi:10.1007/s00285-023-01876-x

[52] Hoffmann M, Fröhner C, Noé F. Reactive SINDy: Discovering Governing Reactions from Concentration Data. J Chem Phys. 2019;150(2):025101. Published January 14, 2019. doi:10.1063/1.5054310.

[53] Kim BY, Huber CD, Lohmueller KE. Inference of the Distribution of Selection Coefficients for New Nonsynonymous Mutations Using Large Samples. Genetics. 2017;206(1):345-361. Published May 1, 2017. doi:10.1534/genetics.116.197145.

[54] Wang C, Hu J, Blaser MJ, Li H. Estimating and Testing the Microbial Causal Mediation Effect with High-Dimensional and Compositional Microbiome Data. Bioinformatics. 2020;36(2):347-355. doi:10.1093/bioinformatics/btz565.

[55] Moré JJ, Garbow BS, Hillstrom KE. User Guide for MINPACK-1. Argonne, IL: Argonne National Laboratory; 1980. Report ANL-80-74.

[56] Rackers JA, Wang Z, Lu C, Laury ML, Lagardère L, Schnieders MJ, Piquemal J-P, Ren P, Ponder JW. Tinker 8: Software Tools for Molecular Design. J Chem Theory Comput. 2018;14(10):5273-5289. doi:10.1021/acs.jctc.8b00529

[57] Leiserson MDM, Reyna MA, Raphael BJ. A Weighted Exact Test for Mutually Exclusive Mutations in Cancer. Bioinformatics. 2016;32(17):i736-i745. doi:10.1093/bioinformatics/btw462

[58] Hataye JM, Casazza JP, Best K, Liang CJ, Immonen TT, Ambrozak DR, Darko S, Henry AR, Laboune F, Maldarelli F, Douek DC, Hengartner NW, Yamamoto T, Keele BF, Perelson AS, Koup RA. Principles Governing Establishment versus Collapse of HIV-1 Cellular Spread. Cell Host Microbe. 2019;26(6):748-763.e20. doi:10.1016/j.chom.2019.10.006

[59] Lehoucq R, Maschhoff K, Sorensen D, et al. ARPACK-NG: Large Scale Eigenvalue Problem Solver. Astrophysics Source Code Library. 2023. Ascl:2306.049.

[60] Larsen RM. Lanczos Bidiagonalization with Partial Reorthogonalization for Large Sparse SVD and Linear Least Squares Calculations. Tech Rep. Computer Science Department, Aarhus University; August 1998.

[61] Hyde C, Nagle M, Tian C, et al. Identification of 15 Genetic Loci Associated with Risk of Major Depression in Individuals of European Descent. Nat Genet. 2016;48:1031–1036. doi:10.1038/ng.3623

[62] Meisner J, Albrechtsen A. Inferring Population Structure and Admixture Proportions in Low-Depth NGS Data. Genetics. 2018;210(2):719-731. doi:10.1534/genetics.118.301336

[63] Foerster F, Hess M, Gerhold-Ay A, et al. The Immune Contexture of Hepatocellular Carcinoma Predicts Clinical Outcome. Sci Rep. 2018;8:5351. doi:10.1038/s41598-018-21937-2

[64] Liu H, Guo Q, Wang G, et al. Medical Image Resolution Enhancement for Healthcare Using Nonlocal Self-Similarity and Low-Rank Prior. Multimed Tools Appl. 2019;78:9033-9050. doi:10.1007/s11042-017-5277-6

[65] Hashemi A, Zhu B, Vikalo H. Sparse Tensor Decomposition for Haplotype Assembly of Diploids and Polyploids. BMC Genomics. 2018;19(Suppl 4):191. doi:10.1186/s12864-018-4551-y

[66] Linderman GC. Dimensionality Reduction of Single-Cell RNA-Seq Data. In: Picardi E, ed. RNA Bioinformatics. Methods in Molecular Biology; vol 2284. New York, NY: Humana; 2021. doi:10.1007/978-1-0716-1307-8_18

[67] Amos DE. Algorithm 644: A Portable Package for Bessel Functions of a Complex Argument and Nonnegative Order. ACM Trans Math Softw. 1986;12(3):265-273. doi:10.1145/7921.214331.

[68] Brown B, Lovato J, Russell K. CDFLIB: Library of Fortran Routines for Cumulative Distribution Functions, Inverses, and Other Parameters. February 1994.

[69] Zhang S, Jin J. Computation of Special Functions. Wiley; 1996. ISBN: 0-471-11963-6. LC: QA351.C45.

[70] Genz A. MVNDST: Software for the Numerical Computation of Multivariate Normal Probabilities. 1998. Accessed November 28, 2023. Available from: https://www.sci.wsu.edu/math/faculty/genz/homepage.