Maheshwar Pd. Sah

21 papers C 4Journal 14
YearRankTypeTitle / Venue / Authors
2025 J jnl
Int. J. Bifurc. Chaos
Maheshwar Pd. Sah, Peipei Jin, Guangyi Wang, Fang Yuan, Haiyan Fu
2019 ch.
Handbook of Memristor Networks
Ram Kaji Budhathoki, Maheshwar Pd. Sah, Shyam Prasad Adhikari, Hyongsuk Kim, Leon O. Chua
2019 ch.
Handbook of Memristor Networks
Maheshwar Pd. Sah, Hyongsuk Kim, Leon O. Chua
2019 ch.
Handbook of Memristor Networks
Shyam Prasad Adhikari, Maheshwar Pd. Sah, Hyongsuk Kim, Leon O. Chua
2017 J jnl
Int. J. Bifurc. Chaos
Vetriveeran Rajamani, Maheshwar Pd. Sah, Zubaer Ibna Mannan, Hyongsuk Kim, Leon O. Chua
2016 J jnl
Int. J. Bifurc. Chaos
Maheshwar Pd. Sah, Hyongsuk Kim, Abdullah Eroglu, Leon O. Chua
2015 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Maheshwar Pd. Sah, Changju Yang, Hyongsuk Kim, Bharathwaj Muthuswamy, Jovan Jevtic, Leon O. Chua
2015 J jnl
Int. J. Bifurc. Chaos
Maheshwar Pd. Sah, Zubaer Ibna Mannan, Hyongsuk Kim, Leon O. Chua
2014 C conf
ISCAS
Bharathwaj Muthuswamy, Jovan Jevtic, Herbert H. C. Iu, Chittur Krishnaswamy Subramaniam, Ganesan Kaliyaperumal, V. Sankaranarayanan, K. Sethupathi, Hyongsuk Kim, Maheshwar Pd. Sah, Leon O. Chua
2014 J jnl
Circuits Syst. Signal Process.
Maheshwar Pd. Sah, Ram Kaji Budhathoki, Changju Yang, Hyongsuk Kim
2014 J jnl
Int. J. Bifurc. Chaos
Ram Kaji Budhathoki, Maheshwar Pd. Sah, Changju Yang, Hyongsuk Kim, Leon O. Chua
2013 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Ram Kaji Budhathoki, Maheshwar Pd. Sah, Shyam Prasad Adhikari, Hyongsuk Kim, Leon O. Chua
2013 C conf
ISCAS
Ram Kaji Budhathoki, Maheshwar Pd. Sah, Shyam Prasad Adhikari, Hyongsuk Kim
2013 J jnl
Int. J. Bifurc. Chaos
Maheshwar Pd. Sah, Ram Kaji Budhathoki, Changju Yang, Hyongsuk Kim
2013 C conf
ISCAS
Maheshwar Pd. Sah, Changju Yang, Ram Kaji Budhathoki, Hyongsuk Kim
2013 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Shyam Prasad Adhikari, Maheshwar Pd. Sah, Hyongsuk Kim, Leon O. Chua
2012 J jnl
Sensors
Maheshwar Pd. Sah, Changju Yang, Hyongsuk Kim, Leon O. Chua
2012 J jnl
Proc. IEEE
Hyongsuk Kim, Maheshwar Pd. Sah, Changju Yang, Tamás Roska, Leon O. Chua
2012 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Hyongsuk Kim, Maheshwar Pd. Sah, Changju Yang, Seongik Cho, Leon O. Chua
2012 C conf
ISCAS
Maheshwar Pd. Sah, Changju Yang, Hyongsuk Kim, Leon O. Chua
2012 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Hyongsuk Kim, Maheshwar Pd. Sah, Changju Yang, Tamás Roska, Leon O. Chua
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