https://gitlab.lrde.epita.fr/akheireddine/bmctool
Raw File
Tip revision: 93e6598916290fbd0570c71285af7b9d5854e9d6 authored by akheireddine on 02 December 2020, 16:19:29 UTC
Update makefile and painless submodule :
Tip revision: 93e6598
quantifies_learning.py
from os import listdir
from os.path import isfile, join
import csv
import sys

def couting_till_learning(writer, pathname, filename, time_learning) :
	f = open(pathname+filename,"r")
	
	lines = f.readlines()
	
	f.close()
	
	start_original = False
	start_learning = False
	original_cls   = 0
	learning_cls   = 0
	if  "k-1" in filename : 
		start_original = True
	for line in lines:
		if ("p cnf" in line)  and (line[0] == "p") :
			start_original = True
			continue

		if ("c GENERATE BMCTree" in line)  or ("c End of dimacs dumping" in line): 
			start_original = False
			start_learning = True
			continue
			
		if ("c" in line)  or (" 0" not in line) : 
			continue
			
		if start_original : 
			original_cls = original_cls + 1
		if start_learning : 
			learning_cls = learning_cls + 1
		
	

	print("Filename : ",filename)
	print("Original clauses : ",original_cls)
	print("Learnt   clauses : ",learning_cls)
	if original_cls > 0 :
		print("Ratio of learning (in ",time_learning,") : ", (learning_cls * 100.0)/original_cls)

	if original_cls > 0 :
		ratio  = (learning_cls * 100.0)/original_cls
	else :
		ratio = "NaN"
	writer.writerow([filename, time_learning, original_cls, learning_cls, ratio])
	

def count_files( path, time_learning, csvname ) :
	print(" csvn ", csvname)
	with open(csvname, 'w', newline='') as file:
	    writer = csv.writer(file)
	    writer.writerow(["filename", "Learning Time","Original Cls", "Learnt Cls", "Ratio"])
	    
	    onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
	    for f in onlyfiles :
	    	if "_k-1" in f :
	    		couting_till_learning(writer, path, f, time_learning)
	
	
if __name__ == "__main__":
	args = sys.argv[1:]
	if len(args) < 2 :
		print(" ERROR no args ")
		exit(1)
	print(" args size ",args[0])
	count_files( args[0], args[1], args[0]+".csv" )
back to top