Karl Czajkowski

25 papers A 6B 2C 2Journal 6Unranked 8
YearRankTypeTitle / Venue / Authors
2022 conf
ICBO
Michelle G. Giglio, Suvarna Nadendla, Arthur Brady, Amanda Charbonneau, Karl Czajkowski, Jeremy Yang, Tom Gillespie, Philippe Rocca-Serra, Jeffrey S. Grethe, Raja Mazumder, Bernard de Bono, Jonathan C. Silverstein, Daniel Clark, Mark A. Musen, Owen White
2021 J jnl
CoRR
Hongsuda Tangmunarunkit, Aref Shafaeibejestan, Joshua Chudy, Karl Czajkowski, Robert Schuler, Carl Kesselman
2020 B conf
SSDBM
Robert Schuler, Karl Czajkowski, Mike D'Arcy, Hongsuda Tangmunarunkit, Carl Kesselman
2018 B conf
SSDBM
Karl Czajkowski, Carl Kesselman, Robert E. Schuler, Hongsuda Tangmunarunkit
2017 conf
eScience
Karl Czajkowski, Carl Kesselman, Robert Schuler
2017 conf
eScience
Alejandro Bugacov, Karl Czajkowski, Carl Kesselman, Anoop Kumar, Robert E. Schuler, Hongsuda Tangmunarunkit
2016 conf
eScience
Robert E. Schuler, Carl Kesselman, Karl Czajkowski
2016 J jnl
CoRR
Karl Czajkowski, Carl Kesselman, Robert Schuler, Hongsuda Tangmunarunkit
2015 conf
SCREAM@HPDC
Robert Schuler, Carl Kesselman, Karl Czajkowski
2014 conf
DILS
Robert E. Schuler, Carl Kesselman, Karl Czajkowski
2014 conf
BIBM
Robert E. Schuler, Carl Kesselman, Karl Czajkowski
2005 J jnl
Proc. IEEE
Karl Czajkowski, Ian T. Foster, Carl Kesselman
2005 J jnl
Proc. IEEE
Ian T. Foster, Karl Czajkowski, D. E. Ferguson, Jeffrey A. Frey, Steve Graham, Tom Maguire, David Snelling, Steven Tuecke
2005 J jnl
J. Grid Comput.
Aram Galstyan, Karl Czajkowski, Kristina Lerman
2004 A conf
AAMAS
Aram Galstyan, Karl Czajkowski, Kristina Lerman
2004 ch.
The Grid 2, 2nd Edition
Karl Czajkowski, Ian T. Foster, Carl Kesselman
2003 J jnl
CoRR
Von Welch, Frank Siebenlist, Ian T. Foster, John Bresnahan, Karl Czajkowski, Jarek Gawor, Carl Kesselman, Sam Meder, Laura Pearlman, Steven Tuecke
2003 A conf
HPDC
Von Welch, Frank Siebenlist, Ian T. Foster, John Bresnahan, Karl Czajkowski, Jarek Gawor, Carl Kesselman, Sam Meder, Laura Pearlman, Steven Tuecke
2002 C conf
JSSPP
Karl Czajkowski, Ian T. Foster, Carl Kesselman, Volker Sander, Steven Tuecke
2001 A conf
HPDC
Karl Czajkowski, Carl Kesselman, Steven Fitzgerald, Ian T. Foster
2001 A conf
HPDC
Karl Czajkowski, Alper K. Demir, Carl Kesselman, Marcus Thiébaux
1999 A conf
HPDC
Karl Czajkowski, Ian T. Foster, Carl Kesselman
1998 C conf
JSSPP
Karl Czajkowski, Ian T. Foster, Nicholas T. Karonis, Carl Kesselman, Stuart Martin, Warren Smith, Steven Tuecke
1998 A conf
HPDC
Sharon Brunett, Karl Czajkowski, Steven Fitzgerald, Ian T. Foster, Andrew E. Johnson, Carl Kesselman, Jason Leigh, Steven Tuecke
1998 conf
PARA
Karl Czajkowski, Ian T. Foster, Carl Kesselman
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