Usage¶
To use Data Validation in a project:
import datavalidation.datavalidation as dv
request = { ... } # your bike request, possibly from a HTTP request, see below
validated_bike_response = dv.request_validate_bike_geometry(request)
# OR to validate multiple geometries without request
bike_geometry_list = [
{ ... } # bike geometry
]
validated_bike_geometry_list = dv.validate_bike_geometry_list(bike_geometry_list)
# OR to validate only one geometry
single_bike_geometry = {
"parameter_list": [
{
"p": "wheelbase",
"v": "1024"
}
# ... more parameters as needed
]
}
validated_bike_geometry = dv.validate_bike_geometry(single_bike_geometry)
Example Bike Request¶
A request to validate bike geometries can have multiple bike geometries at the same time and these bike geometries do not need to have all the parameters in them.
An example valid request would look like this:
# valid bike request
{
"geometries": [
{
"geometry_threshold": 0.7,
"parameter_threshold": 0.7,
"parameter_list": [
{
"p": "reach",
"v": "371",
"id": "**any-value**"
},
{
"p": "stack",
"v": "533",
"id": "**any-value**"
},
{
"p": "top_tube",
"v": "534",
"id": "**any-value**"
},
{
"p": "seat_tube_length",
"v": "",
"id": "**any-value**"
},
{
"p": "seat_tube_length_cc",
"v": "",
"id": "**any-value**"
},
{
"p": "seat_tube_length_eff",
"v": "",
"id": "**any-value**"
},
{
"p": "head_angle",
"v": "71",
"id": "**any-value**"
},
{
"p": "seat_angle",
"v": "73",
"id": "**any-value**"
},
{
"p": "head_tube",
"v": "107",
"id": "**any-value**"
},
{
"p": "chainstay",
"v": "430",
"id": "**any-value**"
},
{
"p": "wheelbase",
"v": "1014",
"id": "**any-value**"
},
{
"p": "front_centre",
"v": "",
"id": "**any-value**"
},
{
"p": "bb_drop",
"v": "57.5",
"id": "**any-value**"
}
]
}
]
}
Example Response¶
An example response of validated bike geometries would look like this:
{
"geometries": [
{
"geometry_threshold": 0.7,
"parameter_threshold": 0.7,
"optimistic_validation": False,
"count_calculated_params": False,
"confidence": 0.5999918164974749,
"invalid": True,
"validated_parameters": 9,
"validatable_parameters": 15,
"parameter_list": [
{
"p": "axle_spacing",
"v": "",
"original_v": None
},
{
"p": "bb_drop",
"id": "**any-value**",
"v": "57.5",
"original_v": "57.5",
"calculated_v": "57.49999999999998",
"confidence": 0.9999999999999997,
"invalid": False
},
{
"p": "bb_height",
"v": "",
"original_v": None
},
{
"p": "chainstay",
"id": "**any-value**",
"v": "430",
"calculated_v": "430",
"confidence": 1.0,
"invalid": False
},
{
"p": "crank_length",
"v": "",
"original_v": None
},
{
"p": "fork_length",
"v": "413.197384616416",
"original_v": None,
"calculated_v": "413.197384616416",
"confidence": 0.75,
"invalid": False
},
{
"p": "fork_rake",
"v": "53.13403806646118",
"original_v": None,
"calculated_v": "53.13403806646118",
"confidence": 0.75,
"invalid": False
},
{
"p": "front_centre",
"id": "**any-value**",
"v": "590.6672221146129",
"original_v": "",
"calculated_v": "590.6672221146129",
"confidence": 0.75,
"invalid": False
},
{
"p": "handlebar_drop",
"v": "",
"original_v": None
},
{
"p": "handlebar_width",
"v": "",
"original_v": None
},
{
"p": "head_angle",
"id": "**any-value**",
"v": "71",
"original_v": "71",
"calculated_v": "70.9999999999999",
"confidence": 0.9999999999999986,
"invalid": False
},
{
"p": "head_tube",
"id": "**any-value**",
"v": "107",
"original_v": "107",
"calculated_v": "107.00000000000028",
"confidence": 0.9999999999999973,
"invalid": False
},
{
"p": "reach",
"id": "**any-value**",
"v": "371",
"original_v": "371",
"calculated_v": "371.045546782534",
"confidence": 0.999877247462127,
"invalid": False
},
{
"p": "saddle_height",
"v": "",
"original_v": None
},
{
"p": "seat_angle",
"id": "**any-value**",
"v": "73",
"calculated_v": "73",
"confidence": 1.0,
"invalid": False
},
{
"p": "seat_tube_length",
"id": "**any-value**",
"v": ""
},
{
"p": "seat_tube_length_cc",
"id": "**any-value**",
"v": ""
},
{
"p": "seat_tube_length_eff",
"id": "**any-value**",
"v": "557.3537062076499",
"original_v": "",
"calculated_v": "557.3537062076499",
"confidence": 0.75,
"invalid": False
},
{
"p": "seatpost_diameter",
"v": "",
"original_v": None
},
{
"p": "seatpost_length",
"v": "",
"original_v": None
},
{
"p": "stack",
"id": "**any-value**",
"v": "533",
"original_v": "533",
"calculated_v": "533.0000000000001",
"confidence": 0.9999999999999998,
"invalid": False
},
{
"p": "standover",
"v": "",
"original_v": None
},
{
"p": "stem_length",
"v": "",
"original_v": None
},
{
"p": "top_tube",
"id": "**any-value**",
"v": "534",
"original_v": "534",
"calculated_v": "534",
"confidence": 1.0,
"invalid": False
},
{
"p": "top_tube_actual",
"v": "",
"original_v": None
},
{
"p": "trail",
"v": "",
"original_v": None
},
{
"p": "tyre_width",
"v": "",
"original_v": None
},
{
"p": "wheelbase",
"id": "**any-value**",
"v": "1014",
"calculated_v": "1014",
"confidence": 1.0,
"invalid": False
}
]
}
]
}
This response was filled with the additional parameters missing from the previous request.