modify-package

The subcommand is meant for development use only, and is only available when pestifer is installed as an editable source package. It allows modifications to your source package, including adding and deleting examples and updating atomselect macros.

This subcommand will only work on a full source repository, so if you want to use it, you will need to fork the repository cameronabrams/pestifer on GitHub and then clone your fork to your local machine. If you have not already done so, you can do this with the following commands:

git clone git@github.com:your-name/pestifer.git # assuming you have SSH access to your github account and you forked pestifer
cd pestifer
pip install -e . # so that you can tell `pestifer` to modify itself

I also recommend creating a Git branch for your modifications, so you can easily revert them if needed:

git checkout -b my-modifications

Adding an Example

I developed most of the examples by iteration, so I would start with a simple YAML config file and then modify it to add new features or test new functionality. The simplest way to start with a new example is to use pestifer new-system. For example, consider the myoglobin example. I started with:

$ cd
$ mkdir ~/1mob_working_directory # create a working directory
$ cd ~/1mob_working_directory
$ pestifer new-system --id 1mob # this is the PDB ID for sperm whale myoglobin
$ pestifer build 1mob.yaml # this will run the psfgen task and generate a PSF file for the system

This run built successfully. So I rebuilt a full template config:

$ pestifer build 1mob.yaml --full

Then I edited 1mob.yaml to add a salt concentration specification to the solvate task. Then I ran it again:

$ pestifer build 1mob.yaml

That also built successfully, so I added a new example to the pestifer package after switching to a new branch:

$ cd ~/Git/pestifer        # my local source repository
$ git branch -b new-1mob   # create a new branch for the example
$ cd ~/1mob_working_directory  # where I have the 1mob.yaml file
$ pestifer modify-package --add-example 1mob.yaml  # add the example to the package

This will copy the file 1mob.yaml to the appropriate location in pestifer source package, and it will also update the docs/source/examples/ex19/1mob.rst file to include a link to the new example. Then I edited the docs/source/examples/ex19/1mob.rst file to add a description of the example and how it works. Finally, I committed the changes:

$ git add .
$ git commit -m "Add 1mob example"

Then, I recompiled the documenation while my package was still in the new-1mob branch:

$ cd ~/Git/pestifer/docs
$ make html

And I made sure the new example was there. It also appeared correctly as number 19 when displaying the examples:

$ pestifer show-resources examples

    Examples:

       ID      DBID  Name                            Title
        1      6pti  bpti1                           Bovine Pancreatic Trypsin Inhibitor (BPTI)
        2      6pti  bpti2                           BPTI with phosphate ion excluded in salty solution
        3      6pti  bpti3                           BPTI, no phosphate, some random mutations plus deletion of one disulfide
        4      6pti  bpti4                           BPTI, no phosphate, introducing a disulfide via mutations
        5      1f7a  hiv-protease                    HIV-1 protease dimer
        6      1fas  green-mamba-toxin               Fasciculin 1, an Anti-Acetylcholinesterase Toxin from Green Mamba Snake Venom
        7      4zmj  hiv-sosip-env-ectodomain1       Closed, Unliganded HIV-1 BG505 Env SOSIP-664 Trimer
        8      4tvp  hiv-sosip-env-ectodomain2       Closed, PGT122/35O22-Liganded HIV-1 BG505 Env SOSIP.664 Trimer (Fabs removed)
        9      8fad  hiv-ad8-env-ectodomain          HIV-1 Env Trimer 8fad
       10      8fae  hiv-ae2-env-ectodomain          HIV-1 Env Trimer 8fae
       11      7txd  hiv-sosip-env-ectodomain3       HIV-1 Env Trimer 7txd, substitutions, no ligands
       12      5vn3  hiv-sosip-env-ectodomain4       HIV-1 Env Trimer 5vn3, excluding sCD4 and Fab chains, with Gly3 stubs replacing missing v1/2
       13      2ins  insulin-hexamer                 hexameric insulin
       14      4zxb  insulin-receptor-ectodomain     insulin receptor ectodomain, Fabs removed
       15      7xix  sars-cov2-S-BA2                 BA.2 SARS-CoV-2 Spike 7xix, fully glycosylated using grafts, and cleaved
       16      6e8w  hiv-mpertm3-membrane1           HIV-1 gp41 MPER-TM trimer 6e8w embedded in DMPC/DHPC bilayer
       17      6e8w  hiv-mpertm3-membrane2           HIV-1 gp41 MPER-TM trimer 6e8w embedded in model viral bilayer
       18      5fkw  ecoli-polymerase                E. Coli replicative DNA polymerase complex bound to a primer-template DNA
       19      1mob  1mob                            Sperm whale myoglobin

I then renamed this example using the modify-package subcommand:

$ pestifer modify-package --example-action rename --example-id 19 --new-example-name sperm-whale-myoglobin

Satisfied with the example, I merged the branch back into main:

$ git checkout main
$ git merge new-1mob
$ git branch -d new-1mob

If you want to add an example, you can do so in your own fork of the repository, and then submit a pull request to have it merged into the main repository.