# Striplog

> |

- **Type:** Skill
- **Install:** `agentstack add skill-steadfastasart-geoscience-skills-striplog`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [SteadfastAsArt](https://agentstack.voostack.com/s/steadfastasart)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [SteadfastAsArt](https://github.com/SteadfastAsArt)
- **Source:** https://github.com/SteadfastAsArt/geoscience-skills/tree/main/striplog

## Install

```sh
agentstack add skill-steadfastasart-geoscience-skills-striplog
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# striplog - Lithological Logs

## Quick Reference

```python
from striplog import Striplog, Interval, Component

# Create from intervals
intervals = [
    Interval(top=0, base=10, components=[Component({'lithology': 'sandstone'})]),
    Interval(top=10, base=25, components=[Component({'lithology': 'shale'})]),
    Interval(top=25, base=40, components=[Component({'lithology': 'limestone'})]),
]
strip = Striplog(intervals)

# Load from file
strip = Striplog.from_csv('lithology.csv')  # Columns: top, base, lithology

# Access and display
print(strip)
strip.plot()
df = strip.to_dataframe()
```

## Key Classes

| Class | Purpose |
|-------|---------|
| `Striplog` | Main log container - holds intervals |
| `Interval` | Depth interval with top, base, and components |
| `Component` | Rock type definition with properties |
| `Lexicon` | Rock type dictionary with synonyms |
| `Legend` | Visualization styles (colors, patterns) |

## Essential Operations

### Create from CSV
```python
# CSV format: top,base,lithology
strip = Striplog.from_csv('lithology.csv')
strip.plot()
```

### Create from Description Text
```python
from striplog import Striplog, Lexicon

description = """
0.0 - 5.5 m: Fine to medium sandstone
5.5 - 12.0 m: Grey shale with silt laminations
12.0 - 18.5 m: Massive limestone, fossiliferous
"""
strip = Striplog.from_description(description, lexicon=lexicon)
```

### Query and Extract
```python
# Get interval at depth
interval = strip.read_at(z=15)
print(interval.primary.lithology)

# Crop to depth range
subset = strip.crop((10, 30))

# Unique lithologies
lithologies = strip.unique('lithology')
```

### Statistics
```python
# Net-to-gross for specific lithology
ntg = strip.net_to_gross(pattern={'lithology': 'sandstone'})
print(f"Sandstone: {ntg * 100:.1f}%")

# Merge adjacent same-lithology intervals
merged = strip.merge_neighbours()
```

### Well Correlation
```python
import matplotlib.pyplot as plt

wells = [Striplog.from_csv(f'well{i}.csv') for i in range(1, 4)]
fig, axes = plt.subplots(1, 3, figsize=(10, 8), sharey=True)

for ax, well, name in zip(axes, wells, ['Well 1', 'Well 2', 'Well 3']):
    well.plot(ax=ax, legend=legend)
    ax.set_title(name)

plt.tight_layout()
plt.savefig('correlation.png')
```

### Export
```python
strip.to_csv('output.csv')
strip.to_las('output.las')
strip.to_json('output.json')
df = strip.to_dataframe()
```

## Hatch Patterns

| Pattern | Code | Typical Use |
|---------|------|-------------|
| Dots | `...` | Sandstone |
| Dashes | `---` | Shale |
| Plus | `+++` | Limestone |
| X | `xxx` | Dolomite |
| V | `vvv` | Volcanic |

## When to Use vs Alternatives

| Tool | Best For |
|------|----------|
| **striplog** | Structured lithology logs, interval-based data, NTG, correlation |
| **welly** | Well log curves (continuous data), multi-well projects |
| **custom matplotlib** | Simple one-off stratigraphic columns without interval logic |

**Use striplog when** you need to represent geological intervals (lithology,
facies) as structured objects with querying, statistics, and correlation.

**Use welly instead** when working with continuous well log curves (GR, RHOB).
Welly and striplog complement each other -- welly for curves, striplog for
lithology intervals.

**Use custom matplotlib instead** for simple, one-off stratigraphic columns
where you don't need interval querying or net-to-gross calculations.

## Common Workflows

### Create lithological log from CSV data
```
- [ ] Prepare CSV with columns: top, base, lithology (optionally color)
- [ ] Load with `Striplog.from_csv('lithology.csv')`
- [ ] Define Legend with colors and hatch patterns for each lithology
- [ ] Verify intervals: check for gaps or overlaps
- [ ] Merge adjacent same-lithology intervals with `merge_neighbours()`
- [ ] Compute statistics: `net_to_gross()`, `unique()`
- [ ] Plot with legend and export to desired format
```

## Common Issues

| Issue | Solution |
|-------|----------|
| Text not parsing | Define a Lexicon with synonyms |
| Wrong colors | Create custom Legend with Decor objects |
| Gaps in log | Check interval top/base values match |
| Plot looks wrong | Verify depth direction (increasing down) |

## References

- **[Lexicon Configuration](references/lexicon.md)** - Rock type dictionaries and synonyms
- **[Component Definitions](references/components.md)** - Properties and multi-attribute intervals

## Scripts

- **[scripts/create_striplog.py](scripts/create_striplog.py)** - Create striplog from CSV or text data

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [SteadfastAsArt](https://github.com/SteadfastAsArt)
- **Source:** [SteadfastAsArt/geoscience-skills](https://github.com/SteadfastAsArt/geoscience-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-steadfastasart-geoscience-skills-striplog
- Seller: https://agentstack.voostack.com/s/steadfastasart
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
