Datasets module¶
Package
Module scubas.datasets
Class Layer, Site, PROFILES
Why this module matters
Most SCUBAS workflows pass Site objects into conductivity, model, and
cable utilities. Defining these correctly improves downstream stability.
scubas.datasets now exposes lightweight data classes powered by dataclass
and offers convenience helpers for synthesising layered conductivity profiles.
The modernised layout makes it easier to construct and inspect a Site, while
remaining compatible with existing utilities such as the conductivity and
cable modules.
Highlights:
Layeris an immutable dataclass that computes resistivity lazily via a property.Siteaccepts any iterable ofLayerobjects and provides helpers for thickness/conductivity/resistivity extraction as lists or individual values.- The
Site.initstatic method builds aSitefrom parallel sequences of conductivities, thicknesses, and names—a pattern used widely inPROFILES.
Quick start¶
from scubas.datasets import Layer, Site, PROFILES
layers = [
Layer(name="Seawater", thickness=1.0, conductivity=3.33),
Layer(name="Sediments", thickness=2.5, conductivity=0.2),
]
site = Site(layers=layers, description="Example", name="Demo Site")
print(site.get_resistivities())
# Build from sequences
alt_site = Site.init(
conductivities=[3.33, 0.2, 0.0003],
thicknesses=[1.0, 2.5, float("inf")],
names=["Seawater", "Sediments", "Mantle"],
description="Three-layer example",
site_name="Alt Site",
)
# Reuse predefined profiles
print(PROFILES.CS.get_names())
API reference¶
scubas.datasets.Layer
dataclass
¶
Single geophysical layer describing thickness and electrical properties.
Source code in scubas/datasets.py
resistivity: float
property
¶
Resistivity (Ohm·m) derived as the reciprocal of conductivity.
scubas.datasets.Site
dataclass
¶
Collection of layers associated with a location or conductivity profile.
Source code in scubas/datasets.py
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | |
get_thicknesses(index=-1)
¶
Thickness values (km) for all layers or the specified index.
Source code in scubas/datasets.py
get_conductivities(index=-1)
¶
Conductivity values (S/m) for all layers or the specified index.
Source code in scubas/datasets.py
get_resistivities(index=-1)
¶
Resistivity values (Ohm·m) derived from the layer conductivities.
Source code in scubas/datasets.py
get_names(index=-1)
¶
Layer names for all layers or the specified index.
get(index=-1)
¶
Return a pandas dataframe with layer metadata.
Source code in scubas/datasets.py
set_thicknesses(value, index=0)
¶
calcZ(freqs, layer=0, return_all_layers=False)
¶
Compute magnetotelluric impedance for the layered model.
Source code in scubas/datasets.py
calcP(freqs, layer=0, return_Z=False)
¶
Calculate skin depth for the model at the specified frequencies.
Source code in scubas/datasets.py
init(conductivities, thicknesses, names, description, site_name)
staticmethod
¶
Initialise a site from parallel sequences of layer properties.