In situ test interpretation CPT
in_situ_test_interpretation_cpt.py
import requests
import numpy as np
import pandas as pd
import plotly.io as pio
def get_results():
params = dict(
function_sequence='CPTInterpretationRobertson',
combine_inputs_results=True,
)
data = dict(
cone_area_ratio=0.8,
water_table_present=True,
water_table=0.7,
remove_loose_sand_criteria=True,
relative_density_constant=350,
sensitivity_constant=7,
constant_volume_friction_angle=32,
is_fine_soil_criteria='sbtn',
depth=basic_data['SCPT_DPTH'],
cone_tip_resistance=basic_data['SCPT_RES'],
sleeve_friction=basic_data['SCPT_FRES'],
pore_pressure=basic_data['SCPT_PWP'],
)
response = requests.post(
f'{base_url}/function-sequence',
params=params,
json=data,
)
return response
def plot_results(data):
data['test_id'] = 'CPTU-1'
form_data = dict(
reverse_y=True,
sharex=False,
plot_model=dict(
plot_type='line',
data_frame=data,
x=['cone_tip_resistance', 'sleeve_friction', 'pore_pressure', 'soil_behavior_type_index',
'modified_soil_behavior_type_index'],
y='depth',
facet_col='variable',
color='test_id',
color_discrete_sequence=['black']
)
)
response = requests.post(
f'{base_url}/plot',
json=form_data,
)
return response
base_url = 'https://www.subsurfaceio.app'
basic_data = pd.read_csv(
f'{base_url}/dash/assets/CPTU-1.csv',
skiprows=9,
nrows=280
)
# MPa to kPa
basic_data['SCPT_FRES'] *= 1000
basic_data['SCPT_PWP'] *= 1000
basic_data = basic_data.replace({np.nan: None})
basic_data = basic_data.to_dict('list')
results_json = get_results().json()['1d']
df = pd.DataFrame(results_json)
print(df.to_string())
fig = pio.from_json(plot_results(results_json).content)
fig.show()