/usr/include/OpenMS/VISUAL/TOPPASToolVertex.h is in libopenms-dev 1.11.1-5.
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 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | // --------------------------------------------------------------------------
// OpenMS -- Open-Source Mass Spectrometry
// --------------------------------------------------------------------------
// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
// ETH Zurich, and Freie Universitaet Berlin 2002-2013.
//
// This software is released under a three-clause BSD license:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of any author or any participating institution
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
// For a full list of authors, refer to the file AUTHORS.
// --------------------------------------------------------------------------
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// --------------------------------------------------------------------------
// $Maintainer: Johannes Junker $
// $Authors: Johannes Junker, Chris Bielow $
// --------------------------------------------------------------------------
#ifndef OPENMS_VISUAL_TOPPASTOOLVERTEX_H
#define OPENMS_VISUAL_TOPPASTOOLVERTEX_H
#include <OpenMS/VISUAL/TOPPASVertex.h>
#include <OpenMS/DATASTRUCTURES/Param.h>
#include <QtCore/QVector>
namespace OpenMS
{
/**
@brief A vertex representing a TOPP tool
Besides TOPPASScene, this class contains most of the remaining functionality of
TOPPAS regarding the execution of pipelines. Once a pipeline run is started
from TOPPASScene, the execution is propagated from tool to tool and the
TOPP tools are actually called from here.
@ingroup TOPPAS_elements
*/
class OPENMS_GUI_DLLAPI TOPPASToolVertex :
public TOPPASVertex
{
Q_OBJECT
public:
/// current status of the vertex
enum TOOLSTATUS {TOOL_READY, TOOL_SCHEDULED, TOOL_RUNNING, TOOL_SUCCESS, TOOL_CRASH, TOOLSTATUS_SIZE};
/// Stores the information for input/output files/lists
struct IOInfo
{
///Standard constructor
IOInfo() :
type(IOT_FILE),
param_name(),
valid_types()
{
}
///Copy constructor
IOInfo(const IOInfo & rhs) :
type(rhs.type),
param_name(rhs.param_name),
valid_types(rhs.valid_types)
{
}
///The type
enum IOType
{
IOT_FILE,
IOT_LIST
};
///Comparison operator
bool operator<(const IOInfo & rhs) const
{
if (type != rhs.type)
{
return type == IOT_FILE;
}
else
{
return param_name.compare(rhs.param_name) < 0;
}
}
///Assignment operator
IOInfo & operator=(const IOInfo & rhs)
{
type = rhs.type;
param_name = rhs.param_name;
valid_types = rhs.valid_types;
return *this;
}
///The type of the parameter
IOType type;
///The name of the parameter
String param_name;
///The valid file types for this parameter
StringList valid_types;
};
/// Default constructor
TOPPASToolVertex();
/// Constructor
TOPPASToolVertex(const String & name, const String & type = "");
/// Copy constructor
TOPPASToolVertex(const TOPPASToolVertex & rhs);
/// Destructor
virtual ~TOPPASToolVertex();
/// Assignment operator
TOPPASToolVertex & operator=(const TOPPASToolVertex & rhs);
/// returns the name of the TOPP tool
virtual String getName() const;
/// Returns the type of the tool
const String & getType() const;
/// Fills @p input_infos with the required input file/list parameters together with their valid types.
void getInputParameters(QVector<IOInfo> & input_infos) const;
/// Fills @p output_infos with the required output file/list parameters together with their valid types.
void getOutputParameters(QVector<IOInfo> & output_infos) const;
// documented in base class
virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget);
// documented in base class
virtual QRectF boundingRect() const;
// documented in base class
virtual QPainterPath shape() const;
// documented in base class
virtual void setTopoNr(UInt nr);
// documented in base class
virtual void reset(bool reset_all_files = false);
/// Sets the Param object of this tool
void setParam(const Param & param);
/// Returns the Param object of this tool
const Param & getParam();
/// Checks if all parent nodes have finished the tool execution and, if so, runs the tool
void run();
/// Updates the vector containing the lists of current output files for all output parameters
/// using the input files as guidance
/// Returns true on success, on failure the error_message is filled
bool updateCurrentOutputFileNames(const RoundPackages & pkg, String & error_message);
/// return if tool failed or is ready etc.
TOOLSTATUS getStatus() const;
/// Lets the user edit the parameters of the tool
void editParam();
/// Returns the number of iterations this tool has to perform
int numIterations();
/// Returns the full directory (including preceding tmp path)
String getFullOutputDirectory() const;
/// Returns the directory where this tool stores its output files
String getOutputDir() const;
/// Creates all necessary directories
void createDirs();
/// Opens the folder where the file is contained
void openContainingFolder();
/// Opens the files in TOPPView
void openInTOPPView();
/// Refreshes the parameters of this tool, returns if their has been a change
bool refreshParameters();
/// underlying TOPP tool found and parameters fetched?! (done in C'Tor)
bool isToolReady() const;
/// Toggle breakpoint
void toggleBreakpoint();
/// Called when the QProcess in the queue is called: emits 'toolStarted()'
virtual void emitToolStarted();
/// invert status of recycling (overriding base class)
virtual bool invertRecylingMode();
public slots:
/// Called when the execution of this tool has finished
void executionFinished(int ec, QProcess::ExitStatus es);
/// Called when the running TOPP tool produces output
void forwardTOPPOutput();
/// Called when the tool is started
void toolStartedSlot();
/// Called when the tool has finished
void toolFinishedSlot();
/// Called when the tool has crashed
void toolCrashedSlot();
/// Called when the tool has failed
void toolFailedSlot();
/// Called when the tool was scheduled for running
virtual void toolScheduledSlot();
/// Called by an incoming edge when it has changed
virtual void inEdgeHasChanged();
/// Called by an outgoing edge when it has changed
virtual void outEdgeHasChanged();
signals:
/// Emitted when the tool is started
void toolStarted();
/// Emitted when the tool is finished
void toolFinished();
/// Emitted when the tool crashes
void toolCrashed();
/// Emitted when the tool execution fails
void toolFailed(const QString & message = "");
/// Emitted from forwardTOPPOutput() to forward the signal outside
void toppOutputReady(const QString & out);
protected:
///@name reimplemented Qt events
//@{
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * e);
//@}
/// determines if according to current status_, a parameter change would invalidate the pipeline status (e.g., because this node was already processed)
bool doesParamChangeInvalidate_();
/// renames SUFFICES of the output files created by the TOPP tool by inspecting file content
bool renameOutput_();
/// Initializes the parameters with standard values (from -write_ini), uses the parameters from the old_ini_file if given, returns if parameters have changed (if old_ini_file was given)
bool initParam_(const QString & old_ini_file = "");
/// Fills @p io_infos with the required input/output file/list parameters. If @p input_params is true, input params are returned, otherwise output params.
void getParameters_(QVector<IOInfo> & io_infos, bool input_params) const;
/// Writes @p param to the @p ini_file
void writeParam_(const Param & param, const QString & ini_file);
/// Helper method for finding good boundaries for wrapping the tool name. Returns a string with whitespaces at the preferred boundaries.
QString toolnameWithWhitespacesForFancyWordWrapping_(QPainter * painter, const QString & str);
/// The name of the tool
String name_;
/// The type of the tool, or "" if it does not have a type
String type_;
/// The temporary path
String tmp_path_;
/// The parameters of the tool
Param param_;
/// current status of the tool
TOOLSTATUS status_;
/// tool initialization status: if C'tor was successful in finding the TOPP tool, this is set to 'true'
bool tool_ready_;
/// UID for output files
static UInt uid_;
/// Breakpoint set?
bool breakpoint_set_;
/// smart naming of round-based filenames
/// when basename is not unique we take the preceding directory name
void smartFileNames_(std::vector< QStringList >& filenames);
};
}
#endif
|