""" Uses unittest and compares this intersection code to Carel Faber's MgnLb.txt maple program. To use, you'll need to edit this file so that fabers_dir is the correct value. Then, there are two choices: 1) Edit the gn_pairs_to_check attribute to include the pairs you want to check. Then, run $ sage testvsMgnLb.py and it will check them all. 2) Create a file in the format: g, n, [list of classes by Faber's index] e.g.: 1,3, [1,2,3] 0,4, [1] and then do $ sage testvsMgnLb.py testlist (where testlist is the filename) and this will just check the things in your list. This will make a quick check that you can run often. """ fabers_dir = "/home/drew/Dropbox/fabers maple code/Send10/" gn_pairs_tocheck = ( (1,1), (0,4), (0,5), (0,6), (1,2), (1,3), (1,4), (2,0), (2,1), (2,2), (3,0))#( (5,0), (6,0), (7,0) ) #(4,0) #( (1,1), (0,4), (0,5), (0,6), (1,2), (1,3), (1,4), (2,0), (2,1), (2,2), (3,0)) import unittest from sage.all import * from intersection_ui import intnum from TautRing3 import Mgn from get_all_combis import get_all_valid_tuples class TestVsMaple(unittest.TestCase): def check(self, g, n, c, verbose = True): #M = Mgn(g,n) #print M #C = Combinations( [M.fabers_classes_indexes()] * M.dimension, M.dimension ) #print C #for c in Combinations( M.fabers_classes_indexes() * M.dimension, M.dimension ): #c = c[0] #???? if verbose: print "Checking on M_{0}, {1}, classes {2}...".format(g,n, c) myans = intnum(g,n,c, confirm = False) #print "mgn({0}, {1})".format(g, c) mapleans = maple("mgn({0}, {1}, {2})".format(g, n, c)) if verbose: print "values {3}, {4}".format(g,n, c, myans, mapleans) self.assertEqual(myans, mapleans, "FAILED: for genus {0}, {1} marked points with classes {2}, my anwers: {3}, maple answer: {4}".format(g,n, c,myans,mapleans) ) def start_Maple(self): maple('currentdir("{0}")'.format(fabers_dir)) maple.eval('read "MgnLb.txt"') print "Loaded MgnLb." def test_from_file(self, filename): self.start_Maple() with open(filename) as f: for line in f: g,n,c = eval(line) self.check(g,n,c) def test_all(self): self.start_Maple() for g,n in gn_pairs_tocheck: print "Checking {0}, {1}...".format(g,n) M = Mgn(g,n) for c in get_all_valid_tuples(M.degree_index_dict(), M.dimension): self.check(g,n,c) #save_data("genus4567test") if __name__ == '__main__': #global filename import sys #tester = TestVsMaple() if len(sys.argv) > 1: #TestVsMaple.filename = sys.argv[1] tester = TestVsMaple("test_from_file") tester.test_from_file(sys.argv[1]) else: tester = TestVsMaple("test_all") tester.test_all()