kucherenko/petropowers · Archived

synthetic-data-generation

Generate realistic synthetic oil & gas data (LAS well logs, SEG-Y seismic, core photos, time-series) with proper physical constraints for testing, demos, and training.

First seen Jul 3, 2026

Installation

$ npx skills add kucherenko/petropowers --skill synthetic-data-generation

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from kucherenko/petropowers · top by installs.

npx skills add kucherenko/petropowers

Browse all from kucherenko/petropowers

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 11
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,363 B
  • docs SUMMARY.md 200 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

Synthetic Data Generator

Natural language interface for generating realistic oil & gas domain data.

Purpose

Generate synthetic well logs (LAS/DLIS), seismic (SEG-Y), core photos, and time-series data with proper physical constraints for testing, demos, and training.

Capabilities

Generate data with realistic relationships:

  • Well logs (GR, RHOB, NPHI, RT, DT) with Archie equation constraints
  • Seismic volumes with proper geometry
  • OSDU-compliant metadata
  • Core photos using AI image generation (requires API key, expensive operation)

Invoking

from synthetic_data.well_log import LASGenerator
from synthetic_data.seismic import SEGYGenerator

Well Log Generation

Create realistic LAS files:

generator = LASGenerator(seed=42)
las_path = generator.create_record(
    well_name="Test-Well-001",
    curves=["GR", "RHOB", "NPHI", "RT"],
    depth_range=(1000.0, 2000.0),
    sample_interval=0.15,
    lithology="sandstone"
)

Options:

  • well_name: Well identifier
  • curves: Log curves to generate (GR, RHOB, NPHI, RT, DT, CALI)
  • depth_range: (start, end) in meters
  • sample_interval: Sampling interval in meters
  • lithology: sandstone | shale | carbonate
  • seed: Random seed for reproducibility

Seismic Generation

Create SEG-Y volumes:

generator = SEGYGenerator(seed=42)
segy_path = generator.create_record(
    survey_name="Test-Survey",
    n_inlines=100,
    n_crosslines=100,
    n_samples=500,
    sample_interval=4000  # microseconds
)

Core Photo Generation

IMPORTANT: Expensive Operation

Core photo generation uses AI image generation APIs which are costly. Before generating:

  1. Always ask for count - Never generate without explicit number confirmation
  2. Ask about aspects based on detail level needed

Mandatory Questions

When user requests core photos, ask these in order:

Question 1 - Count:

"How many core photos do you need? (Image generation is expensive - each photo costs API credits)"

Question 2 - Lithology:

"What lithology? (A) Sandstone (B) Shale (C) Carbonate (D) Limestone (E) Dolomite (F) Mixed/varies"

Question 3 - Visual Features (if user wants detail):

"Any specific visual features? (A) Default/random (B) With fractures (C) With oil staining (D) Specific bedding angles (E) Let me specify"

Question 4 - Full Context (if user wants geological accuracy):

"Need full geological context? If yes, specify: depth range, formation name, field name, well naming convention"

Usage

from synthetic_data.core_photos import CorePhotoGenerator

generator = CorePhotoGenerator(api_key="YOUR_GOOGLE_AI_API_KEY")
result = generator.create_record(
    well_name="Test-Well-001",
    lithology="sandstone",
    depth_range=(1000.0, 2000.0),
    output_dir="./output"
)

Options:

  • well_name: Well identifier
  • lithology: sandstone | shale | carbonate | limestone | dolomite
  • depth_range: (start, end) in meters
  • core_length: Length of core sample in meters (default: 1.0)
  • field_name: Field name for metadata
  • formation: Formation name for metadata
  • output_dir: Directory to save images and metadata

Example Assets

Reference examples available at synthetic_data/assets/:

  • core-photos.png - Real core sample photographs showing proper format
  • core-photos.webp - WebP version

These show proper format: depth markers, well identification, lithology variations, and scale bars.

Validation

Files validate against domain libraries:

  • LAS → lasio
  • SEG-Y → segyio
  • DLIS → dlisio

OSDU Integration

Generate manifests for OSDU:

from synthetic_data.osdu import LASMapper

mapper = LASMapper()
manifest = mapper.to_manifest(
    las_path,
    legal_tags={"legaltags": ["test-license"]}
)

Example Usages

User says:

"Generate 5 LAS files for testing"

→ Uses LASGenerator.createdataset(nrecords=5)

User says:

"Create realistic well log with GR, RHOB, NPHI for carbonate formation"

→ Uses lithology="carbonate"

User says:

"Generate well log data with OSDU manifests for demo deployment"

→ Creates LAS files + OSDU-compliant JSON manifests

User says:

"Generate core photos for testing"

→ Ask: "How many?" then "What lithology?" then generate

User says:

"I need 5 sandstone core photos with visible fractures"

→ Confirms count (5), lithology (sandstone), feature (fractures) → generate

User says:

"Generate synthetic data for my reservoir project"

→ Ask: "What type of data? (well logs, seismic, core photos, production data)" → If core photos selected, proceed with mandatory questions

Software Tasks

If user requests:

  • Full OSDU ingestion pipeline → invoke petropowers:oil-gas-delegation
  • Real-time data generation → Explain this is batch-only
  • Proprietary format support → Explain only open standards (LAS, SEG-Y, DLIS) supported

Dependencies

pip install lasio welly dlisio segyio numpy pandas scipy

Reference Documentation

See references/physical-constraints.md for detailed petrophysical relationships.