Kamila Barylska

27 papers C 2Misc 1Journal 13Unranked 11
YearRankTypeTitle / Venue / Authors
2025 conf
PNSE/ATAED/PeNGE@PETRI NETS
Kamila Barylska, Anna Gogolinska
2025 conf
PNSE/ATAED/PeNGE@PETRI NETS
Kamila Barylska, Franck Delaplace, Anna Gogolinska, Ewa Pankowska
2025 J jnl
CoRR
Kamila Barylska, Franck Delaplace, Anna Gogolinska, Ewa Pankowska
2024 conf
PeNGE@Petri Nets
Kamila Barylska, Anna Gogolinska
2024 conf
PNSE@Petri Nets
Kamila Barylska, Anna Gogolinska
2024 J jnl
CoRR
Kamila Barylska, Anna Gogolinska
2023 J jnl
CoRR
Kamila Barylska, Anna Gogolinska, Lukasz Mikulski, Anna Philippou, Marcin Piatkowski, Kyriaki Psara
2022 C conf
RC
Kamila Barylska, Anna Gogolinska, Lukasz Mikulski, Anna Philippou, Marcin Piatkowski, Kyriaki Psara
2021 J jnl
CoRR
Kamila Barylska, Anna Gogolinska
2021 J jnl
Fundam. Informaticae
Kamila Barylska, Anna Gogolinska
2020 J jnl
Discret. Appl. Math.
Evgeny Erofeev, Kamila Barylska, Lukasz Mikulski, Marcin Piatkowski
2018 J jnl
Sci. Comput. Program.
Kamila Barylska, Maciej Koutny, Lukasz Mikulski, Marcin Piatkowski
2018 conf
ATAED@Petri Nets/ACSD
Kamila Barylska, Anna Gogolinska, Lukasz Mikulski, Anna Philippou, Marcin Piatkowski, Kyriaki Psara
2018 J jnl
Fundam. Informaticae
Kamila Barylska, Evgeny Erofeev, Maciej Koutny, Lukasz Mikulski, Marcin Piatkowski
2017 J jnl
Trans. Petri Nets Other Model. Concurr.
Kamila Barylska, Eike Best, Uli Schlachter, Valentin Spreckels
2016 J jnl
Trans. Petri Nets Other Model. Concurr.
Kamila Barylska, Eike Best, Evgeny Erofeev, Lukasz Mikulski, Marcin Piatkowski
2016 Misc conf
PSC
Evgeny Erofeev, Kamila Barylska, Lukasz Mikulski, Marcin Piatkowski
2016 conf
ATAED@Petri Nets/ACSD
Kamila Barylska, Eike Best
2016 C conf
RC
Kamila Barylska, Maciej Koutny, Lukasz Mikulski, Marcin Piatkowski
2016 conf
CS&P
Kamila Barylska, Lukasz Mikulski, Marcin Piatkowski, Maciej Koutny, Evgeny Erofeev
2015 J jnl
CoRR
Kamila Barylska, Edward Ochmanski
2015 conf
ATAED@Petri Nets/ACSD
Kamila Barylska, Eike Best, Evgeny Erofeev, Lukasz Mikulski, Marcin Piatkowski
2015 conf
CS&P
Kamila Barylska, Lukasz Mikulski
2014 conf
PNSE @ Petri Nets
Kamila Barylska
2013 J jnl
Inf. Comput.
Kamila Barylska, Lukasz Mikulski, Edward Ochmanski
2010 conf
ACSD/Petri Nets Workshops
Kamila Barylska, Lukasz Mikulski, Edward Ochmanski
2009 J jnl
Fundam. Informaticae
Kamila Barylska, Edward Ochmanski
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