-
Notifications
You must be signed in to change notification settings - Fork 8
feat(add protpardelle): Add the Protpardelle-1c cc89 protein generative model. #300
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
54caeb3
d5881bb
2d4e6f6
57535b0
90fd520
90b4320
5378a17
a784508
352819c
155468b
3e6ad9a
04a42a2
d098158
b772b35
f620fa3
db224cb
471529a
f9d09e8
f052930
4d00cba
c8380cf
9a82574
f02bab7
a88eb4d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -24,16 +24,52 @@ pypi-dependencies = {"boltz" = "*", "cuequivariance-torch" = "*", "cuequivarianc | |
| platforms = ["linux-64"] | ||
|
|
||
| [tool.pixi.feature.boltz-osx] | ||
| pypi-dependencies = {"boltz" = "*", "cuequivariance-torch" = "*", "rdkit" = ">=2025.3.6"} | ||
| pypi-dependencies = {"boltz" = "*", "cuequivariance-torch" = "*", "rdkit" = ">=2025.3.6", "joblib" = "*", "sfcalculator-torch" = ">=0.3.2"} | ||
| platforms = ["osx-arm64"] | ||
|
|
||
|
|
||
| [tool.pixi.feature.protenix] | ||
| pypi-dependencies = {"protenix" = "*", "einx" = "*", "triton" = "*"} | ||
| platforms = ["linux-64"] | ||
|
|
||
| [tool.pixi.feature.protpardelle] | ||
| platforms = ["linux-64", "osx-arm64"] | ||
|
|
||
| [tool.pixi.feature.protpardelle.dependencies] | ||
| biopython = "*" | ||
| einops = "*" | ||
| huggingface_hub = "*" | ||
| hydra-core = "*" | ||
| jupyter = "*" | ||
| numpy = ">=1.25.0,<2.0" | ||
| omegaconf = "*" | ||
| pandas = "==2.3.1" | ||
| prody = "*" | ||
| pyyaml = "*" | ||
| scipy = "*" | ||
| pytorch = ">=2.6.0,<2.8" | ||
|
marcuscollins marked this conversation as resolved.
|
||
| tqdm = "*" | ||
| typer = "*" | ||
|
|
||
| [tool.pixi.feature.protpardelle.pypi-dependencies] | ||
| protpardelle = {git = "https://github.com/ProteinDesignLab/protpardelle-1c.git"} | ||
|
marcuscollins marked this conversation as resolved.
|
||
| biotite = "*" | ||
| dm-tree = "*" | ||
| jaxtyping = "*" | ||
| ml_collections = "*" | ||
| modelcif = "*" | ||
| transformers = "*" | ||
| wandb = "*" | ||
|
|
||
| [tool.pixi.feature.protpardelle.pypi-options.dependency-overrides] | ||
| pandas = "==2.3.1" | ||
|
marcuscollins marked this conversation as resolved.
|
||
|
|
||
| [project] | ||
| authors = [{email = "[email protected]", name = "Karson Chrispens"}] | ||
| authors = [ | ||
| {email = "[email protected]", name = "Karson Chrispens"}, | ||
| {email = "[email protected]", name = "Marcus D. Collins"} | ||
| ] | ||
|
|
||
| classifiers = [ | ||
| "Development Status :: 3 - Alpha", | ||
| "Intended Audience :: Science/Research", | ||
|
|
@@ -132,6 +168,8 @@ boltz-dev = {features = ["boltz", "dev"]} | |
| boltz-osx = {features = ["boltz-osx", "dev", "analysis"]} | ||
| protenix = {features = ["protenix"]} | ||
| protenix-dev = {features = ["protenix", "dev"]} | ||
| protpardelle = {features = ["protpardelle"]} | ||
| protpardelle-dev = {features = ["protpardelle", "dev"]} | ||
| rf3 = {features = ["rf3"]} | ||
| rf3-dev = {features = ["rf3", "dev"]} | ||
|
|
||
|
|
@@ -141,14 +179,16 @@ rdkit = ">=2024.3.5,<2025.9" | |
| [tool.pixi.feature.rf3.pypi-dependencies] | ||
| rc-foundry = {editable = true, extras = ["rf3"], git = "https://github.com/k-chrispens/foundry.git"} | ||
|
|
||
| [tool.pixi.pypi-dependencies] | ||
| sampleworks = {editable = true, path = "."} | ||
|
|
||
| # Workspace-level override: reciprocalspaceship (sfcalculator-torch transitive dep) | ||
| # caps pandas<=2.2.3 in its metadata, but runs fine on 2.3.1; protenix hard-pins | ||
| # pandas==2.3.1. Standardize all envs on 2.3.1 to avoid silent downgrades. | ||
| [tool.pixi.pypi-options.dependency-overrides] | ||
| pandas = "==2.3.1" | ||
| gemmi = "==0.6.7" | ||
|
|
||
|
|
||
| [tool.pixi.pypi-dependencies] | ||
| sampleworks = {editable = true, path = "."} | ||
|
|
||
| [tool.pixi.system-requirements] | ||
| cuda = "12" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,16 +5,21 @@ | |
| import sys | ||
|
|
||
| from sampleworks.utils.guidance_script_arguments import GuidanceConfig | ||
| from sampleworks.utils.guidance_script_utils import get_model_and_device, run_guidance | ||
|
|
||
|
|
||
| def main(argv: list[str] | None = None) -> int: | ||
| config = GuidanceConfig.from_cli(argv) | ||
|
|
||
| from loguru import logger | ||
|
|
||
| from sampleworks.utils.guidance_script_utils import get_model_and_device, run_guidance | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A quick question, why should we import it here not at the starting of the file?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @smallfishabc Good question, I think something must have gotten messed up with the commit history, like a rebase was missed somewhere. I shouldn't need to change this file at all. In general, imports inside functions are made to speed things up--e.g. if I only needed to import something when one particular function was called, and it was a slow import, I might guard it like this.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh, I see what's going on.... Hmmm. This is a change I should have made separately, but it had to do with reconciling arguments across the different models (protenix, protpardelle, rf3, boltz1/2) |
||
|
|
||
| logger.info(f"Running guidance with config: {config}") | ||
| device, model_wrapper = get_model_and_device( | ||
| config.device, | ||
| getattr(config, "model_checkpoint", None), | ||
| config.model, | ||
| method=getattr(config, "method", None), | ||
| config=config, | ||
| ) | ||
| result = run_guidance(config, config.guidance_type, model_wrapper, device) | ||
| return result.exit_code | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| data: | ||
| auto_calc_sigma_data: true | ||
| chain_residx_gap: 200 | ||
| dummy_fill_mode: zero | ||
| fixed_size: 512 | ||
| mixing_ratios: | ||
| - 1.0 | ||
| n_aatype_tokens: 21 | ||
| n_examples_for_sigma_data: 500 | ||
| pdb_paths: | ||
| - /scratch/users/tianyulu/augmented_ingraham_cath_bugfree | ||
|
coderabbitai[bot] marked this conversation as resolved.
marcuscollins marked this conversation as resolved.
|
||
| se3_data_augment: true | ||
| sigma_data: 10.3 | ||
| subset: | ||
| - designable_ | ||
| translation_scale: 1.0 | ||
| diffusion: | ||
| sampling: | ||
| function: uniform | ||
| s_max: 80 | ||
| s_min: 0.001 | ||
| training: | ||
| function: lognormal | ||
| psigma_mean: -0.5 | ||
| psigma_std: 1.5 | ||
| model: | ||
| compute_loss_on_all_atoms: false | ||
| conditioning_style: concat | ||
| crop_conditional: true | ||
| dummy_fill_masked_atoms: false | ||
| full_mpnn_model_path: /scratch/users/tianyulu/farfalle/ProteinMPNN/vanilla_model_weights | ||
| mpnn_model: | ||
| label_smoothing: 0.1 | ||
| n_channel: 128 | ||
| n_layers: 3 | ||
| n_neighbors: 32 | ||
| noise_cond_mult: 4 | ||
| use_self_conditioning: true | ||
| mpnn_model_checkpoint: '' | ||
| pretrained_modules: [] | ||
| struct_model: | ||
| arch: dit | ||
| n_atoms: 37 | ||
| n_channel: 256 | ||
| noise_cond_mult: 4 | ||
| uvit: | ||
| cat_pwd_to_conv: false | ||
| conv_skip_connection: false | ||
| dim_head: 32 | ||
| n_blocks_per_layer: 2 | ||
| n_filt_per_layer: [] | ||
| n_heads: 8 | ||
| n_layers: 10 | ||
| patch_size: 1 | ||
| position_embedding_max: 32 | ||
| position_embedding_type: rotary | ||
| struct_model_checkpoint: '' | ||
| task: ai-allatom | ||
| train: | ||
| batch_size: 32 | ||
| checkpoint_freq: 1 | ||
| checkpoints: [] | ||
| ckpt_path: /scratch/users/tianyulu/farfalle/out_dir/farfalle/cc89/checkpoints/epoch206_training_state.pth | ||
| clip_grad_norm: true | ||
| crop_cond: | ||
| contiguous_prob: 0.05 | ||
| discontiguous_prob: 0.9 | ||
| dist_threshold: 45.0 | ||
| max_discontiguous_res: 24 | ||
| max_span_len: 12 | ||
| recenter_coords: true | ||
| sidechain_only_prob: 0.0 | ||
| sidechain_prob: 0.9 | ||
| terms_prob: 0.5 | ||
| crop_conditional: true | ||
| decay_steps: 2000000 | ||
| eval_freq: 8000000 | ||
| eval_loss_t: | ||
| - 0.1 | ||
| - 0.3 | ||
| - 0.5 | ||
| - 0.7 | ||
| - 0.9 | ||
| fpd_length_ranges_per_chain: | ||
| - - 50 | ||
| - 256 | ||
| grad_clip_val: 1.0 | ||
| length_ranges_per_chain: | ||
| - - 166 | ||
| - 188 | ||
| lr: 0.0001 | ||
| max_epochs: 10000 | ||
| n_eval_samples: 10 | ||
| n_fpd_samples: 0 | ||
| sc_num_seqs: 4 | ||
| seed: 0 | ||
| self_cond_train_prob: 0.9 | ||
| shapes_path: /scratch/users/tianyulu/protein_shapes | ||
| subsample_eval_set: 0.05 | ||
| warmup_steps: 1000 | ||
| weight_decay: 0.0 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| """Protpardelle-1c model wrapper.""" |
Uh oh!
There was an error while loading. Please reload this page.