pinetrack
Track health · Metro E Line

Find places worth inspecting. Follow the evidence.

Loading measured results…

01
Sampled corridor
—
02
Compared in this direction
—
03
Worth inspecting
—

How Pinetrack works

From a shake on the train to an alert for the track team, with no one watching a screen.

  1. 01Sensor on the train floorRecords vibration 100 times a second plus GPS on every trip.
  2. 02Uploads after each runUploads over cellular after each run, automatically. For this demo, the recordings were uploaded by hand.
  3. 03Cleans the signalRemoves gravity, drops braking and accelerating, and adjusts for speed.
  4. 04Pins it to the track mapPins each second to the official track map and compares it with earlier passes in the same direction.
  5. 05Checks the ruleFlags a 25 m slice when it is at least 1.5× typical and elevated (top 10% for that pass) on at least 2 passes, at least 2/3 of the passes covering it. This is the exact rule behind the spots on the map.
  6. 06Alerts track maintenanceSends an automatic alert to the agency’s track maintenance team (email, SMS or work order) with location, evidence and suggested checks. An inspector confirms or dismisses it, and that feedback is saved. In this demo, alerts go to our team inbox.
Loading the E Line…
TypicalRougher
Finding repeatable rough spots…

Places worth inspecting—not diagnoses of broken rails. Vibration is compared within the selected travel direction. Locations follow a corridor reference; sensor GPS does not identify the physical track. Braking and accelerating windows are excluded.

How we measured it

About this demo: we had a very short time to ship, so we couldn’t build the Pinetrack sensor itself yet. To show how it will work, we used phones in its place: four phones rode the E Line and recorded vibration and GPS, just as the sensor will. The recordings on this page come from those phones.

Pinetrack finds places worth inspecting. It does not diagnose broken rails. Sensor vibration readings can reflect the vehicle, speed, track geometry, crossings, or other conditions. An inspector must establish the cause.

Westbound and eastbound recordings are analyzed separately. Multiple sensors on the same inferred pass contribute one combined result. A colored ribbon is an approximate corridor location, not a surveyed rail position or confirmed track assignment.

Review the recordings and calculation method

RecordingDirectionPass groupStart time

Sources: CPUC: double-track Expo corridor · GTFS route geometry guidance · GPS.gov: GPS positioning limits

Each spot’s vibration trace, in its Evidence tab, comes from the second analysis below.

A second analysis: zones confirmed by repeat trains

A stricter second pass used 13 recordings from 4 sensors on 6 trains: the 11 recordings behind the map, plus two from a 12:09 eastbound train. It places each train on LA Metro’s track map by combining the GPS of every sensor aboard, removes moments when a sensor was moved, corrects for braking, acceleration and wheel vibration, and scores every 20 m of track against normal track at the same speed. A zone counts only when independent trains agree. Each is tested against 3,000 random shifts of the data; zones with a false-discovery rate of 10% or less are confirmed, and the rest are probable.

ZoneStatusWhereTrackTrains agreeingqRepair orderOn our mapStreet View
Loading zones…

q is the chance that a zone this strong is a fluke, after testing every 20 m of track; confirmed means q ≤ 0.10. Repair order weighs that evidence by riders affected, train speed and nearby ramps. “On our map” lists the map’s spots within 50 m of the zone, about the size of the position uncertainty; select one to see it on the map. Download the zone table (CSV)

How it compares with the map

Where they overlap, the two analyses agree. Confirmed zones 2 and 3 and probable zones 4 and 7 sit on spots the map already flags, and zone 4 holds the map’s roughest spot, WB-01. Zone 5 lines up with WB-05, but on the other track. Confirmed zone 1, 300 m east of Expo/Crenshaw, is not on the map. The map’s screen keeps only steady-speed stretches, and in most of this zone’s 25 m slices only one pass had them, short of its two-pass rule; where two westbound passes did, neither reached that pass’s top 10%. The second analysis corrects for braking and acceleration instead of dropping them, and adds the 12:09 train. Zone 6, at Farmdale station, is also new.

Where the ride is consistently rough, on each track

Two heat strips, westbound and eastbound, of 20 m cells from Culver City to USC, coloured from smoother (blue) to rougher (red), with numbered zone markers above and a track-height profile below.
Each 20 m cell compares vibration with normal track at the same speed, averaged over every train in that direction: red is rougher, blue smoother, and Culver City is on the left. The numbered markers are the zones in the table. The lower panel is track height worked out from sensor tilt; its three peaks are the Culver City, La Cienega and La Brea aerial structures, and zone 2 sits about 120 m from the foot of the La Cienega ramp.

Independent trains agree at the two confirmed zones

Four line charts of roughness around confirmed zones 1 and 2, westbound and eastbound, with one coloured line per train and a black average line that rises inside the shaded zone.
Roughness vs. normal track (σ), ±700 m around each zone. Each coloured line is one train, the median of the sensors aboard, and black is their average. Inside the shaded zones the trains rise together on both tracks: 4 of 4 eastbound trains at zone 1 and 3 of 4 at zone 2. That points to the track rather than to one train or sensor. Each spot’s Evidence tab on the map shows the same kind of trace.

On one train, the vibration tracks wheel rotation exactly

Two spectrograms of vibration frequency against train speed. On the 10:30 westbound train a dark band follows the dashed once-per-wheel-turn line; the 11:25 eastbound train shows none.
Vertical vibration by frequency and train speed, from the same sensor on two trains. The dashed line is how often a wheel turns at each speed. On the 10:30 westbound train the vibration follows that line, and its double, at every speed: a wheel was shaking the car wherever it went, so this is a wheel problem, not a track problem. The 11:25 train shows no such band. Wheel-locked vibration turned up on 2 of the 6 trains. It is removed before zones are scored, and it is a separate lead for the vehicle maintenance team.

Figures: 13 sensor recordings on the LA Metro E Line, 26 Sep 2026; LA Metro GTFS track geometry. This is one morning of data, with only 2 westbound trains and no E Line ground truth yet, so every zone is an inspection candidate. The code, outputs and all 16 figures are in the Pinetrack Zone Analysis folder.

Learning from real defects: the Beijing Subway dataset

Our E Line recordings have no answers attached yet: no inspection report tells us what is actually at each spot. The one dataset in this project that does is a public Beijing Subway set of car-body vibration recordings matched to inspection reports that mark where real track defects were (Wang et al., CC-BY). We used it in a supporting role: to test our assumptions and to add one input to each zone’s evidence rating. It never decides a zone on its own.

How it helped

What it can’t do. It can’t tell what is actually at any E Line spot: different trains, sensors and track mean its scores rank spots rather than give real odds. And it isn’t fully independent of the repeat-train test, since both use related vibration measures, so it is strong corroboration, not proof.

Next: training on LA Metro’s own data

Beijing is a head start, not the answer. Once Pinetrack sensors ride LA Metro trains every day and Metro shares its track inspection and repair records, every alert will end with a real answer: the inspector’s “issue found” or “nothing found”, and Metro’s record of what was fixed. Those answers become E Line labels. We will retrain the model on them, so its scores come from the E Line’s own track instead of a comparison with Beijing, and tune the alert rule to flag problems earlier with fewer false alarms. More passes sharpen the repeat-train test too: with a stable baseline, we project that about 10 passes will confirm a new 0.6 m/s² jolt.