Index
subsurfaceio.site_investigation.laboratory
Laboratory test models for borehole specimens.
Classes:
| Name | Description |
|---|---|
AtterbergLimits |
Atterberg limits (ASTM D4318). |
AtterbergLimitsMetadata |
Atterberg limits summary values for a specimen. |
HydrometerAnalysis |
Hydrometer analysis (ASTM D422). |
HydrometerData |
Single hydrometer reading over time. |
HydrometerMetadata |
Hydrometer analysis test metadata and corrections. |
IndexTests |
INDX-derived reported values (density, Gs, fines). |
LiquidLimit |
Liquid limit trials (ASTM D4318). |
LiquidLimitTrialData |
Liquid limit trial with blow count. |
PlasticLimit |
Plastic limit trials (ASTM D4318). |
Sample |
Borehole sample containing specimens. |
SampleMetadata |
Borehole sample identification and recovery metadata. |
SieveAnalysis |
Interpreted sieve curve / index props. |
SieveAnalysisData |
Sieve curve point (particle size vs percent finer). |
SieveAnalysisMetadata |
Interpolated sieve-analysis summary (percent passing, Cu, Cc). |
SieveAnalysisSettings |
Sieve curve interpretation settings (e.g. fine-end extrapolation for D-sizes). |
SieveRetainedData |
Single sieve retained-mass measurement. |
SieveRetainedMetadata |
Retained-mass sieve test metadata. |
SieveRetainedTest |
Raw sieve retained-mass trials. |
Specimen |
Laboratory specimen with optional lab test groups. |
SpecimenMetadata |
Laboratory specimen identification and classification metadata. |
StrengthTests |
Strength tests. |
WaterContent |
Water content (ASTM D2216). |
WaterContentMetadata |
Water content test summary. |
WaterContentTrialData |
Single water-content trial measurements. |
AtterbergLimits
pydantic-model
Bases: BaseModel
Atterberg limits (ASTM D4318).
Fields:
-
metadata(AtterbergLimitsMetadata) -
liquid_limit_test(LiquidLimit | None) -
plastic_limit_test(PlasticLimit | None)
AtterbergLimitsMetadata
pydantic-model
Bases: BaseModel
Atterberg limits summary values for a specimen.
Fields:
-
liquid_limit(NullableFloat) -
plastic_limit(NullableFloat) -
plasticity_index(NullableFloat) -
method(str | None) -
remarks(str | None)
HydrometerAnalysis
pydantic-model
Bases: BaseModel
Hydrometer analysis (ASTM D422).
Fields:
-
metadata(HydrometerMetadata) -
data(list[HydrometerData])
calculate
Compute hydrometer particle size and percent finer for each reading.
Returns:
| Type | Description |
|---|---|
Self
|
This hydrometer analysis. |
HydrometerData
pydantic-model
Bases: BaseModel
Single hydrometer reading over time.
Fields:
-
hydrometer_time(float) -
hydrometer_reading(float) -
corrected_hydrometer_reading(NullableFloat) -
percent_finer_uncorrected(NullableFloat) -
effective_length_corrected_reading(NullableFloat) -
effective_length(NullableFloat) -
particle_size(NullableFloat) -
percent_finer(NullableFloat)
effective_length_corrected_reading
pydantic-field
HydrometerMetadata
pydantic-model
Bases: BaseModel
Hydrometer analysis test metadata and corrections.
Fields:
-
hydrometer_type(HydrometerType) -
temperature(float) -
specific_gravity(float) -
zero_correction(float) -
dry_soil_mass(float) -
meniscus_correction(float) -
fines_content(NullableFloat) -
temperature_correction(NullableFloat) -
specific_gravity_correction(NullableFloat) -
a_parameter(NullableFloat) -
percent_clay(NullableFloat) -
percent_silt(NullableFloat)
IndexTests
pydantic-model
Bases: BaseModel
INDX-derived reported values (density, Gs, fines).
Fields:
-
bulk_density(NullableFloat) -
dry_density(NullableFloat) -
specific_gravity(NullableFloat) -
fines_content(NullableFloat) -
method(str | None) -
remarks(str | None)
LiquidLimit
pydantic-model
Bases: BaseModel
Liquid limit trials (ASTM D4318).
Fields:
flow_index
property
Flow index from the liquid-limit series, when available.
calculate
Interpret liquid limit and flow index from trials.
Returns:
| Type | Description |
|---|---|
Self
|
This liquid-limit test. |
LiquidLimitTrialData
pydantic-model
Bases: WaterContentTrialData
Liquid limit trial with blow count.
Fields:
-
can_mass(float) -
can_plus_wet_soil_mass(float) -
can_plus_dry_soil_mass(float) -
moisture_mass(NullableFloat) -
dry_soil_mass(NullableFloat) -
water_content_trials(NullableFloat) -
liquid_limit_blows(int)
PlasticLimit
pydantic-model
Sample
pydantic-model
Bases: BaseModel
Borehole sample containing specimens.
Fields:
-
metadata(SampleMetadata) -
specimens(list[Specimen])
Validators:
-
_unique_specimen_ids→specimens
add_specimen
Append a specimen. specimen_id must be unique on this sample.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
specimen
|
Specimen
|
Specimen to add. |
required |
Returns:
| Type | Description |
|---|---|
Self
|
This sample. |
Raises:
| Type | Description |
|---|---|
ValueError
|
When |
get_specimen_by_id
Return the specimen with specimen_id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
specimen_id
|
str
|
|
required |
Returns:
| Type | Description |
|---|---|
Specimen
|
The matching specimen. |
Raises:
| Type | Description |
|---|---|
KeyError
|
When no specimen has that id. |
SampleMetadata
pydantic-model
Bases: BaseModel
Borehole sample identification and recovery metadata.
Fields:
-
sample_id(str) -
sample_name(str | None) -
sampler_type(SamplerType | None) -
depth_top(NullableFloat) -
depth(NullableFloat) -
sample_diameter(NullableFloat) -
date(datetime | None) -
recovery(NullableFloat) -
description(str | None) -
remarks(str | None)
SieveAnalysis
pydantic-model
Bases: BaseModel
Interpreted sieve curve / index props.
Fields:
-
settings(SieveAnalysisSettings) -
metadata(SieveAnalysisMetadata) -
data(list[SieveAnalysisData]) -
retained_test(SieveRetainedTest | None)
calculate
Build the sieve curve from retained masses when present, then metadata.
Returns:
| Type | Description |
|---|---|
Self
|
This sieve analysis. |
calculate_metadata
Interpolate D-sizes, Cu, Cc, and percent passing into metadata.
Returns:
| Type | Description |
|---|---|
Self
|
This sieve analysis. |
SieveAnalysisData
pydantic-model
Bases: BaseModel
Sieve curve point (particle size vs percent finer).
Fields:
SieveAnalysisMetadata
pydantic-model
Bases: BaseModel
Interpolated sieve-analysis summary (percent passing, Cu, Cc).
Fields:
-
percent_passing_3in4(NullableFloat) -
percent_passing_no4(NullableFloat) -
percent_passing_no10(NullableFloat) -
percent_passing_no40(NullableFloat) -
fines_content(NullableFloat) -
percent_gravel(NullableFloat) -
percent_sand(NullableFloat) -
diameter_at_60_percent_finer(NullableFloat) -
diameter_at_50_percent_finer(NullableFloat) -
diameter_at_30_percent_finer(NullableFloat) -
diameter_at_10_percent_finer(NullableFloat) -
uniformity_coefficient(NullableFloat) -
curvature_coefficient(NullableFloat) -
method(str | None) -
remarks(str | None)
SieveAnalysisSettings
pydantic-model
Bases: BaseModel
Sieve curve interpretation settings (e.g. fine-end extrapolation for D-sizes).
Fields:
-
extrapolate_max_percent_finer(float | None)
SieveRetainedData
pydantic-model
Bases: BaseModel
Single sieve retained-mass measurement.
Fields:
-
sieve_number(SieveNumber) -
mass_retained_sieve(float) -
particle_size(NullableFloat) -
cumulative_mass_retained(NullableFloat) -
percent_finer(NullableFloat)
SieveRetainedMetadata
pydantic-model
Bases: BaseModel
Retained-mass sieve test metadata.
Fields:
SieveRetainedTest
pydantic-model
Bases: BaseModel
Raw sieve retained-mass trials.
Fields:
-
metadata(SieveRetainedMetadata) -
data(list[SieveRetainedData])
calculate
Accumulate retained masses and percent finer.
Returns:
| Type | Description |
|---|---|
Self
|
This retained-mass test. |
Raises:
| Type | Description |
|---|---|
ValueError
|
When |
Specimen
pydantic-model
Bases: BaseModel
Laboratory specimen with optional lab test groups.
Fields:
-
metadata(SpecimenMetadata) -
water_content(WaterContent | None) -
atterberg_limits(AtterbergLimits | None) -
sieve_analysis(SieveAnalysis | None) -
index_tests(IndexTests | None) -
strength_tests(StrengthTests | None) -
hydrometer_analysis(HydrometerAnalysis | None)
calculate_soil_classification
Run USCS classification when required inputs are present.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
language
|
str
|
Language for the USCS description. |
'en'
|
Returns:
| Type | Description |
|---|---|
Self
|
This specimen. Unchanged when fines/sand/gravel are missing. |
SpecimenMetadata
pydantic-model
Bases: BaseModel
Laboratory specimen identification and classification metadata.
Fields:
-
specimen_id(str) -
specimen_reference(str | None) -
depth_top(NullableFloat) -
depth(NullableFloat) -
non_plastic(bool) -
has_organic_fines(bool) -
uscs_symbol(USCSSymbol | None) -
description(str | None) -
color(str | None) -
crew(str | None) -
remarks(str | None)
StrengthTests
pydantic-model
Bases: BaseModel
Strength tests.
Fields:
-
unconfined_compressive_strength(NullableFloat) -
unconfined_compressive_strength_pocket_penetrometer(NullableFloat) -
undrained_shear_strength_torvane(NullableFloat)
unconfined_compressive_strength
pydantic-field
unconfined_compressive_strength_pocket_penetrometer
pydantic-field
WaterContent
pydantic-model
Bases: BaseModel
Water content (ASTM D2216).
Fields:
calculate
Run trials and store mean water content in metadata.
Returns:
| Type | Description |
|---|---|
Self
|
This water-content test. |
WaterContentMetadata
pydantic-model
Bases: BaseModel
Water content test summary.
Fields:
WaterContentTrialData
pydantic-model
Bases: BaseModel
Single water-content trial measurements.
Fields:
-
can_mass(float) -
can_plus_wet_soil_mass(float) -
can_plus_dry_soil_mass(float) -
moisture_mass(NullableFloat) -
dry_soil_mass(NullableFloat) -
water_content_trials(NullableFloat)