Configuration
ReporTree parameters (settings.yaml)
The default clustering parameters used by
ReporTree are set in
settings.yaml:
reportree_defaults:
threshold: 9
method: MSTreeV2
analysis: grapetree
threshold specifies the allelic distance threshold used by ReporTree to
define clusters.
To use different parameters for a specific organism, add an entry to
reportree_profile_params. Only the fields that should differ from the
defaults need to be listed:
reportree_profile_params:
klebsiella_pneumoniae:
threshold: 7
In the example above, Klebsiella pneumoniae uses a stricter threshold of 7 while all other profiles continue to use 9.
QC filtering (settings.yaml)
MIMOSA can filter out samples received from Bonsai that do not meet a
quality-control standard. Only samples with a QC_Status field
matching one of the allowed values are included in the pipeline.
# Accept any QC status — no filtering (default)
allowed_qc_statuses: []
# Accept only samples that passed QC
allowed_qc_statuses: ["passed"]
Note
This setting applies only to samples fetched from Bonsai. Samples imported directly via the chewBBACA import page are always included regardless of QC status.
Outbreak rules (backend/src/config/outbreak-rules.json)
Controls how MIMOSA detects outbreaks and which clusters trigger alerts.
{
"default": {
"detectionThreshold": 2,
"requireCountyResolution": true,
"alertVisibilityDays": 14,
"alertMinGrowthForRefresh": 2
},
"profiles": {
"staphylococcus_aureus": {
"detectionThreshold": 3
}
}
}
The "default" block applies to every analysis profile. A named entry
under "profiles" overrides only the fields it specifies for that
profile — the rest are inherited from "default".
Fields
detectionThresholdMinimum cluster size to be flagged as an outbreak.
requireCountyResolutionWhen
true, samples that cannot be mapped to a county (via postcode or hospital coordinates) are excluded from cluster counts. Clusters where no sample resolves to a county are not reported.alertVisibilityDaysDays of inactivity after which a banner alert is collapsed (not deleted). Set to
nullto keep alerts expanded indefinitely.alertMinGrowthForRefreshMinimum cumulative growth required to reset the visibility timer. Example: with a value of
2, a cluster growing from 5 → 6 does not reset the timer, but a further increase to 7 does (cumulative growth = 2).
Map configuration (backend/src/config/map-config.ts)
MIMOSA can display sample locations on a regional map. The active country map is controlled entirely from the backend — no frontend changes are needed.
To switch the map, set ACTIVE_MAP in .env and restart the backend:
ACTIVE_MAP=uk
If ACTIVE_MAP is not set, it defaults to sweden.
For countries not configured in map-config.ts, use the ISO 3166-1
alpha-3 country code — boundaries are fetched automatically from the
geoBoundaries API at startup.
To restrict the map to one or more specific counties, set COUNTY to a
comma-separated list of county names matching those in the boundaries
data:
COUNTY=Cambridgeshire,Oxfordshire
When COUNTY is set, the county picker in Map Settings only shows the
listed counties. Users can switch between them but cannot select counties
outside the configured set. Omit COUNTY (or leave it empty) to show
the full country.
Postcode and hospital coordinates are used to resolve a sample’s
geographical location to a region on the map. Without these files,
samples can still be imported and clustered, but they will not appear as
markers on the map (unless coordinates are used) and will be excluded from
outbreak detection rules that require county resolution (see
requireCountyResolution above).
Customising a country entry
If you need custom bounds, a postcode prefix, or a local GeoJSON file for
a country, add an explicit entry to the configs object in
map-config.ts. Otherwise the geoBoundaries API fallback is used
automatically. Boundaries can come from a local file, the API, or both:
denmark: {
activeMap: 'denmark',
bounds: [[54.5, 7.5], [58.0, 15.5]],
center: [56.0, 10.5],
regionNameKey: 'shapeName',
postcodePrefix: '',
postcodeLength: 4,
boundariesApi: { countryCode: 'DNK', level: 'ADM1' },
},
boundariesApiFetches boundaries at startup from geoBoundaries using an ISO 3166-1 alpha-3 country code and admin level (
ADM1= first-level regions such as counties or states). No local file required.boundariesFileFilename (relative to
geodata/) of a local GeoJSONFeatureCollectionwhere each feature’spropertiescontains the region name field matchingregionNameKey. If both are set, the local file takes precedence and the API is used as a fallback if the file is missing.
Optionally add geodata/<country>-postcode-coordinates.js and
geodata/<country>-hospital-coordinates.js to enable marker placement
from postcodes or hospital names. Rebuild the backend after any changes.
Pending samples expiry (backend/src/config/pending-samples.ts)
Unmatched pending sample entries are deleted automatically after
expiryDays days via a MongoDB TTL index. The default is 30:
export const pendingSamplesConfig = {
expiryDays: 30,
};
Change the value and rebuild the backend to apply.