Reading SPWLA file

The 3 methods for extracting data are:

  • Looping over the file and applying string methods, etc. >>> this is a naive approach, very fiddly.
  • Using regex to extract everything at once. >>> I have this 'sort of' working, see below.
  • Using a PEG parser. >>> this notebook.

In [1]:
with open('../data/core_analysis_example.spwla') as f:
    text = f.read()

In [2]:
test = text[:1656]

print(test)


10     2                                                                                                                       
    9999/9-9                                Norway                                            9Sep99
    Weatherford-Labs
15    10   10
          1507      1602  2031   0Weatherford-Labs    Nitrogen Permeability, Hor.
          1512      1602  2031   0Weatherford-Labs    Klinkenberg corrected gas perm, Hor.
          1510      1602  2031   0Weatherford-Labs    Nitrogen Permeability, Vert.
          1515      1602  2031   0Weatherford-Labs    Klinkenberg corrected gas perm, Vert.
          1402      1211  3084   0Weatherford-Labs    Porosity, Horizontal PLUG
          1403      1211  3084   0Weatherford-Labs    Porosity, Vertical PLUG
          1401      1212  3084   0Weatherford-Labs    Porosity, Summation
          1302      1103  3085   0Weatherford-Labs    CORE Oil Saturation
          1301      1103  3085   0Weatherford-Labs    CORE Water Saturation
          2451      1201  1086   0Weatherford-Labs    Grain Density, Hor.
20     1
        0.00     0.00  1918.00  1983.72  0.0  1
30     1
     1918.95     0.00   1.11
40     1   10
     -1002.00000 -1002.00000 -1002.00000 -1002.00000 -1002.00000    18.44722 -1002.00000    14.78718 -1002.00000 -1002.00000
30     1
     1919.95     0.00   2.11
40     1   10
     -1002.00000 -1002.00000 -1002.00000 -1002.00000 -1002.00000    17.06246 -1002.00000    18.06427 -1002.00000 -1002.00000
30     1
     1920.95     0.00   3.11
40     1   10
     -1002.00000 -1002.00000 -1002.00000 -1002.00000 -1002.00000    19.58139 -1002.00000    19.01052 -1002.00000 -1002.00000

I'm going to manually add a couple of records. One with a cutting description ('description block') and one with a cuttings description but no data block (although this latter situation does not occur in the actual data).


In [3]:
test += """30     1
     1920.10     0.00   9
36     1    1
    Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,tr Pyr.
40     1   10
        18.72400    15.45700   143.77300   129.17200    15.74091 -1002.00000 -1002.00000 -1002.00000 -1002.00000     2.68513
30     1
     1940.40     0.00   10
36     1    1
    Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,tr Pyr.
"""

Observations

  • Some lines are 128 characters wide
  • Some of the data is unidentifiable
  • This is probably a job for striplog
  • The info after the record type (10, 15, 20, 30, etc) seems to be the number of lines (and fields per line, perhaps) in that record, which is redundant information (can just read until the next record type flag)

Writing a PEG for the file

Let's try using parsimonious. There are examples to build from:

First we have to write a parsing expression grammar. PEGs are similar to a context-free grammar (i.e. one in which the terms are uniquely defined, and don't depend on context), but there is zero ambiguity. PEGs are good at describing artificial languages (whereas CFGs are better for human languages). Read more.

Let's try writing the PEG for this file format...


In [996]:
from parsimonious import Grammar

grammar = Grammar(
    r"""
    file          = file_block field_block range_block data_blocks*
    
    file_block    = "10" ws number ws file_data ws
    file_data     = well_name ws country ws date ws company ws

    field_block   = "15" ws number ws number ws field_row+
    field_row     = number ws number ws number ws "0" company ws field_name ws

    range_block   = "20" ws number ws range_data ws
    range_data    = number ws number ws start_depth ws stop_depth ws number ws "1"

    data_blocks   = depth_block descr_block? data_block?
    depth_block   = "30" ws "1" ws depth ws number ws number ws
    descr_block   = "36" ws "1" ws "1" ws description ws
    data_block    = "40" ws "1" ws record_count ws data ws
    
    start_depth   = number+
    stop_depth    = number+
    record_count  = number+
    depth         = number+
    description   = sentence+
    field_name    = sentence+

    ws            = ~r"\s*"
    number        = ~r"[-.0-9]+"
    data          = ~r"[- .0-9]+"
    well_name     = ~r"[-/0-9]+"
    country       = ~r"[A-Z]+"i
    company       = ~r"[-_A-Z]+"i
    date          = ~r"[A-Z0-9]+"i
    sentence      = ~r"[-., /ÅA-Z]"i
    """
)

Can add flags after Regex, eg like ~r"[A-Z]+"m as follows:

  • i: IGNORECASE
  • l: LOCALE
  • m: MULTILINE
  • s: DOTALL
  • u: UNICODE
  • x: VERBOSE
  • a: ASCII

Now we can parse the text to build an abstract syntax tree, or AST.


In [997]:
tree = grammar.parse(text)

Processing the AST

Now we have an abstract syntax tree (AST). We have to process this thing to get our data out of it.

I think the idea is to write functions that return what we want, gathering everything at the top level.

I think this is how we have to do it to link the Depth to the Descr and Data fields.


In [998]:
from parsimonious import NodeVisitor
import pandas as pd
import numpy as np


class FileVisitor(NodeVisitor):
    
    # -------------- File --------------
    def visit_file(self, node, visited_children):
        
        file, field, rnge, data = visited_children
    
        info = {}
        info['file'] = file
        info['fields'] = field
        info['range'] = rnge
        info['data'] = data

        return info
    
    # -------------- Meta --------------
    def visit_file_block(self, node, visited_children):
        *_, file_data, _ = visited_children
        return file_data

    def visit_file_data(self, node, visited_children):
        well, _, country, _, date, _, company, _ = node.children
        meta = {'well_name': well.text}
        meta['country'] = country.text
        meta['company'] = company.text
        try:
            meta['date'] = pd.to_datetime(date.text).isoformat()
        except (TypeError, ValueError) as e:
            meta['date'] = date.text
        return meta

    # -------------- Fields --------------
    def visit_field_block(self, node, visited_children):
        *_, fields = visited_children
        return fields

    def visit_field_row(self, node, visited_children):
        *_, field, _ = node.children
        return field.text.strip()
    
    # -------------- Range --------------
    def visit_range_block(self, node, visited_children):
        *_, rnge, _ = visited_children
        return rnge

    def visit_range_data(self, node, visited_children):
        _, _, _, _, start, _, stop, *_ = node.children
        meta = {'start': float(start.text), 'stop': float(stop.text)}
        return meta

    # -------------- ALL DATA --------------
    def visit_data_blocks(self, node, visited_children):
        depth, descr, data = visited_children
        
        # This is gross, there must be a better way...
        if not isinstance(descr, list):
            descr = ''
        
        if not isinstance(data, list):
            data = []
        
        return {depth: {'descr': descr, 'data': data}}
    
    # -------------- Depth --------------
    def visit_depth_block(self, node, visited_children):
        _, _, _, _, depth, *_ = node.children
        return float(depth.text)

    # -------------- Descr --------------
    def visit_descr_block(self, node, visited_children):
        *_, descr, _ = visited_children
        return descr

    def visit_description(self, node, visited_children):
        return node.text

    # -------------- Data --------------
    def visit_data_block(self, node, visited_children):
        *_, data, _ = visited_children
        return data
    
    def visit_data(self, node, visited_children):
        return [float(x) for x in node.text.split()]
        
    # -------------- Generic --------------
    def generic_visit(self, node, visited_children):
        return visited_children or node

Wow, that seems like a lot of code. Hm.

Anyway, let's instantiate this thing


In [999]:
fv = FileVisitor()

f = fv.visit(tree)

f


Out[999]:
{'file': {'well_name': '9999/9-9',
  'country': 'Norway',
  'company': 'Weatherford-Labs',
  'date': '1999-09-09T00:00:00'},
 'fields': ['Nitrogen Permeability, Hor.',
  'Klinkenberg corrected gas perm, Hor.',
  'Nitrogen Permeability, Vert.',
  'Klinkenberg corrected gas perm, Vert.',
  'Porosity, Horizontal PLUG',
  'Porosity, Vertical PLUG',
  'Porosity, Summation',
  'CORE Oil Saturation',
  'CORE Water Saturation',
  'Grain Density, Hor.'],
 'range': {'start': 1918.0, 'stop': 1983.72},
 'data': [{1918.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.44722,
      -1002.0,
      14.78718,
      -1002.0,
      -1002.0]]}},
  {1919.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      17.06246,
      -1002.0,
      18.06427,
      -1002.0,
      -1002.0]]}},
  {1920.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      19.58139,
      -1002.0,
      19.01052,
      -1002.0,
      -1002.0]]}},
  {1921.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.32791,
      -1002.0,
      17.9261,
      -1002.0,
      -1002.0]]}},
  {1922.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.671,
      -1002.0,
      20.77644,
      -1002.0,
      -1002.0]]}},
  {1923.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.49629,
      -1002.0,
      24.60543,
      -1002.0,
      -1002.0]]}},
  {1924.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.28268,
      -1002.0,
      12.8805,
      -1002.0,
      -1002.0]]}},
  {1925.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.43782,
      -1002.0,
      13.75609,
      -1002.0,
      -1002.0]]}},
  {1926.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      17.31157,
      -1002.0,
      14.66162,
      -1002.0,
      -1002.0]]}},
  {1927.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      19.34322,
      -1002.0,
      13.08335,
      -1002.0,
      -1002.0]]}},
  {1928.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.61451,
      -1002.0,
      18.12203,
      -1002.0,
      -1002.0]]}},
  {1929.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.17023,
      -1002.0,
      14.2138,
      -1002.0,
      -1002.0]]}},
  {1930.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.13845,
      -1002.0,
      11.11148,
      -1002.0,
      -1002.0]]}},
  {1931.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.27176,
      -1002.0,
      12.31301,
      -1002.0,
      -1002.0]]}},
  {1932.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      10.50659,
      -1002.0,
      19.31734,
      -1002.0,
      -1002.0]]}},
  {1933.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.97168,
      -1002.0,
      21.41411,
      -1002.0,
      -1002.0]]}},
  {1934.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.40207,
      -1002.0,
      43.12578,
      -1002.0,
      -1002.0]]}},
  {1935.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      22.72481,
      -1002.0,
      55.43833,
      -1002.0,
      -1002.0]]}},
  {1936.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.41375,
      -1002.0,
      59.59112,
      -1002.0,
      -1002.0]]}},
  {1937.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.85675,
      -1002.0,
      50.40101,
      -1002.0,
      -1002.0]]}},
  {1938.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      17.93774,
      -1002.0,
      44.58358,
      -1002.0,
      -1002.0]]}},
  {1940.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      18.46985,
      -1002.0,
      49.18243,
      -1002.0,
      -1002.0]]}},
  {1941.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      14.96825,
      -1002.0,
      47.84605,
      -1002.0,
      -1002.0]]}},
  {1942.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      19.11698,
      -1002.0,
      47.1803,
      -1002.0,
      -1002.0]]}},
  {1943.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      17.74624,
      -1002.0,
      47.8052,
      -1002.0,
      -1002.0]]}},
  {1944.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      11.29837,
      -1002.0,
      46.18566,
      -1002.0,
      -1002.0]]}},
  {1945.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      19.35403,
      -1002.0,
      45.72604,
      -1002.0,
      -1002.0]]}},
  {1946.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.65132,
      -1002.0,
      47.17111,
      -1002.0,
      -1002.0]]}},
  {1947.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.45465,
      -1002.0,
      40.23944,
      -1002.0,
      -1002.0]]}},
  {1948.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.54562,
      -1002.0,
      34.87458,
      -1002.0,
      -1002.0]]}},
  {1949.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      11.08179,
      -1002.0,
      64.16965,
      -1002.0,
      -1002.0]]}},
  {1950.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      3.50706,
      -1002.0,
      76.56872,
      -1002.0,
      -1002.0]]}},
  {1951.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      23.04111,
      -1002.0,
      31.48476,
      -1002.0,
      -1002.0]]}},
  {1952.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      7.55727,
      -1002.0,
      47.81084,
      -1002.0,
      -1002.0]]}},
  {1953.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.55133,
      -1002.0,
      75.47066,
      -1002.0,
      -1002.0]]}},
  {1954.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.19806,
      -1002.0,
      50.59302,
      -1002.0,
      -1002.0]]}},
  {1955.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.1413,
      -1002.0,
      35.65407,
      -1002.0,
      -1002.0]]}},
  {1956.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      9.91299,
      -1002.0,
      47.36896,
      -1002.0,
      -1002.0]]}},
  {1957.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.16705,
      -1002.0,
      55.15691,
      -1002.0,
      -1002.0]]}},
  {1958.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.19265,
      -1002.0,
      53.8299,
      -1002.0,
      -1002.0]]}},
  {1959.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62524,
      -1002.0,
      95.89247,
      -1002.0,
      -1002.0]]}},
  {1960.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.74543,
      -1002.0,
      46.03859,
      -1002.0,
      -1002.0]]}},
  {1961.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      8.15361,
      -1002.0,
      79.35339,
      -1002.0,
      -1002.0]]}},
  {1962.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      9.97245,
      -1002.0,
      56.16,
      -1002.0,
      -1002.0]]}},
  {1963.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      8.24661,
      -1002.0,
      98.42603,
      -1002.0,
      -1002.0]]}},
  {1964.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      23.81549,
      -1002.0,
      56.95147,
      -1002.0,
      -1002.0]]}},
  {1965.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      3.19908,
      -1002.0,
      86.53224,
      -1002.0,
      -1002.0]]}},
  {1966.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      11.62171,
      -1002.0,
      39.52339,
      -1002.0,
      -1002.0]]}},
  {1967.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      7.92546,
      -1002.0,
      57.87248,
      -1002.0,
      -1002.0]]}},
  {1968.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      7.92801,
      -1002.0,
      57.82173,
      -1002.0,
      -1002.0]]}},
  {1969.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      14.87131,
      -1002.0,
      38.74371,
      -1002.0,
      -1002.0]]}},
  {1970.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.9397,
      -1002.0,
      48.1092,
      -1002.0,
      -1002.0]]}},
  {1971.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      21.59065,
      -1002.0,
      62.0479,
      -1002.0,
      -1002.0]]}},
  {1972.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      15.92102,
      -1002.0,
      33.92419,
      -1002.0,
      -1002.0]]}},
  {1973.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.01351,
      -1002.0,
      45.9081,
      -1002.0,
      -1002.0]]}},
  {1974.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65552,
      -1002.0,
      99.24864,
      -1002.0,
      -1002.0]]}},
  {1975.4: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      10.63793,
      -1002.0,
      51.1269,
      -1002.0,
      -1002.0]]}},
  {1976.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      13.12366,
      -1002.0,
      41.39759,
      -1002.0,
      -1002.0]]}},
  {1977.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      8.31683,
      -1002.0,
      56.20088,
      -1002.0,
      -1002.0]]}},
  {1978.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      11.32338,
      -1002.0,
      35.14869,
      -1002.0,
      -1002.0]]}},
  {1979.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      19.25363,
      -1002.0,
      42.43396,
      -1002.0,
      -1002.0]]}},
  {1980.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      16.71245,
      -1002.0,
      66.71907,
      -1002.0,
      -1002.0]]}},
  {1981.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      17.71018,
      -1002.0,
      40.64401,
      -1002.0,
      -1002.0]]}},
  {1982.95: {'descr': '',
    'data': [[-1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      24.12447,
      -1002.0,
      43.71244,
      -1002.0,
      -1002.0]]}},
  {1918.05: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,Pyr.'],
    'data': [[139.866,
      125.9,
      17.997,
      14.715,
      20.50453,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.70829]]}},
  {1918.25: {'descr': ['Sst.Lt-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic,Pyr.'],
    'data': [[59.959,
      52.318,
      8.649,
      6.706,
      19.31275,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67364]]}},
  {1918.5: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,poss Fe-min.'],
    'data': [[114.341,
      102.196,
      38.992,
      33.072,
      20.09979,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66061]]}},
  {1918.75: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,poss Fe-min.'],
    'data': [[85.743,
      75.833,
      37.673,
      31.895,
      19.2723,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67859]]}},
  {1919.33: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[69.433,
      60.922,
      36.579,
      30.771,
      19.42854,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66734]]}},
  {1919.53: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[79.057,
      69.706,
      46.116,
      39.487,
      19.00624,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67377]]}},
  {1919.73: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[78.722,
      69.4,
      23.469,
      19.326,
      18.22899,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66057]]}},
  {1919.89: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[79.591,
      70.196,
      72.44,
      63.741,
      20.12889,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.69615]]}},
  {1920.1: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,tr Pyr.'],
    'data': [[18.724,
      15.457,
      143.773,
      129.172,
      15.74091,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68513]]}},
  {1920.3: {'descr': ['Sst.MLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr.'],
    'data': [[5.477,
      4.127,
      7.359,
      5.64,
      14.86613,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66961]]}},
  {1920.5: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[47.489,
      40.538,
      0.807,
      0.542,
      17.98787,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65097]]}},
  {1920.73: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-tr C,Cl,Mic,tr Glauc.'],
    'data': [[123.055,
      110.269,
      48.873,
      42.114,
      18.92549,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65148]]}},
  {1921.32: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,Pyr.'],
    'data': [[18.029,
      14.678,
      7.819,
      6.059,
      17.36639,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67661]]}},
  {1921.51: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[34.883,
      29.523,
      19.512,
      16.028,
      18.88742,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65469]]}},
  {1921.71: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[13.695,
      10.836,
      8.703,
      6.942,
      17.39892,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67005]]}},
  {1921.89: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic,tr Pyr.'],
    'data': [[31.307,
      26.122,
      25.329,
      21.081,
      18.68322,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65275]]}},
  {1922.1: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[25.176,
      20.699,
      9.544,
      7.43,
      18.14414,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65414]]}},
  {1922.3: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic,tr Pyr.'],
    'data': [[21.846,
      18.037,
      8.934,
      6.933,
      18.11408,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6599]]}},
  {1922.51: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.Fis.w-C,Cl,Mic,tr Pyr.'],
    'data': [[13.121,
      10.384,
      7.84,
      6.204,
      15.92662,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66493]]}},
  {1922.75: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,t r Pyr.'],
    'data': [[6.717,
      5.168,
      2.442,
      1.852,
      14.80155,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65749]]}},
  {1923.02: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[15.524,
      12.593,
      5.901,
      4.574,
      17.51657,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66293]]}},
  {1923.25: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[11.769,
      9.26,
      2.358,
      1.744,
      17.09899,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66109]]}},
  {1923.5: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[3.498,
      2.468,
      7.251,
      5.666,
      15.25807,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6657]]}},
  {1923.8: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.Fis.w-C,Cl,Mic,tr Pyr.'],
    'data': [[16.259,
      13.124,
      5.727,
      4.31,
      17.27888,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65502]]}},
  {1924.32: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[123.647,
      110.526,
      45.707,
      39.422,
      20.1011,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64937]]}},
  {1924.52: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[134.187,
      120.625,
      84.871,
      75.004,
      20.5665,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66169]]}},
  {1924.72: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[99.426,
      88.424,
      65.963,
      57.394,
      19.24024,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66095]]}},
  {1924.89: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.Fis.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[84.64,
      74.831,
      88.876,
      78.241,
      19.14404,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65027]]}},
  {1925.1: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[132.387,
      118.953,
      72.749,
      63.794,
      19.35896,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64341]]}},
  {1925.3: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc.'],
    'data': [[87.894,
      77.817,
      75.958,
      66.821,
      18.43956,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64526]]}},
  {1925.5: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[46.107,
      39.842,
      100.791,
      89.803,
      19.36859,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.72633]]}},
  {1925.76: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[124.567,
      111.686,
      72.258,
      63.106,
      17.29672,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65177]]}},
  {1926.02: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[109.083,
      97.341,
      86.636,
      76.33,
      19.00851,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65076]]}},
  {1926.22: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[62.308,
      54.457,
      82.342,
      72.472,
      17.14348,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65177]]}},
  {1926.42: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[75.298,
      66.282,
      28.725,
      23.772,
      18.2772,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65754]]}},
  {1926.57: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[68.032,
      59.658,
      51.797,
      44.389,
      17.70025,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65517]]}},
  {1927.02: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[34.713,
      29.68,
      10.213,
      8.002,
      16.69856,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65293]]}},
  {1927.25: {'descr': ['Sst.VLt-gry.VF/F-gr.Scat C-gr.Sbang.W-cmt.M-srt.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[171.142,
      155.13,
      144.271,
      129.637,
      19.41208,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64512]]}},
  {1927.5: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[117.309,
      104.953,
      150.892,
      136.16,
      18.68785,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64116]]}},
  {1927.75: {'descr': ['Sst.Lt-gry.VF/C-gr.Sbang.W-cmt.P-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[188.149,
      171.075,
      139.051,
      125.142,
      20.13203,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64494]]}},
  {1928.02: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[109.737,
      97.946,
      103.262,
      91.962,
      18.57581,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64423]]}},
  {1928.25: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.Irr Lam.w-Cl,Mic,tr Glauc,Pyr,poss Fe-min.'],
    'data': [[246.92,
      226.446,
      129.587,
      115.897,
      21.82464,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67761]]}},
  {1928.5: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,poss Fe-min.'],
    'data': [[183.028,
      166.269,
      105.263,
      93.672,
      21.61877,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67715]]}},
  {1928.75: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc.'],
    'data': [[238.632,
      218.617,
      242.842,
      222.633,
      20.7376,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64267]]}},
  {1929.32: {'descr': ['Sst.Lt-gry.VF/C-gr.Sbang.W-cmt.P-srt.Irr Lam.w-tr C,Cl,Mic,tr Glauc,tr Pyr.'],
    'data': [[73.644,
      64.774,
      32.51,
      27.37,
      18.68737,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64436]]}},
  {1929.52: {'descr': ['Sst.Yelsh-gry.VF/VC-gr.Sbang.W-cmt.VP-srt.w-Cl,Mic,Glauc.'],
    'data': [[117.404,
      105.042,
      6.743,
      5.141,
      19.43138,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65]]}},
  {1929.71: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.w-Cl,Mic,tr Glauc,Pyr.'],
    'data': [[16.135,
      13.129,
      35.593,
      29.802,
      21.55865,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.75176]]}},
  {1929.9: {'descr': ['Sst.Yelsh-gry.VF/VC-gr.Sbang.W-cmt.VP-srt.w-Cl,Mic,Glauc,poss Fe-min.'],
    'data': [[8.931,
      6.901,
      1.238,
      0.852,
      18.68283,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.7134]]}},
  {1930.1: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[225.628,
      206.345,
      194.102,
      176.682,
      17.02692,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64468]]}},
  {1930.3: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[406.365,
      377.986,
      208.125,
      189.865,
      18.36693,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63605]]}},
  {1930.5: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[539.504,
      505.461,
      425.747,
      396.513,
      19.39037,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6368]]}},
  {1930.75: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.Irr Lam.w-Cl,Mic.'],
    'data': [[270.468,
      248.713,
      318.91,
      294.688,
      18.65212,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64375]]}},
  {1931.32: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[373.392,
      346.525,
      144.573,
      130.31,
      17.50769,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65908]]}},
  {1931.5: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[881.85,
      835.27,
      726.725,
      685.535,
      19.96871,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66065]]}},
  {1931.7: {'descr': ['Sst.VLt-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[196.404,
      178.82,
      688.945,
      649.138,
      15.1908,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.70262]]}},
  {1931.89: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[72.483,
      63.706,
      121.477,
      108.839,
      13.16698,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.70519]]}},
  {1932.1: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.Biost.w-Cl,Mic.'],
    'data': [[337.91,
      312.741,
      36.033,
      30.867,
      16.72281,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63685]]}},
  {1932.3: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[168.382,
      152.541,
      91.027,
      80.714,
      18.013,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64267]]}},
  {1932.56: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[385.33,
      357.915,
      0.674,
      0.448,
      18.38396,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63725]]}},
  {1932.79: {'descr': ['Sst.VLt-gry.VF/C-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[60.865,
      53.044,
      22.225,
      18.401,
      11.66817,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.71408]]}},
  {1933.02: {'descr': ['Sst.VLt-gry.F/VC-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-C,Calc,Cl,Mic.'],
    'data': [[271.344,
      249.548,
      44.202,
      37.757,
      13.8521,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68697]]}},
  {1933.2: {'descr': ['Sst.VLt-gry.F/C-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[19.873,
      16.172,
      65.034,
      56.592,
      10.80512,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.71762]]}},
  {1933.39: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[1.34,
      0.927,
      5.644,
      4.309,
      9.81204,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65851]]}},
  {1933.59: {'descr': ['Sst.Lt-gry.VF/C-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[74.241,
      64.937,
      61.909,
      53.983,
      16.86788,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65054]]}},
  {1934.02: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-Calc,Cl,Mic.'],
    'data': [[80.759,
      71.268,
      213.096,
      194.207,
      18.12754,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68298]]}},
  {1934.25: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[95.849,
      85.123,
      88.13,
      77.856,
      17.93755,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65265]]}},
  {1934.5: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.M-srt.tr Mtrx.Irr Lam.w-Cl,Mic.'],
    'data': [[13.345,
      10.752,
      4.931,
      3.724,
      14.18397,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65657]]}},
  {1934.76: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[57.745,
      49.902,
      9.825,
      7.724,
      18.7089,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66277]]}},
  {1935.02: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Gran.Sbang.W-cmt.P-srt.tr Mtrx.w-Cl,Mic,poss Fe-min.'],
    'data': [[32.585,
      27.469,
      26.242,
      22.209,
      16.45938,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65994]]}},
  {1935.25: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Gran.Sbang.W-cmt.Å-srt.tr Mtrx.w-Cl,Mic,tr Glauc.'],
    'data': [[349.045,
      323.331,
      22.451,
      18.556,
      16.14611,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65263]]}},
  {1935.5: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[1723.645,
      1652.749,
      317.175,
      293.041,
      19.93756,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.644]]}},
  {1935.81: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[5139.632,
      4999.74,
      260.032,
      238.856,
      21.80404,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64436]]}},
  {1936.32: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-tr Pyr.'],
    'data': [[12461.471,
      12219.9,
      12830.09,
      12584.169,
      19.91458,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66499]]}},
  {1936.5: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[3620.512,
      3507.991,
      1012.881,
      962.184,
      19.72323,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64473]]}},
  {1936.7: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[22634.448,
      22285.75,
      910.614,
      863.235,
      23.05566,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64029]]}},
  {1936.87: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[5428.855,
      5284.206,
      2661.173,
      2568.22,
      22.96917,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64957]]}},
  {1937.1: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[4415.181,
      4287.915,
      184.311,
      167.457,
      20.27105,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.643]]}},
  {1937.3: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,tr Pyr.'],
    'data': [[3349.256,
      3242.053,
      1326.951,
      1266.685,
      20.85259,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64342]]}},
  {1937.5: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl.'],
    'data': [[2681.629,
      2588.283,
      29.189,
      24.412,
      19.02763,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65171]]}},
  {1937.75: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,Mic.'],
    'data': [[2738.326,
      2643.755,
      42.168,
      36.063,
      18.85004,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63526]]}},
  {1938.32: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[4317.296,
      4191.79,
      1155.667,
      1100.412,
      19.84654,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65979]]}},
  {1938.5: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[2708.544,
      2614.621,
      44.412,
      38.297,
      20.0087,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68797]]}},
  {1938.69: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[2711.091,
      2617.113,
      126.96,
      113.878,
      19.27291,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64684]]}},
  {1938.87: {'descr': ['Sst.VLt-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-ltl Cl,Mic.'],
    'data': [[419.375,
      390.349,
      1375.491,
      1313.845,
      16.47591,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65442]]}},
  {1939.07: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Gran.Sbang.W-cmt.P-srt.w-tr C,Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[332.421,
      307.451,
      203.185,
      185.181,
      16.18542,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66541]]}},
  {1939.27: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Sbang.W-cmt.P-srt.w-tr C,ltl Cl,Mic,poss Fe-min.'],
    'data': [[2595.238,
      2503.582,
      2376.7,
      2289.948,
      23.94572,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65943]]}},
  {1939.47: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Gran.Sbang.W-cmt.P-srt.w-tr C,Cl,Mic,poss Fe-min.'],
    'data': [[3167.989,
      3064.247,
      1833.299,
      1759.511,
      24.36377,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65435]]}},
  {1939.67: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Gran.Sbang.W-cmt.VP-srt.w-C,Cl,Mic,Pyr.'],
    'data': [[0.0,
      0.0,
      899.461,
      852.28,
      13.04259,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67184]]}},
  {1940.02: {'descr': ['Mdst.MLt-gry.VW-Consol.Frac.w-Pyr.'],
    'data': [[0.0,
      0.0,
      0.0,
      0.0,
      2.72859,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.87873]]}},
  {1940.28: {'descr': ['Mdst.MLt-gry.VW-Consol.Frac.Fis.w-Pyr.'],
    'data': [[0.0,
      0.0,
      0.003,
      0.001,
      2.82935,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.73787]]}},
  {1940.52: {'descr': ['Mdst.MLt-gry.VW-Vonsol.Frac.Fis-w-Pyr.'],
    'data': [[0.0,
      0.0,
      0.003,
      0.002,
      3.68203,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.70648]]}},
  {1940.79: {'descr': ['Mdst.MLt/Yelsh-gry.VW-Consol.w-abd Pyr.'],
    'data': [[0.045,
      0.025,
      0.0,
      0.0,
      4.75235,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      3.2682]]}},
  {1941.05: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic,Pyr.'],
    'data': [[26.661,
      22.326,
      6.861,
      5.303,
      19.90245,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67006]]}},
  {1941.3: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Thin Lam.w-Cl,Mic,Pyr.'],
    'data': [[13.222,
      10.583,
      14.913,
      11.951,
      18.55916,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66856]]}},
  {1941.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,Pyr.'],
    'data': [[2.695,
      1.995,
      0.418,
      0.27,
      14.34195,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67412]]}},
  {1941.75: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,Pyr.'],
    'data': [[9.969,
      7.852,
      2.171,
      1.684,
      17.32611,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.672]]}},
  {1942.32: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic,tr Pyr.'],
    'data': [[47.506,
      41.028,
      37.785,
      32.065,
      21.8382,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65664]]}},
  {1942.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,Pyr.'],
    'data': [[9.27,
      7.318,
      2.073,
      1.528,
      17.22763,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66701]]}},
  {1942.7: {'descr': ['Sst.Yelsh-gry.VF-gr.Scat M-gr.Sbang.W-cmt.W-srt.Lam.Frac.w-Cl,Mic,Pyr.'],
    'data': [[0.0,
      0.0,
      0.134,
      0.081,
      13.03756,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.69094]]}},
  {1942.9: {'descr': ['Sst.Yelsh-gry.VF/VC-gr.Gran.Sbang.W-cmt.VP-srt.Thin Lam.Mtrx.w-Cl,Mic,Pyr.'],
    'data': [[22.218,
      18.181,
      9.165,
      7.104,
      13.54788,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67185]]}},
  {1943.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Frac.w-Cl,Mic,Pyr,poss Fe-min.'],
    'data': [[0.0,
      0.0,
      9.521,
      7.401,
      18.73807,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68119]]}},
  {1943.24: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Thin Lam.Mtrx.w-Cl,Mic,Pyr.'],
    'data': [[40.47,
      34.525,
      21.271,
      17.624,
      15.98376,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66433]]}},
  {1943.58: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-Cl,Mic,Pyr.'],
    'data': [[4.226,
      3.165,
      0.251,
      0.157,
      14.96501,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.682]]}},
  {1943.8: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.Frac.tr Mtrx.w-Cl,Mic,Pyr,poss Fe.'],
    'data': [[0.0,
      0.0,
      28.418,
      23.9,
      18.31553,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67242]]}},
  {1944.02: {'descr': ['Sst.Yelsh-gry.F/C-gr.Sbang.W-cmt.P-srt.Mtrx.w-Cl,Mic,Pyr,poss Fe-min.'],
    'data': [[15.107,
      12.459,
      6.329,
      4.946,
      15.4022,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.77507]]}},
  {1944.43: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.Lam.Frac.tr Mtrx.w-Cl,Mic,Pyr.'],
    'data': [[0.0,
      0.0,
      7.589,
      5.782,
      15.94222,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66002]]}},
  {1944.62: {'descr': ['Sst.Yelsh-gry.M/VC-gr.Sbang.W-cmt.P-srt.Mtrx.w-Cl,Mic.'],
    'data': [[521.089,
      487.842,
      0.0,
      0.0,
      18.78383,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64629]]}},
  {1944.8: {'descr': ['Sst.Lt-gry.VF-gr.Sbang.VW-cmt.VW-srt.Lam.Frac.Fis.w-Cl,Mic,Pyr.'],
    'data': [[0.0,
      0.0,
      0.016,
      0.009,
      10.24497,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.682]]}},
  {1945.02: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-Cl,Mic,Pyr,poss Fe-min.'],
    'data': [[18.492,
      15.095,
      11.663,
      9.175,
      19.93373,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.69901]]}},
  {1945.25: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[16.224,
      13.248,
      8.984,
      6.918,
      18.47934,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68354]]}},
  {1945.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[22.039,
      18.108,
      17.733,
      14.732,
      19.40163,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67203]]}},
  {1945.75: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[37.889,
      32.304,
      23.74,
      19.772,
      20.43098,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66442]]}},
  {1946.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[3.405,
      2.54,
      0.908,
      0.614,
      15.0333,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67738]]}},
  {1946.25: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[2.212,
      1.53,
      14.332,
      11.534,
      14.75609,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67152]]}},
  {1946.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[3.522,
      2.639,
      7.002,
      5.386,
      13.96924,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65781]]}},
  {1946.7: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.Lam.w-tr C,Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[5.526,
      4.311,
      1.692,
      1.188,
      14.73305,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66512]]}},
  {1947.12: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Thin Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[6.259,
      4.831,
      0.356,
      0.228,
      15.62211,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66421]]}},
  {1947.3: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[1.362,
      0.944,
      1.015,
      0.691,
      15.06677,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66919]]}},
  {1947.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[3.519,
      2.641,
      1.659,
      1.163,
      15.3958,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66945]]}},
  {1947.75: {'descr': ['Sst.Lt-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.Fis.w-Cl,Mic,tr Pyr.'],
    'data': [[1.815,
      1.279,
      0.056,
      0.032,
      7.87137,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66371]]}},
  {1948.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[0.895,
      0.604,
      0.0,
      0.0,
      12.7292,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66648]]}},
  {1948.25: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.Irr Lam.w-Cl,Mic,tr Pyr,poss Fe-min.'],
    'data': [[1.633,
      1.143,
      0.799,
      0.536,
      15.21999,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67015]]}},
  {1948.48: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-ltl Cl,Mic.'],
    'data': [[78.086,
      68.805,
      1.316,
      0.91,
      15.60081,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63816]]}},
  {1948.73: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[8.847,
      7.102,
      7.642,
      6.133,
      17.39128,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63769]]}},
  {1949.32: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[14.674,
      11.77,
      0.195,
      0.12,
      11.44772,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63674]]}},
  {1949.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-Cl,Mic,tr Pyr.'],
    'data': [[0.197,
      0.122,
      0.18,
      0.11,
      11.58867,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64496]]}},
  {1949.67: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.VW-cmt.W-srt.Irr Lam.w-Cl,Mic.'],
    'data': [[0.137,
      0.082,
      0.055,
      0.031,
      12.82761,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64563]]}},
  {1949.83: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.VW-cmt.VW-srt.w-Cl,Mic,poss Fe-min.'],
    'data': [[0.086,
      0.051,
      0.058,
      0.033,
      10.39863,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67686]]}},
  {1950.05: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.VW-cmt.VW-srt.w-Cl,Mic.'],
    'data': [[0.073,
      0.042,
      0.035,
      0.02,
      9.32697,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65048]]}},
  {1950.25: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic,Pyr.'],
    'data': [[0.182,
      0.111,
      0.068,
      0.039,
      11.76959,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64957]]}},
  {1950.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.Mtrx.w-Cl,Mic.'],
    'data': [[0.872,
      0.588,
      1.365,
      0.945,
      10.53041,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65972]]}},
  {1950.75: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[13.032,
      10.337,
      0.454,
      0.295,
      21.14039,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64574]]}},
  {1951.02: {'descr': ['Sst.MDk-gry.F/M-gr.Sbang.W-cmt.W-srt.Lam.Frac.w-Cl,Mic.'],
    'data': [[0.0,
      0.0,
      0.01,
      0.005,
      3.37148,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.57373]]}},
  {1951.27: {'descr': ['Sst.Yelsh-gry.F/V-gr.Sbang.W-cmt.P-srt.tr Mtrx.w-ltl Cl,Mic.'],
    'data': [[1114.22,
      1060.214,
      0.096,
      0.057,
      13.94985,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63512]]}},
  {1951.62: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Sbang.W-cmt.P-srt.w-tr Cl,Mic.'],
    'data': [[9187.57,
      8987.352,
      767.492,
      724.836,
      23.92039,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64053]]}},
  {1951.82: {'descr': ['Sst.Yelsh-gry.F/C-gr.Sbang.W-cmt.P-srt.Thin Lam.w-Cl,Mic.'],
    'data': [[909.813,
      862.427,
      6250.78,
      6092.829,
      19.16118,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6495]]}},
  {1952.03: {'descr': ['Sst.Yelsh-gry.F/VC-gr.Sbang.W-cmt.P-srt.w-tr Cl,Mic.'],
    'data': [[4731.946,
      4599.031,
      3055.232,
      2953.831,
      23.94263,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6464]]}},
  {1952.29: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-Cl,Mic,tr Pyr.'],
    'data': [[4.966,
      3.858,
      3.279,
      2.403,
      14.29629,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63775]]}},
  {1952.51: {'descr': ['Sst.M-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[0.193,
      0.119,
      0.02,
      0.011,
      10.72526,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68376]]}},
  {1952.73: {'descr': ['Sst.MLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[0.232,
      0.144,
      0.077,
      0.045,
      3.99897,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.61308]]}},
  {1953.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.Frac.w-C,Cl,Mic,tr Pyr.'],
    'data': [[0.0,
      0.0,
      0.034,
      0.019,
      8.84913,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.61764]]}},
  {1953.22: {'descr': ['Sst.Yelsh-gry.F/M-gr.Sbang.W-cmt.W-srt.Lam.Mtrx.w-C,Cl,Mic.'],
    'data': [[0.587,
      0.386,
      0.319,
      0.203,
      10.97412,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.61248]]}},
  {1953.53: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.Mtrx.w-tr C,Cl,Mic.'],
    'data': [[0.199,
      0.123,
      0.062,
      0.036,
      7.51282,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64203]]}},
  {1953.77: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.Mtrx.w-C,Cl,Mic.'],
    'data': [[0.709,
      0.472,
      0.57,
      0.375,
      9.59034,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63722]]}},
  {1954.05: {'descr': ['Sst.Yelsh-gry.F-gr.Sbang.W-cmt.VW-srt.Lam.Mtrx.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[1.041,
      0.709,
      0.354,
      0.226,
      10.55352,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65729]]}},
  {1954.3: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[52.304,
      44.964,
      78.09,
      68.892,
      17.14552,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.61266]]}},
  {1954.5: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.W-srt.w-C,Cl,Mic.'],
    'data': [[33.612,
      28.633,
      22.638,
      18.64,
      17.89099,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63234]]}},
  {1954.75: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[34.965,
      29.816,
      27.351,
      23.113,
      17.67672,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65061]]}},
  {1955.02: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.w-C,Cl,Mic.'],
    'data': [[1.431,
      0.994,
      0.363,
      0.233,
      14.15056,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6354]]}},
  {1955.25: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic,Pyr.'],
    'data': [[2.554,
      2.021,
      1.166,
      0.8,
      14.02677,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62952]]}},
  {1955.5: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-C,Cl,Mic.'],
    'data': [[12.165,
      9.725,
      2.769,
      2.201,
      17.33075,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63961]]}},
  {1955.76: {'descr': ['Sst.M-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[0.729,
      0.486,
      2.276,
      1.779,
      14.65482,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65937]]}},
  {1956.02: {'descr': ['Sst.M-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[1.002,
      0.681,
      0.223,
      0.139,
      14.78761,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62019]]}},
  {1956.26: {'descr': ['Sst.MDk-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.w-C,Cl,Mic.'],
    'data': [[2.568,
      2.032,
      0.083,
      0.049,
      9.06851,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.42492]]}},
  {1956.64: {'descr': ['Sst.MLt-gry.VF/F-gr.Sbang.VW-cmt.W-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[0.05,
      0.028,
      0.131,
      0.079,
      8.09512,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6617]]}},
  {1956.87: {'descr': ['Sst.MLt-gry.VF-gr.Sbang.VW-cmt.VW-srt.Lam.w-C,Cl,Mic.'],
    'data': [[0.136,
      0.082,
      0.059,
      0.034,
      7.48537,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65232]]}},
  {1957.02: {'descr': ['Sst.MLt-gry.VF-gr.Sbang.VW-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[0.059,
      0.034,
      0.053,
      0.03,
      11.15853,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64809]]}},
  {1957.26: {'descr': ['Sst.Yelsh-gry.VF/C-gr.Sbang.W-cmt.P-srt.w-C,Cl,Mic,tr Pyr.'],
    'data': [[1.404,
      0.974,
      0.137,
      0.082,
      15.60702,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64798]]}},
  {1957.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[2.064,
      1.606,
      15.815,
      12.969,
      11.88241,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62473]]}},
  {1957.73: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.Mtrx.Irr Lam.w-C,Cl,Mic.'],
    'data': [[119.116,
      106.597,
      127.093,
      113.991,
      18.51125,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64694]]}},
  {1958.02: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.Mtrx.w-Cl,Mic.'],
    'data': [[30.035,
      25.515,
      3.201,
      2.331,
      16.29299,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66183]]}},
  {1958.19: {'descr': ['Sst.Yelsh-gry.F/C-gr.Sbang.W-cmt.P-srt.Mtrx.w-Cl,Mic.'],
    'data': [[417.067,
      388.185,
      238.367,
      218.35,
      20.43893,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65089]]}},
  {1958.51: {'descr': ['Sst.Yelsh-gry.F/M-gr.Sbang.W-cmt.M-srt.Mtrx.w-Cl,Mic.'],
    'data': [[568.373,
      533.131,
      190.762,
      173.509,
      22.31951,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64452]]}},
  {1958.74: {'descr': ['Sst.Yelsh-gry.F/C-gr.Sbang.W-cmt.P-srt.Mtrx.w-Cl,Mic.'],
    'data': [[395.944,
      368.017,
      466.778,
      435.731,
      20.05811,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64528]]}},
  {1959.02: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Mtrx.w-tr C,Cl,Mic.'],
    'data': [[10.004,
      7.846,
      6.922,
      5.27,
      16.51937,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64207]]}},
  {1959.24: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.Mtrx.Lam.Fis.w-tr C,Cl,Mic.'],
    'data': [[15.96,
      13.012,
      9.255,
      7.311,
      14.6653,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65111]]}},
  {1959.48: {'descr': ['Sst.Yelsh-gryVF-gr.Sbang.W-cmt.VW-srt.w-tr C,Cl,Mic.'],
    'data': [[4.174,
      3.134,
      4.367,
      3.224,
      16.27376,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6439]]}},
  {1959.76: {'descr': ['Sst.MLt-gry.VF-gr.VW-Consol.VW-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[0.122,
      0.073,
      0.157,
      0.095,
      12.10845,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63613]]}},
  {1960.02: {'descr': ['Sst.MLt-gry.VF-gr.VW-Consol.VW-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[0.062,
      0.035,
      0.015,
      0.008,
      13.53135,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64426]]}},
  {1960.32: {'descr': ['Sst.MLt-gry.VF-gr.VW-Consol.VW-srt.tr Mtrx.w-tr C,Cl,Mic.'],
    'data': [[4.454,
      3.362,
      1.414,
      0.981,
      17.43654,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64027]]}},
  {1960.53: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-Cl,Mic.'],
    'data': [[18.504,
      15.179,
      11.717,
      9.182,
      15.36299,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64267]]}},
  {1960.75: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[79.152,
      69.756,
      67.849,
      59.193,
      19.0736,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64612]]}},
  {1961.04: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[17.625,
      14.279,
      9.31,
      7.195,
      18.90914,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63727]]}},
  {1961.26: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.VW-srt.w-C,Cl,Mic.'],
    'data': [[12.504,
      10.052,
      4.775,
      3.633,
      16.15475,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64599]]}},
  {1961.55: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-C,Cl,Mic.'],
    'data': [[0.303,
      0.191,
      0.147,
      0.089,
      18.08597,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62053]]}},
  {1961.75: {'descr': ['Sst.Yelsh-gry.VF-gr.VW-Consol.VW-srt.w-C,Cl,Mic.'],
    'data': [[0.152,
      0.093,
      1.974,
      1.398,
      15.38539,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67682]]}},
  {1962.02: {'descr': ['Sst.Yelsh-gry.VF-gr.VW-Consol.VW-srt.Lam.w-tr Cl,Mic,poss Fe-min.'],
    'data': [[0.046,
      0.026,
      0.008,
      0.004,
      10.10872,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68623]]}},
  {1962.24: {'descr': ['Sst.Yelsh-gry.VF-gr.VW-Consol.VW-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[0.058,
      0.033,
      0.001,
      0.001,
      12.71543,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67165]]}},
  {1962.49: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-C,Cl,Mic.'],
    'data': [[1.537,
      1.072,
      3.156,
      2.499,
      17.23852,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65213]]}},
  {1962.75: {'descr': ['Sst.MLt-gry.VF-gr.VW-Consol.VW-srt.Lam.w-tr C,Cl,Mic.'],
    'data': [[0.06,
      0.034,
      0.02,
      0.011,
      10.76181,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6543]]}},
  {1963.07: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-Cl,Mic,tr Pyr.'],
    'data': [[0.727,
      0.485,
      0.058,
      0.033,
      15.74397,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66021]]}},
  {1963.27: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-Cl,Mic.'],
    'data': [[0.793,
      0.532,
      0.646,
      0.428,
      16.27359,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66076]]}},
  {1963.53: {'descr': ['Sst.Yelsh-gry.VF/F-gr.W-Consol.W-srt.w-Cl,Mic,Pyr.'],
    'data': [[0.962,
      0.652,
      0.884,
      0.597,
      12.91152,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67412]]}},
  {1963.79: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Thin Lam.w-Cl,Mic.'],
    'data': [[11.215,
      8.89,
      6.317,
      4.917,
      17.01296,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.658]]}},
  {1964.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-tr C,Cl,Mic.'],
    'data': [[25.748,
      21.274,
      20.234,
      16.68,
      19.15098,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63828]]}},
  {1964.28: {'descr': ['Sst.MLt-gry.VF/F-gr.W-Consol.W-srt.Lam.w-C,Cl,Mic,tr Pyr.'],
    'data': [[0.962,
      0.652,
      0.303,
      0.192,
      13.04615,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62964]]}},
  {1964.55: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.Irr Lam.w-C.Cl,Mic.'],
    'data': [[1.23,
      0.847,
      5.794,
      4.246,
      14.17755,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64405]]}},
  {1964.76: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-tr C,Cl,Mic.'],
    'data': [[36.398,
      30.597,
      127.598,
      114.29,
      14.49908,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64623]]}},
  {1965.02: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-Cl,Mic.'],
    'data': [[343.411,
      317.944,
      419.302,
      390.326,
      23.48967,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64591]]}},
  {1965.23: {'descr': ['Sst.Lt Olv-gry.VF/M-gr.Sbang.W-cmt.M-srt.Mtrx.w-Cl,Mic,poss Fe-min.'],
    'data': [[18.247,
      14.955,
      0.792,
      0.531,
      14.64704,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66339]]}},
  {1965.54: {'descr': ['Mdst.MLt-gry.VW-Consol.w-C,Mic.'],
    'data': [[0.018,
      0.009,
      0.013,
      0.007,
      1.5913,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.62932]]}},
  {1965.85: {'descr': ['SndyMdst.w-VF-gr.Lt-gry.VW-Consol.Frac.w-C,Mic.'],
    'data': [[0.0,
      0.0,
      0.047,
      0.027,
      3.78738,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66409]]}},
  {1966.1: {'descr': ['Mdst.MLt-gry.w VF-gr.VW-Consol.w-C,Mic.'],
    'data': [[0.023,
      0.012,
      0.011,
      0.006,
      2.52389,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6643]]}},
  {1966.3: {'descr': ['Mdst.MLt-gry.w VF-gr.VW-Consol.w-tr C,Mic.'],
    'data': [[0.034,
      0.019,
      0.011,
      0.006,
      2.48755,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.651]]}},
  {1966.53: {'descr': ['Mdst.MLt-gry.w VF-gr.VW-Consol.C-Lam.w-C,Mic.'],
    'data': [[0.06,
      0.034,
      0.008,
      0.004,
      1.50045,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.60974]]}},
  {1966.73: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.VW-cmt.M-srt.w-Cl,Mic.'],
    'data': [[19.989,
      16.295,
      3.642,
      2.762,
      11.59194,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.70901]]}},
  {1967.08: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.VW-cmt.M-srt.w-tr C,Cl,Mic.'],
    'data': [[69.076,
      60.453,
      14.283,
      11.786,
      15.5926,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64594]]}},
  {1967.3: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.VW-cmt.M-srt.Lam.w-Cl,Mic.'],
    'data': [[38.878,
      33.336,
      3.375,
      2.502,
      14.94865,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64149]]}},
  {1967.52: {'descr': ['Sst.Yelsh-gry.VF/VC-gr.Sbrndd.W-cmt.VP-srt.Mtrx.Irr Lam.w-C,Cl,Mic.'],
    'data': [[520.635,
      487.308,
      137.936,
      123.928,
      16.10455,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65308]]}},
  {1967.79: {'descr': ['Sst.Yelsh-gry.F/C-gr.Sbang.W-cmt.VP-srt.w-Cl,Mic.'],
    'data': [[1382.598,
      1320.742,
      79.466,
      70.018,
      22.43775,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67151]]}},
  {1968.02: {'descr': ['Mdst.MDk-gry.w VF-gr.VW-Consol.Irr Lam.Fis.w-tr C,Mic.'],
    'data': [[0.155,
      0.094,
      0.002,
      0.001,
      2.34734,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.55948]]}},
  {1968.25: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-ltl Cl,Mic.'],
    'data': [[663.963,
      625.122,
      691.434,
      651.507,
      22.6773,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64109]]}},
  {1968.48: {'descr': ['Sst.Yelsh-gry.VF/M-gr.Sbang.W-cmt.M-srt.w-Cl,Mic.'],
    'data': [[372.275,
      345.455,
      451.932,
      421.523,
      19.50674,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63604]]}},
  {1968.75: {'descr': ['Sst.Yelsh-gry.VF-gr.VW-Consol.VW-srt.Irr Lam.w-Cl,Mic,poss Fe-min.'],
    'data': [[11.679,
      9.481,
      14.417,
      11.484,
      15.27181,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66737]]}},
  {1969.08: {'descr': ['Sst.Yelsh-gry.F-gr.Sbang.W-cmt.VW-srt.w-C,Cl,Mic.'],
    'data': [[142.98,
      128.792,
      78.652,
      69.266,
      16.62948,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6274]]}},
  {1969.3: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-tr C,Cl,Mic.'],
    'data': [[108.637,
      96.901,
      97.285,
      86.205,
      16.26085,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6557]]}},
  {1969.5: {'descr': ['Sst.Yelsh-gry.VF/F-gr.W-Consol.W-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[0.359,
      0.23,
      0.232,
      0.144,
      10.99349,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65815]]}},
  {1969.74: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-tr C,Cl,Mic.'],
    'data': [[3.256,
      2.469,
      0.246,
      0.154,
      10.46676,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63849]]}},
  {1970.06: {'descr': ['Sst.Yelsh-gry.VF-gr.W-Consol.VW-srt.w-Cl,Mic.'],
    'data': [[51.521,
      44.784,
      120.893,
      108.255,
      11.9283,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65758]]}},
  {1970.27: {'descr': ['Sst.VLt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic.'],
    'data': [[530.522,
      496.881,
      514.114,
      481.073,
      18.02415,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6439]]}},
  {1970.52: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-tr C,Cl,Mic.'],
    'data': [[301.759,
      278.453,
      450.998,
      420.627,
      21.72837,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63379]]}},
  {1970.73: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic.'],
    'data': [[360.896,
      334.687,
      468.138,
      437.028,
      18.40294,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64383]]}},
  {1971.02: {'descr': ['Sst.MLt-gry.VF-gr.Sbang.W-cmt.VW-srt.w-Cl,Mic.'],
    'data': [[126.529,
      113.464,
      126.503,
      113.462,
      17.23921,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64011]]}},
  {1971.24: {'descr': ['Sst.Yelsh-gry.VF-gr.Sbang.W-cmt.VW-srt.w-Cl,Mic.'],
    'data': [[13.068,
      10.477,
      1.382,
      0.958,
      13.83761,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65496]]}},
  {1971.54: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[462.556,
      431.668,
      319.726,
      295.432,
      21.85611,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64466]]}},
  {1971.75: {'descr': ['Sst.Yelsh-gry.VF/F-gr.W-Consol. mW-srt.w-C,Cl,Mic.'],
    'data': [[222.934,
      203.872,
      170.436,
      154.444,
      20.75868,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65276]]}},
  {1972.02: {'descr': ['Sst.Yelsh-gry.F-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[237.331,
      217.362,
      186.052,
      169.085,
      20.27341,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64632]]}},
  {1972.25: {'descr': ['Sst.Yelsh-gry.VF-gr.VW-Consol.VW-srt.Lam.w-Cl,Mic,poss Fe-min.'],
    'data': [[1.057,
      0.721,
      1.755,
      1.234,
      12.98222,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66327]]}},
  {1972.55: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-C,Cl,Mic.'],
    'data': [[109.68,
      97.967,
      137.371,
      123.569,
      15.38155,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64332]]}},
  {1972.75: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.w-tr C,Cl,Mic.'],
    'data': [[8.633,
      6.93,
      6.383,
      5.049,
      15.49292,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65858]]}},
  {1973.02: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-Cl,Mic,poss Fe-min.'],
    'data': [[30.653,
      25.782,
      29.336,
      24.881,
      16.58191,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65709]]}},
  {1973.26: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-C,Cl,Mic.'],
    'data': [[46.847,
      40.404,
      38.901,
      33.336,
      18.5138,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65167]]}},
  {1973.49: {'descr': ['Sst.VLt-gry.VF-gr.Sbang.W-cmt.VW-srt.w-tr C,Cl,Mic.'],
    'data': [[73.738,
      64.933,
      170.439,
      154.441,
      15.48179,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65257]]}},
  {1973.74: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Fis.w-Cl,Mic.'],
    'data': [[334.321,
      309.304,
      336.65,
      311.526,
      20.83417,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65357]]}},
  {1974.32: {'descr': ['Sst.Lt-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.Fis.w-tr C,Cl,Mic,tr Pyr.'],
    'data': [[3.567,
      2.662,
      0.444,
      0.288,
      13.25838,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63863]]}},
  {1974.48: {'descr': ['Sst.M-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.tr Mtrx.w-tr C,Cl,Mic.'],
    'data': [[1.431,
      0.995,
      0.118,
      0.071,
      14.03845,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65557]]}},
  {1974.65: {'descr': ['Sst.M-gry.VF-gr.VW-Consol.VW-srt.Lam.w-Cl,Mic,Pyr.'],
    'data': [[0.141,
      0.085,
      0.074,
      0.043,
      13.46308,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64425]]}},
  {1974.83: {'descr': ['Sst.Lt Olv-gry.VF/F-gr.Sbang.W-cmt.W-srt.tr Mtrx.w-C,Cl,Mic,abd Pyr.'],
    'data': [[0.154,
      0.094,
      0.262,
      0.164,
      11.86107,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.69571]]}},
  {1975.02: {'descr': ['Mdst.M-gry.VF/F-gr.VW-Consol.W-srt.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.02,
      0.011,
      0.027,
      0.015,
      2.73565,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.59716]]}},
  {1975.26: {'descr': ['Sst.MLt-gry.VF-gr.Sbang.W-cmt.VW-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[0.042,
      0.024,
      0.026,
      0.014,
      9.15819,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65026]]}},
  {1975.5: {'descr': ['Sst.VLt-gry.VF-gr.Sbang.W-cmt.VW-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[0.096,
      0.057,
      1.228,
      0.846,
      13.46341,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64741]]}},
  {1975.75: {'descr': ['Sst.MLt-gry.VF-gr.VW-Consol.VW-srt.Irr Lam.w-C,Cl,Mic.'],
    'data': [[0.042,
      0.023,
      0.004,
      0.002,
      7.34839,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65602]]}},
  {1976.02: {'descr': ['Slsty Sst.Lt-gry.VF-gr.VW Consol.VW-srt.Lam.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.057,
      0.033,
      0.031,
      0.017,
      10.22567,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68415]]}},
  {1976.26: {'descr': ['Slsty Sst.M-gry.VF-gr.VW Consol.VW-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[0.059,
      0.034,
      0.02,
      0.011,
      7.95357,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67222]]}},
  {1976.5: {'descr': ['Sst.Lt-gry.VF-gr.VW-Consol.VW-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[0.093,
      0.055,
      0.017,
      0.009,
      11.42335,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65691]]}},
  {1976.75: {'descr': ['Sst.Lt-gry.VF-gr.VW-Consol.VW-srt.Lam.w-C,Cl,Mic,Pyr.'],
    'data': [[0.166,
      0.102,
      0.025,
      0.013,
      8.34043,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.63852]]}},
  {1977.02: {'descr': ['Sst.Lt-gry.VF-gr.VW-Consol.VW srt.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.239,
      0.149,
      0.112,
      0.067,
      13.71619,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66542]]}},
  {1977.25: {'descr': ['Sst.Lt-gry.VF-gr.VW-Consol.VW srt.Lam.w-C,Cl,Mic,tr Pyr.'],
    'data': [[0.194,
      0.12,
      0.024,
      0.013,
      12.92918,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65561]]}},
  {1977.51: {'descr': ['Sst.Lt-gry.VF/F-gr.VW-Consol.W srt.Fis.w-Cl,Mic,poss Fe-min.'],
    'data': [[6.642,
      5.095,
      4.422,
      3.352,
      15.37053,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66011]]}},
  {1977.77: {'descr': ['Sst.Lt-gry.VF-gr.VW-Consol.VW srt.Fis.w-C,Cl,Mic,tr Pyr.'],
    'data': [[0.959,
      0.651,
      0.227,
      0.141,
      12.76678,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65316]]}},
  {1978.32: {'descr': ['Sst.Lt-gry.VF/M-gr.VW Consol.M srt.Lam.Frac.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.0,
      0.0,
      0.132,
      0.08,
      11.3335,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6486]]}},
  {1978.5: {'descr': ['Sst.Lt-gry.VF/F-gr.VW Consol.W srt.w-tr Calc,Cl,Mic,poss Fe-min.'],
    'data': [[40.739,
      35.064,
      20.687,
      17.017,
      17.51168,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68379]]}},
  {1978.7: {'descr': ['Sst.Lt-gry.VF/F-gr.VW Consol.VW-srt.Lam.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.098,
      0.058,
      0.109,
      0.065,
      10.33719,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66098]]}},
  {1978.88: {'descr': ['Slsty Sst.MLt-gry.VF-gr.VW Consol.VW-srt.Lam.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[0.107,
      0.064,
      0.074,
      0.043,
      11.68598,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66552]]}},
  {1979.02: {'descr': ['Sst.Yelsh-gry.VF/M-gr.VW Consol.M-srt.Lam.Fis.Mtrx.w-C,Cl,Mic,poss Fe-min.'],
    'data': [[6.085,
      4.677,
      7.569,
      6.1,
      11.51438,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65606]]}},
  {1979.25: {'descr': ['Sst.VLt-gry.F/M-gr.Sbang.W-cmt.M-srt.w-tr Cl.'],
    'data': [[1722.764,
      1651.775,
      486.432,
      454.547,
      20.38721,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64458]]}},
  {1979.46: {'descr': ['Sst.Lt-gry.VF-gr.VW Consol.VW-srt.Fis.w-C,Cl,Mic.'],
    'data': [[0.995,
      0.676,
      0.084,
      0.049,
      11.05768,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64788]]}},
  {1979.75: {'descr': ['Sst.Lt-gry.VF/F-gr.VW Consol.W-srt.Thin Lam.w-Cl,Mic,poss Fe-min.'],
    'data': [[9.106,
      7.117,
      11.609,
      9.429,
      13.00959,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.69492]]}},
  {1980.02: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-ltl Cl,Mic.'],
    'data': [[558.779,
      523.998,
      596.169,
      559.849,
      22.93377,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66242]]}},
  {1980.23: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-ltl Cl,Mic,tr Pyr.'],
    'data': [[559.596,
      524.704,
      439.65,
      409.777,
      22.2669,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65279]]}},
  {1980.5: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-ltl Cl,Mic.'],
    'data': [[420.865,
      391.804,
      147.913,
      133.392,
      21.65629,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65754]]}},
  {1980.75: {'descr': ['Sst.Lt-gry.VF/C-gr.Sbang.W-cmt.P-srt.w-ltl Cl,Mic.'],
    'data': [[909.761,
      862.228,
      219.213,
      200.279,
      23.23437,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65884]]}},
  {1981.02: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.Irr Lam.w-C,Cl,Mic,tr Pyr.'],
    'data': [[61.32,
      53.515,
      14.042,
      11.348,
      16.89518,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.68712]]}},
  {1981.25: {'descr': ['Sst.Lt-gry.VF/F-gr.Sbang.W-cmt.W-srt.w-tr C,ltl Cl,Mic,poss Fe-min.'],
    'data': [[151.734,
      137.053,
      183.173,
      166.378,
      17.8092,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66355]]}},
  {1981.51: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.w-Cl,Mic.'],
    'data': [[1.178,
      0.809,
      0.237,
      0.148,
      11.41745,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.6545]]}},
  {1981.75: {'descr': ['Sst.Lt-gry.VF/C-gr.Sbang.W-cmt.P-srt.w-Cl,Mic.'],
    'data': [[3.772,
      2.815,
      2.247,
      1.757,
      16.1087,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65847]]}},
  {1982.12: {'descr': ['Sst.Lt-gry.F/M-gr.Sbang.W-cmt.M-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[38.395,
      32.908,
      0.219,
      0.136,
      14.17604,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64581]]}},
  {1982.35: {'descr': ['Sst.Lt-gry.VF/M-gr.Sbang.W-cmt.M-srt.w-llt Cl,Mic,poss Fe-min.'],
    'data': [[217.808,
      198.934,
      260.715,
      239.469,
      20.34436,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.67607]]}},
  {1982.57: {'descr': ['Sst.Lt-gry.VF/VC-gr.Sbang.W-cmt.VP-srt.Mtrx.Irr Lam.w-C,Cl,Mic,ltl Pyr.'],
    'data': [[91.605,
      81.311,
      628.956,
      591.362,
      17.65817,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.66311]]}},
  {1982.79: {'descr': ['Sst.Lt-gry.VF/VC-gr.Gran.Sbang.W-cmt.VP-srt.Mtrx.w-ltl Cl,Mic.'],
    'data': [[1823.535,
      1750.044,
      628.296,
      590.727,
      21.23241,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.64861]]}},
  {1983.02: {'descr': ['Sst.Lt-gry.VF/VC-gr.Gran.Sbang.W-cmt.VP-srt.tr Mtrx.w-Cl,Mic.'],
    'data': [[517.099,
      484.015,
      142.276,
      128.133,
      19.07649,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65108]]}},
  {1983.24: {'descr': ['Sst.Lt-gry.VF/VC-gr.Sbang.W-cmt.VP-srt.w-ltl Cl,Mic,ltl Pyr.'],
    'data': [[650.344,
      612.018,
      132.574,
      119.098,
      15.08463,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.65493]]}},
  {1983.44: {'descr': ['Sst.Lt Olv-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.Frac.tr Mtrx.w-C,Cl,Mic,abd Pyr.'],
    'data': [[0.0,
      0.0,
      1.82,
      1.283,
      9.44161,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0,
      2.76367]]}},
  {1983.7: {'descr': ['Sst.Yelsh-gry.VF/F-gr.Sbang.W-cmt.W-srt.Lam.Frac.w-C,Cl,Mic.'],
    'data': [[0.0,
      0.0,
      0.04,
      0.022,
      7.41085,
      -1002.0,
      -1002.0,
      -1002.0,
      -1002.0]]}}]}

That's the data we collected. Cool!

Stack Overflow question


In [6]:
text = """\
30     1
     2001.10     0.00   2.11
40     1   2
     -1002.0000 34.5678
30     1
     2001.90     0.00   1
36     1    1
    Sst.Lt-gry. Pyr.
40     1   2
        18.72400    15.45700
30     1
     2002.90     0.00   2
36     1    1
    Sst.Lt-gry. W-cmt.
"""

In [7]:
grammar = Grammar(
    r"""
    file          = data_blocks+

    data_blocks   = depth_block descr_block? data_block?

    depth_block   = "30" WS "1" WS depth WS NUMBER WS NUMBER WS
    descr_block   = "36" WS "1" WS "1" WS description WS
    data_block    = "40" WS "1" WS record_count WS DATA WS

    record_count  = NUMBER+
    depth         = NUMBER+
    description   = SENTENCE+
    field_name    = SENTENCE+

    WS            = ~r"\s*"
    NUMBER        = ~r"[-.0-9]+"
    DATA          = ~r"[- .0-9]+"
    SENTENCE      = ~r"[-., /ÅA-Z]"i
    """
)

In [8]:
ast = grammar.parse(text)

In [10]:
from parsimonious import NodeVisitor

class FileVisitor(NodeVisitor):
    
    def visit_file(self, node, visited_children):       
        data = {}
        for d in visited_children:
            data.update(d)
        return data
    
    def visit_data_blocks(self, node, visited_children):
        depth, descr, data = visited_children
        descr = descr[0] if isinstance(descr, list) else ''
        data = data[0] if isinstance(data, list) else []
        return {depth: {'descr': descr, 'data': data}}
    
    def visit_depth_block(self, node, visited_children):
        _, _, _, _, depth, *_ = node.children
        return float(depth.text)

    def visit_descr_block(self, node, visited_children):
        *_, descr, _ = visited_children
        return descr

    def visit_description(self, node, visited_children):
        return node.text

    def visit_data_block(self, node, visited_children):
        *_, data, _ = visited_children
        return data
    
    def visit_DATA(self, node, visited_children):
        return [float(x) for x in node.text.split()]
        
    def generic_visit(self, node, visited_children):
        return visited_children or node

In [11]:
FileVisitor().visit(ast)


Out[11]:
{2001.1: {'descr': '', 'data': [-1002.0, 34.5678]},
 2001.9: {'descr': 'Sst.Lt-gry. Pyr.', 'data': [18.724, 15.457]},
 2002.9: {'descr': 'Sst.Lt-gry. W-cmt.', 'data': []}}

Help from Code Review Stack Exchange


In [14]:
from parsimonious import Grammar

grammar = Grammar(
    r"""
    file  = chunk+
    chunk = depth_block other_block*
    
    other_block = descr_block / data_block
    
    depth_block = ~"30\s+1\s+" depth number number nl
    descr_block = ~"36\s+1\s+1\s+" description+ nl
    data_block  = ~"40\s+1\s+" count nl number+ nl

    count = number+
    depth = number+

    ws          = ~r"[ \t]+"
    nl          = ~r"(\n\r?|\r\n?)"
    number      = ~r"-?[.0-9]+"
    description = ~r"\S+"
    """
)

In [15]:
ast = grammar.parse(text)


---------------------------------------------------------------------------
ParseError                                Traceback (most recent call last)
<ipython-input-15-890e7927edc6> in <module>
----> 1 ast = grammar.parse(text)

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/grammar.py in parse(self, text, pos)
    113         """
    114         self._check_default_rule()
--> 115         return self.default_rule.parse(text, pos=pos)
    116 
    117     def match(self, text, pos=0):

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/expressions.py in parse(self, text, pos)
    118 
    119         """
--> 120         node = self.match(text, pos=pos)
    121         if node.end < len(text):
    122             raise IncompleteParseError(text, node.end, self)

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/expressions.py in match(self, text, pos)
    135         node = self.match_core(text, pos, {}, error)
    136         if node is None:
--> 137             raise error
    138         return node
    139 

ParseError: Rule 'number' didn't match at '     0.00   2.11
40 ' (line 2, column 13).

In [17]:
class Visitor(NodeVisitor):

    visit_file = NodeVisitor.lift_child
        
    def visit_chunk(self, node, visited_children):
        chunk, others = visited_children
        for block in others:
            chunk.update(block)
        return chunk
        
    def visit_depth_block(self, node, visited_children):
        _, depth, _, _, _ = visited_children
        return {'depth':depth}
        
    visit_other_block = NodeVisitor.lift_child
        
    def visit_descr_block(self, node, visited_children):
        _, descriptions, _ = visited_children
        return {'description':descriptions}
        
    def visit_data_block(self, node, visited_children):
        _, count, data_list, _ = visited_children
        return {'count':count, 'data':data_list}
        
    visit_count = NodeVisitor.lift_child
        
    visit_depth = NodeVisitor.lift_child
        
    def visit_number(self, node, visited_children):
        text = node.text.strip()
        return float(text) if '.' in text else int(text)
        
    def visit_description(self, node, visited_children):
        return node.text.strip()

In [19]:
Visitor().visit(ast)


---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in generic_visit(self, node, visited_children)
    240         """
--> 241         raise NotImplementedError('No visitor method was defined for this expression: %s' %
    242                                   node.expr.as_rule())

NotImplementedError: No visitor method was defined for this expression: "30"

During handling of the above exception, another exception occurred:

VisitationError                           Traceback (most recent call last)
<ipython-input-19-a55c8ce2d40d> in <module>
----> 1 Visitor().visit(ast)

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in <listcomp>(.0)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in <listcomp>(.0)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in <listcomp>(.0)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    225             # see where it went wrong.
    226             exc_class, exc, tb = exc_info()
--> 227             reraise(VisitationError, VisitationError(exc, exc_class, node), tb)
    228 
    229     def generic_visit(self, node, visited_children):

~/anaconda3/envs/py38/lib/python3.8/site-packages/six.py in reraise(tp, value, tb)
    693                 value = tp()
    694             if value.__traceback__ is not tb:
--> 695                 raise value.with_traceback(tb)
    696             raise value
    697         finally:

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in visit(self, node)
    215         # up.
    216         try:
--> 217             return method(node, [self.visit(n) for n in node])
    218         except (VisitationError, UndefinedLabel):
    219             # Don't catch and re-wrap already-wrapped exceptions.

~/anaconda3/envs/py38/lib/python3.8/site-packages/parsimonious/nodes.py in generic_visit(self, node, visited_children)
    239 
    240         """
--> 241         raise NotImplementedError('No visitor method was defined for this expression: %s' %
    242                                   node.expr.as_rule())
    243 

VisitationError: NotImplementedError: No visitor method was defined for this expression: "30"

Parse tree:
<Node matching "30">  <-- *** We were here. ***

Another approach

I also saw someone not returning anything from these methods, but instead just building a dictionary internally. But I don't think it's how the NodeVisitor is supposed to be used.


In [877]:
from parsimonious import NodeVisitor
import pandas as pd


class FileVisitor(NodeVisitor):

    file = {}
    file['fields'] = []
    file['data'] = []
    file['depth'] = []
    file['description'] = []
    
    def visit_file_data(self, node, visited_children):
        well, _, country, _, date, _, company, _ = node.children
        self.file['well_name'] = well.text
        self.file['country'] = country.text
        self.file['company'] = company.text
        try:
            self.file['date'] = pd.to_datetime(date.text).isoformat()
        except (TypeError, ValueError) as e:
            self.file['date'] = date.text

    def visit_field_row(self, node, visited_children):
        *_, field = node.children
        self.file['fields'].append(field.text.strip())
        
    def visit_range_data(self, node, visited_children):
        _, _, _, _, start, _, stop, *_ = node.children
        self.file['start'] = float(start.text)
        self.file['stop'] = float(stop.text)

    def visit_depth_block(self, node, visited_children):
        _, _, _, _, depth, *_ = node.children
        self.file['depth'].append(float(depth.text))

    def visit_data_block(self, node, visited_children):
        data = []
        for child in node.children:
            if child.expr_name == 'data':
                self.file['data'].append([float(x) for x in child.text.split()])
        
    def visit_descr_block(self, node, visited_children):
        *_, descr, _ = node.children
        self.file['description'].append(descr.text)

    def generic_visit(self, node, visited_children):
        """
        For all other nodes.
        """
        pass