인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
데이터 및 연구 · SKILL.md

core-api-data

core-api-data

Use core PaddleHelix pahelix APIs for datasets, NPZ caches, splitters, protein tokenization, compound feature utilities, featurizer/model-zoo orientation, and import diagnostics.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: core-api-data description: "Use core PaddleHelix pahelix APIs for datasets, NPZ caches, splitters, protein tokenization, compound feature utilities, featurizer/model-zoo orientation, and import diagnostics." disable-model-invocation: true metadata: disco-role: operating license: NOASSERTION

Core API and Data

Use this sub-skill when a task asks how to use the reusable pahelix package layer rather than a full application workflow. It covers small in-memory data objects, NPZ caches, splitters, protein token IDs, compound feature utility orientation, featurizer/model-zoo routing, and dependency diagnostics.

Route Here

  • The user asks to use InMemoryDataset, slice a pahelix dataset, or cache/reload a data_list as .npz files.
  • The user asks how to split PaddleHelix molecular records with random, index, scaffold, or random-scaffold splitters.
  • The user asks to tokenize protein sequences into PaddleHelix token IDs without launching training.
  • The user asks what CompoundKit, Compound3DKit, mol_to_graph_data, or GEM featurizers expect and return.
  • The user asks why pahelix imports fail, especially around optional pgl, paddle, rdkit, or deprecated sklearn packaging.

Route Elsewhere

  • App-level molecular property prediction, pretraining, DTI, molecular generation, docking, or HelixDock workflows: use ../compound-drug-discovery/SKILL.md.
  • Protein pretraining, sequence prediction, function prediction, PPI, or protein app commands: use ../protein-sequence-function/SKILL.md.
  • HelixFold, HelixFold-Single, HelixFold3, or HelixFold-S1 structure prediction: use ../structure-prediction/SKILL.md.
  • LinearRNA fold/partition build and API usage: use ../linear-rna/SKILL.md.

Core API Workflow

  1. Identify the layer: pahelix.utils.data_utils and pahelix.utils.protein_tools are dependency-light; dataset loaders, splitters, compound tools, featurizers, and model-zoo modules add optional dependencies.
  2. For simple cache work, use save_data_list_to_npz, load_npz_to_data_list, or InMemoryDataset.save_data rather than app-specific preprocessing.
  3. For split work, confirm fractions sum to 1.0; scaffold splitters also require rdkit and every record must contain a valid smiles string.
  4. For molecular graph work, convert valid RDKit Mol objects with mol_to_graph_data or mol_to_geognn_graph_data*; do not pass raw SMILES directly except to featurizer transform functions that explicitly accept raw SMILES/records.
  5. For model-zoo orientation, use this skill to choose the class family and data contract; send training, checkpoint, and config execution details to the owning workflow sub-skill.

Dataset and Cache Pattern

  • InMemoryDataset(data_list=records) stores a list-like data_list; dataset[i], dataset[start:stop], and dataset[[i, j]] return records or new datasets. It accepts Python int/np.int32/np.int64, slice, or list keys, not arbitrary NumPy index arrays.
  • InMemoryDataset(npz_data_path=cache_dir) loads all sorted *.npz files from a directory; InMemoryDataset(npz_data_files=[...]) loads explicit part files.
  • dataset.save_data(cache_dir) writes part-000000.npz, part-000001.npz, and so on, with up to 10,000 records per part.
  • get_data_loader(...) depends on pgl.utils.data.Dataloader; if pgl is missing, use the lower-level NPZ utilities or install pgl before importing pahelix.datasets.inmemory_dataset.

See references/data-formats.md for record and cache contracts.

Splitter Pattern

  • RandomSplitter().split(dataset, frac_train, frac_valid, frac_test, seed=None) shuffles indices with NumPy and preserves total length.
  • IndexSplitter().split(dataset, frac_train, frac_valid, frac_test) takes contiguous index ranges without shuffling.
  • ScaffoldSplitter().split(dataset, frac_train, frac_valid, frac_test) groups records by Bemis-Murcko scaffold from record['smiles'] and assigns large scaffold groups first.
  • RandomScaffoldSplitter().split(dataset, frac_train, frac_valid, frac_test, seed=None) randomizes scaffold groups before assigning valid/test/train groups.
  • All splitter implementations assert that fractions sum to 1.0; explain assertion errors as split-configuration problems, not model failures.

Protein Tokenizer Pattern

  • Use ProteinTokenizer().tokenize(sequence) for character tokens.
  • Use ProteinTokenizer().convert_tokens_to_ids(tokens) for explicit tokens.
  • Use ProteinTokenizer().gen_token_ids(sequence) for <cls> + residues + <sep> IDs.
  • Known special IDs are <pad>=0, <mask>=1, <cls>=2, <sep>=3, <unk>=4; unknown residue characters map to <unk>.

Compound Utility Orientation

  • CompoundKit owns atom/bond vocabularies, fingerprint helpers, daylight functional group counts, and atom/bond feature ID helpers.
  • Compound3DKit owns atom positions, MMFF/2D pose helpers, bond lengths, and superedge angle helpers.
  • mol_to_graph_data(mol) returns a molecular graph dictionary with atom features, directed edges plus self-loops, bond features, fingerprints, and functional group counts.
  • mol_to_geognn_graph_data(mol, atom_poses, dir_type), mol_to_geognn_graph_data_MMFF3d(mol), and mol_to_geognn_graph_data_raw3d(mol) add atom_pos, bond_length, and BondAngleGraph_* fields for GEM-style geometry.
  • These compound utilities require rdkit; collate/model code usually also requires pgl and paddle.

Featurizer and Model-Zoo Map

  • Pretrain GNN featurizers: AttrmaskTransformFn, AttrmaskCollateFn, SupervisedTransformFn, SupervisedCollateFn; route full compound training to ../compound-drug-discovery/SKILL.md.
  • GEM featurizers: GeoPredTransformFn(pretrain_tasks, mask_ratio) and GeoPredCollateFn(...) build atom-bond and bond-angle graph feeds for GEM pretraining.
  • LiteGEM featurizers: LiteGEMTransformFn(config) and LiteGEMCollateFn() orient lightweight GEM graph batching.
  • Compound model zoo: PretrainGNNModel, AttrmaskModel, SupervisedModel, GeoGNNModel, GeoPredModel, and LiteGEM are Paddle/PGL-backed classes.
  • Protein model zoo: ProteinEncoderModel, ProteinModel, ProteinCriterion, and encoder/task classes depend on Paddle; route training or prediction to ../protein-sequence-function/SKILL.md.
  • Generative model orientation: seq_vae_model.VAE and sd_vae_model.MolVAE are model classes; route molecular generation workflows to ../compound-drug-discovery/SKILL.md.

Diagnostics Script

Run the bundled checker from this sub-skill directory:

python scripts/check_core_api.py --help
python scripts/check_core_api.py --repo-root <PaddleHelix checkout> --check imports --check protein-tokenizer
python scripts/check_core_api.py --repo-root <PaddleHelix checkout> --check dataset
python scripts/check_core_api.py --repo-root <PaddleHelix checkout> --check splitters

The script never downloads data or starts training. Use --repo-root when pahelix is not already installed or importable; the script adds that source tree to sys.path only for the selected check and reports optional dependency failures as actionable diagnostics.

Troubleshooting Quick Map

  • ModuleNotFoundError: pgl: expected when importing InMemoryDataset, splitters via dataset tests, featurizers, or many model-zoo paths without PGL; install compatible PGL or use dependency-light utilities.
  • ModuleNotFoundError: rdkit: expected for scaffold splitters and compound graph utilities; install RDKit or avoid scaffold/compound feature checks.
  • ModuleNotFoundError: paddle: expected for model-zoo execution; install a compatible PaddlePaddle backend before model construction/training.
  • Deprecated sklearn package installation failure: install scikit-learn directly, or use the documented compatibility environment variable only for legacy install workflows.
  • Missing smiles during scaffold split: add a string smiles key to every record or use RandomSplitter/IndexSplitter.
  • NPZ reload key errors or wrong record shapes: inspect .seq_len and .singular metadata and confirm every record has the same keys.

See references/troubleshooting.md for detailed diagnosis.

Evidence

This sub-skill is distilled from pahelix/datasets/inmemory_dataset.py, pahelix/utils/data_utils.py, pahelix/utils/protein_tools.py, pahelix/utils/splitters.py, pahelix/utils/compound_tools.py, pahelix/featurizers/*.py, pahelix/model_zoo/*.py, docs/api_doc/*.rst, pahelix/tests/import_test.py, and pahelix/utils/tests/*.py.

저장한 Skills