Seg2Dgel
Class Sg2hash

java.lang.Object
  extended by Seg2Dgel.Sg2glb
      extended by Seg2Dgel.Sg2hash

public class Sg2hash
extends Sg2glb

Class Sg2hash specifies the picture hash table used by the 2D gel spot segmenter. There may be more than one hash table used so we make the data dynamic. E.g., hashFBL, hashWS etc.

A hash table (hIdxTbl or hXYtbl)[0:sizeHashPrime] is used to determine if a (x,y) coordinate is in the hash table and where (if its value is non:zero). Formerly a linear search of the FBL or WS was performed, but the hash function take its place and is much faster. Prime number hashing is used. The hash table will grow if required. When the hash table is "released", we merely need to clear the entires. This may be faster than just reallocating the memory, although for larger hash tables, it may just be faster to reallocate the memory.

The packing format is as follows:

       # bits      24         16
              -----------------------
 hIdxTbl[]    | free | index to FBL |
              -----------------------

       # bits     16     16
              --------------
  hXYtbl[]    |   X  |  Y  |
              --------------
This code was derived and refactored from GELLAB-II sg2gii C language files.

This work was produced by Peter Lemkin of the National Cancer Institute, an agency of the United States Government. As a work of the United States Government there is no associated copyright. It is offered as open source software under the Mozilla Public License (version 1.1) subject to the limitations noted in the accompanying LEGAL file. This notice must be included with the code. The Open2Dprot Mozilla and Legal files are available on http://Open2Dprot.sourceforge.net/.

Version:
$Date: 2005/10/23 12:44:55 $ $Revision: 1.5 $
Author:
P. Lemkin, NCI-Frederick, Frederick, MD, 21702
See Also:
Open2Dprot Home

Field Summary
private  Sg2fbl fblHash
          instance of Final Blob List (FBL) associated with the hash
private  int[] hIdxTbl
          hash table index to FBL or WS stack data which is the associated hash table value.
private  int[] hXYtbl
          hash table packed XY (x<<16 | y) data used as the key.
(package private)  int[] pixBitMap
          [FUTURE] alternate hashing schem using a pix bitmap to lookup pixel membership.
 int sizeHashPrime
          current hash table prime number size
 int sizeHashPrimeDefault
          default hash table prime number size
private  Sg2wrk wrkHash
          instance of Working Stack (WS) associated with the hash
 
Fields inherited from class Seg2Dgel.Sg2glb
acc, accDatabaseFile, accDatabaseSwitch, accFile, accFormatMode, allowTouchingEdgesSwitch, applicationName, argsV, averageODSwitch, avg, avgPixFile, banner, bannerTitle, baseImageFileName, baseStatusTime, batchDir, bfav, bfavm, bfavm1, bfavp, bfavp1, bfog, bfogm, bfogm1, bfogm2, bfogm3, bfogm4, bfogm5, bfogp, bfogp1, bfogp2, bfogp3, bfogp4, bfogp5, bkg, BKGRD_CODE, bkgrdCorrectionSwitch, bkgrdPixFile, bkgrdSizeFlag, BLACK, boundaryInSSFSwitch, bufbkg, bufcc, bufmag, bufrest, c11, c12, c13, c14, c15, c16, c17, c18, c19, c1a, c1b, c1c, c1d, c1e, c1f, c1g, c1h, c21, c22, c23, c24, c25, c26, c27, c28, c29, c2a, c2b, c2c, c2d, c2e, c2f, c2g, c2h, c31, c32, c33, c34, c35, c36, c37, c38, c39, c3a, c3b, c3c, c3d, c3e, c3f, c3g, c3h, c41, c42, c43, c44, c45, c46, c47, c48, c49, c4a, c4b, c4c, c4d, c4e, c4f, c4g, c4h, c51, c52, c53, c54, c55, c56, c57, c58, c59, c5a, c5b, c5c, c5d, c5e, c5f, c5g, c5h, c61, c62, c63, c64, c65, c66, c67, c68, c69, c6a, c6b, c6c, c6d, c6e, c6f, c6g, c6h, c71, c72, c73, c74, c75, c76, c77, c78, c79, c7a, c7b, c7c, c7d, c7e, c7f, c7g, c7h, c81, c82, c83, c84, c85, c86, c87, c88, c89, c8a, c8b, c8c, c8d, c8e, c8f, c8g, c8h, c91, c92, c93, c94, c95, c96, c97, c98, c99, c9a, c9b, c9c, c9d, c9e, c9f, c9g, c9h, ca1, ca2, ca3, ca4, ca5, ca6, ca7, ca8, ca9, caa, cab, cac, cacheDir, cad, cae, caf, cag, cah, cal, cal2gray, calFile, cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9, cba, cbb, cbc, cbd, cbe, cbf, cbg, cbh, cc, cc1, cc2, cc3, cc4, cc5, cc6, cc7, cc8, cc9, cca, ccb, ccc, ccd, cce, ccf, ccg, cch, ccMinSize, ccMinSizeSwitch, ccNum, ccPixFile, cd1, cd2, cd3, cd4, cd5, cd6, cd7, cd8, cd9, cda, cdb, cdc, cdd, cde, cdf, cdg, cdh, computingWindowSwitch, coneOfSilenceMode, CONSOLE_FLAG, ctlCorePixSwitch, cwx1, cwx2, cwy1, cwy2, data, DATE, dbSample, dbSpot, dbug, DBUG_ADD_INTERIOR_CC_PIXELS, DBUG_BND_ANALYSIS, DBUG_CALC_FEATURES, DBUG_CHAIN_CODE_RLM_ANALYSIS, DBUG_CONSOLE, DBUG_CVT_BND_TO_CHAINCODE, DBUG_DRAW_NOTCH_PAIR_LINE, DBUG_DRAW_SAT_SPOT_BND, DBUG_DUMP_CC_PPX, DBUG_FILL_CORNERS, DBUG_FILL_HOLES_IN_PCC_CONCAVITIES, DBUG_FIND_BND_NOTCHES_IN_CHAIN_CODE, DBUG_FIND_SPOT_LIST, DBUG_INNER_LOOP_FIND_SPOT, DBUG_MAX_PROPAGATE, DBUG_NBR_COMPONENTS, DBUG_PIX_DBCODE, DBUG_PRINT_GRAY2CAL_MAP, DBUG_PROP_SAT_SPOTS, DBUG_PROP_SPOT_TO_2ND_MAXIMA, DBUG_PUSH_XY_INTO_FBL, DBUG_RMV_CONCAVITIES, DBUG_RMV_INTERIOR_CC_PIXELS, DBUG_ROUND_CORNERS, DBUG_SPLIT_CHECK_SPOT, DBUG_SPLIT_PIX_BY_FBL_BND_ANALSIS, DBUG_SWITCHES, dbugBits, dbugBitsHelpStr, dbugBitsPixFlag, dbx1, dbx2, dby1, dby2, debugSwitch, defaultSwitch, defaultTypeCode, deleteIsolatedPixelsSwitch, demoFileList, demoSwitch, DFT_2D_GEL, DFT_2D_LC_MS, DFT_NO_DB, didPropSaturatedSpots, didSplitSpotFlag, diffODSwitch, docFileList, dotsSwitch, dpx1, dpx2, dpy1, dpy2, draw, drawBoundaryOverlayType, drawBoundarySwitch, drawDotOverlayType, drawMEROverlayType, drawMERSwitch, drawPlusOverlayType, drawPlusSwitch, drawSxSyEllipseSwitch, drawSxSyOverlayType, drawTitleSwitch, dtdSwitch, ENABLE_DEVELOPER_DEBUGGING, ENABLE_SATURATED_SPOTS, ENABLE_SPOT_SPLITTING, fbl, fileSeparator, fio, fnd, fourSqrtPi, gHist, glbPercentThr, gray2cal, gridSize, hashFBL, HASHFBLPRIME, hashWS, histThreshold, i0R, i10, i11, i12, i13, i14, i15, i16, i17, i18, i2U, i4L, i6D, ini, inPixFile, ISOLATED_PIXEL_CODE, j11, j12, j13, j14, j15, j16, j17, j18, j19, j1a, j1b, j1c, j1d, j1e, j1f, j1g, j1h, j21, j22, j23, j24, j25, j26, j27, j28, j29, j2a, j2b, j2c, j2d, j2e, j2f, j2g, j2h, j31, j32, j33, j34, j35, j36, j37, j38, j39, j3a, j3b, j3c, j3d, j3e, j3f, j3g, j3h, j41, j42, j43, j44, j45, j46, j47, j48, j49, j4a, j4b, j4c, j4d, j4e, j4f, j4g, j4h, j51, j52, j53, j54, j55, j56, j57, j58, j59, j5a, j5b, j5c, j5d, j5e, j5f, j5g, j5h, j61, j62, j63, j64, j65, j66, j67, j68, j69, j6a, j6b, j6c, j6d, j6e, j6f, j6g, j6h, j71, j72, j73, j74, j75, j76, j77, j78, j79, j7a, j7b, j7c, j7d, j7e, j7f, j7g, j7h, j81, j82, j83, j84, j85, j86, j87, j88, j89, j8a, j8b, j8c, j8d, j8e, j8f, j8g, j8h, j91, j92, j93, j94, j95, j96, j97, j98, j99, j9a, j9b, j9c, j9d, j9e, j9f, j9g, j9h, ja1, ja2, ja3, ja4, ja5, ja6, ja7, ja8, ja9, jaa, jab, jac, jad, jae, jaf, jag, jah, jarFileList, jarLibrFileList, jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jba, jbb, jbc, jbd, jbe, jbf, jbg, jbh, jc1, jc2, jc3, jc4, jc5, jc6, jc7, jc8, jc9, jca, jcb, jcc, jcd, jce, jcf, jcg, jch, jd1, jd2, jd3, jd4, jd5, jd6, jd7, jd8, jd9, jda, jdb, jdc, jdd, jde, jdf, jdg, jdh, keepInputImageSwitch, KILL_SPOT_CODE, killSpotColor, laplacianSwitch, legalImageFileExtens, lineLaplacianHeight, lineLaplacianWidth, lowPassSize, lowpassSwitch, lp13xZZSwitch, lp3x3Switch, lp5x5Switch, lp7x7Switch, mag2ndPixFile, MAX_BUFFERED_SPOTS, MAX_CC_CODE, MAX_INTERIOR_FBL_SIZE, MAX_PCC_CODE, maxColsToPrint, maxGhist, maxGrayPixel, MAXSUBSPOTS, meanGhist, merx1, merx2, merxp1, merxp2, mery1, mery2, meryp1, meryp2, MHISTSIZE, MIN_CC_CODE, MIN_PCC_CODE, MINBLOBAREA, minGhist, MINSPLITSPOTSIZE, nBitsPerPixel, nBkgrdSize, nBytesPerPixel, NEVER, ngh, notch, nPixels, nStatusName, nSwitches, optimizeInteriorFBLSwitch, osName, paramH, PCC_BASE_CODE, pix, pix1, pix2, pix3, pix4, pix5, pix6, pix7, pixDir, pixDumpSwitch, pixelSizeMicrons, pixFileExtn, pixHeight, pixWidth, ppxDir, pra, projDir, projDirSwitch, propertiesFile, propertiesFileSwitch, pTileGhist, PUBLISH, quickEstimateSwitch, rdbmsDir, rest, restOfPixFile, restOfPixSwitch, REVISION, rlmCWfile, rmvDprimeSizingSwitch, sampleSwitch, sat, saturatedSpotSwitch, scaledMaxOD, seg2dgelURL, segPixFile, segPixSwitch, sg2, simpleFileName, sizeFractionGaussianWidth, sort, split, splitLargeCCfblByBndAnalSwitch, splitLargeCCfblByRLManalSwitch, splitLargeCCfblByThreshAnalSwitch, splitMinCCsize, splitSpotSwitch, spotNumber, ssfFormatMode, ssfFormatSwitch, ssfOutputEpilogueFile, ssfOutputFile, ssfOutputPrefaceFile, startTime, statusMemoryFree, statusMemoryTot, statusName, statusStartTime, sw, switchOptCBvalue, switchOptData, switchOptValue, t1Area, t1Density, t1Range, t1SxSyRatio, t2Area, t2Density, t2Range, t2SxSyRatio, TEST_LARGE_IMAGE, thrAreaSwitch, thrDensitySwitch, thrRangeSwitch, thrSxSyRatioSwitch, timerSwitch, tmpDir, UNLABELED_CC_CODE, updateSwitch, usageSwitch, USE_13X13, USE_BKGD_AND_ISOLATED_PIXEL_BACKGROUND, USE_DEMO_DATA, USE_DOM_XML_SSF, use3x3laplacianSwitch, use5x5laplacianSwitch, useBkgdAndIsolatedPixelFlag, useBusseLaplacianSwitch, useCopyOfPix1ForPix5Switch, useHistGUISwitch, useHorizLineLaplacianSwitch, usePopupGUISwitch, userDir, useVertLineLaplacianSwitch, util, VERSION, WHITE, widthWindmp, windmpStepSize, wrk, wXsize, wYsize, xDbug, xmlDir, xPentrance, xPexit, yDbug, yPentrance, yPexit, yTitle
 
Constructor Summary
Sg2hash()
          Sg2hash() - initialize the hash table data structures to empty.
 
Method Summary
 void clearHash()
          clearHash() - clear the pix hash table by writing zero into the table.
 int getHash(int x, int y)
          getHash() - get the FBL or WS stack index value if (x,y) is in the XY point picture hash table.
 int getHashSize()
          getHashSize() - get the size of the current picture hash table
 int growHashFBL(Sg2fbl fbl, int newHashSizeMax)
          growHashFBL() - grow the FBL hash tables to at least the newSize by finding a prime number GEQ the specified newSize.
 int growHashWS(Sg2wrk wrk, int newSize)
          growHashWS() - grow the WS hash tables to at least the newSize by finding a prime number GEQ the specified newSize.
 void putHashFBL(int stackIdx, int x, int y)
          putHashFBL() - put (x,y) into the XY point picture FBL hash table hXYtbl[] and also save the corresponding FBL stack index value in hIdxTbl[].
 void putHashWS(int stackIdx, int x, int y)
          putHashWS() - put (x,y) into the XY point picture WS hash table hXYtbl[] and also save the corresponding WS stack index value in hIdxTbl[].
 int unpackHashX(int hashValue)
          unpackHashX() - extract the X value from the hash XY packed value
 int unpackHashY(int hashValue)
          unpackHashY() - extract the Y value from the hash XY packed value
 
Methods inherited from class Seg2Dgel.Sg2glb
get2D, get2D, getPixLineBuf, getPixLineBuf, initGlb, isDBwindow, isDBwindow, put2Dbuf, resetGlb, set2D, set2D, setPixLineBuf, setPixLineBuf, showReportStatus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sizeHashPrimeDefault

public int sizeHashPrimeDefault
default hash table prime number size


sizeHashPrime

public int sizeHashPrime
current hash table prime number size


hXYtbl

private int[] hXYtbl
hash table packed XY (x<<16 | y) data used as the key.


hIdxTbl

private int[] hIdxTbl
hash table index to FBL or WS stack data which is the associated hash table value.


fblHash

private Sg2fbl fblHash
instance of Final Blob List (FBL) associated with the hash


wrkHash

private Sg2wrk wrkHash
instance of Working Stack (WS) associated with the hash


pixBitMap

int[] pixBitMap
[FUTURE] alternate hashing schem using a pix bitmap to lookup pixel membership. This is of size [((pixWidth*pixHeight)/32+1]. Clear the list by deleting FBL or WS pixels BEFORE doing a fbl.clearFBL() or wrk.clearWS().

Constructor Detail

Sg2hash

public Sg2hash()
Sg2hash() - initialize the hash table data structures to empty.

Method Detail

growHashFBL

public final int growHashFBL(Sg2fbl fbl,
                             int newHashSizeMax)
growHashFBL() - grow the FBL hash tables to at least the newSize by finding a prime number GEQ the specified newSize. If the current sizeHashPrime is GEQ newSize, just return sizeHashPrime. If it exists already, then copy the previous hash table data to the new hash table.

Parameters:
Sg2fbl - instance of FBL associated with hash table
newSize - is the minimum size of the hash table.
Returns:
current size of hash table which may be larger if regrown

growHashWS

public final int growHashWS(Sg2wrk wrk,
                            int newSize)
growHashWS() - grow the WS hash tables to at least the newSize by finding a prime number GEQ the specified newSize. If the current sizeHashPrime is GEQ newSize, just return sizeHashPrime. If it exists already, then copy the previous hash table data to the new hash table.

Parameters:
Sg2wrk - instance of WS associated with hash table
newSize - is the minimum size of the hash table.
Returns:
current size of hash table which may be larger if regrown

getHashSize

public final int getHashSize()
getHashSize() - get the size of the current picture hash table


clearHash

public final void clearHash()
clearHash() - clear the pix hash table by writing zero into the table. NOTE: it may be faster to reallocate it for very large hash tables.


putHashFBL

public final void putHashFBL(int stackIdx,
                             int x,
                             int y)
putHashFBL() - put (x,y) into the XY point picture FBL hash table hXYtbl[] and also save the corresponding FBL stack index value in hIdxTbl[].


putHashWS

public final void putHashWS(int stackIdx,
                            int x,
                            int y)
putHashWS() - put (x,y) into the XY point picture WS hash table hXYtbl[] and also save the corresponding WS stack index value in hIdxTbl[].


getHash

public final int getHash(int x,
                         int y)
getHash() - get the FBL or WS stack index value if (x,y) is in the XY point picture hash table.

Returns:
spot stack index value which is >= 0 if found, and is -1 if not found

unpackHashX

public final int unpackHashX(int hashValue)
unpackHashX() - extract the X value from the hash XY packed value

Returns:
unpacked X value

unpackHashY

public final int unpackHashY(int hashValue)
unpackHashY() - extract the Y value from the hash XY packed value

Returns:
unpacked X value