ThreeB 1.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

Classes | Typedefs | Functions
General utility functions.

## Classes
struct | MT19937
| Useful wrapper for MT19937 random number generator class. More...
class | Kahan
| Class implementing the Kahan summation algorithm to allow accurate summation of very large numbers of doubles. More...
## Typedefs
typedef std::pair < CVD::ImageRef, CVD::ImageRef > | BBox
## Functions
double | ln (double x)
Vector | spots_to_Vector (const vector< Vector< 4 > > &s)
vector< Vector< 4 > > | spots_to_vector (const Vector<> &s)
Image< byte > | scale_to_bytes (const Image< float > &im, float lo, float hi)
Image< byte > | scale_to_bytes (const Image< float > &im)
Image< float > | average_image (const vector< Image< float > > &ims)
vector< string > | split (const string &line)
template<class C >
string | xtoa (const C &x)
template<class C >
C | atox (const string &s, const string &msg)
set< ImageRef > | dilate_mask (const vector< ImageRef > &v, double r)
vector< int > | SampledMultispot::sequence (int n)
double | sign (double x)
float | sq (float f)
const std::vector < CVD::SubImage< float > > | sub_images (const std::vector< CVD::Image< float > > &im, CVD::ImageRef pos, CVD::ImageRef size)
std::pair< CVD::ImageRef, CVD::ImageRef > | boundingbox (const std::vector< CVD::ImageRef > &all_spots)
template<class Stream >
void | open_or_die (Stream &save_spots, const std::string &save_spots_file)

## Typedef Documentation

typedef std::pair<CVD::ImageRef, CVD::ImageRef> BBox

Deffinition of a pixel aligned bounding box.

Definition at line 68 of file utility.h.

## Function Documentation

double ln | ( | double | x | ) | `[inline]`

Computes the natural logarithm, but returns -1e100 instead of inf for an input of 0.

This prevents trapping of FPU exceptions.

Parameters:

  x | x

Returns:
  ln x

Definition at line 34 of file forward_algorithm.h.

Referenced by backward_sampling(), diff_log_log_normal(), forward_algorithm(), forward_algorithm_delta(), forward_algorithm_delta2(), forward_algorithm_hessian(), forward_backward_algorithm(), hess_log_log_normal(), log_log_normal(), and FitSpots::try_modifying_model().

    {
        if(x == 0)
            return -1e100;
        else
            return std::log(x);
    }

Vector spots_to_Vector | ( | const vector< Vector< 4 > > & | s | ) |

There are two sensible ways of storing the state vector of spot positions.

This function converts between them. See also spots_to_vector.

Parameters:

  s | list of spots to convert

Definition at line 118 of file multispot5.cc.

Referenced by FitSpots::optimize_each_spot_in_turn_for_several_passes(), FitSpots::run(), and FitSpots::try_modifying_model().

    {
        Vector<> r(s.size()*4);
        for(unsigned int i=0; i < s.size(); i++)
        {
            r[i*4+0] = s[i][0];
            r[i*4+1] = s[i][1];
            r[i*4+2] = s[i][2];
            r[i*4+3] = s[i][3];
        }
        return r;
    }

vector<Vector<4> > spots_to_vector | ( | const Vector<> & | s | ) |

There are two sensible ways of storing the state vector of spot positions.

This function converts between them. See also spots_to_Vector.

Parameters:

  s | list of spots to convert

Definition at line 135 of file multispot5.cc.

Referenced by NegativeFreeEnergy::compute_with_mask(), generate_state_parameters_ye_olde(), and NegativeFreeEnergy::operator()().

    {
        vector<Vector<4> > r(s.size()/4);
        for(unsigned int i=0; i < r.size(); i++)
            r[i] = s.slice<Dynamic, 4>(i*4, 4);
        return r;
    }

Image<byte> scale_to_bytes | ( | const Image< float > & | im,
|  | float | lo,
|  | float | hi
| ) |  |

Normalize an image for display purposes.

Definition at line 145 of file multispot5.cc.

Referenced by FitSpots::optimize_each_spot_in_turn_for_several_passes(), and FitSpots::try_modifying_model().

    {
            Image<byte> out(im.size());
            for(int r=0; r < out.size().y-0; r++)
                    for(int c=0; c < out.size().x-0; c++)
                            out[r][c] = (int)floor((im[r][c]-lo)*255/(hi-lo));
            return out;
    }

Image<byte> scale_to_bytes | ( | const Image< float > & | im | ) |

Normalize an image for display purposes.

Definition at line 156 of file multispot5.cc.

    {
            float lo = *min_element(im.begin(), im.end());
            float hi = *max_element(im.begin(), im.end());
            Image<byte> out(im.size());
            for(int r=0; r < out.size().y-0; r++)
                    for(int c=0; c < out.size().x-0; c++)
                            out[r][c] = (int)floor((im[r][c]-lo)*255/(hi-lo));

            return out;
    }

Image<float> average_image | ( | const vector< Image< float > > & | ims | ) |

Average the input image stack for display purposes.

Definition at line 170 of file multispot5.cc.

References assert_same_size().

    {
        assert_same_size(ims);
        Image<float> r(ims[0].size(), 0);

        for(unsigned int i=0; i < ims.size(); i++)
            transform(r.begin(), r.end(), ims[i].begin(), r.begin(), plus<float>());

        transform(r.begin(), r.end(), r.begin(), bind2nd(multiplies<float>(), 1./ims.size()));
        return r;
    }

vector<string> split | ( | const string & | line | ) |

Tokenize a line.

Definition at line 934 of file multispot5.cc.

Referenced by parse_log_file().

    {
        vector<string> v;
        istringstream i(line);
        string s;

        while(!i.eof())
        {
            i >> s;
            if(i.fail())
                break;
            v.push_back(s);
        }
        return v;
    }

template<class C >

string xtoa | ( | const C & | x | ) | `[inline]`

Generic version of itoa.

How many times has this been reimplemented??

Parameters:

  x | Value to convert to string

Definition at line 954 of file multispot5.cc.

Referenced by parse_log_file().

    {
        ostringstream os;
        os << x;
        return os.str();
    }

template<class C >

C atox | ( | const string & | s,
|  | const string & | msg
| ) |  | `[inline]`

Inverse of xtoa() How many times has this been reimplemented??

Parameters:

  s | String to convert
  msg | Mesage to print on error

Definition at line 966 of file multispot5.cc.

    {
        C c;
        istringstream i(s);
        i >> c;
        if(i.fail())
            throw LogFileParseError("Error parsing " + msg + ". Text is `" + s + "'.");
        return c;
    }

set<ImageRef> dilate_mask | ( | const vector< ImageRef > & | v,
|  | double | r
| ) |  |

Very simple and inefficient dilation function.

Definition at line 1338 of file multispot5.cc.

    {
        vector<ImageRef> m = getDisc(r);

        set<ImageRef> ret;

        for(unsigned int i=0; i < v.size(); i++)
            for(unsigned int j=0; j < m.size(); j++)
                ret.insert(v[i] + m[j]);

        return ret;
    }

vector<int> SampledMultispot::sequence | ( | int | n | ) | `[inline]`

Create a sequence of integers.

These can be used as observations in an observation class by forward_algorithm() and etc.

Parameters:

  n | Length of sequence

Definition at line 188 of file sampled_multispot.h.

Referenced by FitSpots::optimize_each_spot_in_turn_for_several_passes().

    {
        vector<int> v;
        for(int i=0; i < n; i++)
            v.push_back(i);
        return v;
    }

double sign | ( | double | x | ) | `[inline]`

computes the sign of x

Parameters:

  x | x

Returns:

Definition at line 38 of file utility.h.

    {
        return x>=0?1:-1;
    }

float sq | ( | float | f | ) | `[inline]`

The ubiquitous square function.

Parameters:

  f | Number to square

Returns:
  square of the number

Definition at line 48 of file utility.h.

Referenced by auto_fixed_scaling(), NegativeFreeEnergy::compute_with_mask(), diff_log_log_normal(), hess_log_log_normal(), log_log_normal(), log_normal_std(), log_probability_spot(), log_probability_spot_diff(), log_probability_spot_hess(), NegativeFreeEnergy::operator()(), spot_shape_diff_position(), spot_shape_hess_position(), and NegativeFreeEnergy::variance_from_sample().

    { return f*f; }

const std::vector<CVD::SubImage<float> > sub_images | ( | const std::vector< CVD::Image< float > > & | im,
|  | CVD::ImageRef | pos,
|  | CVD::ImageRef | size
| ) |  |

Cut sub images out of every member of a vector of images.

Parameters:

  im | Images to be cut
  pos | Top left corner
  size | Size of the patch

Returns:
  subimages.

std::pair<CVD::ImageRef, CVD::ImageRef> boundingbox | ( | const std::vector< CVD::ImageRef > & | all_spots | ) |

Compute the bounding box of a set of points.

Parameters:

  all_spots | List of points

Referenced by FitSpots::optimize_each_spot_in_turn_for_several_passes(), and FitSpots::try_modifying_model().

template<class Stream >

void open_or_die | ( | Stream & | save_spots,
|  | const std::string & | save_spots_file
| ) |  |

Parameters:

  save_spots | Stream
  save_spots_file | File to open

Definition at line 83 of file utility.h.

Referenced by mmain().

    {
        using std::cerr;
        using std::endl;
        using std::strerror;
        using std::exit;
        save_spots.open(save_spots_file.c_str());
        int err = errno;

        if(!save_spots.good())
        {
            cerr << "***********************************************************\n";
            cerr << "ERROR: failed to open " << save_spots_file << ": " <<strerror(err) << endl;
            cerr << "***********************************************************\n";
            exit(1);
        }
    }