1
+ export sea_level_files, SeaLevel, load_sea_level, curve_name
2
+
3
+ const sea_level_path = " sea_level_data"
4
+
5
+ const sea_level_files = Dict (
6
+ :Spratt_800ka => " Spratt2016-800ka.txt" ,
7
+ :Spratt_450ka => " Spratt2016-450ka.txt" ,
8
+ :Bintanja_3Ma => " Bintanja-3Ma.txt" ,
9
+ :Grant_153ka => " Grant2012_153ka.txt" ,
10
+ :Rohl_Bint_3Ma => " Rohl-Bint-3Ma.txt" ,
11
+ :Rohling2009_516ka => " Rohling2009-516ka.txt" ,
12
+ :Siddall2003_379ka => " Siddall2003-379ka.txt" ,
13
+ :Waelbroeck2002 => " Waelbroeck2002.txt" ,
14
+ )
15
+
16
+ struct SeaLevel{T}
17
+ elevation:: Vector{T}
18
+ age:: Vector{T}
19
+ name:: Symbol
20
+
21
+ function SeaLevel (name:: Symbol ; flip_elevation = false , flip_age = false )
22
+ age, elevation = load_sea_level (
23
+ name;
24
+ flip_age = flip_age,
25
+ flip_elevation = flip_elevation
26
+ )
27
+ new {eltype(age)} (age, elevation, name)
28
+ end
29
+ end
30
+
31
+ Base. getindex (x:: SeaLevel , i:: Int64 ) = x. elevation[i]
32
+ Base. getindex (x:: SeaLevel , i:: Int64 , j:: Int64 ) = x. elevation[i], x. age[j]
33
+ Base. getindex (x:: SeaLevel , i:: Tuple{Int64} ) = x. elevation[i... ], x. age[i... ]
34
+ Base. size (x:: SeaLevel ) = size (x. elevation)
35
+ Base. eachindex (x:: SeaLevel ) = eachindex (x. elevation)
36
+ Base. axes (x:: SeaLevel ) = axes (x. elevation)
37
+ Base. length (x:: SeaLevel ) = length (x. elevation)
38
+ curve_name (x:: SeaLevel ) = x. name
39
+
40
+ function load_sea_level (name:: Symbol ; flip_elevation = false , flip_age = false )
41
+ fname = sea_level_files[name]
42
+ data = readdlm (joinpath (sea_level_path, fname))
43
+ h = data[:, 1 ]
44
+ age = data[:, 2 ]
45
+ flip_elevation && reverse! (h)
46
+ flip_age && reverse! (age)
47
+ return h, age
48
+ end
0 commit comments