DASCore

A python library for distributed fiber optic sensing.

coverage PyPI Version supported versions PyPI Downloads Conda Downloads DOI 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 DASHDF5 1.0
2 H5SIMPLE 1
3 PICKLE
4 PRODML 2.0
5 PRODML 2.1
6 RSF 1
7 SEGY 2
8 SENTEK 5
9 TDMS 4713
10 TERRA15 4
11 TERRA15 5
12 TERRA15 6
13 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

Run using Docker

If you have Docker installed, you may also run the stable build of DASCore in a Docker container.

First you need to clone the DAScore main repository:

https://github.com/DASDAE/dascore

Then go to the DAScore directory and run docker build:

cd dascore
docker build -t dascore .

To run a Python script with the DAScore, mount the directory containing your scripts to the /app directory to the image using -v flag:

docker run -it -v $PWD:/app dascore python /app/test.py

In the example above, we assume test.py is in our parent working directory ($PWD).

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.