Kaliappa Nadar Ravindran

33 papers A* 3A 2B 6C 5Misc 1Journal 5Unranked 11
YearRankTypeTitle / Venue / Authors
2016 conf
DSN Workshops
Kaliappa Nadar Ravindran, Arun Adiththan, Michael Iannelli, Mohammad Rabby
2015 B conf
IM
Kaliappa Nadar Ravindran, Waldin Stone, Arun Adiththan
2008 J jnl
IEEE/ACM Trans. Netw.
Xiliang Liu, Kaliappa Nadar Ravindran, Dmitri Loguinov
2008 B conf
ARES
Kaliappa Nadar Ravindran, Jiang Wu, Kevin A. Kwiat, Ali Sabbir
2008 B conf
LCN
Kaliappa Nadar Ravindran, Mohammad Rabby
2008 conf
COMSWARE
Kaliappa Nadar Ravindran, Jiang Wu, Mohammad Rabby, Kevin A. Kwiat, Ali Sabbir
2008 Misc conf
ICDCN
Kaliappa Nadar Ravindran, Mohammad Rabby, Xiliang Liu
2007 conf
COMSWARE
Kaliappa Nadar Ravindran, Kevin A. Kwiat
2007 J jnl
IEEE/ACM Trans. Netw.
Xiliang Liu, Kaliappa Nadar Ravindran, Dmitri Loguinov
2007 J jnl
Comput. Commun.
Kaliappa Nadar Ravindran, Jean-Pierre Fortin, Xiliang Liu
2007 conf
MMNS
Kaliappa Nadar Ravindran, Mohammad Rabby
2007 B conf
ICCCN
Kaliappa Nadar Ravindran, Mohammad Rabby
2006 B conf
NOMS
Kaliappa Nadar Ravindran, Jun Wu
2006 conf
COMSWARE
Kaliappa Nadar Ravindran, Jun Wu
2006 C conf
WOWMOM
Jiang Wu, Kaliappa Nadar Ravindran, Ali Sabbir, Kevin A. Kwiat
2006 conf
COMSWARE
Kaliappa Nadar Ravindran, Kevin A. Kwiat, Ali Sabbir, Bei Cao
2006 J jnl
IEEE J. Sel. Areas Commun.
Xiliang Liu, Kaliappa Nadar Ravindran, Dmitri Loguinov
2005 C conf
DS-RT
Ali Sabbir, Kaliappa Nadar Ravindran
2005 C conf
WOWMOM
Kevin A. Kwiat, Kaliappa Nadar Ravindran, Patrick Hurley
2005 C conf
DS-RT
Kaliappa Nadar Ravindran, Jun Wu
2005 A conf
Internet Measurement Conference
Xiliang Liu, Kaliappa Nadar Ravindran, Dmitri Loguinov
2005 conf
HICSS
Kaliappa Nadar Ravindran, Kevin A. Kwiat, Gwangyu Ding
2005 C conf
DS-RT
Kaliappa Nadar Ravindran, Ali Sabbir, Kevin A. Kwiat
2005 A* conf
INFOCOM
Xiliang Liu, Kaliappa Nadar Ravindran, Dmitri Loguinov
2004 conf
ICDCS Workshops
Kaliappa Nadar Ravindran, Kevin A. Kwiat, Ali Sabbir
2004 conf
MMNS
Kaliappa Nadar Ravindran, Ali Sabbir
2004 conf
ICDCS Workshops
Kaliappa Nadar Ravindran, Ali Sabbir, Kevin A. Kwiat
2004 conf
ISAS
Kaliappa Nadar Ravindran, Xiliang Liu
2004 A conf
Internet Measurement Conference
Xiliang Liu, Kaliappa Nadar Ravindran, Benyuan Liu, Dmitri Loguinov
2004 A* conf
ACM Multimedia
Ali Sabbir, Kaliappa Nadar Ravindran
2001 A* conf
INFOCOM
Kaliappa Nadar Ravindran, Ali Sabbir, Dmitri Loguinov, Gary S. Bloom
1998 B conf
ICCCN
Kaliappa Nadar Ravindran, Dmitri Loguinov
1988 J jnl
Comput. Networks
Samuel T. Chanson, Kaliappa Nadar Ravindran
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