DASCore

A python library for distributed fiber optic sensing.

coverage supported versions PyPI Downloads Conda Downloads Licence

Code

Documentation [stable, development]

Version-specific documentation builds are attached to the release pages.

Highlights

DASCore is a Python library for distributed acoustic sensing (DAS). It provides:

  1. IO support for various DAS data formats
  2. Common processing routines
  3. Basic visualizations
Note

DASCore is a foundational package of the DAS Data Analysis Ecosystem (DASDAE). It facilitates rapid development of other DASDAE packages that do more specialized analysis/visualization.

Supported file formats

name version scan get_format read write
0 DASDAE 1
1 H5SIMPLE 1
2 PICKLE
3 PRODML 2.0
4 PRODML 2.1
5 SEGY 2
6 TDMS 4713
7 TERRA15 4
8 TERRA15 5
9 TERRA15 6
10 WAV

Introductory usage

Read a file

import dascore as dc
from dascore.utils.downloader import fetch

# get a path to an example file, replace with your path
file_path = fetch('terra15_das_1_trimmed.hdf5')

spool = dc.spool(file_path)

Index a directory of DAS files

import dascore as dc
from dascore.utils.downloader import fetch

# get a path to a directory of das files, replace with your path
directory_path = fetch('terra15_das_1_trimmed.hdf5').parent

# index a directory of data, sub-select, then specify chunk shapes
spool = (
    dc.spool(directory_path)
    .update()
    .select(time_min=('2020-01-01', ...))
    .chunk(time=60, overlap=10)
)

Get patches (array w/ metadata)

import dascore as dc

spool = dc.get_example_spool('diverse_das')

# get patches through iteration
for patch in spool:
    ...

# Or through indexing
patch = spool[0]

Perform processing

import dascore as dc

patch = dc.get_example_patch('random_das')

out = (
    patch.decimate(time=8)  # decimate along time axis (keep every 8th sample)
    .detrend(dim='distance')  # detrend in distance axis
    .pass_filter(time=(..., 10))  # apply low-pass filter
)

Visualize

import dascore as dc

patch = (
    dc.get_example_patch('example_event_1')
    .taper(time=0.05)
    .pass_filter(time=(..., 300))
)

patch.viz.waterfall(show=True, scale=0.2);

Installation

Use pip or conda to install DASCore:

pip install dascore
conda install dascore -c conda-forge

See the contributing docs for development installations.

Feedback and Support

Use the project discussions to ask a question.

Use the project issues to report an issue.