// Read images
ImageType::Pointer input =
- clitk::readImage<ImageType>(args_info.input_arg, args_info.verbose_flag);
+ clitk::readImage<ImageType>(args_info.input_arg, args_info.verbose_flag);
ImageType::Pointer inputSquared =
- clitk::readImage<ImageType>(args_info.inputSquared_arg, args_info.verbose_flag);
+ clitk::readImage<ImageType>(args_info.inputSquared_arg, args_info.verbose_flag);
// Create Output
ImageType::Pointer output = ImageType::New();
int NumberOfEvents = args_info.NumberOfEvents_arg;
while ( !pi.IsAtEnd() ) {
- double squared = pii.Get();
- double mean = pi.Get();
- double uncert = sqrt((NumberOfEvents*squared - mean*mean) / ((NumberOfEvents-1)*(mean*mean)));
- if (!IsNormal(uncert)) uncert = 1.;
- po.Set(uncert);
- ++pi;
- ++pii;
- ++po;
+ double squared = pii.Get();
+ double mean = pi.Get();
+ double uncert = sqrt((NumberOfEvents*squared - mean*mean) / (NumberOfEvents-1));
+ if(!args_info.absolute_flag)
+ uncert /= std::abs(mean);
+ if (!IsNormal(uncert)) uncert = args_info.default_arg;
+ po.Set(uncert);
+ ++pi;
+ ++pii;
+ ++po;
}
-// *po = sqrt( (NumberOfEvents*squared - mean*mean) /
-// ((NumberOfEvents-1)*(mean*mean)) );
-// ++po;
-
-
// Write output image
// DD(clitk::GetExtension(args_info.output_arg));
if (clitk::GetExtension(args_info.output_arg) != "txt") {
- clitk::writeImage<ImageType>(output, args_info.output_arg, args_info.verbose_flag);
+ clitk::writeImage<ImageType>(output, args_info.output_arg, args_info.verbose_flag);
}
else {
- std::ofstream os;
- clitk::openFileForWriting(os, args_info.output_arg);
- typedef itk::ImageRegionConstIterator<ImageType> IteratorType;
- IteratorType pi(output, output->GetLargestPossibleRegion());
- pi.GoToBegin();
- os << "# Image size = " << output->GetLargestPossibleRegion().GetSize() << std::endl;
- os << "# Image spacing = " << output->GetSpacing() << std::endl;
- os << "# Number of events = " << NumberOfEvents << std::endl;
- while (!pi.IsAtEnd()) {
- os << pi.Get() << std::endl;
- ++pi;
- }
+ std::ofstream os;
+ clitk::openFileForWriting(os, args_info.output_arg);
+ typedef itk::ImageRegionConstIterator<ImageType> IteratorType;
+ IteratorType pi(output, output->GetLargestPossibleRegion());
+ pi.GoToBegin();
+ os << "# Image size = " << output->GetLargestPossibleRegion().GetSize() << std::endl;
+ os << "# Image spacing = " << output->GetSpacing() << std::endl;
+ os << "# Number of events = " << NumberOfEvents << std::endl;
+ while (!pi.IsAtEnd()) {
+ os << pi.Get() << std::endl;
+ ++pi;
+ }
}
}
# file clitkImageRescaleIntensity.ggo
package "clitk"
-version "Rescale intensity in the image"
+version "Compute the uncertainty of simulation outputs using Chetty's history-by-history's method"
-option "config" - "Config file" string no
-option "input" i "Input image filename" string yes
-option "inputSquared" s "Input squared image filename" string yes
-option "output" o "Output image filename" string yes
-option "NumberOfEvents" n "Number of events" int yes
-option "verbose" v "Verbose" flag off
+option "config" - "Config file" string no
+option "input" i "Input image filename" string yes
+option "inputSquared" s "Input squared image filename" string yes
+option "output" o "Output image filename" string yes
+option "NumberOfEvents" n "Number of events" int yes
+option "verbose" v "Verbose" flag off
+option "absolute" a "Absolute instead of the relative" flag off
+option "default" d "Default when input is 0." double no default="1."