Isis Developer Reference
Isis::Pipeline Class Reference

This class helps to call other Isis Applications in a Pipeline. More...

#include <Pipeline.h>

Collaboration diagram for Isis::Pipeline:
Collaboration graph

Public Member Functions

 Pipeline (const QString &procAppName="")
 This is the one and only Pipeline constructor. More...
 
 ~Pipeline ()
 This destroys the pipeline. More...
 
void Prepare ()
 This method is the core of the pipeline class. More...
 
void Run ()
 This method executes the pipeline. More...
 
void SetInputFile (const char *inputParam)
 This method is used to set the original input file. More...
 
void SetInputFile (const QString &inputParam)
 This method is used to set the original input file. More...
 
void SetInputFile (const char *inputParam, const char *virtualBandsParam)
 This method is used to set the original input file. More...
 
void SetInputFile (const QString &inputParam, const QString &virtualBandsParam)
 This method is used to set the original input file. More...
 
void SetInputListFile (const char *inputParam)
 This method is used to set the original input files. More...
 
void SetInputListFile (const QString &inputParam)
 This method is used to set the original input files. More...
 
void SetInputFile (const FileName &inputFileName)
 This method is used to set the original input file. More...
 
void SetInputListFile (const FileName &inputFileName)
 This method is used to set the original input files. More...
 
void SetOutputFile (const char *outputParam)
 This method is used to set the final output file. More...
 
void SetOutputFile (const QString &outputParam)
 This method is used to set the final output file. More...
 
void SetOutputFile (const FileName &outputFile)
 This method is used to set the final output file. More...
 
void SetOutputListFile (const char *outputFileNameParam)
 This method is used to set an output list file. More...
 
void SetOutputListFile (const QString &outputFileNameParam)
 This method is used to set an output list file. More...
 
void SetOutputListFile (const FileName &outputFileNameList)
 This method is used to set an output list file. More...
 
void KeepTemporaryFiles (bool keep)
 Set whether or not to keep temporary files (files generated in the middle of the pipeline that are neither the original input nor the final output). More...
 
bool KeepTemporaryFiles ()
 Returns true if temporary files will not be deleted, false if they will. More...
 
void AddPause ()
 Add a pause to the pipeline. More...
 
void AddToPipeline (const QString &appname)
 Add a new program to the pipeline. More...
 
void AddToPipeline (const QString &appname, const QString &identifier)
 Add a new program to the pipeline. More...
 
PipelineApplicationApplication (const QString &identifier)
 This is an accessor to get a specific PipelineApplication. More...
 
PipelineApplicationApplication (const int &index)
 This is an accessor to get a specific PipelineApplication. More...
 
void SetFirstApplication (const QString &appname)
 This method disables all applications up to this one. More...
 
void SetLastApplication (const QString &appname)
 This method disables all applications after to this one. More...
 
QString Name () const
 Returns the name of the pipeline. More...
 
int Size () const
 Returns the number of applications in the pipeline. More...
 
QString OriginalInput (unsigned int branch)
 Returns the initial input file for the pipeline. More...
 
int OriginalInputSize ()
 Returns the number of input files. More...
 
int OriginalBranchesSize ()
 Returns the total number of input branches Original branches = Number of input files * Number of branches. More...
 
std::vector< QString > OriginalBranches ()
 Returns the names of the original branches of the pipeline (input files * branches if any) More...
 
QString FinalOutput (int branch=0, bool addModifiers=true)
 This gets the final output for the specified branch; this is necessary for the PipelineApplications to calculate the correct outputs to use. More...
 
QString TemporaryFolder ()
 This method returns the user's temporary folder for temporary files. More...
 
void EnableAllApplications ()
 This method re-enables all applications. More...
 
void AddOriginalBranch (QString branch)
 Start off the branches directly from the pipeline. More...
 
void SetContinue (bool pbFlag)
 Set the continue flag. More...
 

Friends

std::ostream & operator<< (std::ostream &os, Pipeline &pipeline)
 

Detailed Description

This class helps to call other Isis Applications in a Pipeline.

This object works by creating a Pipeline and setting the initial input, final output of the Pipeline which are got from the user interface. Applications are added to the Pipeline and parameters relevant to the application are set using relevant APIs'.

The Pipeline will control the flow of calls to the different applications in the Pipeline in First In First Out fashion. Also the first and last application in the Pipeline can be explicitly set. Pipeline automatically calculates the input to an application from the output of the previous application.

The Pipeline branches automatically for a list file with multiple input files or user can explicitly create branches from the Pipeline directly or from any application in the Pipeline. The branches are required when an application generates multiple outputs. Branches may be disabled / enabled and the Pipeline will figure out the input for an application whose previous app in the same branch was disabled.

Parameters for an application in a branch can be set commonly for all branches or explicitly for a branch by specifiying the branch name.

Option continue allows the pipeline to proceed with the execution inspite of any exceptions encountered while running an application in the pipeline. If continue is not enabled, then on encountering an exception the pipeline exits.

Temporary files are created and will be deleted when explicitly set by the user.

The Pipeline calls cubeatt app inherently if virtual bands are true.

It is suggested that you "cout" this object in order to debug you're usage of the class.

Refer to Applications thmproc, mocproc, hidestripe, hiproc, hinoise2 for Pipeline usage.

Here's an example usage of this class:

UserInterface &ui = Application::GetUserInterface();
Pipeline p("YourAppName");
p.SetInputFile("FROM", "BANDS");
p.SetOutputFile("TO");
p.KeepTemporaryFiles(!ui.GetBoolean("REMOVE"));
// The app "thm2isis" generates multiple outputs for a single input.
// Hence the branches have to be created to process the outputs odd, even.
p.AddToPipeline("thm2isis");
p.Application("thm2isis").SetInputParameter("FROM", false);
p.Application("thm2isis").SetOutputParameter("TO", "raw");
p.Application("thm2isis").AddBranch("even", PipelineApplication::ConstantStrings);
p.Application("thm2isis").AddBranch("odd", PipelineApplication::ConstantStrings);
p.AddToPipeline("spiceinit");
p.Application("spiceinit").SetInputParameter("FROM", false);
p.Application("spiceinit").AddParameter("PCK", "PCK");
p.Application("spiceinit").AddParameter("CK", "CK");
p.AddToPipeline("cam2map");
p.Application("cam2map").SetInputParameter("FROM", true);
p.Application("cam2map").SetOutputParameter("TO", "lev2");
p.Application("cam2map").AddParameter("even", "MAP", "MAP");
p.Application("cam2map").AddParameter("even", "PIXRES", "RESOLUTION");
if(ui.WasEntered("PIXRES")) {
p.Application("cam2map").AddConstParameter("even", "PIXRES", "MPP");
}
p.Application("cam2map").AddParameter("odd", "MAP", PipelineApplication::LastOutput);
p.Application("cam2map").AddConstParameter("odd", "PIXRES", "MAP");
p.Application("cam2map").AddConstParameter("odd", "DEFAULTRANGE", "MAP");
if(ui.WasEntered("PIXRES")) {
p.Application("cam2map").AddConstParameter("PIXRES", "MPP");
}
if(ui.GetBoolean("INGESTION")) {
p.SetFirstApplication("thm2isis");
}
else{
p.SetFirstApplication("spiceinit");
}
if(ui.GetBoolean("MAPPING")) {
p.SetLastApplication("cam2map");
}
else {
p.SetLastApplication("spiceinit");
}
p.Run();
Author
2008-08-04 Steven Lambright

Constructor & Destructor Documentation

◆ Pipeline()

Isis::Pipeline::Pipeline ( const QString &  procAppName = "")

This is the one and only Pipeline constructor.

This will initialize a pipeline object.

Parameters
procAppNameThis is an option parameter that gives the pipeline a name

◆ ~Pipeline()

Isis::Pipeline::~Pipeline ( )

This destroys the pipeline.

Member Function Documentation

◆ AddOriginalBranch()

void Isis::Pipeline::AddOriginalBranch ( QString  branch)
inline

Start off the branches directly from the pipeline.

Author
Sharmila Prasad (12/20/2010)
Parameters
branch- Branch name to be added

◆ AddPause()

void Isis::Pipeline::AddPause ( )

Add a pause to the pipeline.

◆ AddToPipeline() [1/2]

void Isis::Pipeline::AddToPipeline ( const QString &  appname)

Add a new program to the pipeline.

This method must be called before calling Pipeline::Application(...) to access it. The string used to access this program will be the program's name.

Parameters
appnameThe name of the new application

References _FILEINFO_, Isis::IException::Programmer, Isis::PipelineApplication::SetNext(), and Isis::PipelineApplication::SetPrevious().

◆ AddToPipeline() [2/2]

void Isis::Pipeline::AddToPipeline ( const QString &  appname,
const QString &  identifier 
)

Add a new program to the pipeline.

This method must be called before calling Pipeline::Application(...) to access it. The string identifier will access this program.

Parameters
appnameThe name of the new application
identifierThe program's identifier for when calling Pipeline::Application

References _FILEINFO_, Isis::IException::Programmer, Isis::PipelineApplication::SetNext(), and Isis::PipelineApplication::SetPrevious().

◆ Application() [1/2]

PipelineApplication & Isis::Pipeline::Application ( const int &  index)

This is an accessor to get a specific PipelineApplication.

This accessor is mainly in place for the output operator; it is not recommended.

Parameters
indexThe index of the pipeline application
Returns
PipelineApplication& The pipeline application

References _FILEINFO_, and Isis::IException::Programmer.

◆ Application() [2/2]

PipelineApplication & Isis::Pipeline::Application ( const QString &  identifier)

This is an accessor to get a specific PipelineApplication.

This is the recommended accessor.

Parameters
identifierThe identifier (usually name) of the application to access, such as "spiceinit"
Returns
PipelineApplication& The application's representation in the pipeline

References _FILEINFO_, and Isis::IException::Programmer.

Referenced by Isis::operator<<().

◆ EnableAllApplications()

void Isis::Pipeline::EnableAllApplications ( )

This method re-enables all applications.

This resets the effects of PipelineApplication::Disable, SetFirstApplication and SetLastApplication.

◆ FinalOutput()

QString Isis::Pipeline::FinalOutput ( int  branch = 0,
bool  addModifiers = true 
)

This gets the final output for the specified branch; this is necessary for the PipelineApplications to calculate the correct outputs to use.

Parameters
branchBranch index to get the final output for
addModifiersWhether or not to add the last name modifier
Returns
QString The final output string

References _FILEINFO_, Isis::FileName::baseName(), Isis::PipelineApplication::Enabled(), Isis::PipelineApplication::OutputBranches(), Isis::PipelineApplication::OutputExtension(), Isis::PipelineApplication::OutputNameModifier(), Isis::FileName::path(), Isis::PipelineApplication::Previous(), and Isis::IException::Programmer.

◆ KeepTemporaryFiles() [1/2]

bool Isis::Pipeline::KeepTemporaryFiles ( )
inline

Returns true if temporary files will not be deleted, false if they will.

◆ KeepTemporaryFiles() [2/2]

void Isis::Pipeline::KeepTemporaryFiles ( bool  keep)

Set whether or not to keep temporary files (files generated in the middle of the pipeline that are neither the original input nor the final output).

Parameters
keepTrue means don't delete, false means delete.

Referenced by Isis::operator<<().

◆ Name()

QString Isis::Pipeline::Name ( ) const
inline

Returns the name of the pipeline.

Referenced by Isis::operator<<().

◆ OriginalBranches()

std::vector<QString> Isis::Pipeline::OriginalBranches ( )
inline

Returns the names of the original branches of the pipeline (input files * branches if any)

Referenced by Isis::PipelineApplication::PipelineApplication().

◆ OriginalBranchesSize()

int Isis::Pipeline::OriginalBranchesSize ( )
inline

Returns the total number of input branches Original branches = Number of input files * Number of branches.

Author
Sharmila Prasad (12/20/2010)
Returns
int - Total number of branches

◆ OriginalInput()

QString Isis::Pipeline::OriginalInput ( unsigned int  branch)
inline

Returns the initial input file for the pipeline.

Parameters
branchBranch of the original input to get the filename from
Returns
QString Name of the original input file

◆ OriginalInputSize()

int Isis::Pipeline::OriginalInputSize ( )
inline

Returns the number of input files.

◆ Prepare()

void Isis::Pipeline::Prepare ( )

This method is the core of the pipeline class.

This method tells each PipelineApplication to learn about itself and calculate necessary filenames, execution calls, etc... Pipeline error checking happens in here, so if a Pipeline is invalid this method will throw the IException.

References _FILEINFO_, and Isis::IException::Programmer.

Referenced by Isis::operator<<().

◆ Run()

void Isis::Pipeline::Run ( )

◆ SetContinue()

void Isis::Pipeline::SetContinue ( bool  pbFlag)
inline

Set the continue flag.

Author
Sharmila Prasad (2/9/2011)
Parameters
pbFlag- true/false

◆ SetFirstApplication()

void Isis::Pipeline::SetFirstApplication ( const QString &  appname)

This method disables all applications up to this one.

Effectively, the application specified becomes the first application. This is not a guarantee that the application specified is enabled, it only guarantees no applications before it will be run.

Parameters
appnameThe program to start with

References _FILEINFO_, and Isis::IException::Programmer.

◆ SetInputFile() [1/5]

void Isis::Pipeline::SetInputFile ( const char *  inputParam)

This method is used to set the original input file.

This file is the first program's input, and the virtual bands will be taken directly from this parameter.

Parameters
inputParamThe parameter to get from the user interface that contains the input file

◆ SetInputFile() [2/5]

void Isis::Pipeline::SetInputFile ( const char *  inputParam,
const char *  virtualBandsParam 
)

This method is used to set the original input file.

This file is the first program's input.

Parameters
inputParamThe parameter to get from the user interface that contains the input file
virtualBandsParamThe parameter to get from the user interface that contains the virtual bands list; internal default is supported. Empty string if no virtual bands parameter exists.

◆ SetInputFile() [3/5]

void Isis::Pipeline::SetInputFile ( const FileName inputFile)

This method is used to set the original input file.

No virtual bands will be read, and the inputFile parameter will be read as a path to a file instead of as a parameter.

Parameters
inputParamA filename object containing the location of the input file
History:
2010-12-20 Sharmila Prasad - Changed p_originalBranches array to p_inputBranches

References Isis::FileName::original().

◆ SetInputFile() [4/5]

void Isis::Pipeline::SetInputFile ( const QString &  inputParam)

This method is used to set the original input file.

This file is the first program's input, and the virtual bands will be taken directly from this parameter.

Parameters
inputParamThe parameter to get from the user interface that contains the input file
History:
2010-12-20 Sharmila Prasad - Changed p_originalBranches array to p_inputBranches

References IsisAml::GetFileName(), IsisAml::GetInputAttribute(), and Isis::Application::GetUserInterface().

◆ SetInputFile() [5/5]

void Isis::Pipeline::SetInputFile ( const QString &  inputParam,
const QString &  virtualBandsParam 
)

This method is used to set the original input file.

This file is the first program's input.

Parameters
inputParamThe parameter to get from the user interface that contains the input file
virtualBandsParamThe parameter to get from the user interface that contains the virtual bands list; internal default is supported. Empty string if no virtual bands parameter exists.
History:
2010-12-20 Sharmila Prasad - Changed p_originalBranches array to p_inputBranches

References IsisAml::GetAsString(), Isis::Application::GetUserInterface(), and IsisAml::WasEntered().

◆ SetInputListFile() [1/3]

void Isis::Pipeline::SetInputListFile ( const char *  inputParam)

This method is used to set the original input files.

These files are the first program's input, a branch will be added for every line in the file, and the virtual bands will be taken directly from this parameter.

Parameters
inputParamThe parameter to get from the user interface that contains the input file

◆ SetInputListFile() [2/3]

void Isis::Pipeline::SetInputListFile ( const FileName inputFileName)

This method is used to set the original input files.

These files are the first program's input, a branch will be added for every line in the file.

Parameters
inputParamThe filename of the list file contains the input files
History:
2010-12-20 Sharmila Prasad - Changed p_originalBranches array to p_inputBranches

References Isis::FileName::expanded(), Isis::FileName::name(), and Isis::toString().

◆ SetInputListFile() [3/3]

void Isis::Pipeline::SetInputListFile ( const QString &  inputParam)

This method is used to set the original input files.

These files are the first program's input, a branch will be added for every line in the file, and the virtual bands will be taken directly from this parameter.

Parameters
inputParamThe parameter to get from the user interface that contains the input file
History:
2010-12-20 Sharmila Prasad - Changed p_originalBranches array to p_inputBranches

References IsisAml::GetFileName(), and Isis::Application::GetUserInterface().

◆ SetLastApplication()

void Isis::Pipeline::SetLastApplication ( const QString &  appname)

This method disables all applications after to this one.

Effectively, the application specified becomes the last application. This is not a guarantee that the application specified is enabled, it only guarantees no applications after it will be run.

Parameters
appnameThe program to end with

References _FILEINFO_, and Isis::IException::Programmer.

◆ SetOutputFile() [1/3]

void Isis::Pipeline::SetOutputFile ( const char *  outputParam)

This method is used to set the final output file.

If no programs generate output, the final output file will not be used. If the output file was not entered, one will be generated automatically and placed into the current working folder.

Parameters
outputParamThe parameter to get from the user interface that contains the output file; internal default is supported.

◆ SetOutputFile() [2/3]

void Isis::Pipeline::SetOutputFile ( const FileName outputFile)

This method is used to set the final output file.

If no programs generate output, the final output file will not be used. If the output file was not entered, one will be generated automatically and placed into the current working folder.

Parameters
outputFileThe filename of the output file; NOT the parameter name.

References Isis::FileName::expanded().

◆ SetOutputFile() [3/3]

void Isis::Pipeline::SetOutputFile ( const QString &  outputParam)

This method is used to set the final output file.

If no programs generate output, the final output file will not be used. If the output file was not entered, one will be generated automatically and placed into the current working folder.

Parameters
outputParamThe parameter to get from the user interface that contains the output file; internal default is supported.

References IsisAml::GetAsString(), Isis::Application::GetUserInterface(), and IsisAml::WasEntered().

◆ SetOutputListFile() [1/3]

void Isis::Pipeline::SetOutputListFile ( const char *  outputFileNameParam)

This method is used to set an output list file.

Basically, this means the output filenames are specified in the list file. Internal defaults/automatic name calculations are supported.

Parameters
outputFileNameListParameter name containing the path to the output list file

◆ SetOutputListFile() [2/3]

void Isis::Pipeline::SetOutputListFile ( const FileName outputFileNameList)

This method is used to set an output list file.

Basically, this means the output filenames are specified in the list file.

Parameters
outputFileNameListList file with output cube names

References Isis::FileName::expanded().

◆ SetOutputListFile() [3/3]

void Isis::Pipeline::SetOutputListFile ( const QString &  outputFileNameParam)

This method is used to set an output list file.

Basically, this means the output filenames are specified in the list file. Internal defaults/automatic name calculations are supported.

Parameters
outputFileNameListParameter name containing the path to the output list file

References IsisAml::GetFileName(), Isis::Application::GetUserInterface(), and IsisAml::WasEntered().

◆ Size()

int Isis::Pipeline::Size ( ) const
inline

Returns the number of applications in the pipeline.

Referenced by Isis::operator<<().

◆ TemporaryFolder()

QString Isis::Pipeline::TemporaryFolder ( )

This method returns the user's temporary folder for temporary files.

It's simply a conveinient accessor to the user's preferences.

Returns
QString The temporary folder

References Isis::PvlObject::findGroup(), and Isis::Preference::Preferences().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
Pipeline pipeline 
)
friend

The documentation for this class was generated from the following files:
Isis::PipelineApplication::ConstantStrings
@ ConstantStrings
Known strings.
Definition: PipelineApplication.h:60
Isis::Pipeline::Pipeline
Pipeline(const QString &procAppName="")
This is the one and only Pipeline constructor.
Definition: Pipeline.cpp:36
Isis::Application::GetUserInterface
static UserInterface & GetUserInterface()
Returns the UserInterface object.
Definition: Application.cpp:463
Isis::PipelineApplication::LastOutput
@ LastOutput
The very last output file. Do not use this for input parameters if it's not necessary,...
Definition: PipelineApplication.h:68