popclass: a python package for classifying microlensing events
Extracted source text · arXiv 2410.14076
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
%
\documentclass[
]{article}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{iftex}
\ifPDFTeX
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
\babelprovide[main,import]{american}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same} % disable monospaced font for URLs
\hypersetup{
pdftitle={popclass: a python package for classifying microlensing
events},
pdfauthor={Greg Sallaberry, Zofia Kaczmarek, Peter McGill, Scott E.
Perkins, William A. Dawson, Caitlin G. Begbie},
pdflang={en-US},
colorlinks=true,
linkcolor={Maroon},
filecolor={Maroon},
citecolor={Blue},
urlcolor={Blue},
pdfcreator={LaTeX via pandoc}}
\title{popclass: a python package for classifying microlensing events}
\definecolor{c53baa1}{RGB}{83,186,161}
\definecolor{c202826}{RGB}{32,40,38}
\def \rorglobalscale {0.1}
\newcommand{\rorlogo}{%
\begin{tikzpicture}[y=1cm, x=1cm, yscale=\rorglobalscale,xscale=\rorglobalscale, every node/.append style={scale=\rorglobalscale}, inner sep=0pt, outer sep=0pt]
\begin{scope}[even odd rule,line join=round,miter limit=2.0,shift={(0,3.0889892500000005)},xscale=0.9943,yscale=0.9894]
\path[fill=white,even odd rule,line join=round,miter limit=2.0] (0.0, 3.1221) rectangle (4.364, -0.0336);
\end{scope}
\begin{scope}[even odd rule,line join=round,miter limit=2.0,shift={(-0.025, 0.0216)}]
\path[fill=c53baa1,nonzero rule,line join=round,miter limit=2.0] (1.8164, 3.012) -- (1.4954, 2.5204) -- (1.1742, 3.012) -- (1.8164, 3.012) -- cycle;
\path[fill=c53baa1,nonzero rule,line join=round,miter limit=2.0] (3.1594, 3.012) -- (2.8385, 2.5204) -- (2.5172, 3.012) -- (3.1594, 3.012) -- cycle;
\path[fill=c53baa1,nonzero rule,line join=round,miter limit=2.0] (1.1742, 0.0669) -- (1.4954, 0.5588) -- (1.8164, 0.0669) -- (1.1742, 0.0669) -- cycle;
\path[fill=c53baa1,nonzero rule,line join=round,miter limit=2.0] (2.5172, 0.0669) -- (2.8385, 0.5588) -- (3.1594, 0.0669) -- (2.5172, 0.0669) -- cycle;
\path[fill=c202826,nonzero rule,line join=round,miter limit=2.0] (3.8505, 1.4364).. controls (3.9643, 1.4576) and (4.0508, 1.5081) .. (4.1098, 1.5878).. controls (4.169, 1.6674) and (4.1984, 1.7642) .. (4.1984, 1.8777).. controls (4.1984, 1.9719) and (4.182, 2.0503) .. (4.1495, 2.1132).. controls (4.1169, 2.1762) and (4.0727, 2.2262) .. (4.0174, 2.2635).. controls (3.9621, 2.3006) and (3.8976, 2.3273) .. (3.824, 2.3432).. controls (3.7505, 2.359) and (3.6727, 2.367) .. (3.5909, 2.367) -- (2.9676, 2.367) -- (2.9676, 1.8688).. controls (2.9625, 1.8833) and (2.9572, 1.8976) .. (2.9514, 1.9119).. controls (2.9083, 2.0164) and (2.848, 2.1056) .. (2.7705, 2.1791).. controls (2.6929, 2.2527) and (2.6014, 2.3093) .. (2.495, 2.3487).. controls (2.3889, 2.3881) and (2.2728, 2.408) .. (2.1468, 2.408).. controls (2.0209, 2.408) and (1.905, 2.3881) .. (1.7986, 2.3487).. controls (1.6925, 2.3093) and (1.6007, 2.2527) .. (1.5232, 2.1791).. controls (1.4539, 2.1132) and (1.3983, 2.0346) .. (1.3565, 1.9436).. controls (1.3504, 2.009) and (1.3351, 2.0656) .. (1.3105, 2.1132).. controls (1.2779, 2.1762) and (1.2338, 2.2262) .. (1.1785, 2.2635).. controls (1.1232, 2.3006) and (1.0586, 2.3273) .. (0.985, 2.3432).. controls (0.9115, 2.359) and (0.8337, 2.367) .. (0.7519, 2.367) -- (0.1289, 2.367) -- (0.1289, 0.7562) -- (0.4837, 0.7562) -- (0.4837, 1.4002) -- (0.6588, 1.4002) -- (0.9956, 0.7562) -- (1.4211, 0.7562) -- (1.0118, 1.4364).. controls (1.1255, 1.4576) and (1.2121, 1.5081) .. (1.2711, 1.5878).. controls (1.2737, 1.5915) and (1.2761, 1.5954) .. (1.2787, 1.5991).. controls (1.2782, 1.5867) and (1.2779, 1.5743) .. (1.2779, 1.5616).. controls (1.2779, 1.4327) and (1.2996, 1.3158) .. (1.3428, 1.2113).. controls (1.3859, 1.1068) and (1.4462, 1.0176) .. (1.5237, 0.944).. controls (1.601, 0.8705) and (1.6928, 0.8139) .. (1.7992, 0.7744).. controls (1.9053, 0.735) and (2.0214, 0.7152) .. (2.1474, 0.7152).. controls (2.2733, 0.7152) and (2.3892, 0.735) .. (2.4956, 0.7744).. controls (2.6016, 0.8139) and (2.6935, 0.8705) .. (2.771, 0.944).. controls (2.8482, 1.0176) and (2.9086, 1.1068) .. (2.952, 1.2113).. controls (2.9578, 1.2253) and (2.9631, 1.2398) .. (2.9681, 1.2544) -- (2.9681, 0.7562) -- (3.3229, 0.7562) -- (3.3229, 1.4002) -- (3.4981, 1.4002) -- (3.8349, 0.7562) -- (4.2603, 0.7562) -- (3.8505, 1.4364) -- cycle(0.9628, 1.7777).. controls (0.9438, 1.7534) and (0.92, 1.7357) .. (0.8911, 1.7243).. controls (0.8623, 1.7129) and (0.83, 1.706) .. (0.7945, 1.7039).. controls (0.7588, 1.7015) and (0.7252, 1.7005) .. (0.6932, 1.7005) -- (0.4839, 1.7005) -- (0.4839, 2.0667) -- (0.716, 2.0667).. controls (0.7477, 2.0667) and (0.7805, 2.0643) .. (0.8139, 2.0598).. controls (0.8472, 2.0553) and (0.8768, 2.0466) .. (0.9025, 2.0336).. controls (0.9282, 2.0206) and (0.9496, 2.0021) .. (0.9663, 1.9778).. controls (0.9829, 1.9534) and (0.9914, 1.9209) .. (0.9914, 1.8799).. controls (0.9914, 1.8362) and (0.9819, 1.8021) .. (0.9628, 1.7777) -- cycle(2.6125, 1.3533).. controls (2.5889, 1.2904) and (2.5553, 1.2359) .. (2.5112, 1.1896).. controls (2.4672, 1.1433) and (2.4146, 1.1073) .. (2.3529, 1.0814).. controls (2.2916, 1.0554) and (2.2228, 1.0427) .. (2.1471, 1.0427).. controls (2.0712, 1.0427) and (2.0026, 1.0557) .. (1.9412, 1.0814).. controls (1.8799, 1.107) and (1.8272, 1.1433) .. (1.783, 1.1896).. controls (1.7391, 1.2359) and (1.7052, 1.2904) .. (1.6817, 1.3533).. controls (1.6581, 1.4163) and (1.6465, 1.4856) .. (1.6465, 1.5616).. controls (1.6465, 1.6359) and (1.6581, 1.705) .. (1.6817, 1.7687).. controls (1.7052, 1.8325) and (1.7388, 1.8873) .. (1.783, 1.9336).. controls (1.8269, 1.9799) and (1.8796, 2.0159) .. (1.9412, 2.0418).. controls (2.0026, 2.0675) and (2.0712, 2.0804) .. (2.1471, 2.0804).. controls (2.223, 2.0804) and (2.2916, 2.0675) .. (2.3529, 2.0418).. controls (2.4143, 2.0161) and (2.467, 1.9799) .. (2.5112, 1.9336).. controls (2.5551, 1.8873) and (2.5889, 1.8322) .. (2.6125, 1.7687).. controls (2.636, 1.705) and (2.6477, 1.6359) .. (2.6477, 1.5616).. controls (2.6477, 1.4856) and (2.636, 1.4163) .. (2.6125, 1.3533) -- cycle(3.8015, 1.7777).. controls (3.7825, 1.7534) and (3.7587, 1.7357) .. (3.7298, 1.7243).. controls (3.701, 1.7129) and (3.6687, 1.706) .. (3.6333, 1.7039).. controls (3.5975, 1.7015) and (3.5639, 1.7005) .. (3.5319, 1.7005) -- (3.3226, 1.7005) -- (3.3226, 2.0667) -- (3.5547, 2.0667).. controls (3.5864, 2.0667) and (3.6192, 2.0643) .. (3.6526, 2.0598).. controls (3.6859, 2.0553) and (3.7155, 2.0466) .. (3.7412, 2.0336).. controls (3.7669, 2.0206) and (3.7883, 2.0021) .. (3.805, 1.9778).. controls (3.8216, 1.9534) and (3.8301, 1.9209) .. (3.8301, 1.8799).. controls (3.8301, 1.8362) and (3.8206, 1.8021) .. (3.8015, 1.7777) -- cycle;
\end{scope}
\end{tikzpicture}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Authors and Affiliations
\usepackage[affil-it]{authblk}
\usepackage{orcidlink}
%% \renewcommand\Authsep{, }
\setlength{\affilsep}{1em}
\author[1%
*%
]{Greg Sallaberry%
\,\orcidlink{0009-0001-4859-5205}\,%
}
\author[1,2%
*%
]{Zofia Kaczmarek%
\,\orcidlink{0009-0007-4089-5012}\,%
}
\author[1%
*%
\ensuremath\mathparagraph]{Peter McGill%
\,\orcidlink{0000-0002-1052-6749}\,%
}
\author[1%
*%
]{Scott E. Perkins%
\,\orcidlink{0000-0002-5910-3114}\,%
}
\author[1%
%
]{William A. Dawson%
\,\orcidlink{0000-0003-0248-6123}\,%
}
\author[3%
%
]{Caitlin G. Begbie%
\,\orcidlink{0009-0006-8866-4224}\,%
}
\affil[1]{Space Science Institute, Lawrence Livermore National
Laboratory, 7000 East Ave., Livermore, CA 94550, USA%
}
\affil[2]{Zentrum für Astronomie der Universität Heidelberg,
Astronomisches Rechen-Institut, Mönchhofstr. 12-14, 69120 Heidelberg,
Germany%
}
\affil[3]{University of California, Berkeley, Astronomy Department,
Berkeley, CA 94720, USA%
}
\affil[$\mathparagraph$]{Corresponding author: %
%
}
\affil[*]{These authors contributed equally.}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\date{17 October 2024}
\begin{document}
\maketitle
\section{Summary}\label{summary}
\texttt{popclass} is a python package that provides a flexible,
probabilistic framework for classifying the lens of a gravitational
microlensing event. Gravitational microlensing occurs when a massive
foreground object (e.g., a star, white dwarf or a black hole) passes in
front of and lenses the light from a distant background star. This
causes an apparent brightening, and shift in position, of the background
source. In most cases, characteristics of the microlensing signal do not
contain enough information to definitively identify the lens type.
However, different lens types can lie in different but overlapping
regions of the characteristics of the microlensing signal. For example,
black holes tend to be more massive than stars and therefore cause
microlensing signals that are longer. Current Galactic simulations allow
the prediction of where different lens types lie in the observational
space and can therefore be leveraged to classify events (e.g.,
\citeproc{ref-Lam2020}{Lam et al., 2020}).
\texttt{popclass} allows a user to match characteristics of a
microlensing signal to a simulation of the Galaxy to calculate lens type
probabilities for an event (see Figure 1). Constraints on any
microlensing signal characteristics and any Galactic model can be used.
\texttt{popclass} comes with an interface to \texttt{ArviZ}
(\citeproc{ref-arviz_2019}{Kumar et al., 2019}) and \texttt{pymultinest}
(\citeproc{ref-Buchner2016}{Buchner, 2016}) for microlensing signal
constraints, pre-loaded Galactic models, plotting functionality, and
classification uncertainty quantification methods. The probabilistic
framework for popclass was developed in Perkins et al.
(\citeproc{ref-Perkins2024}{2024}), used in Fardeen et al.
(\citeproc{ref-Fardeen2024}{2024}) and has been applied to classifying
events in Kaczmarek et al. (\citeproc{ref-Kaczmarek2024}{2024}).
\section{Statement of need}\label{statement-of-need}
The advent of the Vera C. Rubin Observatory
(\citeproc{ref-Ivezic2019}{Ivezić et al., 2019}) and the \emph{Nancy
Grace Roman Space Telescope} (\citeproc{ref-Spergel2015}{Spergel et al.,
2015}) will provide tens-of-thousands of microlensing events per year
(e.g., \citeproc{ref-Abrams2023}{Abrams et al., 2023};
\citeproc{ref-Penny2019}{Penny et al., 2019}). To maximize the science
output of this event stream it is critical to identify events that have
a high probability of being caused by a lens type such as a black hole
(\citeproc{ref-Lam2022}{Lam et al., 2022}; \citeproc{ref-Sahu2022}{Sahu
et al., 2022}), and then to allocate expensive follow-up observations
such as space-based astrometry (e.g., \citeproc{ref-Sahu2022}{Sahu et
al., 2022}) or ground-based adaptive optics imaging (e.g.,
\citeproc{ref-Terry2022}{Terry et al., 2022}) to confirm their nature.
Current microlensing software packages such as \texttt{DarkLensCode}
(\citeproc{ref-Howil2024}{Howil et al., 2024}) or \texttt{PyLiMASS}
(\citeproc{ref-Bachelet2024}{Bachelet et al., 2024}) estimate lens
mass-distance constraints using microlensing event light curve and
additional auxiliary information (e.g., source proper motions,
distances, color, or finite source effects). Using auxiliary information
makes these current methods powerful but limits them to only be
effective for events with the available auxiliary data. Moreover, no
current software tools explicitly predict lens type, and they always
assume a fixed Galactic model. \texttt{popclass} fills the need for a
flexible microlensing classification software package that can be
broadly applied to classify all events from the Vera C. Rubin
Observatory and \emph{Nancy Grace Roman Space Telescope} and can be used
with any Galactic model in the form of a simulation.
\section{Method}\label{method}
\texttt{popclass} relies on the Bayesian classification framework in
(\citeproc{ref-Perkins2024}{Perkins et al., 2024}). Consider the data
from a single microlensing event \(\boldsymbol{d}\), and a model of the
Galaxy \(\mathcal{G}\). \texttt{popclass} calculates the probability
that the lens of the event belongs to each lens class,
\(\text{class}_L\), where \(\text{class}_L\in\text{classes}\) and, for
example,
\(\text{classes} = \{\text{Star, Neutron Star, White Dwarf, Black Hole}\}\).
Namely, \texttt{popclass} calculates
\[p(\text{class}_L| \boldsymbol{d}, \mathcal{G}) \text{ for } \text{class}_L\in\text{classes}.\]
Using Bayes' theorem,
\[p(\text{class}_L| \boldsymbol{d}, \mathcal{G}) = \frac{p(\text{class}_L| \mathcal{G})p(\boldsymbol{d}| \text{class}_L, \mathcal{G})}{p(\boldsymbol{d}| \mathcal{G})}.\]
Assuming that the set of considered lens classes is complete,
\(p(\boldsymbol{d}| \mathcal{G})\) is a normalization factor such that
all lens class probabilities sum to unity. Using importance sampling
(e.g., \citeproc{ref-Hogg2010}{Hogg et al., 2010}) with \(S\)
independent posterior samples
\(\theta_{c}\sim p(\theta|\boldsymbol{d})\) drawn under some prior,
\(\pi(\theta)\), obtained from fitting some set of microlensing signal
parameters, \(\theta\),
\[p(\text{class}_L | \boldsymbol{d}, \mathcal{G}) = \frac{p(\text{class}_L| \mathcal{G})}{p(\boldsymbol{d}| \mathcal{G})}
\times \frac{1}{S} \sum _{c=0}^{S} \frac{p(\theta _c | \text{class}_L, \mathcal{G})}{\pi(\theta _{c})}\].
This allows the use of previously calculated posterior samples to
perform lens classification for a single event in the context of a
Galactic model. The term \(p(\theta_c | \text{class}_ L, \mathcal{G})\)
is calculated using kernel density estimation in \texttt{popclass} over
\(\theta\) with a simulated catalog of microlensing events from
\(\mathcal{G}\). \(p(\text{class}_L | \mathcal{G})\) is the prior
probability that an event belongs to each class before any data is seen,
which is just set by relative number of expected events predicted by the
Galactic model \(\mathcal{G}\).
\begin{figure}
\centering
\includegraphics{lens_class.png}
\caption{Left: posterior distribution of an event in
log10(timescale)-log10(parallax) space, overlaid on `star', `white
dwarf', `neutron star' and `black hole' contours. Right: bars showing
probabilities of that event belonging to each of the lens populations.}
\end{figure}
\section{Acknowledgements}\label{acknowledgements}
\texttt{popclass} depends on numpy (\citeproc{ref-Harris2020}{Harris et
al., 2020}), scipy (\citeproc{ref-Virtanen2020}{Virtanen et al., 2020}),
asdf (\citeproc{ref-Greenfield2015}{Greenfield et al., 2015}),
matplotlib (\citeproc{ref-Hunter2007}{Hunter, 2007}), and scikit-learn
(\citeproc{ref-sklearn_api}{Buitinck et al., 2013}). This work was
performed under the auspices of the U.S. Department of Energy by
Lawrence Livermore National Laboratory (LLNL) under Contract
DE-AC52-07NA27344. The document number is LLNL-JRNL-870290 and the code
number is LLNL-CODE-2000456. The theoretical foundation of this work was
established under support from Lawrence Livermore National Laboratory's
Laboratory Directed Research and Development Program under project
22-ERD-037. The software implementation for this project was funded
under the LLNL Space Science Institute's Institutional Scientific
Capability Portfolio funds in partnership with LLNL's Academic
Engagement Office. ZK acknowledges support from the 2024 LLNL Data
Science Summer Institute and is a Fellow of the International Max Planck
Research School for Astronomy and Cosmic Physics at the University of
Heidelberg (IMPRS-HD).
\section*{References}\label{references}
\addcontentsline{toc}{section}{References}
\phantomsection\label{refs}
\begin{CSLReferences}{1}{0}
\bibitem[\citeproctext]{ref-Abrams2023}
Abrams, N. S., Hundertmark, M. P. G., Khakpash, S., Street, R. A.,
Jones, R. L., Lu, J. R., Bachelet, E., Tsapras, Y., Moniez, M.,
Blaineauu, T., Di Stefano, R., Makler, M., Varela, A., \& Rabus, M.
(2023). {Microlensing Discovery and Characterization Efficiency in the
Vera C. Rubin Legacy Survey of Space and Time}. \emph{arXiv e-Prints},
arXiv:2309.15310. \url{https://doi.org/10.48550/arXiv.2309.15310}
\bibitem[\citeproctext]{ref-Bachelet2024}
Bachelet, E., Hundertmark, M., \& Calchi Novati, S. (2024). {Estimating
Microlensing Parameters from Observables and Stellar Isochrones with
pyLIMASS}. \emph{168}(1), 24.
\url{https://doi.org/10.3847/1538-3881/ad4862}
\bibitem[\citeproctext]{ref-Buchner2016}
Buchner, J. (2016). \emph{{PyMultiNest: Python interface for
MultiNest}}. Astrophysics Source Code Library, record ascl:1606.005.
\bibitem[\citeproctext]{ref-sklearn_api}
Buitinck, L., Louppe, G., Blondel, M., Pedregosa, F., Mueller, A.,
Grisel, O., Niculae, V., Prettenhofer, P., Gramfort, A., Grobler, J.,
Layton, R., VanderPlas, J., Joly, A., Holt, B., \& Varoquaux, G. (2013).
{API} design for machine learning software: Experiences from the
scikit-learn project. \emph{ECML PKDD Workshop: Languages for Data
Mining and Machine Learning}, 108--122.
\bibitem[\citeproctext]{ref-Fardeen2024}
Fardeen, J., McGill, P., Perkins, S. E., Dawson, W. A., Abrams, N. S.,
Lu, J. R., Ho, M.-F., \& Bird, S. (2024). {Astrometric Microlensing by
Primordial Black Holes with the Roman Space Telescope}. \emph{965}(2),
138. \url{https://doi.org/10.3847/1538-4357/ad3243}
\bibitem[\citeproctext]{ref-Greenfield2015}
Greenfield, P., Droettboom, M., \& Bray, E. (2015). {ASDF: A new data
format for astronomy}. \emph{Astronomy and Computing}, \emph{12},
240--251. \url{https://doi.org/10.1016/j.ascom.2015.06.004}
\bibitem[\citeproctext]{ref-Harris2020}
Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R.,
Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith,
N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M.,
Haldane, A., Río, J. F. del, Wiebe, M., Peterson, P., \ldots{} Oliphant,
T. E. (2020). Array programming with {NumPy}. \emph{Nature},
\emph{585}(7825), 357--362.
\url{https://doi.org/10.1038/s41586-020-2649-2}
\bibitem[\citeproctext]{ref-Hogg2010}
Hogg, D. W., Myers, A. D., \& Bovy, J. (2010). {Inferring the
Eccentricity Distribution}. \emph{725}(2), 2166--2175.
\url{https://doi.org/10.1088/0004-637X/725/2/2166}
\bibitem[\citeproctext]{ref-Howil2024}
Howil, K., Wyrzykowski, Ł., Kruszyńska, K., Zieliński, P., Bachelet, E.,
Gromadzki, M., Mikołajczyk, P. J., Jabłońska, M., Kaczmarek, Z., Mróz,
P., Ihanec, N., Ratajczak, M., Pylypenko, U., Rybicki, K., Sweeney, D.,
Hodgkin, S. T., Larma, M., Carrasco, J. M., Burgaz, U., \ldots{}
Morrell, M. (2024). {Uncovering the Invisible: A Study of Gaia18ajz, a
Candidate Black Hole Revealed by Microlensing}. \emph{arXiv e-Prints},
arXiv:2403.09006. \url{https://doi.org/10.48550/arXiv.2403.09006}
\bibitem[\citeproctext]{ref-Hunter2007}
Hunter, J. D. (2007). Matplotlib: A 2D graphics environment.
\emph{Computing in Science \& Engineering}, \emph{9}(3), 90--95.
\url{https://doi.org/10.1109/MCSE.2007.55}
\bibitem[\citeproctext]{ref-Ivezic2019}
Ivezić, Ž., Kahn, S. M., Tyson, J. A., Abel, B., Acosta, E., Allsman,
R., Alonso, D., AlSayyad, Y., Anderson, S. F., Andrew, J., Angel, J. R.
P., Angeli, G. Z., Ansari, R., Antilogus, P., Araujo, C., Armstrong, R.,
Arndt, K. T., Astier, P., Aubourg, É., \ldots{} Zhan, H. (2019). {LSST:
From Science Drivers to Reference Design and Anticipated Data Products}.
\emph{873}(2), 111. \url{https://doi.org/10.3847/1538-4357/ab042c}
\bibitem[\citeproctext]{ref-Kaczmarek2024}
Kaczmarek, Z., McGill, P., Perkins, S., Dawson, W., Abrams, N., Ho, M.,
Huston, M., \& Lu, J. (2024). \emph{{On Finding Black Holes in
Photometric Microlensing Surveys}}.
\bibitem[\citeproctext]{ref-arviz_2019}
Kumar, R., Carroll, C., Hartikainen, A., \& Martin, O. (2019). ArviZ a
unified library for exploratory analysis of bayesian models in python.
\emph{Journal of Open Source Software}, \emph{4}(33), 1143.
\url{https://doi.org/10.21105/joss.01143}
\bibitem[\citeproctext]{ref-Lam2020}
Lam, C. Y., Lu, J. R., Hosek, Jr., Matthew W., Dawson, W. A., \&
Golovich, N. R. (2020). {PopSyCLE: A New Population Synthesis Code for
Compact Object Microlensing Events}. \emph{889}(1), 31.
\url{https://doi.org/10.3847/1538-4357/ab5fd3}
\bibitem[\citeproctext]{ref-Lam2022}
Lam, C. Y., Lu, J. R., Udalski, A., Bond, I., Bennett, D. P., Skowron,
J., Mróz, P., Poleski, R., Sumi, T., Szymański, M. K., Kozłowski, S.,
Pietrukowicz, P., Soszyński, I., Ulaczyk, K., Wyrzykowski, Ł., Miyazaki,
S., Suzuki, D., Koshimoto, N., Rattenbury, N. J., \ldots{} Terry, S. K.
(2022). {An Isolated Mass-gap Black Hole or Neutron Star Detected with
Astrometric Microlensing}. \emph{933}(1), L23.
\url{https://doi.org/10.3847/2041-8213/ac7442}
\bibitem[\citeproctext]{ref-Penny2019}
Penny, M. T., Gaudi, B. S., Kerins, E., Rattenbury, N. J., Mao, S.,
Robin, A. C., \& Calchi Novati, S. (2019). {Predictions of the WFIRST
Microlensing Survey. I. Bound Planet Detection Rates}. \emph{241}(1), 3.
\url{https://doi.org/10.3847/1538-4365/aafb69}
\bibitem[\citeproctext]{ref-Perkins2024}
Perkins, S. E., McGill, P., Dawson, W., Abrams, N. S., Lam, C. Y., Ho,
M.-F., Lu, J. R., Bird, S., Pruett, K., Golovich, N., \& Chapline, G.
(2024). {Disentangling the Black Hole Mass Spectrum with Photometric
Microlensing Surveys}. \emph{961}(2), 179.
\url{https://doi.org/10.3847/1538-4357/ad09bf}
\bibitem[\citeproctext]{ref-Sahu2022}
Sahu, K. C., Anderson, J., Casertano, S., Bond, H. E., Udalski, A.,
Dominik, M., Calamida, A., Bellini, A., Brown, T. M., Rejkuba, M.,
Bajaj, V., Kains, N., Ferguson, H. C., Fryer, C. L., Yock, P., Mróz, P.,
Kozłowski, S., Pietrukowicz, P., Poleski, R., \ldots{} RoboNet
Collaboration. (2022). {An Isolated Stellar-mass Black Hole Detected
through Astrometric Microlensing}. \emph{933}(1), 83.
\url{https://doi.org/10.3847/1538-4357/ac739e}
\bibitem[\citeproctext]{ref-Spergel2015}
Spergel, D., Gehrels, N., Baltay, C., Bennett, D., Breckinridge, J.,
Donahue, M., Dressler, A., Gaudi, B. S., Greene, T., Guyon, O., Hirata,
C., Kalirai, J., Kasdin, N. J., Macintosh, B., Moos, W., Perlmutter, S.,
Postman, M., Rauscher, B., Rhodes, J., \ldots{} Zhao, F. (2015).
{Wide-Field InfrarRed Survey Telescope-Astrophysics Focused Telescope
Assets WFIRST-AFTA 2015 Report}. \emph{arXiv e-Prints},
arXiv:1503.03757. \url{https://doi.org/10.48550/arXiv.1503.03757}
\bibitem[\citeproctext]{ref-Terry2022}
Terry, S. K., Bennett, D. P., Bhattacharya, A., Koshimoto, N., Beaulieu,
J.-P., Blackman, J. W., Bond, I. A., Cole, A. A., Lu, J. R., Marquette,
J. B., Ranc, C., Rektsini, N., \& Vandorou, A. (2022). {Adaptive Optics
Imaging Can Break the Central Caustic Cusp Approach Degeneracy in
High-magnification Microlensing Events}. \emph{164}(5), 217.
\url{https://doi.org/10.3847/1538-3881/ac9518}
\bibitem[\citeproctext]{ref-Virtanen2020}
Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T.,
Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J.,
van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N.,
Nelson, A. R. J., Jones, E., Kern, R., Larson, E., \ldots{} SciPy 1. 0
Contributors. (2020). {SciPy 1.0: fundamental algorithms for scientific
computing in Python}. \emph{Nature Methods}, \emph{17}, 261--272.
\url{https://doi.org/10.1038/s41592-019-0686-2}
\end{CSLReferences}
\end{document}