Przejdź do treści
Biblioteka skilli
Dane i analityka · Analiza

ada

/ada

Liczy i weryfikuje liczby z tabel CSV i Excel pakietem ADA na pandas, SciPy i statsmodels, pokazując obliczenia i wiersze, albo odmawia, gdy brakuje podstaw.

Licencja
MIT
Ostatnia zmiana repozytorium
27.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
2
Przestarzałość

Brak sygnałów. Repozytorium zmienione 27.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Liczy i weryfikuje liczby z tabel CSV i Excel pakietem ADA na pandas, SciPy i statsmodels, pokazując obliczenia i wiersze, albo odmawia, gdy brakuje podstaw.

Oryginalny opis (EN)

Compute and check numbers from CSV or Excel tables with ADA (the automated-data-analyst Python package). It computes every number in pandas, SciPy and statsmodels with the calculation and rows behind it, checks a number stated about a table (verified, or unverified with a reason), maps a folder of related files and how they join, or refuses with a reason instead of guessing. Use when someone wants a number from a data file, wants a number in a report or an answer checked against the data, wants to know what is in a file or folder, compare groups, test a relationship or a trend, or make a paper

Jak działa

  1. Computing and checking numbers
  2. The study workflow
  3. How ADA picks the test
  4. Rules to keep
  5. Your own tables and figures
  6. Restricted data
  7. What the build writes
  8. First look at any table
Sekcje z nagłówków SKILL.md, w oryginale · 332 linii, 2 293 słów
Podgląd SKILL.md
---
name: ada
description: Compute and check numbers from CSV or Excel tables with ADA (the automated-data-analyst Python package). It computes every number in pandas, SciPy and statsmodels with the calculation and rows behind it, checks a number stated about a table (verified, or unverified with a reason), maps a folder of related files and how they join, or refuses with a reason instead of guessing. Use when someone wants a number from a data file, wants a number in a report or an answer checked against the data, wants to know what is in a file or folder, compare groups, test a relationship or a trend, or make a paper's tables, figures and methods draft from research data with a rebuild that can be verified.
license: MIT
compatibility: Needs Python 3.11 or newer and `pip install automated-data-analyst` 0.6.0 or later (0.5.0 for the study workflow only).
metadata:
  homepage: https://github.com/saineshnakra/automated-data-analyst
  docs: https://github.com/saineshnakra/automated-data-analyst/blob/main/docs/research.md
---

# ADA: data analysis with every number computed

ADA turns a table of measurements and a plain `study.yml` into what a paper
needs: a data audit, a data dictionary, a record of every exclusion,
descriptive and results tables (CSV, Word, LaTeX), figures with their source
data and captions, a methods draft, and a package another researcher can
rebuild it all from. The numbers come from pandas, SciPy and statsmodels.

Let ADA do the arithmetic. Report the numbers it computed, with the test or
calculation it names, rather than computing or estimating them yourself; when
it refuses, pass the reason on. That way everything you report can be checked
against ADA's output and the data.

Pick the mode from what the person wants:

- **A number, or a check of one** ("what is the average delay?", "is it true
  that 32% survived?", or any number you are about to write about a data
  file): "Computing and checking numbers" below.
- **A folder of related files**: `ada scan data/` first and ask its
  questions, then `ada ask` and `ada claim` on the folder or a file.
- **A paper or report from a study** (groups, subjects, time points, planned
  analyses): the study workflow below.
- **Just what is in a file**: `ada analyze data.csv`, or in Python
  `ada.analyze("data.csv")`. See "First look" at the end.

```bash
pip install automated-data-analyst
ada --version
```

## Computing and checking numbers

Compute with `ada ask`, and check every number you state about the data with
`ada claim`, including numbers you computed yourself or read in a report.

```bash
ada ask flights.csv "average dep_delay by origin" --json
ada claim flights.csv "The average departure delay was about 13 minutes."
ada claim flights.csv --question "average dep_delay" --value 12.64 --json
ada claim data/ "The average order_total is 154.10."     # a folder: checked against the file it fits
```

`ada claim` prints `verified` or `unverified` with one of six reasons, and
exits 0 (verified), 1 (the data give a different number, or a check on the
analysis failed), 2 (the file could not be read) or 3 (unverified for another
reason). With `--json` it gives the claim's interval ("about 13" is 12 to 14),
the plan that ran, the calculation, the rows read, used and left out with a
reason for each, the file's sha256, the assumptions, the warnings, and a
`clarification`: the one question that would let the check go ahead.

When you report numbers:

- Say which numbers ADA verified, and give each with its calculation and the
  rows it used ("12.64, mean(dep_delay) over the 328,521 flights with a
  departure delay recorded").
- Say which are unverified and why, in ADA's words. Unverified is not false:
  only `failed_check` with `agreement: "mismatch"` means the data give a
  different number.
- Never call a whole answer verified because one number in it was. A check
  covers one number, as read; it says nothing about the wording around it.
- When the reason is `missing_context` or `ambiguous_intent`, ask the person
  ADA's `clarification` (for example "Which column is meant: dep_delay or
  arr_delay?") instead of picking a reading yourself.
- Pass on the assumptions and warnings that matter: rows left out, a scale
  or unit that was not given, a correlation that runs the other way within
  groups, repeated rows from one subject.
- Read `decisions` on every answer and check: the choices ADA took, such as
  leaving World and region rows out of an average. Each has a `question`,
  its `options` and ADA's `default`. When the person's goal settles one
  ("compare countries" leaves World out), pass that option with
  `--decide KEY=OPTION`, such as `--decide aggregate_rows=keep`, and say you
  did. When it does not, ask the person the decision's `question`. With no
  one to ask, keep the default and say which it was. (`--decide` needs a
  current ADA; upgrade if it is not recognised.)

Start with `ada scan` on the file or the folder (`ada scan data.csv`, `ada
scan data/`). It lists each file, the keys that join them (with the rows a
join leaves unmatched or repeats) and the questions to ask before an
analysis: what the person wants to find out, what a row stands for, units,
repeated measurements, which links to trust, and the decisions ADA would
otherwise take by default (leaving World and region rows out, which links to
join on). Ask the person those questions; propose answers from what they
already told you. `ada scan PATH --template answers.yml` writes the questions
with ADA's proposed answers: put in what the person said and pass `--answers
answers.yml` to every `ada ask` and `ada claim`. With no one to ask, keep
ADA's defaults and say that you did.

A question or claim about a folder (`ada ask data/ "..."`, `ada claim data/
"..."`) is answered from the file it fits, or from two files joined along a
link ADA is sure of, and the answer says which join it used. Confirm a link
in the answers file, or pass `--decide join_links=all`, only when the person
agrees the link is right.

## The study workflow

Run every command in the folder that holds the study's data.

### 1. Ask what only the researcher knows

Look at the file first (columns, a few rows, counts), then ask about anything
you can't tell from the data. Do not guess these and treat the guess as fact:

- What one row is (one mouse at one week, one well, one patient visit).
- Which column identifies a participant, animal, specimen, site or plate, and
  whether each one has several rows. Check this yourself: if a subject-like
  column has far fewer distinct values than there are rows, the rows are not
  independent and the design is repeated or clustered.
- The outcomes, the groups or conditions, the time variable and covariates.
- Which analyses were planned before anyone saw the data. Everything else is
  exploratory.
- What may be shared, and which columns must never leave (names, dates of
  birth, operator).

### 2. Write study.yml

```bash
ada init data/measurements.csv          # asks each question in a terminal
ada init data/measurements.csv --yes    # accepts ADA's guesses without asking
```

`ada init` reads the file and writes `study.yml` with its guesses. In an
agent session without a person at the terminal, use `--yes`, then edit
`study.yml` with the researcher's answers. `--yes` marks every analysis
exploratory, because only the researcher can say what was planned, and writes
`design.confirmed: false`, which the methods draft reports as an unconfirmed
design. Read the whole file before building: check the design, the subject or
cluster column, each variable's role and type, and the proposed analyses.
Set `confirmed: true` only after the researcher has confirmed the design.

The parts that matter most:

```yaml
data:
  path: data/assay.csv
  sha256: 3f2a…               # ADA stops if the file changes
  observation: one well
  missing_codes: [-99]

design:
  type: repeated              # independent | paired | repeated | clustered
  confirmed: true             # only once the researcher has confirmed it
  subject: Mouse              # clustered designs name a `cluster` instead
  time: Week

variables:                    # every column the design, processing or analyses name
  Mouse:
    role: identifier
    type: text
  Week:
    role: time
    type: numeric
    unit: weeks
  Weight (g):
    role: outcome             # outcome | group | time | covariate | identifier | other
    type: numeric             # numeric | categorical | binary | date | text
    unit: g
    range: [10, 60]           # checked in the audit, never enforced
  Diet:
    role: group
    type: categorical         # a group must be categorical or binary, even if coded 1/2/3
    levels: [Chow, High fat]  # the first is the reference

processing:                   # run in order; each step needs a reason
  - exclude:
      ids: [M07]
    reason: M07 was given the wrong diet in weeks 2 and 3 (feeding log, entry 12).
  - exclude:
      where: {column: Weight (g), below: 0}
    reason: Negative weights are scale errors.

decisions:
  multiple_comparisons: holm  # holm | bonferroni | fdr_bh | none
  alpha: 0.05
  confidence: 0.95

analyses:
  - id: weight-gain
    question: Do mice on the high-fat diet gain weight faster?
    outcome: Weight (g)
    change: Week              # or compare: a group, or relate: a numeric predictor
    by: Diet                  # with change: the time × group interaction
    covariates: []
    planned: true             # only when the researcher says it was planned
    family: primary           # p-values are adjusted within a family

sharing:
  data: processed             # processed | raw | demo | none
  withhold: [Operator]
```

Exclusion conditions: `below`, `above`, `at_most`, `at_least`, `equals`,
`not_equals`, `in`, `not_in`, `missing`. Other steps: `transform` (`log`,
`log10`, `log2`, `sqrt`, `zscore`, `center`, `scale`, …) into a new column, and
`recode` with a `map`.

### 3. Build

```bash
ada build              # or ada build --strict: exit 1 if any analysis was refused
```

This writes `paper-assets/` and prints how many analyses were requested,
fitted and refused, with the reason for each refusal. Then:

- Read the printed summary and `paper-assets/README.md`, which lists every
  table and figure with its caption.
- Read `paper-assets/audit/data-audit.md` and tell the researcher about each
  item to check.
- Look for analyses that were refused or fitted with warnings (the methods
  draft names them, and `supplement/models/` has each model's output). Report
  a refusal and its reason as it is.

### 4. Verify

```bash
ada verify
```

It rebuilds from `study.yml` and the data alone in a scratch folder and
compares every file, number by number. Exit code 0 means everything matches.
Run it before sharing results and in CI.

## How ADA picks the test

The design decides it; ADA does not search for a significant result.

| Design | `compare:` a group | `relate:` a number | `change:` time |
|---|---|---|---|
| independent | Welch's t-test, or Welch's ANOVA with Games–Howell contrasts; regression with covariates | regression slope with Pearson's r and Spearman's ρ | not fitted |
| paired | paired t-test | mixed model | mixed model |
| repeated | linear mixed model, random intercept per subject | mixed model | mixed model over time |
| clustered | linear mixed model, random intercept per cluster | mixed model | not fitted |

Binary outcomes get the risk difference, odds ratio and χ² or Fisher's exact
test, or logistic regression. `test:` asks for another test the design allows
(`mann-whitney`, `kruskal`, `wilcoxon`, `student-t`, `anova`). In a change
analysis, `time_as: categorical` or `time_as: linear` sets how time enters.
Crossover trials, nested random effects, survival, ordinal outcomes and
binary outcomes measured repeatedly are refused, not approximated.

## Rules to keep

- Never choose the design, the planned analyses or an exclusion from the
  results. An exclusion's reason must not depend on the outcome.
- Don't add analyses until one is significant. Anything added after seeing
  the data stays `planned: false`.
- Don't edit files in `paper-assets/` or the data file by hand. Change
  `study.yml` and rebuild; `ada verify` flags edited files.
- If the data file changes on purpose, put its new sha256 in `data.sha256`
  (the error message prints it). Never remove the check to get past it.
- If ADA refuses a design, say so and offer a `custom:` script for the
  researcher's own analysis instead of switching to a design that fits.
- Quote numbers from `paper-assets/tables/` (CSV files hold full precision)
  with the test named in the table, and say whether the analysis was planned.

## Your own tables and figures

List a Python file under `custom:` in study.yml. Functions take the processed
data and return a pandas table or a Matplotlib figure; ADA saves them in the
study's formats and records them in `provenance.json`.

```python
import matplotlib.pyplot as plt
from ada import research

@research.table("adjusted-model", title="Viability adjusted for passage")
def adjusted(data, study):
    return data.groupby("Treatment")["Viability (%)"].describe().reset_index()

@research.figure("dose-curve", title="Dose response", caption="Points are wells.")
def dose_curve(data, study):
    fig, ax = plt.subplots(figsize=research.figure_size(study))
    ax.scatter(data["Dose"], data["Viability (%)"])
    return fig, data[["Dose", "Viability (%)"]]
```

## Restricted data

```bash
ada preview    # every file, whether it may be shared, and why
ada share      # copies only what may be shared into share/
```

`sharing.data: demo` writes synthetic data with the same columns so others
can run the reproduction without the real data.

## What the build writes

| Folder | Contents |
|---|---|
| `audit/` | values outside their range, duplicates, whether the data fit the design |
| `dictionary/` | each column's meaning, unit, type, allowed and observed values |
| `processing/` | every step from the original file, rows before and after, the excluded rows |
| `tables/` | descriptive and results tables as CSV, Word and LaTeX |
| `figures/` | PDF, SVG, PNG or TIFF at a journal's size, `<id>.source.csv`, captions |
| `methods/` | methods draft and results draft, written from what was run |
| `supplement/` | exploratory analyses, model output, checks |
| `reproduce/` | study.yml, pinned versions, input checksums, instructions |
| `repository/` | README, CITATION.cff, .zenodo.json, availability statements |
| `provenance.json`, `CHANGES.md` | where each number came from; what changed at each build |

`output.journal` (`plos`, `nature`, `cell`, `science`, `elife`) sets figure
sizes, resolution and fonts.

## First look at any table

For a file with no study behind it, or to see what is in one before writing
`study.yml`:

```bash
ada analyze data.csv           # findings, each with the test and arithmetic
ada analyze data.csv --json    # machine-readable
ada schema data.csv            # detected columns and what was cleaned
ada ask data.csv "average pH by site"
```

```python
import ada

report = ada.analyze("data.csv")        # a path, a DataFrame or raw bytes
print(report)
report.quality()                        # data-check issues with their rows
report.evidence                         # findings, each with .statement and .calculation
report.to_dict()                        # JSON-safe
```

When ADA can't answer it returns a `Refusal` (falsy, with `.code` and
`.message`) instead of a number. Pass the reason on rather than working
around it. The first look guesses what matters from the file alone, so for a
paper use the study workflow, where the researcher states the design.
Pliki w paczce (2)
  • SKILL.md 15 KB
  • agents/openai.yaml 1 KB

Wersje

RepozytoriumWynikLicencja
Ta strona · saineshnakra/automated-data-analyst100MIT
The-Utopia-Studio/skills90Apache-2.0

Identyczna treść występuje jeszcze w 1 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.

Migawka bazy z 28.10.2026 · wersja paczki 4b24ab0deb5b (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 98data-analysis
    Czyści dane, przeprowadza eksplorację EDA, testy statystyczne i regresję w Pythonie z pandas, scipy i statsmodels.
  • 87data-science-analysis
    Wylicza liczbową odpowiedź na pytanie z danych w plikach CSV, Excel lub naukowych, używając pandas, numpy i scipy.
  • 91backend-data-processor
    Przetwarza dane z Excela ubezpieczeń w Pandas: czyszczenie, łączenie, walidację, reguły biznesowe i wydajność potoku.
  • 100scipy-analysis
    Wykonuje obliczenia naukowe i statystyczne w SciPy, NumPy i pandas: testy hipotez, optymalizację, przetwarzanie sygnałów i całkowanie.
  • 86data-analyst
    Wczytuje, czyści i analizuje pliki CSV, JSON i Excel w pamięci, z testami hipotez, wykresami i kontrolą jakości danych.
  • 100spreadsheet-qa
    Odpowiada na pytania biznesowe o własny arkusz lub eksport danych poprawnie i z możliwością audytu, profilując pliki i licząc każdą liczbę w SQL lub pandas.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.