Skip to main content
Sandbox Physics
A dark planet bends starlight

AC23 · L4

Fit the published OGLE-2005-BLG-390 photometry

The short planetary bump is visible in the published measurements. Recovering it is a good exercise in microlensing; recovering the discovery paper’s planet mass is a different calculation. Here we fit the same five original files with competing models, keep the unsuccessful searches, and stop where those files stop answering the question.

Begin with the files that actually exist

The author project publishes five small photometry tables: Danish, Perth, Canopus, RoboNet and MOA. They contain 151, 65, 12, 52 and 28 rows, respectively: 308 measurements in total. The discovery article used 650 points from six observatories. This exercise is therefore an independent fit of an available subset, not a reproduction of the original data reduction or its quoted precision.

Each headerless row has three numbers: a published relative Julian-day coordinate, an instrumental magnitude and its reported magnitude error. The dates agree with HJD minus 2450000 and the event chronology. The files do not declare a precise time standard or exposure duration. Keep their time column as published; do not rename it BJD/TDB.

The five stations have different instrumental zero points. We give each its own baseline magnitude and source fraction. The error bars remain those supplied by the project. We do not silently rescale them to make a preferred model look statistically comfortable.

No explicit redistribution license was found for these photometry files. The package names the original URLs and their byte counts and hashes, then downloads them directly to your computer. The original observations and their row-wise transformations stay off this website. Its public results are model-level summaries and independently generated synthetic figures.

Reading: OGLE published OGLE-2005-BLG-390 project files · Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1

Prepare a standalone calculation

Download and extract microlensing-science.zip below. Its own Python science routines and small C++ caller are separate from the interactive Lab. The independent VBBinaryLensing reference is fetched at a fixed upstream commit; its LGPL license arrives with the source. A compiler builds that local reference. Nothing imports a protected browser Engine.

                    python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python verify_package.py
python fetch_observations.py --output observations
python fetch_reference.py --output reference
python replay_results.py --materials . --output replay-summary.json
                  

The first verifier checks the package manifest. The downloaders accept only the named origins and exact frozen hashes. Changed bytes stop the download with an error. A verified local cache is identified separately from an actual HTTP fetch. Keep both download receipts.

The replay evaluates frozen fitted parameters against freshly downloaded inputs, profiles all station baselines and source fractions again, and compares aggregate fit statistics at a stated tolerance. That is a forward replay. The next command performs a fresh finite search; it is slower and can settle in a different local minimum.

Reading: Bozza et al. (2018), VBBinaryLensing finite-source methods · OGLE published OGLE-2005-BLG-390 project files

Write one likelihood before choosing a lens

For station kk, let m0,km_{0,k} be its baseline magnitude and fkf_k its fraction of baseline flux from the lensed star. We restrict that fraction to the physical interval from zero to one. The model predicts an instrumental magnitude after adding source and foreground flux.

mpred,i=m0,k(i)−2.5log⁡10 ⁣[1+fk(i)(Ai−1)]m_{{\rm pred},i}=m_{0,k(i)}-2.5\log_{10}\!\left[1+f_{k(i)}(A_i-1)\right]
Magnification acts on source flux before magnitudes are taken. The foreground term is constant in this exercise.
χ2=∑i[mpred,i−miσi]2\chi^2=\sum_i\left[\frac{m_{{\rm pred},i}-m_i}{\sigma_i}\right]^2
The Gaussian normalization is included when reporting log likelihood. Residuals use predicted minus observed magnitude.

For a trial source fraction, the best baseline is an exact weighted mean. A bounded scalar minimization, with both endpoints checked, profiles the fraction. The same operation is used for every competing lens, so a change in blending cannot secretly favor only one model.

The I-band stations use the discovery source coefficient 0.538; RoboNet’s R band uses 0.626. MOA’s custom red passband is treated as I-like in the baseline and tested as R-like later. The coefficients are held at a chosen source-atmosphere approximation. Comparing the alternatives tests that assumption across the tables.

Reading: Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1

Try a smooth lens, a point star, and a stellar disk

                    python fit_event.py --materials . --output fresh-fit --maximum-evaluations 100
python fit_point_binary.py --materials . --baseline-results fresh-fit/fit-history.json --output fresh-point-source
                  

The first command fits a single point-mass lens with a finite source radius fixed to the published source-crossing ratio, then seven-parameter finite-source wide and close binaries. Wide means lens separation above one total-mass Einstein radius; close means below one. Four distinct starts are retained for each binary branch. The misleading internal label “point” in the JSON means a single point mass; it does not mean a zero-radius star.

On the frozen 308-point subset, the finite-source single lens gives χ2≃749.9\chi^2\simeq749.9. The best-found finite-source wide binary gives χ2≃219.0\chi^2\simeq219.0; the close branch gives χ2≃323.3\chi^2\simeq323.3. The separate zero-radius binary search gives about 575.1 for wide and 335.6 for close. These are comparisons on identical measurements and errors, not detection probabilities.

Several other starts stop at much worse fits. Keep their status, active bounds and evaluation counts. An optimizer’s success flag only says that its local stopping rule was met. It does not prove that every separated caustic solution was searched. Conversely, an evaluation cap is not convergence.

The finite-source wide solution has a companion-to-host mass ratio near 0.000056 and a normalized source radius near 0.0181. Those dimensionless parameters are conditional on this subset and model. The table below rounds the results to useful precision. The full aggregate record retains numerical digits for computation checks.

Model on the same 308 samplesχ2\chi^2
Single mass, finite disk fixed749.9
Wide binary, finite disk219.0
Close binary, finite disk323.3
Wide binary, zero-radius source575.1
Close binary, zero-radius source335.6
Wide binary, annual parallax216.9
Close binary, expanded parallax box238.3
Own best-found bounded searches, unchanged reported errors and independently profiled five-station zero points and source fractions. The single-mass source radius is fixed; the binary source radius is fitted. A local fit comparison is not a mass posterior or a global detection probability.
∣πE∣|\boldsymbol\pi_E|χ2−min⁡χ2\chi^2-\min\chi^2
02.10
0.21.13
0.50.23
10.00
20.12
50.73
102.38
Positive-impact wide-branch amplitude profile, including the repaired amplitude-five search. Other lens parameters, parallax direction and station nuisances are reoptimized. Each row is a finite best-found search; joining these points would not establish confidence coverage between them.

Reading: Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1 · Bozza et al. (2018), VBBinaryLensing finite-source methods

Ask whether Earth’s motion is measured

                    python fit_parallax.py --materials . --baseline-results fresh-fit/fit-history.json --output fresh-parallax
                  

Annual parallax adds two north/east trajectory parameters. The package retains a fixed JPL DE441 geometric Earth-vector response: 161 six-hour TDB nodes, with positions and velocities. A cubic Hermite interpolant removes the constant position and velocity at a fixed reference epoch before projection onto the source tangent plane.

This geometric input has its own TDB epochs. It does not repair the photometry’s undeclared time standard. We preserve that qualification and test small common Earth-epoch offsets. We do not manufacture a barycentric timing conversion from missing metadata.

Both impact signs are refitted. The wide solutions reach χ2≃216.87\chi^2\simeq216.87, improving by only about 2.13 over the zero-parallax wide fit. A finite best-found profile also leaves zero parallax and an amplitude of ten only a few fit units above its minimum. This subset does not supply a robust annual-parallax mass measurement.

Close annual-parallax searches press against the initial amplitude box. Expanding that box, then continuing capped runs, finds a huge-parallax close solution around 239.0. It remains worse than the wide solution. The continuation is recorded because stopping at the first bound would have made the close branch look more strongly excluded than this search justifies.

This exercise stops before fitting a Galaxy population model, source angular-radius posterior or event-rate prior. The discovery paper adds a physical-inference layer; its planet mass requires that further information, beyond the event duration measured here.

Reading: JPL Horizons vector ephemeris documentation · Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1

Read the profile, including its bad starts

                    python profile_event.py --materials . --baseline-results fresh-fit/fit-history.json --parallax-results fresh-parallax/parallax-history.json --output fresh-profiles
python refine_profiles.py --materials . --profiles fresh-profiles/profile-history.json --output refined-profiles
                  

A mass-ratio profile fixes the ratio and reoptimizes every remaining lens parameter and all station nuisances. A parallax-amplitude profile also refits its direction. These are finite searches on the positive-impact wide branch. They are not posterior densities or confidence intervals with established coverage.

A high point on a numerical profile can come from a failed search. Check the search before interpreting that point as a physical exclusion. In the first pass, the amplitude-five start fell into a much worse basin. The refinement tries adjacent profile solutions and retains the original failure separately. The low-ratio endpoint also needed continuation before its stopping rule was met.

Look at the full attempts before drawing an interval. Nearby optimizer starts leave a global-minimum question open. The low alternative fits are direct counterexamples to a claimed tight upper limit.

Reading: Bozza et al. (2018), VBBinaryLensing finite-source methods · Bozza et al., VBMicroLensing, arXiv:2410.13660v1; A&A 694 A219 (2025)

Check numerical light before interpreting small differences

A fast contour result is not automatically an independent truth. During development, a direct limb-darkened reference call disagreed with another image-area method in a low-mass-ratio caustic case. We kept the disagreement and tested positive weighted annuli built from separately refined uniform-source contours. Their order refinement agreed with the inverse image-plane integration.

For the event itself, every one of the 308 model predictions was checked against the independent inverse-area calculation for the finite wide, finite close, wide-parallax and large-parallax close solutions. Additional anomaly and spread-out epochs were checked with positive annuli. The aggregate diagnostics are included in the package. The floating-point geometric envelopes are not formally rounded interval certificates.

The interactive model’s spatial envelope, its quadrature estimate, time averaging and displayed image pixels are different numerical questions. Its image and flux use the same area-weighted radiance. Display contrast takes a square root to reveal faint images; exported radiance remains linear. The real-event fit uses a separate offline reference and has been checked at its smaller mass ratio and source radius.

Reading: Bozza et al. (2018), VBBinaryLensing finite-source methods · Bozza et al., VBMicroLensing, arXiv:2410.13660v1; A&A 694 A219 (2025)

Vary what the files leave unknown

At the best wide geometry, changing MOA from the I-like limb coefficient to the R-like one changes the maximum source prediction by about 0.00188 magnitude and the profiled fit statistic by −0.152. A hypothetical common thirty-minute rectangular exposure changes it by about 0.000689 magnitude and +0.0276 fit units. Actual exposure lengths are unknown; these are conditional sensitivity probes, with station nuisances refitted and lens geometry held fixed.

For the best wide annual-parallax geometry, replacing six-hour Earth nodes with twelve-hour nodes changes the fit statistic by about 0.000000013. Shifting the Earth epochs, including the reference epoch, by plus or minus 0.007 day changes it by less than 0.000029. This shows that these particular numerical choices are small at this solution. It does not establish that all timing systematics or unmodeled observing effects are negligible.

You can now say something stronger than “a curve looked good”: on this published subset, a finite-source planetary model substantially improves over the tested smooth and zero-radius alternatives. That conclusion belongs to this subset and finite search. Recovering the complete original reduction, mapping every binary solution, calibrating a detection significance and determining an independent physical planet mass each require further work.

Reading: OGLE published OGLE-2005-BLG-390 project files · Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1 · JPL Horizons vector ephemeris documentation

Exercises and explanations

  1. Why must the two binary branches share the same magnitude likelihood and nuisance treatment?

    Read the explanation

    A branch comparison should reflect the lens predictions. Different errors, zero-point rules or allowed blend fractions would change the statistical question and could create an apparent preference unrelated to the binary geometry.

  2. A parallax optimizer returns a precise decimal amplitude. What evidence would make that amplitude a measurement?

    Read the explanation

    Check the likelihood over amplitude and direction, competing geometries, nuisance and timing assumptions, boundary behavior and independent numerical accuracy. A printed optimizer coordinate alone gives none of those uncertainty or uniqueness checks.

Try the prediction

Compare finite size and foreground light before fitting

  1. Choose Planetary brightening and pause near its small feature. Increase the stellar radius while keeping the path fixed.
  2. Restore the radius and reduce the source fraction. Compare smoothing by a stellar disk with dilution by constant foreground light; then identify which quantity each fitted nuisance represents.

Public standalone science files

The ZIP contains independently authored science code, synthetic examples, aggregate fit results and exact origin download manifests. The five original photometry files and the pinned LGPL reference are fetched from their named upstream sources when you run the downloader. They are not mirrored in this package.

Download the complete standalone ZIP

SHA-256: e3957a90ca1f8e9c64a9c9c1bf70a6067ffe7aa395f44ce7715ebd461b52bc88

Individual scientific-file hashes are also inside package-manifest.json.

Sources and calculation scope

  1. Beaulieu et al. (2006), OGLE-2005-BLG-390 discovery, astro-ph/0601563v1

    Read the main text, Table 1 and Figure 1: finite-source planetary anomaly, source limb coefficients, 650 original points and population-conditioned physical mass. Our independently rerun five-file subset contains 308 points.

  2. Bozza et al. (2018), VBBinaryLensing finite-source methods

    Sections 2–4 and equations 14–20, 25–26 explain contour area, error refinement and radial source profiles. The pinned LGPL code remains a separately downloaded offline reference.

  3. Bozza et al., VBMicroLensing, arXiv:2410.13660v1; A&A 694 A219 (2025)

    Read equations 1–16 and section 6 before interpreting binary roots, parity, critical curves or a missing image pair. This is a methods reading, not a replication of its benchmark suite.

  4. OGLE published OGLE-2005-BLG-390 project files

    Five fixed photometry URLs are named in observation-sources.json. The tutorial fetches them from the author project and verifies byte counts and SHA256. An explicit redistribution license was not found; they are not mirrored here.

  5. JPL Horizons vector ephemeris documentation

    The exercise retains a fixed 161-node DE441 geometric ICRF Earth vector response, positions in AU, velocities in AU/day and TDB epochs. The headerless photometry keeps its separate timing qualification.

FeedbackSomething broken, confusing, or missing on this page?Tell us
What kind of feedback?

Sent with this page’s address, its Lab ID, the site language and your device type. Please leave out personal details. Feedback is kept for up to 12 months.Privacy policy