47 std::cout <<
"Distance: " <<
distance << std::endl;
50 <<
"Number of sampling grids: " <<
numGrids << std::endl;
57 addUsageLine(
"This program takes an input metadata and projects each image onto a lower dimensional space using the selected method");
61 addParamsLine(
" [--distance <d=Correlation>] : Distance between images");
63 addParamsLine(
" Euclidean: Euclidean distance between images, no alignment");
64 addParamsLine(
" Correlation: Correlation between images after alignment");
65 addParamsLine(
" [--randomSample <file> <num=3>] : Generates a random sample of the reduced map with num grids in each direction");
66 addExampleLine(
"xmipp_transform_dimred -i images.xmd --randomSample randomSample.xmd");
104 size_t Xdim, Ydim, Zdim, Ndim;
119 for (
size_t objId :
SFin.
ids())
165 std::vector<double> dimredProj;
166 std::vector< Matrix1D< double > > coor;
170 coor.push_back(dummy);
174 for (
size_t objId :
SFin.
ids())
183 std::vector<double> minCoor, maxCoor;
186 double minval, maxval;
187 coor[
n].computeMinMax(minval, maxval);
188 minCoor.push_back(minval);
189 maxCoor.push_back(maxval);
194 squares.
resizeNoCopy(numParticles, (
int)pow(num+1,outputDim));
199 for (
size_t i=0; i<numParticles; i++)
202 for (
int n=(outputDim-1);
n>=0; --
n)
209 index+=(int)
floor(( (
VEC_ELEM(coor[
n],i) - minCoor[n]) / (maxCoor[n] - minCoor[n]))*num);
217 int numElemFirstRow = 0;
222 std::vector<Matrix1D<double> > selectedCoor;
225 selectedCoor.push_back(dummy);
231 std::vector<String> fnImg;
267 std::vector<double> dimredProj;
271 for (
size_t objId :
SFin.
ids())
virtual void produceSideInfo()
Produce side info.
__host__ __device__ float2 floor(const float2 v)
double alignImages(const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3)
void setInputData(Matrix2D< double > &X)
Set input data.
void sqrt(Image< double > &op)
void setDefaultComment(const char *param, const char *comment)
const Matrix2D< double > & getReducedData()
Get reduced data.
DimRedAlgorithm * algorithm
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
void resizeNoCopy(int Ydim, int Xdim)
#define MAT_ELEM(m, i, j)
const char * getParam(const char *param, int arg=0)
virtual void reduceDimensionality()=0
Reduce dimensionality.
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
void addExampleLine(const char *example, bool verbatim=true)
virtual void readParams()
Read argument from command line.
int verbose
Verbosity level.
void estimateDimension()
Estimate dimensionality.
virtual void defineParams()
Define parameters.
void generate_mask(bool apply_geo=false)
DimRedDistance2 distance
Distance function.
#define BINARY_CIRCULAR_MASK
void resizeNoCopy(int Xdim)
bool checkParam(const char *param)
void addUsageLine(const char *line, bool verbatim=false)
void initZeros(const MultidimArray< T1 > &op)
unsigned int randomize_random_generator()
const MultidimArray< int > & get_binary_mask() const
int getIntParam(const char *param, int arg=0)
void addParamsLine(const String &line)