| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| example_input.json | ||
| README.md | ||
Dynamic segmentation function
The ILI Comparison module is a valuable tool designed to compare anomalies found in two separate ILIs of the same pipeline. This module operates on an intelligent method that incorporates user-defined criteria to ensure precision in the comparison process. The workflow of this module begins with a girth-weld alignment step, which is crucial for identifying and aligning the correct girth welds from the two in-line inspection reports. In this case, the girth-weld alignment is applied to ILI reports conducted on 2011-06-01 and 2015-12-21, ensuring accurate alignment between the inspections. Both ILIs were performed by Rosen using the MFL (Magnetic Flux Leakage) technology.
Subsequently, the module matches metal loss corrosion anomalies based on the user's specified
criteria. This matching process evaluates the evolution of anomalies over a 5.5-year interval,
the time gap between the two ILIs. The output includes detailed reports that categorize the
results into matched features, matched anomalies, unmatched features, and unmatched anomalies.
In its final output, the module generates a comprehensive KPI Dashboard that showcases the
percentage of matched anomalies, providing users with an overview of the comparison results.
Furthermore, six charts visually illustrate the growth of matched anomalies over the 5.5-year
time interval between the two inspections. These visualizations provide valuable insights into
how anomalies have evolved and help users track changes in pipeline integrity over time.
In addition, the validated results from this module are used in the Local Growth Rate Module for calculating the Final ACR and conducting future integrity assessments. The ILI Comparison module, through the integration of historical and recent inspection data, offers an essential framework for monitoring pipeline conditions and supporting maintenance decisions.
Input
Arguments
org_id: as string which should be a validuuidfor the organizationproject_id: the id of the data project where the pipeline data is foundpipeline_id: aarrayof string values representing a validuuidfor a pipelineolder_ili_id: aarrayof string values representing a validuuidfor an ili report sequencenewer_ili_id: aarrayof string values representing a validuuidfor an ili report sequenceweld_location_threshold: afloatvaluefeature_location_threshold: afloatvalueupstream_girth_threshold: afloatvalueorientation_threshold: afloatvalueminimum_depth_growth_threshold: afloatvalueminimum_length_growth_threshold: afloatvaluesurface_location_criteria: an array ofstringeach value should be one ofmatchingany
target_minimum_match_rate: afloatvalue
Creating the function on the platform
To create this function on the platform using the cli set up the port forwarding as shown in README.
Then run the following command to create the function.
cargo run functions create \
-f functions/ili_comparison \
-d "Compare two ILI reports" \
-o org_id=string \
-o project_id=string \
-o project_id=string \
-o pipeline_ids=array \
-o matched_ids=array \
-o unmatched_ids=array \
-o summary_ids=array \
-i org_id=string \
-i project_id=string \
-i pipeline_id=array \
-i older_ili_id=array \
-i newer_ili_id=array \
-i weld_location_threshold=float \
-i upstream_girth_threshold=float \
-i feature_location_threshold=float \
-i orientation_threshold=float \
-i minimum_depth_growth_threshold=float \
-i minimum_length_growth_threshold=float \
-i surface_location_criteria=string \
-i target_minimum_match_rate=float
Testing the function locally
You can run and test the function locally by running
cargo run
Then you can check it work with curl as follows
curl localhost:8080 -d $(jq '. | tojson' functions/ili_comparison/example_input.json)