Rami Mohawesh

29 papers Journal 19Unranked 10
YearRankTypeTitle / Venue / Authors
2026 J jnl
Clust. Comput.
Ali Al-Yousef, Moy'awiah A. Al-Shannaq, Ahmad A. Saifan, Rami Mohawesh
2026 J jnl
Clust. Comput.
Ali Al-Yousef, Moy'awiah A. Al-Shannaq, Ahmad A. Saifan, Rami Mohawesh
2026 J jnl
Clust. Comput.
Rami Mohawesh, Haitham Moffaqq Al-Obiedollah, Sumbal Maqsood, Haythem Bany Salameh
2025 conf
SNAMS
Ra'ed M. Al-Khatib, Mohammad Ahmad Al-Zu'bi, Rami Mohawesh, Issam Al-Azzoni
2025 conf
FLLM
Ahmad A. Saifan, Dana A L.-Azzam, Moy'awiah A. Al-Shannaq, Ali Al-Yousef, Rami Mohawesh, Mohannad Alkhalaileh
2025 J jnl
J. Supercomput.
Rami Mohawesh, Ahmed Abdallah AlQarni, Suboh M. Alkhushayni, Tariq Daradkeh, Haythem Bany Salameh
2025 J jnl
J. Supercomput.
Ali Al-Yousef, Rami Mohawesh, Ahmad A. Saifan, Moy'awiah A. Al-Shannaq
2025 conf
SNAMS
Rami Mohawesh, Ali Al-Yousef, Moy'awiah A. Al-Shannaq, Ahmad A. Saifan, Mohammad Ashraf Ottom, Mohannad Alkhalaileh
2025 conf
SNAMS
Rama Khalil, Farah Abusalim, Rami Mohawesh, Ali Al-Yousef, Moy'awiah A. Al-Shannaq, Ahmad A. Saifan, Haythem Bany Salameh
2025 conf
FLLM
Haythem Bany Salameh, Ghaleb A. Elrefae, Rami Mohawesh
2025 conf
FLLM
Mohammad Ashraf Ottom, Iyad M. Alazzam, Ghadeer N. Alkufahi, Rami Mohawesh, Mohannad Alkhalaileh
2025 conf
SNAMS
Ali Al-Yousef, Rami Mohawesh, Moy'awiah A. Al-Shannaq, Ahmad A. Saifan, Mohannad Alkhalaileh
2025 J jnl
Clust. Comput.
Sumbal Maqsood, Shuxiang Xu, Matthew Springer, Rami Mohawesh, Haythem Bany Salameh, Shivangi Gheewala
2025 J jnl
J. Big Data
Rami Mohawesh, Islam Obaidat, Ahmed Abdallah AlQarni, Ali Abdulaziz Aljubailan, Moy'awiah A. Al-Shannaq, Haythem Bany Salameh, Ali Al-Yousef, Ahmad A. Saifan, Suboh M. Alkhushayni, Sumbal Maqsood
2024 J jnl
Clust. Comput.
Rami Mohawesh, Muna Al-Hawawreh, Sumbal Maqsood, Omar AlQudah
2024 J jnl
Clust. Comput.
Devon Myers, Rami Mohawesh, Venkata Ishwarya Chellaboina, Anantha Lakshmi Sathvik, Praveen Venkatesh, Yi-Hui Ho, Hanna Henshaw, Muna Al-Hawawreh, David Berdik, Yaser Jararweh
2023 conf
APWeb-WAIM (1)
Hui Yin, Xiao Liu, Yutao Wu, Hilya Mudrika Arini, Rami Mohawesh
2023 J jnl
J. King Saud Univ. Comput. Inf. Sci.
Rami Mohawesh, Shuxiang Xu, Matthew Springer, Yaser Jararweh, Muna Al-Hawawreh, Sumbal Maqsood
2023 conf
SNAMS
Haythem Bany Salameh, Rami Mohawesh, Sumbal Maqsood, Yaser Jararweh, Nuha Alshuqayran
2023 J jnl
J. Intell. Inf. Syst.
Rami Mohawesh, Sumbal Maqsood, Qutaibah Althebyan
2023 J jnl
AI Open
Rami Mohawesh, Xiao Liu, Hilya Mudrika Arini, Yutao Wu, Hui Yin
2022 J jnl
Expert Syst. Appl.
Sumbal Maqsood, Shuxiang Xu, Son N. Tran, Saurabh Garg, Matthew Springer, Mohan Karunanithi, Rami Mohawesh
2021 J jnl
IEEE Access
Sumbal Maqsood, Shuxiang Xu, Matthew Springer, Rami Mohawesh
2021 J jnl
Expert Syst. Appl.
Rami Mohawesh, Son N. Tran, Robert Ollington, Shuxiang Xu
2021 J jnl
IEEE Access
Rami Mohawesh, Shuxiang Xu, Son N. Tran, Robert Ollington, Matthew Springer, Yaser Jararweh, Sumbal Maqsood
2021 J jnl
CoRR
Rami Mohawesh, Shuxiang Xu, Matthew Springer, Muna Al-Hawawreh, Sumbal Maqsood
2020 J jnl
Int. J. Adv. Intell. Paradigms
Qutaibah Althebyan, Yaser Jararweh, Qussai Yaseen, Rami Mohawesh
2016 J jnl
Int. J. Inf. Technol. Web Eng.
Mohammad Al-Smadi, Islam Obaidat, Mahmoud Al-Ayyoub, Rami Mohawesh, Yaser Jararweh
2015 conf
ICITST
Qutaibah Althebyan, Rami Mohawesh, Qussai Yaseen, Yaser Jararweh
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