Skip to content
Snippets Groups Projects
Commit a808572c authored by Elijah Andrews's avatar Elijah Andrews
Browse files

Added supporting code for slot geometries paper.

parent 23748f0b
Branches
No related tags found
No related merge requests found
Showing
with 1618 additions and 0 deletions
import math
import numpy as np
import scipy.linalg
import util.gen_utils as gen
from util.vector_utils import mag
def get_vel(point, centroids, areas, source_densities, bubble_pos=None, m_0=1):
"""
Calculate the fluid velocity at a point.
:param point: 3D point, [x, y, z]
:param centroids:
:param areas:
:param source_densities:
:param bubble_pos: Bubble position vector, if None bubble is not included.
:param m_0:
:return:
"""
s_mat = np.array(source_densities)
if len(s_mat.shape) == 1:
s_mat = np.expand_dims(s_mat, 1)
ps, qs = np.array(centroids), np.array(point)
a_mat = np.expand_dims(areas, 1)
dif_mat = np.subtract(ps, qs, dtype=np.float32)
r_mat = np.expand_dims(np.linalg.norm(dif_mat, axis=1), 1)
res_mat = np.divide(s_mat * a_mat * dif_mat, (4 * np.pi * r_mat ** 3), where=r_mat != 0)
boundary_vel_sum = np.sum(res_mat, 0)
if bubble_pos is None:
vel = boundary_vel_sum
else:
point = np.array(point)
bubble_pos = np.array(bubble_pos)
bubble_vel = -(point - bubble_pos) * m_0 / (
4 * np.pi * ((point[0] - bubble_pos[0]) ** 2
+ (point[1] - bubble_pos[1]) ** 2
+ (point[2] - bubble_pos[2]) ** 2) ** (3 / 2))
vel = boundary_vel_sum + bubble_vel
return vel
# @profile
def get_R_matrix(centroids, normals, areas, dtype=np.float32):
# Expand centroids into two n x n matrices.
ps, qs = np.broadcast_arrays(np.expand_dims(centroids, 1), np.expand_dims(centroids, 0))
# Expand normals into an n x n x 3 matrix.
n_mat = np.broadcast_to(np.expand_dims(normals, 1), (len(ps), len(qs), 3))
# Expand areas into an n x n matrix.
a_mat = np.broadcast_to(np.expand_dims(areas, 0), (len(ps), len(qs)))
# p - q
res_mat = np.subtract(ps, qs, dtype=dtype) # dif_mat
# |p - q| , equals zero if p = q
r_mat = np.linalg.norm(res_mat, axis=2)
# n . (p - q)
res_mat = np.einsum('...k,...k', n_mat, res_mat) # n_dot_dif
# a_q * (n_p . (p - q)) / (4 * pi * |p - q| ^ 3)
res_mat = np.divide(a_mat * res_mat, (4 * np.pi * r_mat ** 3), where=r_mat != 0, dtype=dtype)
# Set diagonal to value obtained from integrating over the singularity in a panel (the effect on itself).
np.fill_diagonal(res_mat, 0.5)
return res_mat
def get_R_factor(arr_p, arr_q):
"""
:param arr_p: [p, (centroid, normal)]
:param arr_q: [q, (centroid, area)]
:return: R_factor
"""
p = arr_p[0]
p_cent = arr_p[1][0]
p_norm = arr_p[1][1]
q = arr_q[0]
q_cent = arr_q[1][0]
q_area = arr_q[1][1]
if p != q:
r = p_cent - q_cent
return q_area * np.dot(p_norm, r) / (4 * np.pi * mag(r) ** 3)
# return 0
else:
return 0.5
def get_R_vector(point, centroids, normals):
ps, qs = np.broadcast_arrays(np.expand_dims(centroids, 1), np.expand_dims(point, 0))
n_mat = np.broadcast_to(np.expand_dims(normals, 1), (len(centroids), 1, 3))
dif_mat = np.subtract(ps, qs, dtype=np.float64)
n_dot_dif = np.einsum('...k,...k', n_mat, dif_mat)
r_mat = np.linalg.norm(dif_mat, axis=2)
res_mat = np.divide(n_dot_dif, (4 * np.pi * r_mat ** 3), where=r_mat != 0)
return res_mat
def calculate_sigma(bubble_pos, centroids, normals, areas, m_0, R_inv=None, R_b=None) -> np.ndarray:
if R_b is None:
R_b = get_R_vector(bubble_pos, centroids, normals)
if R_inv is None:
R = get_R_matrix(centroids, normals, areas)
# sigma = gauss_seidel(R, -m_0 * R_b, max_res=1e-12)
sigma = scipy.linalg.solve(R, -m_0 * R_b) # Faster to do this than inverting the matrix
# sigma = svd_solve(R, -m_0 * R_b)
else:
sigma = -m_0 * np.dot(R_inv, R_b)
return sigma
def get_jet_dir_and_sigma(bubble_pos, centroids, normals, areas, m_0=1, R_inv=None, R_b=None) \
-> [np.ndarray, np.ndarray]:
sigma = calculate_sigma(bubble_pos, centroids, normals, areas, m_0, R_inv, R_b)
vel = get_vel(bubble_pos, centroids, areas, sigma)
return vel, sigma
def get_jet_dirs(bubble_pos_list, centroids, normals, areas, m_0=1, R_inv=None, R_b=None, verbose=False):
vels = np.empty((len(bubble_pos_list), 3))
for i, pos in enumerate(bubble_pos_list):
if verbose:
print(f"{100 * i / len(bubble_pos_list):.2f}% complete...")
vels[i] = get_jet_dir_and_sigma(pos, centroids, normals, areas, m_0=m_0, R_inv=R_inv, R_b=R_b)[0]
return vels
def test_run_analysis():
centroids, normals, areas = gen.gen_slot(500)
bubble = np.array([0, 1, 0])
m_0 = 1
R_b = get_R_vector(bubble, centroids, normals)
R_mat = get_R_matrix(centroids, normals, areas)
R_inv = np.linalg.inv(R_mat)
source_densities = calculate_sigma(bubble, centroids, normals, areas, m_0, R_inv, R_b)
res_vel = get_vel(bubble, centroids, areas, source_densities, m_0=m_0)
print("Resultant velocity = ", res_vel)
assert (np.all([math.isclose(res_vel[0], 0, abs_tol=1e-16), math.isclose(res_vel[2], 0, abs_tol=1e-16)]))
assert (res_vel[1] < 0)
import numpy as np
import math
import util.gen_utils as gen
import bem as bem
import matplotlib.pyplot as plt
from util.plotting_utils import plot_3d_point_sets
import os
import util.file_utils as file
import scipy.sparse
W = 2
H = 3
Ys = [2]
x_lim = 8
Xs = np.linspace(-x_lim * W / 2, x_lim * W / 2, 100)
save_to_file = False
calculate_error = False
normalise = False
show_plot = True
if not (save_to_file or show_plot):
raise ValueError("No output selected for model.")
m_b = 1
n = 5000
density_ratio = 0.25
w_thresh = 10
out_dir = "../model_outputs/exp_comparisons/"
if not os.path.exists(out_dir) and save_to_file:
os.makedirs(out_dir)
centroids, normals, areas = gen.gen_varied_slot(n=n, H=H, W=W, length=100, depth=50, w_thresh=w_thresh,
density_ratio=density_ratio)
print("Requested n = {0}, using n = {1}.".format(n, len(centroids)))
plot_3d_point_sets([centroids])
R_matrix = bem.get_R_matrix(centroids, normals, areas, dtype=np.float32)
R_inv = scipy.linalg.inv(R_matrix)
condition_number_1 = np.linalg.norm(R_inv, 1) * np.linalg.norm(R_matrix, 1)
condition_number_inf = np.linalg.norm(R_inv, np.inf) * np.linalg.norm(R_matrix, np.inf)
print(f"Condition numbers: 1 norm = {condition_number_1}, inf norm = {condition_number_inf}")
for Y in Ys:
if calculate_error:
thetas = []
for X in Xs:
print("Testing X =", X)
R_b = bem.get_R_vector([X, Y, 0], centroids, normals)
res_vel, sigma = bem.get_jet_dir_and_sigma([X, Y, 0], centroids, normals, areas, m_0=m_b, R_inv=R_inv,
R_b=R_b)
theta = math.atan2(res_vel[1], res_vel[0]) + math.pi / 2
thetas.append(theta)
print(" theta =", theta)
residual = np.abs(m_b * R_b + np.dot(R_matrix, sigma))
max_err = condition_number_inf * np.linalg.norm(residual, np.inf) / np.linalg.norm(m_b * R_b, np.inf)
print(f" Max res = {np.max(residual):.3e}, Mean res = {np.mean(residual):.3e},"
f" Max err = {max_err:.3e}")
else:
points = np.empty((len(Xs), 3))
points[:, 0] = Xs
points[:, 1] = Y
points[:, 2] = 0
vels = bem.get_jet_dirs(points, centroids, normals, areas, m_b, R_inv, verbose=True)
thetas = np.arctan2(vels[:, 1], vels[:, 0]) + 0.5 * np.pi
xs = Xs / (0.5 * W)
if normalise:
theta_star, x_star = sorted(zip(thetas, xs))[-1]
xs = xs / x_star
thetas = thetas / theta_star
if show_plot:
fig = plt.figure()
fig.patch.set_facecolor('white')
ax = plt.gca()
ax.plot(xs, thetas)
ax.set_xlabel("$x$")
ax.set_ylabel("$\\theta$ (rad)")
ax.axvline(x=-1, linestyle='--', color='gray')
ax.axvline(x=1, linestyle='--', color='gray')
plt.show()
if save_to_file:
file_path = f"W{W:.2f}H{H:.2f}Y{Y:.2f}_bem_slot_prediction_{n}_{density_ratio}_{w_thresh}.csv" \
if not normalise \
else f"W{W:.2f}H{H:.2f}Y{Y:.2f}_bem_slot_prediction_{n}_{density_ratio}_{w_thresh}_normalised.csv"
alph = "abcdefgh"
i = 0
while os.path.exists(out_dir + file_path):
file_path = f"W{W:.2f}H{H:.2f}Y{Y:.2f}_bem_slot_prediction_{n}_{density_ratio}_{w_thresh}" \
f"{alph[i]}.csv"
i += 1
headers = ["x", "theta"] if not normalise else ["x_hat", "theta_hat"]
file.lists_to_csv(out_dir, file_path, [xs, thetas], headers=headers)
import os
import numpy as np
from PyQt5.QtWidgets import QFileDialog, QApplication
def lists_to_csv(file_dir, filename, lists, headers=None, overwrite=False):
"""
Writes a list of lists to a CSV file where each list is a column
:param file_dir: The directory in which to save the CSV file.
:param filename: The name of the CSV file (including file extension).
:param lists: The lists to save.
:param headers: A list of header strings, one for each column, defaults to no headers.
:param overwrite: Whether to overwrite an existing file, defaults to false.
:return: Success of file write.
"""
if os.path.exists(file_dir + filename) and not overwrite:
print(f"Warning: file already exists. {file_dir + filename}")
return False
if file_dir != "":
os.makedirs(file_dir, exist_ok=True)
file = open(file_dir + filename, "w")
if headers:
line = ""
for h in headers:
line += h + ","
line = line[:-1] + "\n"
file.write(line)
zipped_lists = np.transpose(lists)
for entry in zipped_lists:
line = ""
for part in entry:
line += str(part) + ","
line = line[:-1] + "\n"
file.write(line)
file.close()
return True
def csv_to_lists(file_dir, filename, has_headers=False):
"""
Reads a CSV file to a list of lists where each column becomes a list.
:param file_dir: The directory from which to read the CSV file.
:param filename: The name of the CSV file (including file extension).
:param has_headers: Whether the CSV file has headers, defaults to False.
:return: List of lists.
"""
file = open(file_dir + filename, "r")
lines = file.readlines()
start_idx = 1 if has_headers else 0
zipped_lists = []
for line in lines[start_idx:]:
line = line.strip(',\n')
part_arr = []
for part in line.split(","):
part_arr.append(float(part))
zipped_lists.append(part_arr)
return np.transpose(zipped_lists)
def select_file(start_path, create_window=True):
"""
Opens a file selection dialog.
:param start_path: The path at which to open the dialog.
:param create_window: Whether to create a new QApplication. May need to be set to false if QT is used elsewhere,
such as in matplotlib.
:return: String of the full file path.
"""
if create_window:
window = QApplication([])
file_path = str(QFileDialog.getOpenFileName(None, "Select File", start_path)[0])
return file_path
def select_multiple_files(start_path, create_window=True):
"""
Opens a multiple file selection dialog.
:param start_path: The path at which to open the dialog.
:param create_window: Whether to create a new QApplication. May need to be set to false if QT is used elsewhere,
such as in matplotlib.
:return: A list of full file path strings.
"""
if create_window:
window = QApplication([])
file_paths = QFileDialog.getOpenFileNames(None, "Select File", start_path)[0]
return file_paths
def select_dir(start_path, create_window=True):
"""
Opens a directory selection dialog.
:param start_path: The path at which to open the dialog.
:param create_window: Whether to create a new QApplication. May need to be set to false if QT is used elsewhere,
such as in matplotlib.
:return: A list of full file path strings.
"""
if create_window:
window = QApplication([])
dir_path = str(QFileDialog.getExistingDirectory(None, "Select Directory", start_path)) + "/"
return dir_path
This diff is collapsed.
import matplotlib as mpl
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
def plot_frame(frame, pos=None, show_immediately=True):
plt.figure()
plt.imshow(frame, cmap=plt.cm.gray)
if pos is not None:
plt.plot(pos[0], pos[1], 'rx')
plt.xticks([])
plt.yticks([])
if show_immediately:
plt.show()
def initialize_plt(font_size=10, line_scale=1, capsize=3):
plt.rc('text', usetex=True)
font = {'family': 'serif', 'size': font_size, 'serif': ['cmr10']}
plt.rc('font', **font)
plt.rc('lines', linewidth=line_scale, markersize=3 * line_scale)
plt.rc('axes', linewidth=0.5)
plt.rc('patch', linewidth=0.5 * line_scale)
plt.rc('errorbar', capsize=capsize)
color_dict = {'red': ((0.0, 0.0, 0.0),
(0.9, 0.5, 1.0),
(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(1.0, 0.0, 0.0))}
heatmap_cm = LinearSegmentedColormap('heatmap', color_dict)
def set_axes_radius(ax, origin, radius):
""" https://stackoverflow.com/a/50664367/5270376 """
ax.set_xlim3d([origin[0] - radius, origin[0] + radius])
ax.set_ylim3d([origin[1] - radius, origin[1] + radius])
ax.set_zlim3d([origin[2] - radius, origin[2] + radius])
def set_axes_equal(ax):
"""
https://stackoverflow.com/a/50664367/5270376
Make axes of 3D plot have equal scale so that spheres appear as spheres,
cubes as cubes, etc.. This is one possible solution to Matplotlib's
ax.set_aspect('equal') and ax.axis('equal') not working for 3D.
Input
ax: a matplotlib axis, e.g., as output from plt.gca().
"""
limits = np.array([
ax.get_xlim3d(),
ax.get_ylim3d(),
ax.get_zlim3d(),
])
origin = np.mean(limits, axis=1)
radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0]))
set_axes_radius(ax, origin, radius)
def plot_3d_points(points, c=None, cmap_name="RdBu", center_cmap=True):
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') # type: Axes3D
points = np.array(points)
if c is not None:
if center_cmap:
scat = ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=c, cmap=cm.get_cmap(cmap_name),
vmin=-np.max(np.abs(c)), vmax=np.max(np.abs(c)))
else:
scat = ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=c, cmap=cm.get_cmap(cmap_name))
fig.colorbar(scat)
else:
ax.scatter3D(points[:, 0], points[:, 2], points[:, 1])
ax.set_xlabel('X')
ax.set_ylabel('Z')
ax.set_zlabel('Y')
lim = [min([ax.get_xlim()[0], ax.get_ylim()[0], ax.get_zlim()[0]]),
max([ax.get_xlim()[1], ax.get_ylim()[1], ax.get_zlim()[1]])]
ax.set_xlim(lim)
ax.set_ylim(lim)
ax.set_zlim(lim)
plt.show()
def plot_2d_point_sets(point_sets):
colors = ["r", "b", "g", "orange", "k", "yellow"]
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
for i in range(len(point_sets)):
points = np.array(point_sets[i])
ax.scatter(points[:, 0], points[:, 1], c=colors[i])
ax.set_xlabel('X')
ax.set_ylabel('Y')
lim = [min([ax.get_xlim()[0], ax.get_ylim()[0]]),
max([ax.get_xlim()[1], ax.get_ylim()[1]])]
ax.set_xlim(lim)
ax.set_ylim(lim)
plt.show()
def plot_3d_point_sets(point_sets):
colors = ["r", "b", "g", "orange", "k", "yellow"]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') # type: Axes3D
for i in range(len(point_sets)):
points = np.array(point_sets[i])
ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=colors[i])
ax.set_xlabel('X')
ax.set_ylabel('Z')
ax.set_zlabel('Y')
# lim = [min([ax.get_xlim()[0], ax.get_ylim()[0], ax.get_zlim()[0]]),
# max([ax.get_xlim()[1], ax.get_ylim()[1], ax.get_zlim()[1]])]
# ax.set_xlim(lim)
# ax.set_ylim(lim)
# ax.set_zlim(lim)
set_axes_equal(ax)
plt.show()
def plot_heatmap(points, x_bins=100, mode='smooth', filename=None, cmap_name='viridis'):
"""
Generate a heatmap plot of a number of points.
:param points: The points to use in the heatmap.
:param x_bins: The number of bins along the x-axis.
:param mode: 'smooth' for smooth bin edges, 'sharp' for sharp bin edges.
:param filename: The filename (and path) to save the plot, does not save if None.
"""
points = np.array(points)
x = points[:, 0]
y = points[:, 1]
x_dim = abs(np.ptp(x))
y_dim = abs(np.ptp(y))
# Generate heatmap
y_bins = int(round(x_bins * y_dim / x_dim))
if y_bins == 0:
y_bins = 1
heatmap, xedges, yedges = np.histogram2d(x, y, bins=(x_bins, y_bins))
extent = [xedges[0] - 1, xedges[-1] + 1, yedges[0] - 1, yedges[-1] + 1]
heatmap = heatmap.T
fig = plt.figure()
if abs(yedges[-1] - yedges[0]) < 0.025:
yedges[0] = -0.025 # Ensure that the data is actually visible.
if mode == 'smooth':
ax = fig.add_subplot(111, aspect='equal', xlim=xedges[[0, -1]], ylim=yedges[[0, -1]])
im = mpl.image.NonUniformImage(ax, interpolation='bilinear')
xcenters = (xedges[:-1] + xedges[1:]) / 2
ycenters = (yedges[:-1] + yedges[1:]) / 2
im.set_data(xcenters, ycenters, heatmap)
ax.images.append(im)
elif mode == 'sharp':
ax = fig.add_subplot(111, aspect='equal')
X, Y = np.meshgrid(xedges, yedges)
cmap = None
if cmap_name == "heatmap":
cmap = heatmap_cm
else:
cmap = cm.get_cmap(cmap_name)
ax.pcolormesh(X, Y, heatmap, cmap=cmap)
else:
raise (ValueError("{0} is not a valid mode.".format(mode)))
if filename is not None:
plt.savefig(filename)
plt.show()
if __name__ == "__main__":
this_points = [[0, 1], [0, 2], [2, 3], [1, 3.5]]
plot_heatmap(this_points, x_bins=5, mode='sharp')
def mag(v):
if len(v) == 2:
return (v[0] ** 2 + v[1] ** 2) ** 0.5
if len(v) == 3:
return (v[0] ** 2 + v[1] ** 2 + v[2] ** 2) ** 0.5
def unit(v):
m = mag(v)
if len(v) == 2:
return [v[0] / m, v[1] / m]
if len(v) == 3:
return [v[0] / m, v[1] / m, v[2] / m]
def mag_sqrd(v):
if len(v) == 2:
return v[0] ** 2 + v[1] ** 2
if len(v) == 3:
return v[0] ** 2 + v[1] ** 2 + v[2] ** 2
def dist(v1, v2):
if len(v1) != len(v2):
raise ValueError("Vector lengths do not match (v1: {0}, v2: {1}).".format(len(v1), len(v2)))
if len(v1) == 2:
return mag([v2[0] - v1[0], v2[1] - v1[1]])
if len(v1) == 3:
return mag([v2[0] - v1[0], v2[1] - v1[1], v2[2] - v1[2]])
def get_line_intersect(pos, vect, l_a, l_b):
"""
Calculates the intersect (if any) between a line and a vector from a point.
:param pos: Position from which to trace.
:param vect: Vector along which to trace.
:param l_a: Point a of the line.
:param l_b: Point b of the line.
:return: Position (x, y) of the intersect or None
"""
# Intersect = pos + zeta * vect
zeta = (((pos[0] - l_a[0]) * (l_b[1] - l_a[1])) - (pos[1] - l_a[1]) * (l_b[0] - l_a[0])) / (
vect[1] * (l_b[0] - l_a[0]) - vect[0] * (l_b[1] - l_a[1]))
# Intersect = l_a + kappa * l_b
kappa = (vect[0] * (l_a[1] - pos[1]) - vect[1] * (l_a[0] - pos[0])) / (
vect[1] * (l_b[0] - l_a[0]) - vect[0] * (l_b[1] - l_a[1]))
if zeta >= 0 and 0 <= kappa <= 1:
return [pos[0] + zeta * vect[0], pos[1] + zeta * vect[1]]
else:
return None
import matplotlib.pyplot as plt
import numpy as np
from util.analyse_slot import analyse_slot, SweepData
import util.plotting_utils as plt_util
font_size = 10
plt_util.initialize_plt(font_size=font_size, capsize=2, line_scale=0.5)
fig_width = 0.75 * 5.31445
fig_height = fig_width * 2 / 3
left_padding = 0.4 + font_size / 35
right_padding = 0.08
top_padding = 0.08
bottom_padding = 0.2 + font_size / 50
v_spacing = 0.3
h_spacing = 0.1
ax_width = fig_width - left_padding - right_padding
sweeps = [SweepData("W1H3", 1.94, 1.23, 2.74, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W1H3_Y1.94.csv"),
SweepData("W1H3", 2.91, 1.23, 2.74, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W1H3_Y2.91.csv"),
SweepData("W1H3", 3.89, 1.23, 2.74, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W1H3_Y3.89.csv"),
SweepData("W2H3a", 1.77, 2.20, 2.70, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3a_Y1.77.csv"),
SweepData("W2H3a", 2.29, 2.20, 2.70, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3a_Y2.29.csv"),
SweepData("W2H3a", 2.81, 2.20, 2.70, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3a_Y2.81.csv"),
SweepData("W2H3a", 3.32, 2.20, 2.70, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3a_Y3.32.csv"),
SweepData("W2H3a", 3.84, 2.20, 2.70, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3a_Y3.84.csv"),
SweepData("W2H3b", 2.66, 2.20, 2.90, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3b_Y2.66.csv"),
SweepData("W2H3b", 3.68, 2.20, 2.90, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H3b_Y3.68.csv"),
SweepData("W2H6", 1.52, 2.20, 5.40, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H6_Y1.52.csv"),
SweepData("W2H6", 1.99, 2.20, 5.40, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H6_Y1.99.csv"),
SweepData("W2H9", 1.66, 2.14, 8.21, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H9_Y1.66.csv"),
SweepData("W2H9", 2.66, 2.14, 8.21, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H9_Y2.66.csv"),
SweepData("W2H12", 2.63, 2.20, 11.50, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W2H12_Y2.63.csv"),
SweepData("W4H12", 2.43, 4.20, 11.47, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W4H12_Y2.43.csv"),
SweepData("W4H12", 3.43, 4.20, 11.47, "experiment_data/shifted_data/",
sweep_file="shifted_data_sweep_W4H12_Y3.43.csv")]
predictions = ["model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv",
"model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv",
"model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv",
"model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv",
"model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv",
"model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv",
"model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv"]
config = {
"use_all_series": False,
"use_all_dirs": False,
"normalize": False,
"plot_fits": False,
"skip_bad_data": True,
"plot_means": False,
"labelled": False,
"label_tags": False,
"colours": False,
"error_bars": True,
"do_shift": True,
"verbose": True,
"plot_predicted": True
}
for sweep, pred_file in zip(sweeps, predictions):
this_fig = plt.figure(figsize=(fig_width, fig_height), num=f"{sweep.geometry_label} - Y = {np.mean(sweep.Ys):.2f}")
plt.subplots_adjust(left=left_padding / fig_width,
right=(fig_width - right_padding) / fig_width,
top=(fig_height - top_padding) / fig_height,
bottom=bottom_padding / fig_height,
wspace=h_spacing / ax_width,
hspace=v_spacing / ax_width)
analyse_slot(this_fig.gca(), sweeps=[sweep], prediction_files=[pred_file], config=config, num_series=1)
plt.tight_layout()
plt.show()
mean x,mean theta,99% confidence interval
-17.108285713077173,0.02073214165508692,0.01737820383741635
-13.8536435051027,0.0075201452012515265,0.017378203837416346
-10.605089577711118,-0.004442794897025,0.015864057084459628
-7.348951804306057,-0.011646073303048654,0.01737820383741635
-4.097015467820287,-0.06954991281972234,0.015864057084459628
-3.284535891929359,-0.08712362476042199,0.017378203837416353
-2.470471667536059,-0.1130772690785943,0.017378203837416353
-2.304672564615765,-0.12042777058730639,0.017378203837416353
-2.1423954933777654,-0.11777050931901827,0.017378203837416353
-1.9826573541448425,-0.11876273550605534,0.017378203837416353
-1.8166780405248417,-0.11283438347194841,0.01586405708445962
-1.6532577263171095,-0.11032091477217695,0.017378203837416353
-1.4942472353465999,-0.10405436722677146,0.015864057084459635
-1.329569456424505,-0.11531967226396941,0.017378203837416353
-1.1654571975646697,-0.09767652273401387,0.017378203837416353
-1.0035422070875197,-0.07590075929321198,0.017378203837416353
-0.8413681022267498,-0.08394245370189841,0.017378203837416353
-0.6827182444116332,-0.04711659680281355,0.01737820383741635
-0.5117043722353831,-0.0422562597696833,0.01737820383741635
-0.3538496876926341,-0.020893412675097877,0.01737820383741635
-0.1895405964625317,-0.0007306398345514164,0.01737820383741635
-0.025829351957969537,0.010705538193782616,0.01737820383741635
0.1362589649776257,0.03384663789082141,0.017378203837416346
0.29798981063807006,0.04520203161659837,0.017378203837416353
0.4592343680484296,0.058314236498110225,0.017378203837416353
0.624177366425536,0.079836904440134,0.017378203837416353
0.7883836402954584,0.0888562981986869,0.017378203837416353
0.94601025471535,0.08390730283863354,0.017378203837416353
1.1099741987054947,0.10265269601076073,0.017378203837416353
1.2732990168590586,0.11378846184967703,0.01737820383741634
1.4350102716562823,0.11383836968360543,0.017378203837416353
1.598742834060532,0.13865239421002343,0.01737820383741634
1.7627786023204723,0.12435062247698334,0.01737820383741634
1.9251909360788626,0.13395538938035062,0.01737820383741634
2.0883531961650954,0.11678005142818089,0.017378203837416353
2.2525065077926216,0.12664789835700258,0.01737820383741634
2.416323323287229,0.1144127778060486,0.017378203837416353
3.225622150807248,0.08354423414927145,0.017378203837416353
4.040698140628404,0.07039639642217514,0.015864057084459635
5.669559777002486,0.033196868920231846,0.015864057084459628
mean x,mean theta,99% confidence interval
-17.123806060771564,0.031484686728669956,0.017378203837416353
-13.870895129908893,0.010408769565004717,0.017378203837416353
-10.619358636664446,0.004872616775616345,0.019429422553655328
-7.365180796536465,-0.020114101884302144,0.015864057084459628
-4.110410026073767,-0.0599531608650631,0.017378203837416346
-3.2989409181847975,-0.0744912448973976,0.017378203837416353
-2.4836084216103917,-0.05464626346326447,0.017378203837416353
-2.3172538644921996,-0.06852833296592756,0.017378203837416353
-2.159865998315031,-0.05072813805954605,0.015864057084459628
-1.9995754055807413,-0.06577912800404158,0.017378203837416353
-1.8315901567705404,-0.05420985518936239,0.017378203837416353
-1.6707189011013792,-0.05003564940034454,0.014687262912731862
-1.5089039981371937,-0.05005321357984559,0.014687262912731862
-1.3469968731300046,-0.04016540404967639,0.01737820383741635
-1.1823020800420312,-0.038370535102341743,0.01737820383741635
-1.0224577547493472,-0.026352117566832024,0.01737820383741635
-0.856968291481785,-0.03434584319937711,0.019429422553655328
-0.6925666862549398,-0.012503786978969833,0.01737820383741635
-0.5307486534469024,-0.02407612646167907,0.01737820383741635
-0.3689922313329981,-0.0077528503179748135,0.01737820383741635
-0.20695955614486614,-0.008786433712202068,0.01737820383741635
-0.04176197759393655,0.012102906211333319,0.01737820383741635
0.1209833223023192,0.024062311940423964,0.017378203837416353
0.28657716733658567,0.019850742908801643,0.017378203837416346
0.44255328842995756,0.03207662107483662,0.017378203837416353
0.6090624455872066,0.04068113133918634,0.017378203837416353
0.7721508196133124,0.05176406866137691,0.017378203837416353
0.9342535093997009,0.04428024961155717,0.017378203837416346
1.0974245529949809,0.04471918848754255,0.017378203837416346
1.2571091744175784,0.05270361966547958,0.017378203837416353
1.4255609453151281,0.06164188417544318,0.017378203837416353
1.5867534403345138,0.06513307788156922,0.017378203837416353
1.7519622775019532,0.07486733758442177,0.017378203837416353
1.9133386432026036,0.07731798695496435,0.015864057084459635
2.076697569331343,0.08384670766148376,0.017378203837416353
2.2403442969569403,0.07329817450856724,0.017378203837416353
2.4013593259058497,0.07228497438037099,0.017378203837416353
3.209522198823882,0.06796535548071395,0.017378203837416353
4.031389860601238,0.06024003590057685,0.017378203837416353
5.656924462633125,0.04010527450765089,0.017378203837416353
mean x,mean theta,99% confidence interval
-17.133960118430657,0.02424310662821112,0.01737820383741635
-13.890257292129064,0.010044965720902188,0.019429422553655328
-10.633908217025342,-0.00014703459994529488,0.01737820383741635
-7.378303575084132,-0.017742655527871198,0.01737820383741635
-4.12765650785538,-0.06169928002153453,0.017378203837416353
-3.314197191376485,-0.07298411644201615,0.017378203837416353
-2.4983995065917943,-0.0531978307596432,0.017378203837416353
-2.3351060124724397,-0.04771897606344431,0.01737820383741635
-2.1747134508410704,-0.048987758882681566,0.017378203837416346
-2.009452442853165,-0.04772412175081682,0.01737820383741635
-1.8485814000982501,-0.04730015437980306,0.01737820383741635
-1.6853913209061453,-0.02783652723411407,0.01737820383741635
-1.5254914031341902,-0.02844616612495319,0.01737820383741635
-1.3602955777898331,-0.032996707164986906,0.01737820383741635
-1.1983426289910473,-0.032458593173446015,0.01737820383741635
-1.036699377391864,-0.026820768690256357,0.01737820383741635
-0.8701421622297956,-0.011046583620402606,0.01737820383741635
-0.7124106637338912,-0.014628774878542795,0.01737820383741635
-0.5459852771220592,-0.008398709385056779,0.01737820383741635
-0.3852257993722751,0.005146742315040731,0.017378203837416346
-0.21752932192285473,-0.00014126058539005727,0.01737820383741635
-0.05840301623425888,0.009703568055219724,0.01737820383741635
0.10477730940703107,0.0012968838303025088,0.01737820383741635
0.2663596077596022,0.011465732659334238,0.017378203837416346
0.42798887088145066,0.02134713420261227,0.017378203837416346
0.5926246983960265,0.010839741572851114,0.01373867644222853
0.7568168565734182,0.015819122233857418,0.017378203837416346
0.9152875035258047,0.02098182217137179,0.017378203837416353
1.0820634570626615,0.023264153716034075,0.017378203837416353
1.2458925349900114,0.033782696556699944,0.017378203837416346
1.4066854478572253,0.05048137035578626,0.017378203837416353
1.5729632117132222,0.04302739452065123,0.017378203837416353
1.7331111192103628,0.0434760709219467,0.017378203837416346
1.897628631297632,0.04315408053289884,0.017378203837416346
2.0640258040085717,0.04292634592267217,0.017378203837416346
2.2252117254656043,0.054797124881370604,0.017378203837416353
2.3884105947058685,0.05362879766695929,0.017378203837416346
3.1996842424742726,0.04883309761771097,0.017378203837416353
4.015746004386287,0.055968041984598524,0.017378203837416353
5.642901035418492,0.051254695987866625,0.017378203837416353
mean x,mean theta,99% confidence interval
-7.3790903701018635,-0.026881355607949835,0.015864057084459628
-5.559493549164365,-0.03571447824085713,0.015864057084459628
-3.739588971163459,-0.06774476538365233,0.015864057084459628
-2.376294453139371,-0.12747942469821982,0.01586405708445962
-2.1960791581660035,-0.16180897313602655,0.01737820383741634
-2.012302991619106,-0.16863952570561075,0.01737820383741634
-1.9228482122978783,-0.17286427733373136,0.01737820383741634
-1.8316867878144336,-0.1774609065772154,0.01737820383741634
-1.7409982819941234,-0.1672657277429383,0.01737820383741634
-1.6479485598187011,-0.17617985359032606,0.01586405708445962
-1.55794172856603,-0.18405680836910954,0.01586405708445962
-1.4671433438342218,-0.17614820188345823,0.01737820383741634
-1.3752152589131879,-0.177268299121028,0.01737820383741634
-1.2848075966570296,-0.17256082908604467,0.01586405708445962
-1.1922787136385042,-0.16577376554697168,0.01737820383741634
-1.1025697337113276,-0.17507312690718133,0.01737820383741634
-1.0122476145459751,-0.1626039934491184,0.01737820383741634
-0.923369256041793,-0.15685131240684788,0.01737820383741634
-0.8306315415972237,-0.12629559116523867,0.01586405708445962
-0.7420530478951276,-0.12084649188845535,0.017378203837416353
-0.6495526136961405,-0.11286083707629553,0.017378203837416353
-0.5598833382331007,-0.10834852238266794,0.017378203837416353
-0.37660163660725526,-0.060605507534158165,0.015864057084459628
-0.19472333143433213,-0.024330882636921423,0.01737820383741635
-0.013088764788317343,0.01580331148616772,0.01586405708445963
0.1685835997416673,0.07425033916525896,0.017378203837416353
0.34871587332730875,0.07812328681869152,0.01586405708445962
0.43662036014333044,0.09905365232100793,0.017378203837416353
0.529739242336588,0.12364423519058075,0.014687262912731855
0.621635914408344,0.11983231403014945,0.014687262912731855
0.7127028892962677,0.1255708097857149,0.01737820383741634
0.8007260312433522,0.15105644604025875,0.01737820383741634
0.8906690246176617,0.15949731985883067,0.01586405708445962
0.9848873468423923,0.1735833528920014,0.014687262912731869
1.07438519953281,0.1576282976627244,0.01737820383741634
1.164744893139329,0.16705066493930576,0.01737820383741634
1.2566850897905548,0.1689111284626771,0.01737820383741634
1.3494232833842899,0.15904683569101138,0.01737820383741634
1.439645508756741,0.17641468940704547,0.01737820383741634
1.527987589041053,0.15630091634496046,0.01737820383741634
1.6195496095336417,0.16872764529997206,0.01737820383741634
1.7099064999360856,0.15603737025519931,0.01737820383741634
1.8046459275618851,0.16085565662299892,0.01737820383741634
1.98511257663407,0.14336256869868028,0.01737820383741634
2.162158600548943,0.14095679713374532,0.01737820383741634
mean x,mean theta,99% confidence interval
-5.026050114635287,-0.012915376679689046,0.011716382637044288
-4.571430079359816,-0.024785304247987645,0.010777504503055504
-4.115949419093239,-0.02625504144376618,0.012288245778279182
-3.6618525404563314,-0.03637202309617464,0.01228824577827918
-3.2071541094871048,-0.06645995904233497,0.011217582341551888
-2.7512958234855818,-0.09123672217320179,0.01171638263704429
-2.2969948401352664,-0.11735869087394982,0.01171638263704429
-1.8412506582486714,-0.16082492535591775,0.011217582341551902
-1.3849810456516098,-0.1707937647455548,0.012288245778279194
-0.9324448315671245,-0.13283531098651782,0.010033310663564513
-0.47633982312788276,-0.06581142514676888,0.01228824577827918
-0.02240209830052626,0.002398167796155093,0.012288245778279182
0.4316463717178129,0.07813660460087657,0.01228824577827918
0.8923997878783714,0.14052946943355246,0.012952948369103545
1.4125069072147185,0.18824260953119953,0.011716382637044276
1.9386033446693118,0.17278350753772678,0.012288245778279194
mean x,mean theta,99% confidence interval
-5.039102312967461,-0.012306783060444712,0.012952948369103554
-4.584767443566036,-0.019311043476850247,0.012952948369103554
-4.130037736833012,-0.031557479963833644,0.011217582341551891
-3.677100761183853,-0.04019973709181499,0.01171638263704429
-3.220214542589808,-0.06324513996305686,0.010777504503055507
-2.7659665065521186,-0.08223026242689094,0.010385463202662384
-2.3106420443104474,-0.09249533989772085,0.01228824577827918
-1.8566152347991067,-0.11282066003700623,0.01228824577827918
-1.4007070997056845,-0.10333210898969178,0.01171638263704429
-0.9468666843701314,-0.07722928226403852,0.01171638263704429
-0.4926146695534581,-0.0396928545128874,0.011217582341551891
-0.03781509101903904,-0.0003858954538193713,0.012952948369103554
0.41855392028087207,0.05713316388635166,0.01171638263704429
0.8715435389311669,0.08702533835744847,0.011217582341551888
1.3259770139927751,0.12316232746477733,0.01171638263704429
1.7901251095020243,0.12482597427371114,0.012288245778279194
2.317290233487641,0.11346460627297211,0.011217582341551888
mean x,mean theta,99% confidence interval
-5.027119836668777,-0.016798060855318726,0.012952948369103554
-4.571971261935995,-0.022800777320600887,0.011716382637044288
-4.118448958357987,-0.025461608793624982,0.011716382637044288
-3.6620531075091645,-0.04885626859923961,0.01171638263704429
-3.2077613488008483,-0.05492243127299058,0.010777504503055507
-2.7515973221415377,-0.06441843865445564,0.01171638263704429
-2.298207299287692,-0.08288339118256345,0.011217582341551888
-1.8423619819478094,-0.08571709930767717,0.010777504503055507
-1.3873277027939044,-0.07604065550363631,0.010777504503055507
-0.9338905666507702,-0.05470358108124703,0.0107775045030555
-0.4762601779296162,-0.0232490095781322,0.010033310663564516
-0.022784459828768307,0.0003938071264149629,0.011716382637044288
0.4315444564031576,0.029980060892622777,0.010385463202662384
0.8868666094846308,0.06894671745936365,0.01171638263704429
1.3406971620967645,0.08578226143848697,0.010777504503055507
1.7961408445945564,0.09543427911701602,0.01171638263704429
2.2576573786056677,0.08637376835738952,0.01228824577827918
mean x,mean theta,99% confidence interval
-5.009085500448001,-0.0124650581835704,0.012288245778279182
-4.5591202447041095,-0.023166375934397763,0.010033310663564516
-4.103577026298935,-0.041291493509027465,0.010385463202662384
-3.651084173103345,-0.030271386929847797,0.011716382637044286
-3.197030003608484,-0.04342409109810539,0.011217582341551895
-2.7416546276466076,-0.06106239515017183,0.0107775045030555
-2.2853748930545095,-0.07311054518909893,0.01373867644222853
-1.8331338779943944,-0.06885161776147226,0.01228824577827918
-1.3784062918765745,-0.04098559153467642,0.01228824577827918
-0.9246985955468459,-0.04391987576352929,0.01373867644222853
-0.4697517146324579,-0.012105503875087659,0.01373867644222853
-0.01528445314885086,0.0026567590104980667,0.012288245778279184
0.4407004547118902,0.03578404163610087,0.01171638263704429
0.8932762440488933,0.043001021411336146,0.017378203837416353
1.349832715681016,0.08088735459550493,0.01228824577827918
1.8034529593280972,0.08534835448448233,0.01171638263704429
2.2667557080831746,0.08054280755565951,0.012952948369103559
mean x,mean theta,99% confidence interval
-5.010013789434354,-0.011465026785514332,0.012288245778279182
-4.555909865236087,-0.019460669150680787,0.01373867644222853
-4.102628131785856,-0.026769041401617344,0.011217582341551891
-3.646218079221258,-0.03548285149848564,0.012952948369103552
-3.1917967066245767,-0.04177787488032779,0.012952948369103552
-2.7374896368484793,-0.05423634398548952,0.012952948369103552
-2.2808110165411213,-0.04348854748849987,0.012952948369103552
-1.8274616907483665,-0.050049122203657606,0.01228824577827918
-1.3741456476940603,-0.04230969209247634,0.012952948369103552
-0.9184440694164182,-0.016282316345168323,0.012288245778279182
-0.4650268811918691,-0.009031880546778592,0.012288245778279182
-0.009003885700649118,0.02057767342920439,0.011716382637044286
0.44696204059928973,0.035368471543497954,0.01171638263704429
0.9003301662604866,0.0528418451789332,0.01228824577827918
1.3547697055046668,0.05812786977710645,0.01228824577827918
1.8112563815862313,0.057875014554164286,0.01228824577827918
2.272354486022947,0.06757811249088766,0.01228824577827918
mean x,mean theta,99% confidence interval
-7.4093393613758405,-0.0036935402012061355,0.005551263586758665
-6.953714638547356,-0.005473097465718354,0.0057294241365420375
-6.499516368620058,-0.011848250370644992,0.005608791170775946
-6.044684202648225,-0.011957446741029743,0.005551263586758665
-5.5899592245017695,-0.016480619808516905,0.005729424136542038
-5.1353964381872395,-0.016988329592614107,0.005495470576891412
-4.6789516820778845,-0.027815733219594886,0.005551263586758663
-4.225809999223259,-0.03962582513513495,0.005668145111195871
-3.770245008626794,-0.054069433285057936,0.005551263586758663
-3.3156745393720066,-0.06795133700393288,0.005551263586758663
-2.8607521672107294,-0.0868645222095859,0.00555126358675867
-2.4059037030993156,-0.10387020759848394,0.005608791170775951
-1.950405436827873,-0.11066054037702598,0.005495470576891412
-1.49663391779858,-0.10780682411515995,0.005495470576891412
-1.04145031952032,-0.078469270823306,0.00555126358675867
-0.5862916532706837,-0.04649400456288468,0.005495470576891412
-0.13253210264824,-0.005576197267700418,0.005551263586758665
0.32234950209015634,0.03086108776270057,0.005551263586758663
0.7765058997397413,0.06471750411597021,0.005608791170775951
1.2312641274767513,0.09241056981862508,0.00555126358675867
1.6856317588001666,0.09913863251691878,0.00555126358675867
2.1400068656863893,0.09690397634115953,0.005495470576891412
2.594798999046221,0.08394517524349408,0.00555126358675867
3.050175482495918,0.0650795356046031,0.00555126358675867
3.50429692624315,0.05436033479260275,0.005608791170775944
3.959175749181175,0.04190518687313031,0.005551263586758663
4.4136218117683,0.03125485367280254,0.005495470576891412
mean x,mean theta,99% confidence interval
-7.402695876474176,-0.0059082095629451785,0.005608791170775946
-6.494071500512133,-0.013501203740400649,0.005551263586758665
-5.584468476767053,-0.02689901113065998,0.005551263586758667
-4.675408691971221,-0.031044494270906865,0.005495470576891412
-3.766366183244715,-0.049817311671351235,0.005495470576891412
-2.8579651044383882,-0.07312597648756701,0.005495470576891412
-1.9487133311225693,-0.07605805243458386,0.005495470576891412
-1.0394830569278442,-0.055680103166613155,0.005551263586758663
-0.13079801330985924,-0.01632321867373935,0.005495470576891412
0.7785239902622384,0.033856890354620486,0.005551263586758663
1.6876072755134042,0.05600771073849335,0.005495470576891412
2.5970347008097714,0.06189797862092256,0.005551263586758663
3.5057660559297044,0.04418005336339567,0.005551263586758663
4.414961984143782,0.03103652105113643,0.0054954705768914085
mean x,mean theta,99% confidence interval
-4.876658209114678,-0.01607409524968284,0.012288245778279182
-4.421392945985405,-0.008478463530213554,0.012288245778279182
-3.9682686493879045,-0.009449106111619775,0.011716382637044288
-3.5128988448179985,-0.02569024991787261,0.011716382637044288
-3.058569800826274,-0.04203635756861252,0.010385463202662384
-2.601571302207888,-0.07303102876177626,0.01171638263704429
-2.1465058930577214,-0.12719578215509642,0.011217582341551888
-1.6925648591491897,-0.2079850521703889,0.010385463202662398
-1.2385404106672004,-0.22011483995629058,0.010385463202662398
-0.7856083913863656,-0.17446942268175533,0.012288245778279194
-0.3299995087248701,-0.043039140736686514,0.01171638263704429
0.12403813179497189,0.09021014368357358,0.01228824577827918
0.6155144948058251,0.21912512959802335,0.012288245778279194
1.0713937834549871,0.2773376066267415,0.012288245778279194
1.5255964082451476,0.29316685686473215,0.012288245778279194
1.9797903943485866,0.22387551318626714,0.012288245778279194
2.437652568828826,0.16631052573543711,0.011716382637044276
mean x,mean theta,99% confidence interval
-4.928816483219661,-0.0034832417660225793,0.01171638263704429
-4.476113395020268,-0.008587874190089025,0.011716382637044288
-3.9577637165109207,-0.01793211155032557,0.012288245778279182
-3.5009225675989804,-0.025483537100653608,0.012288245778279182
-3.0459770386233402,-0.03346777114082851,0.01228824577827918
-2.59162024293702,-0.06871953971008275,0.01228824577827918
-2.1368492272578026,-0.09306698550365725,0.01228824577827918
-1.6807984172912296,-0.12561038794568252,0.01228824577827918
-1.226992452898253,-0.14921915353589948,0.011716382637044276
-0.7724398769112955,-0.09510537127009983,0.012952948369103559
-0.3182157312005629,0.0010388112448476755,0.011716382637044288
0.13861908874095874,0.09422650063037316,0.01171638263704429
0.5916010773155772,0.18268672989300422,0.012288245778279194
1.0475706323031009,0.22423657346497808,0.011217582341551902
1.5045660245152457,0.22202519053917397,0.012288245778279194
1.957567725075131,0.1823890561827934,0.012288245778279194
2.415578112553013,0.14091703092332916,0.012288245778279194
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment