From cd480c1a6620708c8b611cac415b1b174496defd Mon Sep 17 00:00:00 2001 From: Kaivalya Rawal Date: Sun, 2 Sep 2018 17:59:41 +0800 Subject: [PATCH 1/4] Setting up travis --- .travis.yml | 14 +++++ python3/pracmln/test_ci.py | 125 +++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 .travis.yml create mode 100644 python3/pracmln/test_ci.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..5594cfd3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: + - python + +python: + - "3.5" + +install: + - pip install -r requirements.txt + +before_script: + - cd python3/ + +script: + - py.test diff --git a/python3/pracmln/test_ci.py b/python3/pracmln/test_ci.py new file mode 100644 index 00000000..050ee3ac --- /dev/null +++ b/python3/pracmln/test_ci.py @@ -0,0 +1,125 @@ +import os + +from pracmln import MLN, Database +from pracmln import query, learn +from pracmln.mlnlearn import EVIDENCE_PREDS +import time + +from pracmln.utils import locs + +p = os.path.join(locs.examples, 'smokers', 'smokers.pracmln') +mln = MLN(mlnfile=('%s:wts.pybpll.smoking-train-smoking.mln' % p), + grammar='StandardGrammar') +db = Database(mln, dbfile='%s:smoking-test-smaller.db' % p) + +def test_inference_smokers_EnumerationAsk_singlecore(): + global p + global mln + global db + print('=== INFERENCE TEST: EnumerationAsk ===') + query(queries='Cancer,Smokes,Friends', + method='EnumerationAsk', + mln=mln, + db=db, + verbose=False, + multicore=False).run() + +def test_inference_smokers_MCSAT_singlecore(): + global p + global mln + global db + print('=== INFERENCE TEST: MC-SAT ===') + query(queries='Cancer,Smokes,Friends', + method='MC-SAT', + mln=mln, + db=db, + verbose=False, + multicore=False).run() + +def test_inference_smokers_WCSP_singlecore(): + global p + global mln + global db + print('=== INFERENCE TEST: WCSPInference ===') + query(queries='Cancer,Smokes,Friends', + method='WCSPInference', + mln=mln, + db=db, + verbose=False, + multicore=False).run() + +# output not getting redirected to output file +def test_inference_smokers_Gibbs_singlecore():#(capsys): + global p + global mln + global db + print('=== INFERENCE TEST: GibbsSampler ===') + query(queries='Cancer,Smokes,Friends', + method='GibbsSampler', + mln=mln, + db=db, + #output_filename="output.txt", + verbose=True, + multicore=False).run() + #out, err = capsys.readouterr() + #sys.stdout.write(out) + #sys.stderr.write(err) + #assert("44.400 % Cancer(Ann)" in out) + #assert("50.000 % Cancer(Bob)" in out) + #assert("50.200 % Friends(Ann,Ann)" in out) + #assert("52.600 % Friends(Ann,Bob)" in out) + #assert("36.600 % Friends(Bob,Ann)" in out) + #assert("50.600 % Friends(Bob,Bob)" in out) + #assert("40.800 % Smokes(Ann)" in out) + #assert("21.800 % Smokes(Bob)" in out) + + + +def test_inference_smokers_EnumerationAsk_multicore(): + global p + global mln + global db + print('=== INFERENCE TEST: EnumerationAsk ===') + query(queries='Cancer,Smokes,Friends', + method='EnumerationAsk', + mln=mln, + db=db, + verbose=False, + multicore=True).run() + +def test_inference_smokers_MCSAT_multicore(): + global p + global mln + global db + print('=== INFERENCE TEST: MC-SAT ===') + query(queries='Cancer,Smokes,Friends', + method='MC-SAT', + mln=mln, + db=db, + verbose=False, + multicore=True).run() + +def test_inference_smokers_WCSP_multicore(): + global p + global mln + global db + print('=== INFERENCE TEST: WCSPInference ===') + query(queries='Cancer,Smokes,Friends', + method='WCSPInference', + mln=mln, + db=db, + verbose=False, + multicore=True).run() + +def test_inference_smokers_Gibbs_multicore(): + global p + global mln + global db + print('=== INFERENCE TEST: GibbsSampler ===') + query(queries='Cancer,Smokes,Friends', + method='GibbsSampler', + mln=mln, + db=db, + verbose=True, + multicore=True).run() + From c002d2eb80f08ce50c6bdcbae9341e63a88109a6 Mon Sep 17 00:00:00 2001 From: Kaivalya Rawal Date: Sun, 2 Sep 2018 18:05:34 +0800 Subject: [PATCH 2/4] empty commit to trigger travis From 52732232d731c5d8a1b107886e1aeef9cab1aeea Mon Sep 17 00:00:00 2001 From: Kaivalya Rawal Date: Sun, 2 Sep 2018 18:07:38 +0800 Subject: [PATCH 3/4] correct travis setup --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5594cfd3..c2cf758a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ python: - "3.5" install: - - pip install -r requirements.txt + - pip install -r python3/requirements.txt before_script: - cd python3/ From 952f59fd2dfff0f40fa818482af54a732ffc9d44 Mon Sep 17 00:00:00 2001 From: Kaivalya Rawal Date: Sun, 23 Sep 2018 05:25:38 +0800 Subject: [PATCH 4/4] add semantic test information --- python3/pracmln/test_ci.py | 97 ++++++++++++++++++++++++++++++++++---- 1 file changed, 87 insertions(+), 10 deletions(-) diff --git a/python3/pracmln/test_ci.py b/python3/pracmln/test_ci.py index 050ee3ac..be21a236 100644 --- a/python3/pracmln/test_ci.py +++ b/python3/pracmln/test_ci.py @@ -1,5 +1,8 @@ import os +import random +random.seed(0) + from pracmln import MLN, Database from pracmln import query, learn from pracmln.mlnlearn import EVIDENCE_PREDS @@ -12,55 +15,88 @@ grammar='StandardGrammar') db = Database(mln, dbfile='%s:smoking-test-smaller.db' % p) +expected_result = {'Friends(Ann,Ann)': 0.5, 'Friends(Bob,Bob)': 0.5, 'Cancer(Ann)': 1.0, 'Friends(Bob,Ann)': 0.376, 'Smokes(Bob)': 0.245, 'Smokes(Ann)': 0.437, 'Friends(Ann,Bob)': 0.0, 'Cancer(Bob)': 0.0} + + def test_inference_smokers_EnumerationAsk_singlecore(): global p global mln global db + global expected_result + delta = 0.05 print('=== INFERENCE TEST: EnumerationAsk ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='EnumerationAsk', mln=mln, db=db, verbose=False, multicore=False).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) def test_inference_smokers_MCSAT_singlecore(): global p global mln global db + global expected_result + delta = 0.1 print('=== INFERENCE TEST: MC-SAT ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='MC-SAT', mln=mln, db=db, verbose=False, multicore=False).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) def test_inference_smokers_WCSP_singlecore(): global p global mln global db + global expected_result + delta = 0.6 print('=== INFERENCE TEST: WCSPInference ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='WCSPInference', mln=mln, db=db, verbose=False, multicore=False).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) # output not getting redirected to output file def test_inference_smokers_Gibbs_singlecore():#(capsys): global p global mln global db + global expected_result + delta = 0.6 print('=== INFERENCE TEST: GibbsSampler ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='GibbsSampler', mln=mln, db=db, #output_filename="output.txt", - verbose=True, + verbose=False, multicore=False).run() + #print(r) + #r.write_elapsed_time() + #r.write() + #print(r.results) + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) + + #print(type(r.results)) + #print(expected_result) + #print(type(expected_result)) + #assert(r.results == expected_result) + #out, err = capsys.readouterr() #sys.stdout.write(out) #sys.stderr.write(err) @@ -79,47 +115,88 @@ def test_inference_smokers_EnumerationAsk_multicore(): global p global mln global db + global expected_result + delta = 0.05 print('=== INFERENCE TEST: EnumerationAsk ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='EnumerationAsk', mln=mln, db=db, verbose=False, multicore=True).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) def test_inference_smokers_MCSAT_multicore(): global p global mln global db + global expected_result + delta = 0.1 print('=== INFERENCE TEST: MC-SAT ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='MC-SAT', mln=mln, db=db, verbose=False, multicore=True).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) def test_inference_smokers_WCSP_multicore(): global p global mln global db + global expected_result + delta = 0.6 print('=== INFERENCE TEST: WCSPInference ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='WCSPInference', mln=mln, db=db, verbose=False, multicore=True).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) def test_inference_smokers_Gibbs_multicore(): global p global mln global db + global expected_result + delta = 0.6 print('=== INFERENCE TEST: GibbsSampler ===') - query(queries='Cancer,Smokes,Friends', + r = query(queries='Cancer,Smokes,Friends', method='GibbsSampler', mln=mln, db=db, - verbose=True, + verbose=False, multicore=True).run() + #print(r.results) + for k, v in r.results.items(): + assert(abs(expected_result[k]-v) < delta) + +def main(): + test_inference_smokers_EnumerationAsk_singlecore() + test_inference_smokers_MCSAT_singlecore() + test_inference_smokers_WCSP_singlecore() + test_inference_smokers_Gibbs_singlecore() + test_inference_smokers_EnumerationAsk_multicore() + test_inference_smokers_MCSAT_multicore() + test_inference_smokers_WCSP_multicore() + test_inference_smokers_Gibbs_multicore() + + +if __name__ == '__main__': + main() + + + + + + +