Example #1
0
    def __init__(self, filename, nfilename=None,
            max_coef=10, smt_timeout_iter=0, smt_timeout_matrix=0,
            positive_log=None):
        self.filename = filename
        parser = PnmlParser(filename)
        parser.parse()
        self.net = parser.petrinet
        self.dim = parser.dim
        self.event_dictionary = parser.event_dictionary
        self.positive_log = positive_log

        # Helper pach. Doesn't actually compute hull
        self.pach = PacH(filename,nfilename=nfilename)
        self.pach.event_dictionary = parser.event_dictionary
        self.pach.reversed_dictionary = rotate_dict(parser.event_dictionary)
        self.pach.parse_negatives()

        qhull = self.net.get_qhull()
        # Hull for NO SMT
        qhull_no_smt = copy.deepcopy(qhull)
        # Hull for SMT iterative simp
        qhull_smt_iter = copy.deepcopy(qhull)
        # Hull for SMT matrix simp
        qhull_smt_matrix = copy.deepcopy(qhull)

        self.comparator = Comparator(qhull_no_smt, qhull_smt_iter, qhull_smt_matrix,
                max_coef, smt_timeout_iter, smt_timeout_matrix)
Example #2
0
 def __init__(self, pnml_file, xes_log=None):
     self.pnml_file = pnml_file
     parser = PnmlParser(pnml_file)
     parser.parse()
     self.net = parser.petrinet
     self.dim = parser.dim
     self.event_dictionary = parser.event_dictionary
     self.xes_log = xes_log
     self.qhull = self.net.get_qhull()
Example #3
0
def pnml_main():
    usage = """
        Usage: ./pnml.py <PNML filename> [--verbose][--debug][--check <XES Log filename>]
    """
    if not check_argv(sys.argv, minimum=1, maximum=5):
        print usage
        ret = -1
    else:
        ret = 0
        try:
            filename = sys.argv[1]
            if not (filename.endswith('.pnml')):
                print filename, ' does not end in .pnml. It should...'
                raise Exception('Filename has wrong extension')
            if not isfile(filename):
                raise Exception("No such file")
            if '--debug' in sys.argv:
                pdb.set_trace()
            obj = PnmlParser(filename)
            obj.parse()
            if '--verbose' in sys.argv:
                print 'Parse done.'
                print obj.petrinet
            qhull = obj.petrinet.get_qhull()
            if '--check' in sys.argv or '-c' in sys.argv:
                lidx = '-c' in sys.argv and sys.argv.index('-c') or\
                    sys.argv.index('--check')
                log_file = sys.argv[lidx+1]
                if not (log_file.endswith('.xes')):
                    print log_file, ' does not end in .xes. It should...'
                    raise Exception('Filename does not end in .xes')
                if not isfile(log_file):
                    raise Exception("No such file")
                qhull.all_in_file(log_file, event_dictionary=obj.event_dictionary)
            if '--verbose' in sys.argv:
                print 'Got qhull representation whith %s facets.'%(len(qhull.facets))
                print 'This are them:\n'
                for facet in qhull.facets:print facet
        except Exception, err:
            ret = 1
            if hasattr(err, 'message'):
                print 'Error: ', err.message
            else:
                print 'Error: ', err
            logger.error('Error: %s' % err, exc_info=True)
            raise err
        return ret