FoundationAgents/MetaGPT · error · FileNotFoundError

Raw dataset `train.csv` not found in {raw_dir}

Error message

Raw dataset `train.csv` not found in {raw_dir}

What it means

Raised by ExpDataset.get_raw_dataset when <dataset_dir>/<name>/raw/train.csv does not exist. SELA expects raw tabular data to have been placed under the dataset's raw/ subdirectory before splitting/analysis; train.csv is mandatory while test.csv is optional.

Source

Thrown at metagpt/ext/sela/data/dataset.py:235

            "split_dev_wo_target.csv",
            "split_dev_target.csv",
            "split_test_wo_target.csv",
            "split_test_target.csv",
        ]
        for fname in fnames:
            if not os.path.exists(Path(self.dataset_dir, self.name, fname)):
                return False
        return True

    def check_datasetinfo_exists(self):
        return os.path.exists(Path(self.dataset_dir, self.name, "dataset_info.json"))

    def get_raw_dataset(self):
        raw_dir = Path(self.dataset_dir, self.name, "raw")
        train_df = None
        test_df = None
        if not os.path.exists(Path(raw_dir, "train.csv")):
            raise FileNotFoundError(f"Raw dataset `train.csv` not found in {raw_dir}")
        else:
            train_df = pd.read_csv(Path(raw_dir, "train.csv"))
        if os.path.exists(Path(raw_dir, "test.csv")):
            test_df = pd.read_csv(Path(raw_dir, "test.csv"))
        return train_df, test_df

    def get_dataset_info(self):
        raw_df = pd.read_csv(Path(self.dataset_dir, self.name, "raw", "train.csv"))
        metadata = {
            "NumberOfClasses": raw_df[self.target_col].nunique(),
            "NumberOfFeatures": raw_df.shape[1],
            "NumberOfInstances": raw_df.shape[0],
            "NumberOfInstancesWithMissingValues": int(raw_df.isnull().any(axis=1).sum()),
            "NumberOfMissingValues": int(raw_df.isnull().sum().sum()),
            "NumberOfNumericFeatures": raw_df.select_dtypes(include=["number"]).shape[1],
            "NumberOfSymbolicFeatures": raw_df.select_dtypes(include=["object"]).shape[1],
        }

View on GitHub (pinned to 11cdf466d0)

Solutions

  1. Place (or download) your data as dataset_dir/<name>/raw/train.csv
  2. Check the datasets_dir path in your config resolves to where the data actually lives
  3. Re-run the SELA dataset preparation pipeline for that dataset
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
raw = Path(dataset_dir, name, "raw")
if not (raw / "train.csv").exists():
    download/prepare data first

Type guard

def raw_train_exists(dataset_dir, name) -> bool:
    from pathlib import Path
    return (Path(dataset_dir) / name / "raw" / "train.csv").is_file()

Try / catch

try:
    df, test_df = ds.get_raw_dataset()
except FileNotFoundError as e:
    raise RuntimeError(f"prepare data first: {e}") from e

Prevention

When it happens

Trigger: Calling get_raw_dataset (directly or via save_dataset / create_dataset_dict) before downloading the raw data into dataset_dir/name/raw/, or when the directory layout/naming differs (e.g. train data stored under a different filename).

Common situations: Skipped the dataset-preparation step (python -m metagpt.ext.sela.data.dataset or the documented download script); wrong dataset_dir configured; file named data.csv instead of train.csv.

Related errors


AI-assisted analysis of FoundationAgents/MetaGPT@11cdf466d0 (2026-08-14). Data as JSON: /api/errors/9b901c4ddf6a030f. Report an issue: GitHub.