원클릭으로
bo-transform-columns
Profile dataset columns and apply data transformations (log, sqrt, standardize, etc.) before BO.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Profile dataset columns and apply data transformations (log, sqrt, standardize, etc.) before BO.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Orchestrate an end-to-end chemistry or materials optimization study from a plain-English research question to BO execution and a paper draft.
BO execution layer — initializes a run from a resolved experiment spec, records observations, and continues through suggest/observe/report.
Initialize a BO run from a dataset or explicit search-space JSON.
Generate a final BO report and summarize optimization status.
Run an external evaluator loop for a BO run using a pre-provisioned backend id.
Design and stabilize an expensive or fragile chemistry evaluator before BO setup.
| name | bo-transform-columns |
| description | Profile dataset columns and apply data transformations (log, sqrt, standardize, etc.) before BO. |
Use this skill when preparing a dataset for BO and the target or feature columns may benefit from a scale transformation. Always profile first, then transform.
uv run python -m bo_workflow.converters.column_transform profile \
--input <CSV_PATH> \
--cols <COL1> [<COL2> ...]
Omit --cols to profile all columns. Output is JSON with stats and a recommended_transform per column.
Key fields to interpret:
log_range_decades ≥ 3 → strong case for log10 (data spans orders of magnitude)skewness > 2 → strong right skew, try log10 or sqrtfraction_zero > 0 with skew → use log1p instead of log10fraction_negative > 0 → skip log; try standardize if skeweduv run python -m bo_workflow.converters.column_transform transform \
--input <CSV_PATH> \
--cols <COL> \
--transform <TRANSFORM> \
--output <OUTPUT_CSV>
The original column is dropped and replaced with a prefixed version:
ic50_nM → log10_ic50_nM. Update --target accordingly when calling init.
Add --keep-original to retain both columns.
| Transform | When to use | Requires | Output name |
|---|---|---|---|
log10 | Strictly positive, ≥3 decades of range (IC50, concentrations, rates) | all values > 0 | log10_<col> |
log1p | Non-negative with zeros, right-skewed counts or areas | all values ≥ 0 | log1p_<col> |
neglog10 | Strictly positive, want higher = better (IC50 → pIC50, Ki → pKi) | all values > 0 | neg_log10_<col> |
sqrt | Non-negative, moderate right skew (skewness 1–2) | all values ≥ 0 | sqrt_<col> |
standardize | Mixed-sign or roughly normal; centres and unit-scales | non-constant | std_<col> |
minmax | Bounded range needed, e.g. mixing features with different units | non-constant | mm_<col> |
log10 before BO. These span many orders of magnitude and tree/GP models perform poorly on raw scale.log10.max with a linear-scale reward you want to compare directly.output — path to the transformed CSVtransformed_columns — list of new column names (use these for --target or as feature references)rows — row count (sanity check)# 1. Profile the target
uv run python -m bo_workflow.converters.column_transform profile \
--input data/egfr_ic50.csv --cols ic50_nM
# 2. Apply log10 (profile will recommend it: spans ~16 decades)
uv run python -m bo_workflow.converters.column_transform transform \
--input data/egfr_ic50.csv \
--cols ic50_nM --transform log10 \
--output data/egfr_log.csv
# 3. Encode SMILES
uv run python -m bo_workflow.converters.molecule_descriptors encode \
--input data/egfr_log.csv \
--output-dir data/egfr_log_desc \
--smiles-cols smiles
# 4. Init BO — note updated --target name
uv run python -m bo_workflow.cli init \
--dataset data/egfr_log_desc/features.csv \
--target log10_ic50_nM --objective min --engine hebo