/usr/include/BALL/STRUCTURE/sideChainPlacementProcessor.h is in libball1.4-dev 1.4.3~beta1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | #ifndef BALL_STRUCTURE_SIDECHAINPLACEMENTPROCESSOR_H
#define BALL_STRUCTURE_SIDECHAINPLACEMENTPROCESSOR_H
#ifndef BALL_CONCEPT_PROCESSOR_H
#include <BALL/CONCEPT/processor.h>
#endif
#ifndef BALL_KERNEL_ATOMCONTAINER_H
#include <BALL/KERNEL/atomContainer.h>
#endif
#ifndef BALL_DATATYPE_OPTIONS_H
# include <BALL/DATATYPE/options.h>
#endif
namespace BALL
{
/** Side Chain Placement Processor
\ingroup StructureMiscellaneous
*/
/** Placement of side chains.
*
* Given the path to the SCWRL binary in the option Option::SCWRL_BINARY_PATH;
* the processor computes side chain conformations for the given side chains.
* If no selection is given all side chains are considered.
* The option Option::MUTATE_SELECTED_SIDE_CHAINS can be used to mutate selected
* amino acids as specified in the member mutated_sequence_.
*
* <br>
* Example code: <br>
* \code
*
SideChainPlacementProcessor scpp;
scpp.options.set(SideChainPlacementProcessor::Option::MUTATE_SELECTED_SIDE_CHAINS, true);
System sys;
PDBFile mol("myfile.pdb");
mol >> sys;
String mutated_seq = "arCdcCeg";
scpp.setMutations(mutated_seq);
sys.apply(scpp);
\endcode
*/
class BALL_EXPORT SideChainPlacementProcessor
: public UnaryProcessor<AtomContainer>
{
public:
/** @name Constant Definitions
*/
//@{
/// Option names
struct BALL_EXPORT Option
{
/** technique to compute the side chain placement
*/
static const char* METHOD;
/** the path to the scwrl binary
*/
static const char* SCWRL_BINARY_PATH;
/** An optional input file name for Scwrl.
*
* If this is set to "" (default), we will use a
* temporary file that is cleaned after the processor has
* finished.
*/
static const char* SCWRL_INPUT_FILE;
/** An optional input sequence file name for Scwrl.
*
* If this is set to "" (default), we will use a
* temporary file that is cleaned after the processor has
* finished.
*/
static const char* SCWRL_SEQUENCE_FILE;
/** An optional file name for the Scwrl output.
*
* If this is set to "" (default), we will use a
* temporary file that is cleaned after the processor has
* finished and that is created by Scwrl itself.
*
* If this is set to something else, we skip the Scwrl
* execution and read in this file directly.
*/
static const char* SCWRL_OUTPUT_FILE;
/** mutate and compute side chain positions for selected amino acids
*/
static const char* MUTATE_SELECTED_SIDE_CHAINS;
};
/// Default values for options
struct BALL_EXPORT Default
{
static const String METHOD;
static const String SCWRL_BINARY_PATH;
static const bool MUTATE_SELECTED_SIDE_CHAINS;
static const String SCWRL_INPUT_FILE;
static const String SCWRL_SEQUENCE_FILE;
static const String SCWRL_OUTPUT_FILE;
};
struct BALL_EXPORT Method
{
/**
* SCWRL4 is a program for predicting side-chain conformations for a given protein backbone.
*/
static const String SCWRL_4_0;
//static const String SCWRL_SERVER;
//static const String ILP;
};
//@}
BALL_CREATE(SideChainPlacementProcessor);
/** @name Constructors and Destructors
*/
//@{
/// Default Constructor
SideChainPlacementProcessor();
/// Copy Construcor
SideChainPlacementProcessor(const SideChainPlacementProcessor& scpp);
/// Destructor
virtual ~SideChainPlacementProcessor();
//@}
/** @name Processor-related methods
*/
//@{
/// Processor method which is called before the operator()-call.
virtual bool start();
/** Clears the datastructures.
* <b>NOTE:</b> The options remain!
* Use setDefaultOptions() to clear the options.
*/
void clear();
/** Operator () for the processor
*
* Called with \link Default Default\endlink-options the processor
* assigns side chain torsion angles to residues.
*
* The processor can be applied to a system, a protein, or a chain.
* The selection mechanism can be used to restrict the processor to
* certain residues. If no selection is given all side chains are considered.
* The option Option::MUTATE_SELECTED_SIDE_CHAINS can be used to mutate selected
* amino acids as specified in the member mutated_sequence_
* (see \link setMutations(String mutationed_seq) setMutations(String mutationed_seq) \endlink.
*
* @param ac the AtomContainer to which the processor is applied.
*/
virtual Processor::Result operator ()(AtomContainer& ac);
/// Processor method which is called after the operator()-call.
virtual bool finish();
//@}
/** @name Accessors
*/
//@{
/** Resets the options to default values.
*/
void setDefaultOptions();
/** Set the mutation indicating sequence.
*/
void setMutations(String mutated_seq) {mutated_sequence_ = mutated_seq;}
/** Get the mutated sequence.
*/
const String& getMutations() const {return mutated_sequence_;}
/** Get the mutated sequence.
*/
String getMutations() {return mutated_sequence_;}
//@}
/** @name Assignment
*/
//@{
/// assignment operator
SideChainPlacementProcessor& operator = (const SideChainPlacementProcessor& scpp);
//@}
/** @name Public Attributes
*/
//@{
/// options
Options options;
//@}
protected:
/** Reads, checks and stores the options.
*
* @return bool - false if one of the options got an invalid value.
* @return bool - true otherwise
*/
bool readOptions_();
/// Sequence in OneLetterCode with mutated residues.
String mutated_sequence_;
// The processor state.
bool valid_;
};
} // namespace BALL
#endif // BALL_STRUCTURE_SIDECHAINPLACEMENTPROCESSOR_H
|