Skip to content

Commit

Permalink
Add Timescale
Browse files Browse the repository at this point in the history
  • Loading branch information
morganjwilliams committed Nov 13, 2018
1 parent e765469 commit 654b43b
Show file tree
Hide file tree
Showing 6 changed files with 523 additions and 2 deletions.
180 changes: 180 additions & 0 deletions pyrolite/data/timescale/geotimescale_spans.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
Eon,Era,Period,Superepoch,Epoch,Age,End,Start,Aliases
Phanerozoic,,,,,,0,541,
Phanerozoic,Cenozoic,,,,,0,66,
Phanerozoic,Cenozoic,Quaternary,,,,0,2.58,
Phanerozoic,Cenozoic,Quaternary,,Holocene,,0,0.0117,
Phanerozoic,Cenozoic,Quaternary,,Holocene,Meghalayan,0,0.0042,Upper Holocene; Late Holocene
Phanerozoic,Cenozoic,Quaternary,,Holocene,Northgrippian,0.0042,0.0082,Middle Holocene; Mid Holocene
Phanerozoic,Cenozoic,Quaternary,,Holocene,Greenlandian,0.0082,0.0117,Lower Holocene; Early Holocene
Phanerozoic,Cenozoic,Quaternary,,Pleistocene,,0.0117,2.58,
Phanerozoic,Cenozoic,Quaternary,,Pleistocene,Upper,0.0117,0.126,
Phanerozoic,Cenozoic,Quaternary,,Pleistocene,Middle,0.126,0.781,
Phanerozoic,Cenozoic,Quaternary,,Pleistocene,Calabrian,0.781,1.8,
Phanerozoic,Cenozoic,Quaternary,,Pleistocene,Gelasian,1.8,2.58,
Phanerozoic,Cenozoic,Neogene,,,,2.58,23.03,
Phanerozoic,Cenozoic,Neogene,,Pliocene,,2.58,5.333,
Phanerozoic,Cenozoic,Neogene,,Pliocene,Piacenzian,2.58,3.6,
Phanerozoic,Cenozoic,Neogene,,Pliocene,Zanclean,3.6,5.333,
Phanerozoic,Cenozoic,Neogene,,Miocene,,5.333,23.03,
Phanerozoic,Cenozoic,Neogene,,Miocene,Messinian,5.333,7.246,
Phanerozoic,Cenozoic,Neogene,,Miocene,Tortonian,7.246,11.63,
Phanerozoic,Cenozoic,Neogene,,Miocene,Serravallian,11.63,13.82,
Phanerozoic,Cenozoic,Neogene,,Miocene,Langhian,13.82,15.97,
Phanerozoic,Cenozoic,Neogene,,Miocene,Burdigalian,15.97,20.44,
Phanerozoic,Cenozoic,Neogene,,Miocene,Aquitanian,20.44,23.03,
Phanerozoic,Cenozoic,Paleogene,,,,23.03,66,
Phanerozoic,Cenozoic,Paleogene,,Oligocene,,23.03,33.9,
Phanerozoic,Cenozoic,Paleogene,,Oligocene,Chattian,23.03,27.82,
Phanerozoic,Cenozoic,Paleogene,,Oligocene,Rupelian,27.82,33.9,
Phanerozoic,Cenozoic,Paleogene,,Eocene,,33.9,56,
Phanerozoic,Cenozoic,Paleogene,,Eocene,Priabonian,33.9,37.8,
Phanerozoic,Cenozoic,Paleogene,,Eocene,Bartonian,37.8,41.2,
Phanerozoic,Cenozoic,Paleogene,,Eocene,Lutetian,41.2,47.8,
Phanerozoic,Cenozoic,Paleogene,,Eocene,Ypresian,47.8,56,
Phanerozoic,Cenozoic,Paleogene,,Paleocene,,56,66,
Phanerozoic,Cenozoic,Paleogene,,Paleocene,Thanetian,56,59.2,
Phanerozoic,Cenozoic,Paleogene,,Paleocene,Selandian,59.2,61.6,
Phanerozoic,Cenozoic,Paleogene,,Paleocene,Danian,61.6,66,
Phanerozoic,Mesozoic,,,,,66,251.902,
Phanerozoic,Mesozoic,Cretaceous,,,,66,145,
Phanerozoic,Mesozoic,Cretaceous,,Upper,,66,100.5,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Maastrichtian,66,72.1,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Campanian,72.1,83.6,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Santonian,83.6,86.3,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Coniacian,86.3,89.8,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Turonian,89.8,93.9,
Phanerozoic,Mesozoic,Cretaceous,,Upper,Cenomanian,93.9,100.5,
Phanerozoic,Mesozoic,Cretaceous,,Lower,,100.5,145,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Albian,100.5,113,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Aptian,113,125,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Barremian,125,129.4,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Hauterivian,129.4,132.9,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Valanginian,132.9,139.8,
Phanerozoic,Mesozoic,Cretaceous,,Lower,Berriasian,139.8,145,
Phanerozoic,Mesozoic,Jurassic,,,,145,201.3,
Phanerozoic,Mesozoic,Jurassic,,Upper,,145,163.5,
Phanerozoic,Mesozoic,Jurassic,,Upper,Tithonian,145,152.1,
Phanerozoic,Mesozoic,Jurassic,,Upper,Kimmeridgian,152.1,157.3,
Phanerozoic,Mesozoic,Jurassic,,Upper,Oxfordian,157.3,163.5,
Phanerozoic,Mesozoic,Jurassic,,Middle,,163.5,174.1,
Phanerozoic,Mesozoic,Jurassic,,Middle,Callovian,163.5,166.1,
Phanerozoic,Mesozoic,Jurassic,,Middle,Bathonian,166.1,168.3,
Phanerozoic,Mesozoic,Jurassic,,Middle,Bajocian,168.3,170.3,
Phanerozoic,Mesozoic,Jurassic,,Middle,Aalenian,170.3,174.1,
Phanerozoic,Mesozoic,Jurassic,,Lower,,174.1,201.3,
Phanerozoic,Mesozoic,Jurassic,,Lower,Toarcian,174.1,182.7,
Phanerozoic,Mesozoic,Jurassic,,Lower,Pliensbachian,182.7,190.8,
Phanerozoic,Mesozoic,Jurassic,,Lower,Sinemurian,190.8,199.3,
Phanerozoic,Mesozoic,Jurassic,,Lower,Hettangian,199.3,201.3,
Phanerozoic,Mesozoic,Triassic,,,,201.3,251.902,
Phanerozoic,Mesozoic,Triassic,,Upper,,201.3,237,
Phanerozoic,Mesozoic,Triassic,,Upper,Rhaetian,201.3,208.5,
Phanerozoic,Mesozoic,Triassic,,Upper,Norian,208.5,227,
Phanerozoic,Mesozoic,Triassic,,Upper,Carnian,227,237,
Phanerozoic,Mesozoic,Triassic,,Middle,,237,247.2,
Phanerozoic,Mesozoic,Triassic,,Middle,Ladinian,237,242,
Phanerozoic,Mesozoic,Triassic,,Middle,Anisian,242,247.2,
Phanerozoic,Mesozoic,Triassic,,Lower,,247.2,251.902,
Phanerozoic,Mesozoic,Triassic,,Lower,Olenekian,247.2,251.2,
Phanerozoic,Mesozoic,Triassic,,Lower,Induan,251.2,251.902,
Phanerozoic,Paleozoic,,,,,251.902,541,
Phanerozoic,Paleozoic,Permian,,,,251.902,298.9,
Phanerozoic,Paleozoic,Permian,,Lopingian,,251.902,259.1,
Phanerozoic,Paleozoic,Permian,,Lopingian,Changhsingian,251.902,254.14,
Phanerozoic,Paleozoic,Permian,,Lopingian,Wuchiapingian,254.14,259.1,
Phanerozoic,Paleozoic,Permian,,Guadalupian,,259.1,272.95,
Phanerozoic,Paleozoic,Permian,,Guadalupian,Capitanian,259.1,265.1,
Phanerozoic,Paleozoic,Permian,,Guadalupian,Wordian,265.1,268.8,
Phanerozoic,Paleozoic,Permian,,Guadalupian,Roadian,268.8,272.95,
Phanerozoic,Paleozoic,Permian,,Cisuralian,,272.95,298.9,
Phanerozoic,Paleozoic,Permian,,Cisuralian,Kungurian,272.95,283.5,
Phanerozoic,Paleozoic,Permian,,Cisuralian,Artinskian,283.5,290.1,
Phanerozoic,Paleozoic,Permian,,Cisuralian,Sakmarian,290.1,295,
Phanerozoic,Paleozoic,Permian,,Cisuralian,Asselian,295,298.9,
Phanerozoic,Paleozoic,Carboniferous,,,,298.9,358.9,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,,,298.9,323.2,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Upper,,298.9,307,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Upper,Gzhelian,298.9,303.7,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Upper,Kasimovian,303.7,307,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Middle,,307,315.2,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Middle,Moscovian,307,315.2,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Lower,,315.2,323.2,
Phanerozoic,Paleozoic,Carboniferous,Pennsylvanian,Lower,Bashkirian,315.2,323.2,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,,,323.2,358.9,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Upper,,323.2,330.9,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Upper,Serpukhovian,323.2,330.9,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Middle,,330.9,346.7,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Middle,Visean,330.9,346.7,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Lower,,346.7,358.9,
Phanerozoic,Paleozoic,Carboniferous,Mississippian,Lower,Tournaisian,346.7,358.9,
Phanerozoic,Paleozoic,Devonian,,,,358.9,419.2,
Phanerozoic,Paleozoic,Devonian,,Upper,,358.9,382.7,
Phanerozoic,Paleozoic,Devonian,,Upper,Famennian,358.9,372.2,
Phanerozoic,Paleozoic,Devonian,,Upper,Frasnian,372.2,382.7,
Phanerozoic,Paleozoic,Devonian,,Middle,,382.7,393.3,
Phanerozoic,Paleozoic,Devonian,,Middle,Givetian,382.7,387.7,
Phanerozoic,Paleozoic,Devonian,,Middle,Eifelian,387.7,393.3,
Phanerozoic,Paleozoic,Devonian,,Lower,,393.3,419.2,
Phanerozoic,Paleozoic,Devonian,,Lower,Emsian,393.3,407.6,
Phanerozoic,Paleozoic,Devonian,,Lower,Pragian,407.6,410.8,
Phanerozoic,Paleozoic,Devonian,,Lower,Lochkovian,410.8,419.2,
Phanerozoic,Paleozoic,Silurian,,,,419.2,443.8,
Phanerozoic,Paleozoic,Silurian,,Pridoli,,419.2,423,
Phanerozoic,Paleozoic,Silurian,,Ludlow,,423,427.4,
Phanerozoic,Paleozoic,Silurian,,Ludlow,Ludfordian,423,425.6,
Phanerozoic,Paleozoic,Silurian,,Ludlow,Gorstian,425.6,427.4,
Phanerozoic,Paleozoic,Silurian,,Wenlock,,427.4,433.4,
Phanerozoic,Paleozoic,Silurian,,Wenlock,Homerian,427.4,430.5,
Phanerozoic,Paleozoic,Silurian,,Wenlock,Sheinwoodian,430.5,433.4,
Phanerozoic,Paleozoic,Silurian,,Llandovery,,433.4,443.8,
Phanerozoic,Paleozoic,Silurian,,Llandovery,Telychian,433.4,438.5,
Phanerozoic,Paleozoic,Silurian,,Llandovery,Aeronian,438.5,440.8,
Phanerozoic,Paleozoic,Silurian,,Llandovery,Rhuddanian,440.8,443.8,
Phanerozoic,Paleozoic,Ordivician,,,,443.8,485.4,
Phanerozoic,Paleozoic,Ordivician,,Upper,,443.8,458.4,
Phanerozoic,Paleozoic,Ordivician,,Upper,Hirnantian,443.8,445.2,
Phanerozoic,Paleozoic,Ordivician,,Upper,Katian,445.2,453,
Phanerozoic,Paleozoic,Ordivician,,Upper,Sandbian,453,458.4,
Phanerozoic,Paleozoic,Ordivician,,Middle,,458.4,470,
Phanerozoic,Paleozoic,Ordivician,,Middle,Darriwilian,458.4,467.3,
Phanerozoic,Paleozoic,Ordivician,,Middle,Dapingian,467.3,470,
Phanerozoic,Paleozoic,Ordivician,,Lower,,470,485.4,
Phanerozoic,Paleozoic,Ordivician,,Lower,Floian,470,477.7,
Phanerozoic,Paleozoic,Ordivician,,Lower,Tremadocian,477.7,485.4,
Phanerozoic,Paleozoic,Cambrian,,,,485.4,541,
Phanerozoic,Paleozoic,Cambrian,,Furongian,,485.4,497,
Phanerozoic,Paleozoic,Cambrian,,Furongian,Stage 10,485.4,489.5,
Phanerozoic,Paleozoic,Cambrian,,Furongian,Jiangshanian,489.5,494,
Phanerozoic,Paleozoic,Cambrian,,Furongian,Paibian,494,497,
Phanerozoic,Paleozoic,Cambrian,,Miaolingian,,497,509,
Phanerozoic,Paleozoic,Cambrian,,Miaolingian,Guzhangian,497,500.5,
Phanerozoic,Paleozoic,Cambrian,,Miaolingian,Drumian,500.5,504.5,
Phanerozoic,Paleozoic,Cambrian,,Miaolingian,Wuliuan,504.5,509,
Phanerozoic,Paleozoic,Cambrian,,Series 2,,509,521,
Phanerozoic,Paleozoic,Cambrian,,Series 2,Stage 4,509,514,
Phanerozoic,Paleozoic,Cambrian,,Series 2,Stage 3,514,521,
Phanerozoic,Paleozoic,Cambrian,,Terreneuvian,,521,541,
Phanerozoic,Paleozoic,Cambrian,,Terreneuvian,Stage 2,521,529,
Phanerozoic,Paleozoic,Cambrian,,Terreneuvian,Fortunian,529,541,
Precambrian,,,,,,541,4600,
Precambrian,Proterozoic,,,,,541,2500,
Precambrian,Proterozoic,Neo-proterozoic,,,,541,1000,
Precambrian,Proterozoic,Neo-proterozoic,,Ediacaran,,541,635,
Precambrian,Proterozoic,Neo-proterozoic,,Cryogenian,,635,720,
Precambrian,Proterozoic,Neo-proterozoic,,Tonian,,720,1000,
Precambrian,Proterozoic,Meso-proterozoic,,,,1000,1600,
Precambrian,Proterozoic,Meso-proterozoic,,Stenian,,1000,1200,
Precambrian,Proterozoic,Meso-proterozoic,,Ectasian,,1200,1400,
Precambrian,Proterozoic,Meso-proterozoic,,Calymmian,,1400,1600,
Precambrian,Proterozoic,Paleo-proterozoic,,,,1600,2500,
Precambrian,Proterozoic,Paleo-proterozoic,,Statherian,,1600,1800,
Precambrian,Proterozoic,Paleo-proterozoic,,Orosirian,,1800,2050,
Precambrian,Proterozoic,Paleo-proterozoic,,Rhyacian,,2050,2300,
Precambrian,Proterozoic,Paleo-proterozoic,,Siderian,,2300,2500,
Precambrian,Archean,,,,,2500,4600,
Precambrian,Archean,Neo-archean,,,,2500,2800,
Precambrian,Archean,Meso-archean,,,,2800,3200,
Precambrian,Archean,Paleo-archean,,,,3200,3600,
Precambrian,Archean,Eo-archean,,,,3600,4000,
Precambrian,Hadean,,,,,4000,4600,
Precambrian,Hadean,Hadean,,,,4000,4600,
47 changes: 47 additions & 0 deletions pyrolite/util/georoc.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import pandas as pd
import numpy as np
from functools import partial
import requests
import re
import logging
Expand Down Expand Up @@ -35,8 +36,22 @@


__compilation_lists = pyrolite_datafolder(subfolder='georoc')


# -----------------------------

def parse_values(ser, **kwargs):
"""
Wrapper for parse_entry for GEOROC formatted values.
Parameters
-------------
ser: pd.Series
String series formated as sequences of 'VALUE [NUMERIC_CITATION]'.
"""
f = partial(parse_entry, regex=_GEOROC_value_rx, **kwargs)
return ser.apply(f)


def bulk_GEOROC_download(output_folder=Path('~/Downloads/GEOROC'),
reservoirs=None,
Expand Down Expand Up @@ -174,3 +189,35 @@ def ingest_pickled_georoc_frame(path):
_parse = ['Age']

return df


def georoc_munge(df, dateformat='Y/M/D'):
"""
Collection of munging functions for GEROROC data.
"""
_parse = parse_value
df.loc[:, 'GeolAge'] = (df.loc[:,
'Geol.'].apply(_parse).replace('None', '') + \
df.Age.apply(_parse))

num_cols = ['ElevationMin', 'ElevationMax',
'LatitudeMin', 'LatitudeMax',
'LongitudeMin', 'LongitudeMax',
'Min.Age(yrs.)', 'Max.Age(yrs.)',
'EruptionDay', 'EruptionMonth', 'EruptionYear']

df.loc[:, num_cols] = to_numeric(df.loc[:, num_cols].applymap(_parse))

def intstr(val):
"""Checks for invalid values and returns a string."""
if np.isnan(val):
return ''
else:
return str(int(val))

#to_numeric(df.loc[:, 'Min.Age(yrs.)'].apply(parse_entry, args=[_GEOROC_value_rx])).unique()

df.loc[:, 'Lat'] = (df.LatitudeMax + df.LatitudeMin) / 2.
df.loc[:, 'Long'] = (df.LongitudeMax + df.LongitudeMin) / 2.

return df
38 changes: 37 additions & 1 deletion pyrolite/util/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,44 @@ def titlecase(s,
return delim.join(out)


def string_variations(names):
"""
Returns equilvaent string variations based on an input set of strings.
Parameters
----------
names: {list, str}
String or list of strings to generate name variations of.
Returns
--------
set
Set of unique string variations.
"""
vars = set()
# convert input to list if singular
if isinstance(names, str):
names = [names]

for n in names:
vars = vars.union({n,
n.lower(),
n.upper(),
n.strip(),
n.strip().lower(),
n.strip().upper(),
n.replace('-', ''),
n.replace('-', '').lower(),
n.replace('-', '').upper(),
n.replace(' ', '_'),
n.replace(' ', '_').lower(),
n.replace(' ', '_').upper(),
})
return vars


def parse_entry(entry,
regex,
regex=r"(\s)*?(?P<value>[\.\w]+)(\s)*?",
delimiter=',',
values_only=True,
errors=None,
Expand Down

0 comments on commit 654b43b

Please sign in to comment.