This repo contains several interconnected tools for constructing orthogonal (sub)sets of coiled coils.
fastscore: a tool that takes a list of peptide sequences in a .fasta file, and scores their pairwise interactionspyccsscore,jsccscore: Python and Javascript bindings for the scoring functions used byfastscoresetbuilder: attempts to build a large orthogonal set from a smaller onesolver: takes an interaction matrix produced byfastscoreand outputs the largest orthogonal set
The code requires a functional C++20 compiler, Python 3 development libraries and OpenMP. It can be build with CMake in the following way:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$PWD" ..
cmake --build . --config Release
cmake --install . --config ReleaseThe only exception to this is jsccscore, which is built separately using the WASI SDK. See its README.md for more details.
The build was tested on Windows 10 running Visual Studio 16.8.5 and Python 3.8.5 (Anaconda) as well as Ubuntu 20.10 running GCC 10.2.0 and Python 3.8.6.
First, we generate an initial set of 4-heptad peptides.
mkdir data
python src/util/01_generate.py >data/full4096.fastaNext, we compute the pairwise scores using fastscore
./build/fastscore data/full4096.fastaYou will see 3 additional files in your data/ directory: full4096.bin, full4096.align.bin and full4096.orientation.bin. These files contain the matrices of interaction scores, as well as the "best" alignment and orientation, respectively.
You can view the interaction scores with the 02_plot_score_matrices.py utility:
python src/util/02_plot_score_matrices.py data/full4096.binIn order to construct the interaction graph, you need to compute the interaction score thresholds. They can be computed using 03_recommend_cutoff.py:
python src/util/03_recommend_cutoff.py data/full4096.binNow, you can use these cutoffs to construct the interaction graph and find an orthogonal set in it:
./build/solver data/full4096.bin --binding-cutoff=-8.5 --nonbinding-cutoff=-7The solver will output the orthogonal set to a .pairs file with the same name as the score matrix. In our case, the largest orthogonal set will be saved in data/full4096.pairs.