RNAstructure Classes  Version 6.2
design Class Reference

#include <design.h>

Inheritance diagram for design:
RNA Thermodynamics

Public Member Functions

 design (const char filename[], const char *const alphabet)
 Constructor. Programmer provides a filename for a ct file. More...
 
int design_sequence (double &pernucdefect, const bool random, const bool bias, const char prob_info[], const int maxdepth=5, bool heuristic=false, int MaxRedesignC=10, int MaxMutateC=4, int MaxLeafRedesignC=3, long randomSeed=1L)
 
void SpecifyRedesignLimits (int leaf, int parent, int mutate)
 
void SpecifyWeightedDefect (bool DefectWeighted)
 
- Public Member Functions inherited from RNA
 RNA (const char sequence[], const bool IsRNA=true)
 Constructor - user provides a sequence as a c string. More...
 
 RNA (const char filepathOrSequence[], const RNAInputType fileType, const char *const alphabetName, const bool allowUnknownBases=false, const bool skipThermoTables=false)
 
 RNA (const char filepathOrSequence[], const RNAInputType fileType, const Thermodynamics *copyThermo)
 
 RNA (const char filename[], const RNAInputType fileType, const bool IsRNA=true)
 Constructor - user provides a filename for existing file as a c string. More...
 
 RNA (const bool IsRNA=true)
 
int GetErrorCode () const
 Return an error code, where a return of zero is no error. More...
 
string GetFullErrorMessage () const
 
const string GetErrorDetails () const
 Returns extended details about the last error. (e.g. error messages produced during file read operations that are otherwise lost.) More...
 
void SetErrorDetails (const string &details)
 Set extended details about the last error. (e.g. error messages produced during file read operations that are otherwise lost.) More...
 
void SetSequenceLabel (const string &label)
 Set the name of the sequence. (This must be called before structure prediction for it to affect the resulting structures.) More...
 
string GetErrorMessageString (const int error) const
 Return error messages based on code from GetErrorCode and other error codes. More...
 
void ResetError ()
 
void EnsureStructureCapcacity (const int minimumStructures)
 Ensure that at a minumum number of structures have been created. More...
 
int SpecifyPair (const int i, const int j, const int structurenumber=1)
 Specify a base pair between nucleotides i and j. More...
 
int RemovePairs (const int structurenumber=1, bool removeIfLastStructure=true)
 Remove all the current base pairs in a specified structure. More...
 
int RemoveBasePair (const int i, const int structurenumber=1)
 Remove a specified pair in a specified structure. More...
 
double CalculateFreeEnergy (const int structurenumber=1, const bool UseSimpleMBLoopRules=false)
 Return the predicted Gibb's free energy change for structure # structurenumber, defaulted to 1. More...
 
double ExteriorLoopCorrection (const int structurenumber, const bool UseSimpleMBLoopRules, int min_index, int max_index)
 
int WriteThermodynamicDetails (const char filename[], const bool UseSimpleMBLoopRules=false)
 Calculate the folding free energy change for all structures and write the details of the calculation to a file. More...
 
int FoldSingleStrand (const float percent=20, const int maximumstructures=20, const int window=5, const char savefile[]="", const int maxinternalloopsize=30, bool mfeonly=false, bool simple_iloops=true, bool disablecoax=false)
 Predict the lowest free energy secondary structure and generate suboptimal structures using a heuristic. More...
 
int GenerateAllSuboptimalStructures (const float percent=5, const double deltaG=0.6)
 Predict the lowest free energy secondary structure and generate all suboptimal structures. More...
 
int MaximizeExpectedAccuracy (const double maxPercent=20, const int maxStructures=20, const int window=1, const double gamma=1.0)
 Predict the structure with maximum expected accuracy and suboptimal structures. More...
 
int PartitionFunction (const char savefile[]="", double temperature=-10.0, bool disablecoax=false, bool restoreSHAPE=true)
 Predict the partition function for a sequence. More...
 
int Rsample (const vector< double > &experimentalRestraints, RsampleData &refdata, const int randomSeed=0, const char savefile[]="", const double cparam=0.5, const double offset=1.10, const int numsamples=10000)
 
int PredictProbablePairs (const float probability=0)
 Predict structures containing highly probable pairs. More...
 
int ProbKnot (int iterations=1, int MinHelixLength=1, double threshold=0)
 Predict maximum expected accuracy structures that contain pseudoknots from either a sequence or a partition function save file. More...
 
int ProbKnotFromSample (int iterations=1, int MinHelixLength=1, double threshold=0)
 Predict maximum expected accuracy structures that contain pseudoknots from a file containing ensemble of structures. More...
 
int ReFoldSingleStrand (const float percent=20, const int maximumstructures=20, const int window=5)
 Re-predict the lowest free energy secondary structure and generate suboptimal structures using a heuristic. More...
 
int Stochastic (const int structures=1000, const int seed=1)
 Sample structures from the Boltzman ensemable. More...
 
int ForceDoubleStranded (const int i)
 Force a nucleotide to be double stranded (base paired). More...
 
int ForceFMNCleavage (const int i)
 Indicate a nucleotide that is accessible to FMN cleavage (a U in GU pair). More...
 
int ForceMaximumPairingDistance (const int distance)
 Force a maximum distance between apired nucleotides. More...
 
int ForceModification (const int i)
 Force modification for a nucleotide. More...
 
int ForcePair (const int i, const int j)
 Force a pair between two nucleotides. More...
 
int ForceProhibitPair (const int i, const int j)
 Prohibit a pair between two nucleotides. More...
 
int ForceSingleStranded (const int i)
 Force a nucleotide to be single stranded. More...
 
int GetForcedDoubleStranded (const int constraintnumber)
 Return a nucleotide that is forced double stranded. More...
 
int GetForcedFMNCleavage (const int constraintnumber)
 Return a nucleotide that is accessible to FMN cleavage. More...
 
int GetForcedModification (const int constraintnumber)
 Return a nucleotide that is accessible to modification. More...
 
int GetForcedPair (const int constraintnumber, const bool fiveprime)
 Return a nucleotide in a forced pair. More...
 
int GetForcedProhibitedPair (const int constraintnumber, const bool fiveprime)
 Return a nucleotide in a prohibited pair. More...
 
int GetForcedSingleStranded (const int constraintnumber)
 Return a nucleotide that is forced single stranded. More...
 
int GetMaximumPairingDistance ()
 Return the maximum pairing distance. More...
 
int GetNumberOfForcedDoubleStranded ()
 Return the number of nucletides forced to be paired. More...
 
int GetNumberOfForcedFMNCleavages ()
 Return the number of nucleotides accessible to FMN cleavage. More...
 
int GetNumberOfForcedModifications ()
 Return the number of nucleotides accessible to chemical modification. More...
 
int GetNumberOfForcedPairs ()
 Return the number of forced base pairs. More...
 
int GetNumberOfForcedProhibitedPairs ()
 Return the number of prohibited base pairs. More...
 
int GetNumberOfForcedSingleStranded ()
 Return the number of nucleotides that are not allowed to pair. More...
 
int ReadConstraints (const char filename[])
 Read a set of folding constraints to disk in a plain text file. More...
 
int ReadSHAPE (const char filename[], const double slope, const double intercept, RestraintType modifier=RESTRAINT_SHAPE, const bool IsPseudoEnergy=true)
 Read SHAPE data from disk. More...
 
int ReadSHAPE (const char filename[], const double dsSlope, const double dsIntercept, const double ssSlope, const double ssIntercept, RestraintType modifier=RESTRAINT_SHAPE)
 Read SHAPE data from disk including single-stranded SHAPE pseudo free energys. More...
 
int ReadDMS (const char filename[], const bool bynt=false)
 
int ReadDSO (const char filename[])
 Read double strand offset data from disk. More...
 
int ReadSSO (const char filename[])
 Read single strand offset data from disk. More...
 
int ReadExperimentalPairBonus (const char filename[], double const experimentalOffset, double const experimentalScaling)
 Read experimental pair bonuses from disk. More...
 
void RemoveConstraints ()
 Remove all folding constraints. More...
 
void SetConstraints (vector< int > ss)
 
int SetExtrinsic (int i, int j, double k)
 Add extrinsic restraints for partition function calculations. More...
 
int WriteConstraints (const char filename[])
 Write the current set of folding constraints to disk in a plain text file. More...
 
int AddComment (const char comment[], const int structurenumber=1)
 Add a comment associated with a structure. More...
 
int WriteCt (const char filename[], bool append=false, CTCommentProvider &commentProvider=CTComments::Energy) const
 Write a ct file of the structures. More...
 
int WriteDotBracket (const char filename[], const int structurenumber=-1, const DotBracketFormat format=DBN_FMT_MULTI_TITLE, CTCommentProvider &commentProvider=CTComments::Energy) const
 Write dot-bracket file of structures. More...
 
int BreakPseudoknot (const bool minimum_energy=true, const int structurenumber=0, const bool useFastMethod=true)
 Break any pseudoknots that might be in a structure. More...
 
bool ContainsPseudoknot (const int structurenumber)
 Report if there are any pseudoknots in a structure. More...
 
double GetEnsembleEnergy ()
 Get the ensemble folding free energy change. More...
 
double GetEnsembleDefect (const int structurenumber=1, const int start=0, const int end=0)
 Get the ensemble defect of a secondary structure. More...
 
double GetFreeEnergy (const int structurenumber)
 Get the folding free energy change for a predicted structure. More...
 
int GetPair (const int i, const int structurenumber=1)
 Get the nucleotide to which the specified nucleotide is paired. More...
 
double GetPairEnergy (const int i, const int j)
 Get the lowest folding free energy possible for a structure containing pair i-j. More...
 
double GetPairProbability (const int i, const int j)
 Get a base pair probability. More...
 
int GetPairProbabilities (double *arr, const int size)
 
int GetStructureNumber () const
 Get the total number of specified or predicted structures. More...
 
int DetermineDrawingCoordinates (const int height, const int width, const int structurenumber=1)
 Determine the coordinates for drawing a secondary structure. More...
 
std::string GetCommentString (const int structurenumber=1)
 Provide the comment from the ct file as a string. More...
 
int GetNucleotideXCoordinate (const int i)
 Get the X coordinate for nucleotide i for drawing a structure. More...
 
int GetNucleotideYCoordinate (const int i)
 Get the Y coordinate for nucleotide i for drawing a structure. More...
 
int GetLabelXCoordinate (const int i)
 Get the X coordinate for placing the nucleotide index label specified by i. More...
 
int GetLabelYCoordinate (const int i)
 Get the Y coordinate for placing the nucleotide index label specified by i. More...
 
char GetNucleotide (const int i)
 
int GetSequenceLength () const
 Get the total length of the sequence. More...
 
const char * GetSequence () const
 
std::string GetSequence (size_t start, size_t length=std::string::npos) const
 
bool GetBackboneType () const
 Get the backbone type. More...
 
double GetVprimeQ (const int i, const int j)
 
double GetW (const int i, const int j)
 
structure * GetStructure ()
 
void SetProgress (ProgressHandler &Progress)
 
void StopProgress ()
 
ProgressHandler * GetProgress ()
 
 ~RNA ()
 Destructor. More...
 
void CopyThermo (Thermodynamics &copy)
 Copy thermodynamic parameters from an instance of an RNA class. More...
 
- Public Member Functions inherited from Thermodynamics
 Thermodynamics (const bool isRNA=true, const char *const alphabetName=NULL, const double temperature=310.15)
 
 Thermodynamics (const Thermodynamics &copyThermo)
 
int SetTemperature (double temperature)
 Set the temperature of folding in K. More...
 
double GetTemperature () const
 
string GetAlphabetName () const
 Get the name of the extended alphabet for which thermodynamic parameters should be loaded. More...
 
int ReadThermodynamic (const char *directory=NULL, const char *alphabet=NULL, const double temperature=-1.0)
 Function to read the thermodynamic parameters. More...
 
int ReloadDataTables (const double new_temperature=-1.0)
 
bool VerifyThermodynamic ()
 Force the datatables to be read if they haven't already. Return true if the tables were already loaded or if the attempt to (re)open them succeded. More...
 
datatable * GetDatatable ()
 
datatable * GetEnthalpyTable (const char *alphabet=NULL)
 
void ClearEnergies ()
 Clear the currently loaded energy datatable and release its resources. More...
 
void ClearEnthalpies ()
 Clear the currently loaded enthalpy datatable and release its resources. More...
 
bool GetEnergyRead () const
 Return whether this instance of Thermodynamics has the paremters populated (either from disk or from another Thermodynamics class). More...
 
bool IsAlphabetRead () const
 
 ~Thermodynamics ()
 

Private Member Functions

void decompose (int nucstart, int nucend, int currentdepth, int maxdepth, int **tree, int missingstart=0, int missingend=0)
 
bool closeenoughtocut (int i, int j, int nucstart, int nucend, int missingstart, int missingend, double CLOSENESS)
 
void marktree (int beststart, int bestend, int nucstart, int nucend, int missingstart, int missingend, int currentdepth, int **tree)
 
void bestdecomposition (int nuctstart, int nucend, int currentstart, int currentend, int *beststart, int *bestend, int missingstart, int missingend)
 
double SelectSequence (int **tree, bool random, bool bias, int depth, const double pernucdefect, long seed=1)
 
double SelectSequenceHeuristic (int **tree, bool random, bool bias, int depth, const double pernucdefect, long seed=1)
 
void FindFragments (int **tree, int level, int start, int stop, int missingstart, int missingstop, vector< int > *stackstart, vector< int > *stackend, vector< int > *stackmissingstart, vector< int > *stackmissingend, vector< int > *stackfragmentdepth)
 
void FillSequence (int start, int end, int missingstart, int missingend, bool random, bool bias, randomnumber *dice, vector< vector< string > > &Helices, vector< vector< string > > &Loops)
 
int MapNuctoFragment (int j, int start, int missingstart, int missingend)
 
int MapFragmenttoNuc (int j, int start, int missingstart, int missingend)
 
void Mutation (int maxDefPos, int start, int missingstart, int missingend, char *sequence, vector< int > &Mutated)
 
void GetDefect (int start, int end, int missingstart, int missingend, vector< double > &def, double &defect, RNA *fragment)
 
void Debug1 (int start, int end, int missingstart, int missingend, char *sequence, RNA *fragment)
 
void PlaceSeqOnStack (vector< int > *stackstart, vector< int > *stackend, vector< int > *stackmissingstart, vector< int > *stackmissingend, vector< int > *stackfragmentdepth)
 
void StoreMutation (int start, int end, int missingstart, int missingend, char *sequence)
 
void StoreBestSequence (int start, int end, int missingstart, int missingend, char **sequence, int fragmentdepth)
 
char tonuc (int i)
 
int toint (char i)
 
double leafdesign (int start, int end, int missingstart, int missingend, bool random, bool bias, randomnumber *dice, vector< vector< string > > *Helices, vector< vector< string > > *Loops, double pernucdefect, Thermodynamics *thermo)
 
void LeafOptimize (const double pernucdefect, randomnumber &dice, double &defect, vector< double > &def, RNA *fragment, int start, int end, int missingstart, int missingend, char *sequence, Thermodynamics *thermo)
 
int randomnuc (randomnumber *dice)
 
void randompair (int *i, int *j, randomnumber *dice)
 

Private Attributes

int MaxRedesign
 
int MaxMutate
 
int MaxLeafRedesign
 
bool defectweighted
 
int numbering
 
vector< vector< double > > pairbias
 
vector< double > singlebias
 
bool bias_in_leaf_refinement
 

Additional Inherited Members

- Static Public Member Functions inherited from RNA
static const char * GetErrorMessage (const int error)
 Return error messages based on code from GetErrorCode and other error codes. More...
 
- Public Attributes inherited from Thermodynamics
bool isrna
 
- Protected Member Functions inherited from RNA
int FileReader (const char filename[], const RNAInputType fileType)
 
void init (const char *sequenceOrFileName, const RNAInputType fileType, const bool allowUnknownBases=false, const bool skipThermoTables=false)
 
- Protected Member Functions inherited from Thermodynamics
virtual void CopyThermo (const Thermodynamics &copy)
 Copy thermodynamic parameters from an instance of Thermodynamics class. More...
 
- Protected Attributes inherited from RNA
int ErrorCode
 
ProgressHandler * progress
 
PFPRECISION * w5
 
PFPRECISION * w3
 
PFPRECISION ** wca
 
pfdatatable * pfdata
 
DynProgArray< PFPRECISION > * w
 
DynProgArray< PFPRECISION > * v
 
DynProgArray< PFPRECISION > * wmb
 
DynProgArray< PFPRECISION > * wl
 
DynProgArray< PFPRECISION > * wmbl
 
DynProgArray< PFPRECISION > * wcoax
 
DynProgArray< PFPRECISION > * wlc
 
PFPRECISION Q
 
- Protected Attributes inherited from Thermodynamics
datatable * data
 
datatable * enthalpy
 
bool copied
 
double nominal_temperature
 
string nominal_alphabetName
 
bool skipThermoTables
 

Constructor & Destructor Documentation

◆ design()

design::design ( const char  filename[],
const char *const  alphabet 
)

Constructor. Programmer provides a filename for a ct file.

Read a ct with name filename. This is a template for the structure. The sequence in the ct file will be ignored. If IsRNA is true (default), this is RNA, and it is DNA otherwise.

Parameters
filenameis a null terminated cstring that provides the filename and path.
alphabetis c-string that specifies the alphabet (e.g. rna, dna, or custom)

Member Function Documentation

◆ bestdecomposition()

void design::bestdecomposition ( int  nuctstart,
int  nucend,
int  currentstart,
int  currentend,
int *  beststart,
int *  bestend,
int  missingstart,
int  missingend 
)
private

◆ closeenoughtocut()

bool design::closeenoughtocut ( int  i,
int  j,
int  nucstart,
int  nucend,
int  missingstart,
int  missingend,
double  CLOSENESS 
)
private

◆ Debug1()

void design::Debug1 ( int  start,
int  end,
int  missingstart,
int  missingend,
char *  sequence,
RNA fragment 
)
private

◆ decompose()

void design::decompose ( int  nucstart,
int  nucend,
int  currentdepth,
int  maxdepth,
int **  tree,
int  missingstart = 0,
int  missingend = 0 
)
private

◆ design_sequence()

int design::design_sequence ( double &  pernucdefect,
const bool  random,
const bool  bias,
const char  prob_info[],
const int  maxdepth = 5,
bool  heuristic = false,
int  MaxRedesignC = 10,
int  MaxMutateC = 4,
int  MaxLeafRedesignC = 3,
long  randomSeed = 1L 
)

Design the sequence. This function will choose a sequence with low ensemble defect to fold to the structure read in the constructor. The sequence is stored in the underlying RNA class.

Parameters
pernucdefectis the maximum allowed ensemble defect per nucleotide.
randomdetermines the method for choosing sequence. If false, use pre-selected sequences, and otherwise (true), randomly choose the sequence.
maxdepthis the maximum extent to which the structure will be sub-divided in the binary decomposition. The default is 5.
heuristicif true, avoids performing a partition function on the complete sequence. Default is false.
MaxRedesignCspecifies the maximum number of redesigns.
MaxMutateCis the maximum number of nucleotide mutations to make.
MaxLeafRedesignCis the maximum number of time a leaf will be redesigned when building the tree.
randomSeedis the seed for the random number generator.
Returns
An int error code that can be resolved to a message using RNA::GetErrorMessage. A return of 0 means no errors.

◆ FillSequence()

void design::FillSequence ( int  start,
int  end,
int  missingstart,
int  missingend,
bool  random,
bool  bias,
randomnumber *  dice,
vector< vector< string > > &  Helices,
vector< vector< string > > &  Loops 
)
private

◆ FindFragments()

void design::FindFragments ( int **  tree,
int  level,
int  start,
int  stop,
int  missingstart,
int  missingstop,
vector< int > *  stackstart,
vector< int > *  stackend,
vector< int > *  stackmissingstart,
vector< int > *  stackmissingend,
vector< int > *  stackfragmentdepth 
)
private

◆ GetDefect()

void design::GetDefect ( int  start,
int  end,
int  missingstart,
int  missingend,
vector< double > &  def,
double &  defect,
RNA fragment 
)
private

end else, (j!=missingstart)

◆ leafdesign()

double design::leafdesign ( int  start,
int  end,
int  missingstart,
int  missingend,
bool  random,
bool  bias,
randomnumber *  dice,
vector< vector< string > > *  Helices,
vector< vector< string > > *  Loops,
double  pernucdefect,
Thermodynamics thermo 
)
private

◆ LeafOptimize()

void design::LeafOptimize ( const double  pernucdefect,
randomnumber &  dice,
double &  defect,
vector< double > &  def,
RNA fragment,
int  start,
int  end,
int  missingstart,
int  missingend,
char *  sequence,
Thermodynamics thermo 
)
private

◆ MapFragmenttoNuc()

int design::MapFragmenttoNuc ( int  j,
int  start,
int  missingstart,
int  missingend 
)
private

◆ MapNuctoFragment()

int design::MapNuctoFragment ( int  j,
int  start,
int  missingstart,
int  missingend 
)
private

◆ marktree()

void design::marktree ( int  beststart,
int  bestend,
int  nucstart,
int  nucend,
int  missingstart,
int  missingend,
int  currentdepth,
int **  tree 
)
private

◆ Mutation()

void design::Mutation ( int  maxDefPos,
int  start,
int  missingstart,
int  missingend,
char *  sequence,
vector< int > &  Mutated 
)
private

◆ PlaceSeqOnStack()

void design::PlaceSeqOnStack ( vector< int > *  stackstart,
vector< int > *  stackend,
vector< int > *  stackmissingstart,
vector< int > *  stackmissingend,
vector< int > *  stackfragmentdepth 
)
private

◆ randomnuc()

int design::randomnuc ( randomnumber *  dice)
private

◆ randompair()

void design::randompair ( int *  i,
int *  j,
randomnumber *  dice 
)
private

◆ SelectSequence()

double design::SelectSequence ( int **  tree,
bool  random,
bool  bias,
int  depth,
const double  pernucdefect,
long  seed = 1 
)
private

defect<=pernucdefect

◆ SelectSequenceHeuristic()

double design::SelectSequenceHeuristic ( int **  tree,
bool  random,
bool  bias,
int  depth,
const double  pernucdefect,
long  seed = 1 
)
private

◆ SpecifyRedesignLimits()

void design::SpecifyRedesignLimits ( int  leaf,
int  parent,
int  mutate 
)

Change the defaults for maximum redesigns. This function allows the programmer to change the maximum number of redesigns at three levels from the defaults. The defaults are to redesign leaves (leaf) up to 3 times, parent nodes (parent) up to 10 times, and to mutate nucleotides for defect-weighted mutation (mutate) up to 4 times.

Parameters
leafis an int that specifies the maximum number of times the leaf is re-optimized at random.
parentis an int that specifies the maximum number of redesigns per parent node.
mutateis an int that specifies the maximum number of times a nucleotide will be mutated during defect-weighted reoptimization.

◆ SpecifyWeightedDefect()

void design::SpecifyWeightedDefect ( bool  DefectWeighted)

Change the default for whether weighted-defect optimization should occur. This function allows the programmer to change whether the ascent back up the tree (if check of weighted defect fails) should only redesign a fraction of the sequence. The default is for this to occur.

Parameters
DefectWeightedis a bool that specifies whether defect-weighted re-optimization should occur (true=yes, false=no).

◆ StoreBestSequence()

void design::StoreBestSequence ( int  start,
int  end,
int  missingstart,
int  missingend,
char **  sequence,
int  fragmentdepth 
)
private

◆ StoreMutation()

void design::StoreMutation ( int  start,
int  end,
int  missingstart,
int  missingend,
char *  sequence 
)
private

◆ toint()

int design::toint ( char  i)
private

◆ tonuc()

char design::tonuc ( int  i)
private

Member Data Documentation

◆ bias_in_leaf_refinement

bool design::bias_in_leaf_refinement
private

◆ defectweighted

bool design::defectweighted
private

◆ MaxLeafRedesign

int design::MaxLeafRedesign
private

◆ MaxMutate

int design::MaxMutate
private

◆ MaxRedesign

int design::MaxRedesign
private

◆ numbering

int design::numbering
private

◆ pairbias

vector<vector<double> > design::pairbias
private

◆ singlebias

vector<double> design::singlebias
private

The documentation for this class was generated from the following files: