Katherine Everitt

20 papers A* 5B 3Misc 1Journal 5Unranked 6
YearRankTypeTitle / Venue / Authors
2012 J jnl
IEEE Pervasive Comput.
Katherine Everitt, Peter F. Oven, Shwetak N. Patel, James A. Landay
2010 A* conf
CHI
Yang Li, Xiang Cao, Katherine Everitt, Morgan Dixon, James A. Landay
2009 A* conf
CHI
Katherine Everitt, Tanya Bragin, James Fogarty, Tadayoshi Kohno
2008 conf
Tabletop
Katherine Everitt, Meredith Ringel Morris, A. J. Bernheim Brush, Andrew D. Wilson
2008 J jnl
Hum. Comput. Interact.
Scott R. Klemmer, Katherine Everitt, James A. Landay
2008 A* conf
CHI
Krzysztof Z. Gajos, Katherine Everitt, Desney S. Tan, Mary Czerwinski, Daniel S. Weld
2007 J jnl
Int. J. Hum. Comput. Interact.
Sunny Consolvo, Beverly L. Harrison, Ian E. Smith, Mike Y. Chen, Katherine Everitt, Jon Froehlich, James A. Landay
2007 B conf
ICMI
Katherine Everitt, Susumu Harada, Jeff A. Bilmes, James A. Landay
2006 A* conf
CHI
Sunny Consolvo, Katherine Everitt, Ian E. Smith, James A. Landay
2006 conf
Tabletop
Kathy Ryall, Clifton Forlines, Chia Shen, Meredith Ringel Morris, Katherine Everitt
2006 J jnl
IEEE Computer Graphics and Applications
Kathy Ryall, Alan Esenther, Clifton Forlines, Chia Shen, Sam Shipman, Meredith Ringel Morris, Katherine Everitt, Frédéric Vernier
2006 J jnl
IEEE Computer Graphics and Applications
Chia Shen, Kathy Ryall, Clifton Forlines, Alan Esenther, Frédéric Vernier, Katherine Everitt, Mike Wu, Daniel Wigdor, Meredith Ringel Morris, Mark S. Hancock, Edward Tse
2006 conf
Tabletop
Katherine Everitt, Chia Shen, Kathy Ryall, Clifton Forlines
2005 B conf
INTERACT
Katherine Everitt, Chia Shen, Kathy Ryall, Clifton Forlines
2005 conf
CHI Extended Abstracts
Katherine Everitt, Chia Shen, Kathy Ryall, Clifton Forlines
2005 B conf
INTERACT
Kathy Ryall, Alan Esenther, Katherine Everitt, Clifton Forlines, Meredith Ringel Morris, Chia Shen, Sam Shipman, Frédéric Vernier
2003 A* conf
CHI
Katherine Everitt, Scott R. Klemmer, Robert Lee, James A. Landay
2003 Misc conf
UbiComp
Chia Shen, Katherine Everitt, Kathleen Ryall
2002 conf
CHI Extended Abstracts
Scott R. Klemmer, Katherine Everitt
2002 conf
CADUI
James Wu, Nicholas T. Graham, Katherine Everitt, Dorothea Blostein, Edward Lank
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS