Vidhya Balasubramanian

21 papers A* 1A 1B 1C 2Misc 1Journal 5Unranked 10
YearRankTypeTitle / Venue / Authors
2020 J jnl
J. Intell. Inf. Syst.
Rahul E. Dev, Vidhya Balasubramanian
2020 conf
ICCCI (CCIS Volume)
K. Vignesh Kumar, R. Sourav, C. Shunmuga Velayutham, Vidhya Balasubramanian
2019 C conf
W2GIS
S. Mathivannan, S. Srinath, R. Shashank, R. Aravindh, Vidhya Balasubramanian
2019 J jnl
J. Ambient Intell. Humaniz. Comput.
Darshak Sundar, Siddharth Sendil, Vasanth Subramanian, Vidhya Balasubramanian
2018 J jnl
Int. J. Wirel. Inf. Networks
K. Dharani Tejaswini, Vidhya Balasubramanian
2017 J jnl
J. Intell. Inf. Syst.
Jeyavaishnavi Muralikumar, Sri Ananda Seelan, Narendranath Vijayakumar, Vidhya Balasubramanian
2016 conf
ICINCO (2)
Suriya D. Murthy, Srivenkata Krishnan S, Sundarrajan G, Kiran Kassyap S, Ragul Bhagwanth, Vidhya Balasubramanian
2016 J jnl
J. Intell. Inf. Syst.
Vidhya Balasubramanian, Doraisamy Gobu Sooryanarayan, Navaneeth Kumar Kanakarajan
2015 conf
ICACCI
Sofia Francis Xavier, Lakshmi Priyanka Selvaraj, Vidhya Balasubramanian
2015 conf
ISSNIP
Vishal Chandrasekaran, Keshav Narayan, Romil Kumar Vasani, Vidhya Balasubramanian
2015 conf
WIMS
Aravind Sivaramakrishnan, Madhusudhan Krishnamachari, Vidhya Balasubramanian
2014 Misc conf
COMAD
Amrutha H, Vidhya Balasubramanian
2014 conf
ADHOC-NOW Workshops
P. Shanmugaapriyan, H. Chitra, E. Aiswarya, Vidhya Balasubramanian, S. Ashok Kumar
2014 conf
ADHOC-NOW
Prasanth Krishnan, Sowmyanarayanan Krishnakumar, Raghav Seshadri, Vidhya Balasubramanian
2014 conf
UPINLBS
Hemanth Malla, Preethish Purushothaman, Shivnesh V. Rajan, Vidhya Balasubramanian
2010 B conf
EDBT
Vidhya Balasubramanian, Dmitri V. Kalashnikov, Sharad Mehrotra, Nalini Venkatasubramanian
2010 conf
A2CWiC
V. Smrithi Rekha, Vidhya Balasubramanian, V. Adinarayanan
2006 C conf
ISI
Vidhya Balasubramanian, Daniel Massaguer, Sharad Mehrotra, Nalini Venkatasubramanian
2006 A conf
AAMAS
Daniel Massaguer, Vidhya Balasubramanian, Sharad Mehrotra, Nalini Venkatasubramanian
2004 A* conf
ACM Multimedia
Vidhya Balasubramanian, Nalini Venkatasubramanian
2003 conf
ITCC
Vidhya Balasubramanian, Nalini Venkatasubramanian
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