Skip to main content

kosh

Use Kosh to persist results and files, query them later, and build custom loaders, transformers, and operators for data extraction and slice-aware processing.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
llnl/kosh
آخر نشاط في المصدر
٢٤ يوليو ٢٠٢٦ في ٢٠:٥٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٩
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
kosh
description
Use Kosh to persist results and files, query them later, and build custom loaders, transformers, and operators for data extraction and slice-aware processing.
# Kosh Skill Use this skill when an agent needs to store results, attach files, query them later, or build lightweight data-processing hooks around files and datasets. ## Common Patterns - Create or open a store with `kosh.connect(...)` or `kosh.utils.create_new_db(...)`. - Create a dataset with `store.create(...)`, then store metadata and attach files with `dataset.associate(uri, mime_type, metadata=...)`. - Create an ensemble with `store.create_ensemble(...)` when a group of datasets should be searched together. - Query later with `store.find(...)` for datasets, `store.find_ensembles(...)` for ensembles, `dataset.find(...)` for associated sources, `ensemble.find_datasets(...)` for member datasets, plus `dataset.list_features()` and `dataset.describe_feature(...)`. - Read results with `dataset.get(feature, transformers=[...])` or `dataset.get_execution_graph(feature, transformers=[...])`. ## Storing Results - Use datasets to hold metadata about a run, a job, or a generated artifact. - Associate output files directly to the dataset so they can be rediscovered by feature name or metadata. - Use ensembles to collect related runs and add ensemble-level metadata for the group. - Keep a given attribute in one place: put dataset-specific values on the dataset and group-level values on the ensemble. - Use `ensemble_tags` for labels that belong to an ensemble membership, not the dataset itself. These tags are searchable with `ensemble.find_datasets(ensemble_tags=...)` and can be inspected with `dataset.list_ensemble_tags(...)`. - Example: `ensemble_tags={"even_or_odd": "even", "data_type": "test data"}`. ## Workflow Tracking - Use the workflow CLI (`kosh_workflow`) when you want to create or update datasets from a step plus parameter set. - Use `kosh.parameter_store.StepRequest` and `kosh.parameter_store.apply_step(...)` from Python when scripting workflow updates. - Treat `workflow_step` as the default step field unless a different field name is configured with `--step-field`. - Use `--ensemble` to scope workflow operations to one ensemble, `--param key=value` or implicit `--key=value` filters to match init parameters, and `--upsert-init` when the init step should reuse an existing dataset instead of creating a duplicate. - Use `--meta` for dataset metadata updates and `--associate` for files that belong on the dataset; use `--emeta`/`--ensemble-meta` and `--associate-ensemble` for ensemble-level updates. ## Parsing Output Files - Add a custom loader when Kosh needs to parse a file format that is not already supported or when the file should expose custom features. - Implement `list_features()` and `extract()` on a `KoshLoader`. - A loader can expose multiple features and return data in different formats, so use it when the raw file needs parsing or format-specific access. - Register the loader with `store.add_loader(MyLoader)` before querying associated files that depend on it. - For loaders that support direct indexing, implement `__getitem__` so slices can be served efficiently. ## Feature Aliases - Use `alias_feature` when different sources expose the same data under different names, such as uppercase CSV headers versus lowercase HDF5 datasets. - Map aliases both ways when needed, for example `{"col_a": "COL_A"}` on one dataset and `{"COL_A": "col_a"}` on the other. - Aliases let `dataset["col_a"]` or `dataset["COL_A"]` resolve to the same underlying feature when the exact name is not present. ## Transformers and Operators - Use `KoshTransformer` or `@kosh.numpy_transformer` / `@kosh.typed_transformer` to reshape, switch formats, or post-process one input stream. - Use `KoshOperator` or `@kosh.numpy_operator` / `@kosh.typed_operator` to combine multiple inputs, including data loaded from different sources or formats. - Keep transforms small and composable; use them to normalize or convert results after loading, not to replace the loader’s parsing job. ## Slicing and Propagation - Kosh uses `__getitem__` for indexing. - Implement `__getitem_propagate__(self, key, input_index)` in transformers or operators when a slice should be pushed back toward the loader. - If propagation is not possible, return `None` and let Kosh apply the slice after the upstream step runs. ## Notebook References - Store creation and metadata: `examples/Example_00_Open_Store_And_Add_Datasets.ipynb`, `Example_03_Working_with_Datasets.ipynb` - Reading data and feature access: `examples/Example_02_Read_Data.ipynb`, `Example_column_based_text_files.ipynb` - Ensembles and workflow tracking: `examples/Example_Ensembles.ipynb`, `Example_Simulation_Workflow.ipynb`, `Example_Workflow_Manager.ipynb` - Custom loaders: `examples/Example_Custom_Loader.ipynb`, `Example_MNIST.ipynb`, `Example_Sidre.ipynb` - Transformers and operators: `examples/Example_05a_Transformers.ipynb`, `Example_05b_Transformers-SKL.ipynb`, `Example_06_Operators.ipynb` - Advanced slicing and propagation: `examples/Example_Advanced_Data_Slicing.ipynb` - Data movement and interoperability: `examples/Example_07_Transferring_Datasets.ipynb`, `Example_Moving_Datasets.ipynb`, `Kosh_and_Sina_Interoperability.ipynb` ## Practical Notes - Prefer attaching metadata to the dataset or ensemble instead of inventing a separate bookkeeping layer. - Use existing file-backed loaders when possible; add a custom loader only when the built-ins do not expose the data cleanly. - Keep notebook-style examples aligned with the existing `Example_*.ipynb` naming pattern.
عرض على GitHub