Banner showing base of Eiffel tower

Github

Download version 1.4.8: Windows or Linux

Example: Protein Folding using 2D HP model

This project has 44 classes.

ECF: protein-folding.ecf

Various implementations of an optimal protein folding algorithm using the 2D HP model Includes both a single and multi-core implementation.

This project was a joint collaboration between Gerrit Leder and Finnian Reilly. Gerrit developed the implemented the 2D HP algorithm in Eiffel and Finnian optimized it's performance and created a multi-core parallel computation version.

The multi-core version showcases the Eiffel-Loop class EL_PROCEDURE_DISTRIBUTER.

See: Sourceforge repository PF_HP-mt

Directory: example/protein-folding/source

[ . ]

. /app

. /constants

. /folding

. /folding/1_0

. /folding/2_0

. /folding/2_0/grid

. /folding/folds

. /support

. /test/set

. /test/support

[ . ]

APPLICATION_ROOT

Application root

Further Information

Click on class link to see instructions.

BUILD_INFO

Build specification

Further Information

Click on class link to see notes.

app

AUTOTEST_APP

Command line interface to test sets

LIMITED_ARRAY_TEST_SET
BOOLEAN_GRID_TEST_SET
PROTEIN_FOLDING_TEST_SET

MULTI_CORE_PF_HP_2_1_APP

PF_HP Ver 1.0: brute force proteinfolding in the 2D HP Model Multi-core model (threads)

ONE_CORE_PF_1_0_APP

PF_HP Ver 1.0: brute force proteinfolding in the 2D HP Model

Further Information

Click on class link to see instructions.

ONE_CORE_PF_2_0_APP

PF_HP Ver 1.0: brute force proteinfolding in the 2D HP Model Single-core model (thread)

constants

BOOLEAN_CONSTANTS

Boolean constants

DIRECTION_CONSTANTS

Direction constants

FS_DIRECTION_CONSTANTS

Constants for class FOLD_SEQUENCE

POINT_SET_CONSTANTS

Sets of points around current grid position

folding

BOOLEAN_GRID

2D grid of boolean values

DEFAULT_LOSS_CALCULATOR

Default loss calculator

DIRECTION_ROUTINES

Generate direction constants code

LOSS_CALCULATOR

Loss calculator

MULTI_CORE_PF_COMMAND

PROTEIN_FOLDING_COMMAND with the computations distributed over multiple cores

PF_BOOL_STRING

BOOL_STRING with added string conversion functions

PROTEIN_FOLDING_APPLICATION

Command line interface to commands conforming to PROTEIN_FOLDING_COMMAND

folding/1_0

GRID_1_0

PF_HP Ver 1.0: brute force proteinfolding in the 2D HP Model

PF_COMMAND_1_0

Prediction of protein-folding in the 2D HP Model version 1.0

TOOL_1_0

Refactored utility methods from class PF_HP

folding/2_0

LIMITED_PF_COMMAND_2_0

Caculates minimum losses for a partial set of fold direction permutations. These limited permutations can be assigned to a thread for losses caculations.

MULTI_CORE_PF_COMMAND_2_1

Implementation of MULTI_CORE_PF_COMMAND with a grid conforming to GRID_2_X

PF_COMMAND_2_0

Implementation of PROTEIN_FOLDING_COMMAND_2_0 with a grid conforming to GRID_2_X

PROTEIN_FOLDING_COMMAND_2_0

Prediction of protein-folding in the 2D HP Model for grids conforming to GRID_2_X. Version 2.0

folding/2_0/grid

GRID_2_2

Two-dimensional BOOLEAN_GRID

GRID_2_3

Two-dimensional BOOLEAN_GRID

GRID_2_4

Two-dimensional BOOLEAN_GRID

Further Information

Click on class link to see notes.

GRID_2_5

Two-dimensional BOOLEAN_GRID using nested inspect for double direction loss calc

GRID_2_6

Two-dimensional BOOLEAN_GRID using nested inspect for double direction loss calc

GRID_2_7

Two-dimensional BOOLEAN_GRID

Further Information

Click on class link to see notes.

GRID_2_X

Two-dimensional BOOLEAN_GRID with base class GRID_2_* classes

folding/folds

FOLD_ARRAY

Sequence of fold directions

FOLD_ARRAY_LIST

List of folds with object comparison

FOLD_GRID

Fold grid

FOLD_SEQUENCE

An optimized form of fold direction sequences using a sequence of mini-sequences each packed into a 64 bit integer. Each mini-sequence contains 18 bit-shifted direction letters of 3 bits each. The highest 10 bits contain two 5-bit numbers representing the mini-sequence current item and current count.

LIMITED_FOLD_ARRAY

Fold array that permutes a limited number of times up to upper_iteration_count This object represents a "chunk of work" that a worker thread will have to do. upper_iteration_count defines how many iterations the thread will perform. If it is set too low the routine {EL_WORK_DISTRIBUTER}.do_final might hang.

support

PROTEIN_FOLDING_COMMAND

Prediction of protein-folding in 2D HP model

SE_ARRAY2

SmartEiffel compatible 2 dimensional array

test/set

BOOLEAN_GRID_TEST_SET

Tests for class FOLD_SEQUENCE and BOOLEAN_GRID

LIMITED_ARRAY_TEST_SET

Test set for LIMITED_FOLD_ARRAY

PROTEIN_FOLDING_TEST_SET

Protein folding test set

SE_ARRAY2_TEST_SET

Test suite for SmartEiffel compatible array

test/support

TESTABLE_FOLD_ARRAY

Fold array that updates CRC checksum in calc_losses

TESTABLE_LIMITED_FOLD_ARRAY

Fold array that updates CRC checksum in calc_losses