26 #ifndef PROSHADE_MAPMANIP
27 #define PROSHADE_MAPMANIP
39 proshade_signed
myRound ( proshade_double x );
40 proshade_signed
myRound ( proshade_single x );
41 void determinePDBRanges ( gemmi::Structure pdbFile, proshade_single* xFrom, proshade_single* xTo, proshade_single* yFrom,
42 proshade_single* yTo, proshade_single* zFrom, proshade_single* zTo,
bool firstModel );
43 void findPDBCOMValues ( gemmi::Structure* pdbFile, proshade_double *xCom, proshade_double *yCom, proshade_double *zCom,
bool firstModel );
44 void findMAPCOMValues ( proshade_double* map, proshade_double *xCom, proshade_double *yCom, proshade_double *zCom,
45 proshade_single xAngs, proshade_single yAngs, proshade_single zAngs, proshade_signed xFrom,
46 proshade_signed xTo, proshade_signed yFrom, proshade_signed yTo, proshade_signed zFrom,
47 proshade_signed zTo,
bool removeNegDens );
48 void rotatePDBCoordinates ( gemmi::Structure *pdbFile, proshade_double euA, proshade_double euB, proshade_double euG, proshade_double xCom,
49 proshade_double yCom, proshade_double zCom,
bool firstModel );
50 void translatePDBCoordinates ( gemmi::Structure *pdbFile, proshade_double transX, proshade_double transY, proshade_double transZ,
bool firstModel );
51 void changePDBBFactors ( gemmi::Structure *pdbFile, proshade_double newBFactorValue,
bool firstModel );
52 void removeWaters ( gemmi::Structure *pdbFile,
bool firstModel );
53 void movePDBForMapCalc ( gemmi::Structure *pdbFile, proshade_single xMov, proshade_single yMov, proshade_single zMov,
bool firstModel );
54 void generateMapFromPDB ( gemmi::Structure pdbFile, proshade_double*& map, proshade_single requestedResolution,
55 proshade_single xCell, proshade_single yCell, proshade_single zCell, proshade_signed* xTo,
56 proshade_signed* yTo, proshade_signed* zTo,
bool forceP1,
bool firstModel );
57 void moveMapByIndices ( proshade_single* xMov, proshade_single* yMov, proshade_single* zMov, proshade_single xAngs, proshade_single yAngs,
58 proshade_single zAngs, proshade_signed* xFrom, proshade_signed* xTo, proshade_signed* yFrom, proshade_signed* yTo,
59 proshade_signed* zFrom, proshade_signed* zTo, proshade_signed* xOrigin, proshade_signed* yOrigin,
60 proshade_signed* zOrigin );
61 void moveMapByFourier ( proshade_double*& map, proshade_single xMov, proshade_single yMov, proshade_single zMov, proshade_single xAngs,
62 proshade_single yAngs, proshade_single zAngs, proshade_signed xDim, proshade_signed yDim, proshade_signed zDim );
63 void moveMapByFourierInReci ( proshade_complex*& coeffs, proshade_double*& weights, proshade_single xMov, proshade_single yMov, proshade_single zMov, proshade_single xAngs,
64 proshade_single yAngs, proshade_single zAngs, proshade_signed xDim, proshade_signed yDim, proshade_signed zDim );
65 void blurSharpenMap ( proshade_double*& map, proshade_double*& maskedMap, proshade_unsign xDimS, proshade_unsign yDimS,
66 proshade_unsign zDimS, proshade_single xAngs, proshade_single yAngs, proshade_single zAngs, proshade_single blurringFactor );
67 void getMaskFromBlurr ( proshade_double*& blurMap, proshade_double*& outMap, proshade_unsign xDimS, proshade_unsign yDimS,
68 proshade_unsign zDimS, proshade_single noIQRs );
69 void getNonZeroBounds ( proshade_double* map, proshade_signed xDim, proshade_signed yDim, proshade_signed zDim, proshade_signed*& ret );
70 void addExtraBoundSpace ( proshade_unsign xDim, proshade_unsign yDim, proshade_unsign zDim, proshade_single xAngs, proshade_single yAngs,
71 proshade_single zAngs, proshade_signed*& bounds, proshade_single extraSpace );
73 proshade_unsign zDimS, proshade_single xAngs, proshade_single yAngs, proshade_single zAngs,
74 proshade_single*& corrs );
76 proshade_unsign zDimS, proshade_single xAngs, proshade_single yAngs, proshade_single zAngs,
77 proshade_single*& corrs );
78 void allocateResolutionFourierMemory ( fftw_complex*& origMap, fftw_complex*& fCoeffs, fftw_complex*& newFCoeffs, fftw_complex*& newMap, fftw_plan& planForwardFourier,
79 fftw_plan& planBackwardRescaledFourier, proshade_unsign xDimOld, proshade_unsign yDimOld, proshade_unsign zDimOld,
80 proshade_unsign xDimNew, proshade_unsign yDimNew, proshade_unsign zDimNew );
81 void releaseResolutionFourierMemory ( fftw_complex*& origMap, fftw_complex*& fCoeffs, fftw_complex*& newFCoeffs, fftw_complex*& newMap, fftw_plan& planForwardFourier,
82 fftw_plan& planBackwardRescaledFourier );
83 void changeFourierOrder ( fftw_complex*& fCoeffs, proshade_signed xDim, proshade_signed yDim, proshade_signed zDim,
bool negativeFirst );
84 void removeMapPhase ( fftw_complex*& mapCoeffs, proshade_unsign xDim, proshade_unsign yDim, proshade_unsign zDim );
85 void getFakeHalfMap ( proshade_double*& map, proshade_double*& fakeHalfMap, proshade_unsign xDimS, proshade_unsign yDimS,
86 proshade_unsign zDimS, proshade_signed fakeMapKernel );
87 void getCorrelationMapMask ( proshade_double*& map, proshade_double*& fakeHalfMap, proshade_double*& correlationMask,
88 proshade_unsign xDimS, proshade_unsign yDimS,
89 proshade_unsign zDimS, proshade_signed corrMaskKernel );
91 proshade_single xAngs, proshade_single yAngs, proshade_single zAngs,
92 proshade_single dist );
93 void connectMaskBlobs ( proshade_double*& mask, proshade_signed xDim, proshade_signed yDim, proshade_signed zDim,
94 proshade_single xAngs, proshade_single yAngs,
95 proshade_single zAngs, proshade_single maskThres );
96 void beautifyBoundaries ( proshade_signed*& bounds, proshade_unsign xDim, proshade_unsign yDim, proshade_unsign zDim, proshade_signed boundsDiffThres );
98 void distributeSpaceToBoundaries ( proshade_signed& minBound, proshade_signed& maxBound, proshade_signed oldBoundRange, proshade_signed newBoundRange );
99 void copyMapByBounds ( proshade_signed xFrom, proshade_signed xTo, proshade_signed yFrom, proshade_signed yTo, proshade_signed zFrom,
100 proshade_signed zTo, proshade_signed origXFrom, proshade_signed origYFrom, proshade_signed origZFrom,
101 proshade_unsign yDimIndices, proshade_unsign zDimIndices, proshade_unsign origXDimIndices,
102 proshade_unsign origYDimIndices, proshade_unsign origZDimIndices, proshade_double*& newMap,
103 proshade_double* origMap );