Skip to content

Commit 877e768

Browse files
author
Zipeng Wu (PhD Applied Mathematics NGT FT)
committed
Rename package to EchoTime for 0.17.0 beta
1 parent 34676d1 commit 877e768

240 files changed

Lines changed: 1644 additions & 1541 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pages.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ jobs:
1818
- uses: actions/setup-python@v5
1919
with:
2020
python-version: '3.11'
21-
- name: Install EchoWave
21+
- name: Install EchoTime
2222
run: |
2323
python -m pip install --upgrade pip
2424
python -m pip install .
2525
- name: Regenerate docs bundle
2626
run: |
27-
echowave --export-pages docs
27+
echotime --export-pages docs
2828
- name: Audit demo/doc versions
2929
run: |
30-
python -m echowave.cli --guide asset-audit --guide-format markdown
30+
python -m echotime.cli --guide asset-audit --guide-format markdown
3131
- name: Upload pages artifact
3232
uses: actions/upload-pages-artifact@v3
3333
with:

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ venv/
1010
*.pyd
1111
PKG-INFO
1212
audit_pages_out/
13-
echowave_v0.16_pages_bundle.zip
13+
echotime_v*_pages_bundle.zip

ABOUT.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# EchoWave repository profile
1+
# EchoTime repository profile
22

33
Use this file as the source of truth for the GitHub repository "About" box and other short-form metadata.
44

@@ -25,11 +25,11 @@ https://zipengwu365.github.io/EchoWave/
2525

2626
## Short about paragraph
2727

28-
EchoWave compares time series and time-series datasets, explains why they match or differ, and exports compact JSON plus shareable HTML reports. It is designed for analog search, regime comparison, irregular longitudinal data, and agent-assisted analysis workflows.
28+
EchoTime compares time series and time-series datasets, explains why they match or differ, and exports compact JSON plus shareable HTML reports. It is designed for analog search, regime comparison, irregular longitudinal data, and agent-assisted analysis workflows.
2929

3030
## Repository highlights
3131

32-
- `src/echowave/`: core package and public APIs
32+
- `src/echotime/`: core package and public APIs
3333
- `examples/notebooks/`: runnable notebooks and starter workflows
3434
- `examples/outputs/`: generated HTML and Markdown report examples
3535
- `docs/`: GitHub Pages-ready static site bundle

AGENT_DRIVING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# tsontology agent-driving guide
1+
# EchoTime agent-driving guide
22

3-
Agent-driving is a lightweight orchestration layer that helps an LLM or application choose the smallest useful tsontology workflow and export a compact context bundle.
3+
Agent-driving is a lightweight orchestration layer that helps an LLM or application choose the smallest useful EchoTime workflow and export a compact context bundle.
44

55
## Token-saving principles
66

@@ -27,4 +27,4 @@ Agent-driving is a lightweight orchestration layer that helps an LLM or applicat
2727
- Explain this dataset to a non-technical collaborator
2828
- Decide whether repo A's growth curve resembles repo B
2929
- Compare these two assets but keep the context compact for another LLM step
30-
- Find out whether two datasets are the same kind of temporal problem
30+
- Find out whether two datasets are the same kind of temporal problem

AGENT_INPUT_CONTRACT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Agent input contract
22

3-
This page explains what `data_ref`, `left_ref`, and `right_ref` are expected to mean when an external agent calls `tsontology` tools.
3+
This page explains what `data_ref`, `left_ref`, and `right_ref` are expected to mean when an external agent calls `echotime` tools.
44

55
## Accepted reference families
66

AGENT_MANIFEST.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "tsontology",
2+
"name": "echotime",
33
"positioning": "dataset-first structural profiling and similarity triage for time-series data",
44
"good_for": [
55
"profile a dataset before model selection",
@@ -18,10 +18,10 @@
1818
"profile_or_document_dataset": "use profile_dataset first",
1919
"compare_two_whole_curves": "use compare_series first; upgrade to compare_profiles only if structure matters or raw similarity is ambiguous",
2020
"need_a_compact_llm_context": "use AgentDriver or agent_drive",
21-
"need_forecasting": "pair tsontology with Darts, sktime, aeon, or Kats",
22-
"need_feature_matrix": "pair tsontology with tsfresh or Kats TSFeatures",
23-
"need_dtw_paths": "pair tsontology with DTAIDistance",
24-
"need_motifs_or_discords": "pair tsontology with STUMPY"
21+
"need_forecasting": "pair echotime with Darts, sktime, aeon, or Kats",
22+
"need_feature_matrix": "pair echotime with tsfresh or Kats TSFeatures",
23+
"need_dtw_paths": "pair echotime with DTAIDistance",
24+
"need_motifs_or_discords": "pair echotime with STUMPY"
2525
},
2626
"budget_paths": {
2727
"lean": [
@@ -48,4 +48,4 @@
4848
"narrative report",
4949
"compact agent context"
5050
]
51-
}
51+
}

AGENT_MANIFEST.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Agent manifest
1+
# EchoTime agent manifest
22

3-
tsontology is a time-series report generator for humans and agents.
3+
**positioning:** dataset-first structural profiling and similarity triage for time-series data
44

55
## Good for
66

@@ -10,7 +10,45 @@ tsontology is a time-series report generator for humans and agents.
1010
- compress results into a compact context bundle for a downstream LLM step
1111
- handle dense arrays, irregular observations, event streams, longitudinal tables, and neuro-style wrappers
1212

13-
## Avoid when
13+
## Not for
1414

15+
- training forecasting models
16+
- training classification, clustering, or regression estimators
17+
- serving as a full DTW or matrix-profile engine
18+
- replacing domain libraries such as MNE, nilearn, pandas, xarray, Darts, aeon, or sktime
1519

16-
## Stable wrappers
20+
## Routing policy
21+
22+
- **profile_or_document_dataset:** use profile_dataset first
23+
- **compare_two_whole_curves:** use compare_series first; upgrade to compare_profiles only if structure matters or raw similarity is ambiguous
24+
- **need_a_compact_llm_context:** use AgentDriver or agent_drive
25+
- **need_forecasting:** pair echotime with Darts, sktime, aeon, or Kats
26+
- **need_feature_matrix:** pair echotime with tsfresh or Kats TSFeatures
27+
- **need_dtw_paths:** pair echotime with DTAIDistance
28+
- **need_motifs_or_discords:** pair echotime with STUMPY
29+
30+
## Budget paths
31+
32+
### lean
33+
- profile_dataset or compare_series
34+
- summary card or compact context only
35+
- stop early if the signal is already clear
36+
37+
### balanced
38+
- profile_dataset or compare_series
39+
- upgrade to compare_profiles if helpful
40+
- export narrative report or dataset card
41+
42+
### deep
43+
- run profile_dataset and compare_profiles when relevant
44+
- use rolling_similarity for regime-sensitive comparisons
45+
- export both machine-readable card and human-readable report
46+
47+
## Signature outputs
48+
49+
- ontology axes and subdimensions
50+
- archetypes
51+
- reliability summaries
52+
- plain-language summary card
53+
- narrative report
54+
- compact agent context

AGENT_SCHEMAS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Agent and function-calling schemas
22

3-
v0.16.0 exposes a compare-first tool surface that stays callable from outside the package:
3+
v0.17.0 exposes a compare-first tool surface that stays callable from outside the package:
44

55
- `ts_profile({data_ref, input_kind, timestamps_ref, domain, budget, audience})`
66
- `ts_compare({left_ref, right_ref, left_timestamps_ref, right_timestamps_ref, mode, budget})`
@@ -215,7 +215,7 @@ All three tools return a stable envelope with:
215215
"type": "function",
216216
"function": {
217217
"name": "ts_route",
218-
"description": "Route a natural-language time-series task to the smallest useful tsontology tool and expected output.",
218+
"description": "Route a natural-language time-series task to the smallest useful echotime tool and expected output.",
219219
"parameters": {
220220
"type": "object",
221221
"properties": {
@@ -435,7 +435,7 @@ All three tools return a stable envelope with:
435435
},
436436
{
437437
"name": "ts_route",
438-
"description": "Route a natural-language time-series task to the smallest useful tsontology tool and expected output.",
438+
"description": "Route a natural-language time-series task to the smallest useful echotime tool and expected output.",
439439
"inputSchema": {
440440
"type": "object",
441441
"properties": {
@@ -464,4 +464,4 @@ All three tools return a stable envelope with:
464464
}
465465
]
466466
}
467-
```
467+
```

AGENT_TOOL_SCHEMAS.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@
398398
},
399399
{
400400
"name": "ts_route",
401-
"description": "Route a natural-language time-series task to the smallest useful tsontology tool and expected output.",
401+
"description": "Route a natural-language time-series task to the smallest useful echotime tool and expected output.",
402402
"input_schema": {
403403
"type": "object",
404404
"properties": {
@@ -532,4 +532,4 @@
532532
}
533533
}
534534
]
535-
}
535+
}

API_REFERENCE.md

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# tsontology API reference
1+
# EchoTime API reference
22

33
## core profiling
44

@@ -8,7 +8,7 @@
88

99
**Purpose:** Primary entry point. Profile an entire dataset as a dataset.
1010

11-
**Why this API exists:** The core design choice of tsontology is that the object of interest is the dataset, not just a single series. This function aggregates unit-level signals, multivariate structure, cohort variation, and observation characteristics into one profile.
11+
**Why this API exists:** The core design choice of EchoTime is that the object of interest is the dataset, not just a single series. This function aggregates unit-level signals, multivariate structure, cohort variation, and observation characteristics into one profile.
1212

1313
**When to use it:** Use when you want the ontology axes, archetypes, task hints, reliability, and dataset-card outputs for a whole dataset or cohort.
1414

@@ -206,7 +206,7 @@
206206

207207
**Purpose:** Represent sparse event streams such as alarms, coded events, transactions, or interventions.
208208

209-
**Why this API exists:** A stream of timestamped events is not the same as a dense sampled signal. This wrapper lets tsontology estimate burstiness, event-type diversity, and event-stream archetypes without pretending the data are regular arrays.
209+
**Why this API exists:** A stream of timestamped events is not the same as a dense sampled signal. This wrapper lets echotime estimate burstiness, event-type diversity, and event-stream archetypes without pretending the data are regular arrays.
210210

211211
**When to use it:** Use for sparse operational events, treatment events, alarms, clicks, or transactional logs.
212212

@@ -236,7 +236,7 @@
236236

237237
**Why this API exists:** An ontology-driven library must make its schema inspectable and versioned. These functions let downstream tools, dataset cards, and documentation stay aligned with the real axis/subdimension/proxy map.
238238

239-
**When to use it:** Use when building dashboards, validators, reports, or benchmark cards around tsontology.
239+
**When to use it:** Use when building dashboards, validators, reports, or benchmark cards around echotime.
240240

241241
**Returns:** Schema dictionary or typed schema tuple
242242

@@ -259,7 +259,7 @@
259259

260260
**Signature:** `register_adaptor(adaptor); register_plugin(plugin); clear_custom_extensions()`
261261

262-
**Purpose:** Extend tsontology to new data containers and domain-specific metrics.
262+
**Purpose:** Extend echotime to new data containers and domain-specific metrics.
263263

264264
**Why this API exists:** Cross-disciplinary infrastructure must be extensible. Adaptors let the package ingest new object types; plugins let communities add domain metrics without forking the ontology core.
265265

@@ -315,7 +315,7 @@
315315

316316
**Signature:** `case_gallery(domain=None, audience=None, environment=None, format='markdown')`
317317

318-
**Purpose:** Browse high-visibility cross-disciplinary use cases where tsontology fits naturally.
318+
**Purpose:** Browse high-visibility cross-disciplinary use cases where echotime fits naturally.
319319

320320
**Why this API exists:** New users often understand a tool fastest through concrete cases instead of abstract API descriptions. The case gallery shows popular time-series settings such as web traffic, retail demand, energy load, wearables, ICU monitoring, and fMRI.
321321

@@ -364,7 +364,7 @@
364364

365365
### `hot_case_gallery / similarity_playbook / project_homepage_html / project_playground_html`
366366

367-
**Signature:** `hot_case_gallery(...); similarity_playbook(...); project_homepage_html(version='0.12.0'); project_playground_html(version='0.12.0')`
367+
**Signature:** `hot_case_gallery(...); similarity_playbook(...); project_homepage_html(version='0.17.0'); project_playground_html(version='0.17.0')`
368368

369369
**Purpose:** Provide shareable, high-attention case ideas plus a static project-homepage starting point.
370370

@@ -408,7 +408,8 @@
408408

409409
**Inspect these outputs:**
410410

411-
- similarity_score
411+
- reference_metrics
412+
- component_mean
412413
- component_scores
413414
- to_summary_card_markdown()
414415
- to_narrative_report()
@@ -419,7 +420,7 @@
419420

420421
**Signature:** `compare_profiles(left, right, *, left_name='left profile', right_name='right profile') -> SimilarityReport`
421422

422-
**Purpose:** Compare two tsontology profiles or raw datasets at the ontology-axis level.
423+
**Purpose:** Compare two echotime profiles or raw datasets at the ontology-axis level.
423424

424425
**Why this API exists:** Sometimes raw units and scales differ too much for direct shape matching, but the datasets are still structurally analogous. Profile similarity answers that higher-level question.
425426

@@ -462,24 +463,53 @@
462463

463464
**Inspect these outputs:**
464465

465-
- similarity_score
466+
- component_mean
467+
- pearson_r
466468
- shape_similarity
467469
- trend_similarity
468470
- spectral_similarity
469471

470472
**Recommended environments:** notebook, python_script, pandas_pipeline
471473

474+
### `ncc_sequence / max_ncc / best_shift / sbd / independent_max_ncc / independent_sbd / acf_distance / periodogram_distance / trend_distance / ordinal_pattern_js_distance / linear_trend_model_distance / lcss_similarity / lcss_distance / edr_distance / erp_distance / twed_distance`
475+
476+
**Signature:** `ncc_sequence(x, y, *, normalize=True) -> tuple[np.ndarray, np.ndarray]; max_ncc(...) -> float; best_shift(...) -> int; sbd(...) -> float; independent_max_ncc(...) -> float; independent_sbd(...) -> float; acf_distance(x, y, *, max_lag=10) -> float; periodogram_distance(x, y, *, n_coeffs=32) -> float; trend_distance(x, y) -> float; ordinal_pattern_js_distance(x, y, *, order=3, delay=1) -> float; linear_trend_model_distance(x, y) -> float; lcss_similarity(x, y, *, epsilon=1.0, window=None, mode='exact') -> float; lcss_distance(x, y, *, epsilon=1.0, window=None, mode='exact') -> float; edr_distance(x, y, *, epsilon=1.0, normalized=True, window=None, mode='exact') -> float; erp_distance(x, y, *, gap_value=0.0, window=None, mode='exact') -> float; twed_distance(x, y, *, lambda_=1.0, nu=0.001, t_x=None, t_y=None, window=None, mode='exact') -> float`
477+
478+
**Purpose:** Expose the extracted low-level similarity primitives directly when you need one explicit metric instead of a report bundle, including a fast screening path for the elastic distances.
479+
480+
**Why this API exists:** EchoTime's main surface is intentionally report-first, but advanced users still need direct access to shift-aware, rhythm-aware, and elastic distances for retrieval, thresholding, and custom pipelines.
481+
482+
**When to use it:** Use when you already know which similarity family you need and want a scalar score or lag estimate to plug into downstream logic; use `mode='fast'` for shortlist screening and `mode='exact'` for final reporting.
483+
484+
**Returns:** NumPy arrays, scalar similarities, scalar distances, or a best-lag integer depending on the function
485+
486+
**Accepted inputs / context:**
487+
488+
- 1D arrays
489+
- 2D multichannel arrays
490+
- optional timestamps for TWED
491+
- optional gap, tolerance, or band-width hyperparameters for elastic methods
492+
- `mode='fast'` for shortlist screening, `mode='exact'` for final scoring
493+
494+
**Inspect these outputs:**
495+
496+
- the returned scalar score or distance
497+
- the lag array from ncc_sequence
498+
- best_shift for lead-lag interpretation
499+
500+
**Recommended environments:** notebook, python_script, ml_benchmark, pandas_pipeline
501+
472502
## agent driving
473503

474504
### `AgentDriver / agent_drive / agent_context`
475505

476506
**Signature:** `AgentDriver(goal='understand_dataset', budget='lean|balanced|deep', ...); agent_drive(data, reference=None, goal=..., budget=...); agent_context(profile_or_similarity_report, budget='lean')`
477507

478-
**Purpose:** Let an agent or application choose the cheapest useful tsontology workflow and export a compact context bundle.
508+
**Purpose:** Let an agent or application choose the cheapest useful EchoTime workflow and export a compact context bundle.
479509

480510
**Why this API exists:** LLM agents often waste tokens by running too many analyses and by carrying oversized intermediate reports. This API chooses a small workflow first, stops early when the signal is already clear, and compresses the result into a reusable context payload.
481511

482-
**When to use it:** Use when tsontology sits inside an agent loop, a notebook assistant, a retrieval pipeline, or a batch report generator that needs compact summaries.
512+
**When to use it:** Use when echotime sits inside an agent loop, a notebook assistant, a retrieval pipeline, or a batch report generator that needs compact summaries.
483513

484514
**Returns:** AgentDriveResult or compact context dict/markdown/json
485515

0 commit comments

Comments
 (0)