|
Download model/include/silent_tools/README.md from OneScience-Group/dl_binder_design: direct link, hf CLI and curl.
- Browser
- Download file 5.09 kB
-
https://huggingface.co/OneScience-Group/dl_binder_design/resolve/main/model/include/silent_tools/README.md
- Command line
-
hf download hf://OneScience-Group/dl_binder_design/model/include/silent_tools/README.md
-
curl -L -o README.md https://huggingface.co/OneScience-Group/dl_binder_design/resolve/main/model/include/silent_tools/README.md
5.09 kB
| # silent_tools | |
| A bunch of shell utilities for dealing the silent files | |
| ```bash | |
| # make a silent file | |
| silentfrompdbs *.pdb > my.silent | |
| # ask what's in a silent file | |
| silentls my.silent | |
| # ask how many things are in a silent file | |
| silentls my.silent | wc -l | |
| # extract all pdbs from a silent file | |
| silentextract my.silent | |
| # extract the first 10 pdbs from a silent file | |
| silentls my.silent | head -n 10 | silentextractspecific my.silent | |
| # extract a random 10 pdbs from a silent file | |
| silentls my.silent | shuf | head -n 10 | silentextractspecific my.silent | |
| # extract a specific pdb from a silent file | |
| silentextractspecific my.silent name_of_pdb_0001 | |
| # produce a scorefile from a silent file | |
| silentscorefile my.silent | |
| # combine silent files | |
| cat 1.silent 2.silent 3.silent > my.silent | |
| # ensure all pdbs in silent file have unique names | |
| silentls my.silent | silentrename my.silent > uniq.silent | |
| # remove _0001 from all the names in a silent file | |
| silentls my.silent | sed 's/_0001$//g' | silentrename my.silent > renamed.silent | |
| # make a new silent file with the first 10 pdbs | |
| silentls my.silent | head -n 10 | silentslice my.silent > new.silent | |
| # get all sequence from a silent file | |
| silentsequence my.silent > my.seq | |
| # split a silent file into groups of 100 | |
| silentsplit my.silent 100 | |
| ``` | |
| # Installation | |
| Installation is simple. Simply clone the repository and add it to your path. | |
| ```bash | |
| cd ~ | |
| mkdir software | |
| cd software | |
| git clone https://github.com/bcov77/silent_tools | |
| cd silent_tools | |
| echo "PATH=\$PATH:$(pwd)" | |
| ``` | |
| These commands will print a line that looks like `PATH=...`. Add this to your .bashrc | |
| Additionally, `silentfrompdbs` and `silentextract` require Rosetta. If you have already installed PyRosetta in your | |
| default python, then you're already good to go. Otherwise you'll need to make some symlinks. | |
| ```bash | |
| cd ~/software/silent_tools | |
| ln -s /my/path/to/rosetta/main/source/bin/score_jd2 . | |
| ln -s /my/path/to/rosetta/main/source/bin/extract_pdbs . | |
| ``` | |
| # Refresher on Silent Files | |
| There are many types of silent files, but there is only one type that should ever be used. <b>Binary silent files</b> are | |
| the only type that should ever be used. | |
| There are precisely 2 reasons to use silent files: | |
| 1. All of your outputs are in one file (instead of 1M pdbs...) | |
| 2. Silent files load 10X faster than pdbs. | |
| Both of these points are huge. You won't clog up filesystems and you won't have to transfer absurd numbers of files between | |
| systems. Additionally, the faster load times make a huge difference when you forget to run a filter and have to | |
| load all 1M of your outputs just to spend 0.1 second analyzing each one. | |
| To tell Rosetta to output to a silent file, use this: | |
| ```bash | |
| rosetta_scripts ... -out:file:silent_struct_type binary -out:file:silent out.silent | |
| ``` | |
| This will produce one silent file with all your pdbs. | |
| If you produce many silent files, it is almost always easier to combine them into one giant one. | |
| ```bash | |
| cat runs/*/out.silent > combined.silent | |
| ``` | |
| To tell Rosetta to read from a silent file, use this: | |
| ```bash | |
| rosetta_scripts ... -in:file:silent_struct_type binary -in:file:silent in.silent | |
| ``` | |
| If you only want to work with a subset of the designs in a silent file, the easy solution is to do this: | |
| ```bash | |
| rosetta_scripts ... -in:file:silent_struct_type binary -in:file:silent in.silent -tags tag1 tag2 tag3 tag4 | |
| OR | |
| rosetta_scripts ... -in:file:silent_struct_type binary -in:file:silent in.silent -tagfile tags.list | |
| ``` | |
| However, a better way is this: | |
| ```bash | |
| silentslice in.silent tag1 tag2 tag3 tag4 > tmp.silent | |
| rosetta_scripts ... -in:file:silent_struct_type binary -in:file:silent tmp.silent | |
| OR | |
| cat tags.list | silentslice in.silent > tmp.silent | |
| rosetta_scripts ... -in:file:silent_struct_type binary -in:file:silent tmp.silent | |
| ``` | |
| This way, Rosetta doesn't need to read the entire silent file. You only give it the bare minimum. `silentsplit` is | |
| useful here too. | |
| # But I don't want to extract silent files | |
| Extracting silent files is so easy though! | |
| ```bash | |
| silentextract my.silent | |
| ``` | |
| But I only want to look at one silent pdb! | |
| ```bash | |
| silentextractspecific my.silent that_one_I_want_to_look_at | |
| ``` | |
| What about a list of pdbs? | |
| ```bash | |
| cat list_of_tags.list | silentextractspecific my.silent | |
| ``` | |
| --- | |
| I would argue to you that silent files provide a more natural way to work with pdbs. Consider a workflow where we make | |
| a bunch of outputs and then filter by column 10 in the scorefile. | |
| With silent files: | |
| ```bash | |
| cat runs/*/out.silent > combined.silent | |
| silentscorefile combined.silent | |
| cat combined.sc | awk '{if ($10 > 100) {print $NF}}' | silentextractspecific combined.silent | |
| ``` | |
| Without silent files: | |
| ```bash | |
| find runs/ -name '*.pdb' > pdbs.list | |
| cat runs/*/*.sc > combined.sc | |
| cat combined.sc | awk '{if ($10 > 100) {print $NF ".pdb"}}' | grep -f - pdbs.list > good_paths.list | |
| cat good_paths.list | xargs cp -t . | |
| ``` | |
| Both methods work, but I hope you agree that the one with silent files is cleaner. `runs/` may be safely deleted in the | |
| silent file case leaving you with a single file representing your whole run. | |