コード例 #1
0
ファイル: test_sos_kernel.py プロジェクト: ktaletsk/sos-r
 def testMagicPut(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="%use R")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="a <- 1024")
         wait_for_idle(kc)
         execute(kc=kc, code="%put a")
         wait_for_idle(kc)
         #execute(kc=kc, code="%put __k_k")
         #wait_for_idle(kc)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         execute(kc=kc, code="a")
         res = get_result(iopub)
         self.assertEqual(res, 1024)
         # strange name
         execute(kc=kc, code="%use R")
         wait_for_idle(kc)
         execute(kc=kc, code=".a.b <- 22")
         wait_for_idle(kc)
         execute(kc=kc, code="%put .a.b")
         wait_for_idle(kc)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         execute(kc=kc, code="_a_b")
         res = get_result(iopub)
         self.assertEqual(res, 22)
         #
         # test to yet another kernel
         #
         execute(kc=kc, code="%put --to Python3 _a_b")
         wait_for_idle(kc)
         execute(kc=kc, code="%use Python3")
         wait_for_idle(kc)
         execute(kc=kc, code="_a_b")
         res = get_result(iopub)
         self.assertEqual(res, 22)
         #
         execute(kc=kc, code="kkk = 'ast'")
         wait_for_idle(kc)
         execute(kc=kc, code="%put --to R kkk")
         res = get_result(iopub)
         execute(kc=kc, code="%use R")
         wait_for_idle(kc)
         execute(kc=kc, code="kkk <- paste0(kkk, '1')")
         wait_for_idle(kc)
         execute(kc=kc, code="%put --to Python3 kkk")
         wait_for_idle(kc)
         execute(kc=kc, code="%use Python3")
         wait_for_idle(kc)
         execute(kc=kc, code="kkk")
         res = get_result(iopub)
         self.assertEqual(res, 'ast1')
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
コード例 #2
0
    def testPutMatlabDataToPython(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc,
                    code="""
%use MATLAB
null_var = NaN
num_var = 123
num_arr_var = [1, 2, 3]
logic_var = true
logic_arr_var = [true, false, true]
char_var = '1"23'
char_arr_var = ['1'; '2'; '3']
mat_var = [1:3; 2:4]
""")
            wait_for_idle(kc)
            execute(kc=kc,
                    code="""
%dict -r
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var
%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var
""")
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(list(res['num_arr_var']), [1, 2, 3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            #self.assertEqual(res['named_list_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertEqual(res['mat_var'].shape, (2, 3))
            self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
            #self.assertEqual(res['recursive_var'], {'a': 1, 'b': {'c': 3, 'd': 'whatever'}})
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
コード例 #3
0
    def testReverseSharedVariable(self):
        '''Test shared variables defined in auxiliary steps'''
        if file_target('a.txt').exists():
            file_target('a.txt').unlink()
        script = r'''
%run B
[A: shared='b', provides='a.txt']
b = 1
run:
    touch a.txt

[B_1]
depends: 'a.txt'

[B_2]
print(b)

'''
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code=script)
            wait_for_idle(kc)
            self.assertTrue(os.path.isfile('a.txt'))
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 1)
コード例 #4
0
    def testGetPythonDictWithSpecialKeyFromR(self):
        # Python -> R
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc,
                    code='''
special_dict = {}
special_dict['11111'] = 1
special_dict['_1111'] = 'a'
special_dict[11112] = 2
special_dict[(1,2)] = 3
''')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''%use R
%get special_dict
keys = names(special_dict)
''')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''%use sos
%get keys --from R            
%dict keys
''')
            res = get_result(iopub)['keys']
            for key in ["X11111", "X_1111", "X11112", "X_1__2_"]:
                self.assertTrue(key in res, f"Expecting {key}")
コード例 #5
0
 def testMagicDict(self):
     '''Test %dict magic'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="a=12345")
         wait_for_idle(kc)
         execute(kc=kc, code="%dict a")
         self.assertEqual(get_result(iopub)['a'], 12345)
         execute(kc=kc, code="%dict --keys")
         self.assertTrue('a' in get_result(iopub))
         execute(kc=kc, code="%dict --reset")
         wait_for_idle(kc)
         execute(kc=kc, code="%dict --keys --all")
         res = get_result(iopub)
         self.assertTrue('a' not in res)
         for key in ('run', 'expand_pattern'):
             self.assertTrue(key in res)
コード例 #6
0
    def testGetPythonDataFromR(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc,
                    code='''
null_var = None
num_var = 123
import numpy
import pandas
num_arr_var = numpy.array([1, 2, 3])
logic_var = True
logic_arr_var = [True, False, True]
char_var = '1"23'
char_arr_var = ['1', '2', '3']
list_var = [1, 2, '3']
dict_var = dict(a=1, b=2, c='3')
set_var = {1, 2, '3'}
mat_var = numpy.matrix([[1,2],[3,4]])
recursive_var = {'a': {'b': 123}, 'c': True}
comp_var = 1+2j
seri_var = pandas.Series([1,2,3,3,3,3])
''')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''\
%use R
%get null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var comp_var seri_var
%dict -r
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var comp_var seri_var
%use sos
seri_var = list(seri_var)
''')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''\
%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var comp_var seri_var
''')
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(res['num_arr_var'].tolist(), [1, 2, 3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
            self.assertEqual(res['list_var'], [1, 2, '3'])
            self.assertEqual(res['dict_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertEqual(res['mat_var'].shape, (2, 2))
            self.assertEqual(res['recursive_var'], {
                'a': {
                    'b': 123
                },
                'c': True
            })
            self.assertEqual(res['comp_var'], 1 + 2j)
            self.assertEqual(res['seri_var'], [1, 2, 3, 3, 3, 3])
コード例 #7
0
    def testPutRDataToPython(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc,
                    code="""\
%use R
null_var = NULL
num_var = 123
num_arr_var = c(1, 2, 3)
logic_var = TRUE
logic_arr_var = c(TRUE, FALSE, TRUE)
char_var = '1\"23'
char_arr_var = c(1, 2, '3')
list_var = list(1, 2, '3')
named_list_var = list(a=1, b=2, c='3')
mat_var = matrix(c(1,2,3,4), nrow=2)
recursive_var = list(a=1, b=list(c=3, d='whatever'))
comp_var = 1+2i
seri_var = setNames(c(1,2,3,3,3,3),c(0:5))
""")
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''\
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var recursive_var comp_var seri_var
%use sos
seri_var = list(seri_var)
''')
            wait_for_idle(kc)
            execute(
                kc=kc,
                code=
                "%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var recursive_var comp_var seri_var"
            )
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(res['num_arr_var'], [1, 2, 3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
            self.assertEqual(res['list_var'], [1, 2, '3'])
            self.assertEqual(res['named_list_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertEqual(res['mat_var'].shape, (2, 2))
            self.assertEqual(res['recursive_var'], {
                'a': 1,
                'b': {
                    'c': 3,
                    'd': 'whatever'
                }
            })
            self.assertEqual(res['comp_var'], 1 + 2j)
            self.assertEqual(res['seri_var'], [1, 2, 3, 3, 3, 3])
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
コード例 #8
0
 def testPutRDataFrameToPython(self):
     # R -> Python
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         execute(kc=kc, code='%use R')
         wait_for_idle(kc)
         execute(kc=kc, code="%put mtcars")
         assemble_output(iopub)
         # the message can contain "Loading required package feathre"
         #self.assertEqual(stderr, '')
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         execute(kc=kc, code="mtcars.shape")
         res = get_result(iopub)
         self.assertEqual(res, (32, 11))
         execute(kc=kc, code="mtcars.index[0]")
         res = get_result(iopub)
         self.assertEqual(res, 'Mazda RX4')
コード例 #9
0
ファイル: test_sos_kernel.py プロジェクト: ktaletsk/sos-r
 def testMagicGet(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="a = 1025")
         wait_for_idle(kc)
         execute(kc=kc, code="_b_a = 22")
         wait_for_idle(kc)
         execute(kc=kc, code="%use R")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="%get a")
         wait_for_idle(kc)
         execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1025')
         execute(kc=kc, code="b <- 122\nc<-555")
         wait_for_idle(kc)
         #
         execute(kc=kc, code="%get _b_a")
         wait_for_idle(kc)
         execute(kc=kc, code=".b_a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 22')
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         #
         # get from a sub kernel
         execute(kc=kc, code="%get --from R b")
         wait_for_idle(kc)
         execute(kc=kc, code="b")
         res = get_result(iopub)
         self.assertEqual(res, 122)
         # get from a third kernel
         execute(kc=kc, code="%use Python3")
         wait_for_idle(kc)
         execute(kc=kc, code="%get --from R c")
         wait_for_idle(kc)
         execute(kc=kc, code="c")
         res = get_result(iopub)
         self.assertEqual(res, 555)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
コード例 #10
0
    def testGetPythonDataFromMatlab(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc,
                    code='''
null_var = None
num_var = 123
import numpy
import scipy.io as sio
num_arr_var = numpy.array([1, 2, 3])
logic_var = True
logic_arr_var = [True, False, True]
float_var = [1.2, 2.1]
char_var = '1"23'
char_arr_var = ['1', '2', '3']
list_var = [1, 2, '3']
dict_var = dict(a=1, b=2, c='3')
set_var = {1, 2, '3'}
mat_var = numpy.matrix([[1,2],[3,4]])
recursive_var = {'a': {'b': 123}, 'c': True}
''')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''
%use MATLAB
%get null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var float_var
%dict -r
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var float_var
%use sos
%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var recursive_var float_var
                ''')
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(list(res['num_arr_var']), [1, 2, 3],
                             "Got {}".format(res['num_arr_var']))
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(list(res['float_var']), [1.2, 2.1])
            self.assertEqual(list(res['list_var']), [1, 2, '3'],
                             'Got {}'.format(res['list_var']))
            self.assertEqual(res['dict_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertTrue(
                len(res['set_var']) == 3 and '3' in res['set_var']
                and 1 in res['set_var'] and 2 in res['set_var'])

            self.assertEqual(res['mat_var'].shape, (2, 2))
            self.assertEqual(res['recursive_var'], {
                'a': {
                    'b': 123
                },
                'c': True
            })
コード例 #11
0
ファイル: test_sos_kernel.py プロジェクト: ktaletsk/sos-r
 def testWith(self):
     '''Test magic with'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         execute(kc=kc, code='var = [1, 2, 3, 4]')
         wait_for_idle(kc)
         execute(kc=kc, code='%with R -i var -o m\nm=mean(var)')
         wait_for_idle(kc)
         execute(kc=kc, code="%dict m")
         res = get_result(iopub)
         self.assertEqual(res['m'], 2.5)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
コード例 #12
0
    def testDAG(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''\
%run
[a]
b=10

[default]
sos_run('a')
''')
            wait_for_idle(kc)
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 10)
コード例 #13
0
ファイル: test_Ruby_kernel.py プロジェクト: vatlab/sos-ruby
    def testPutRubyDataToPython(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc, code="""\
%use Ruby
null_var = nil
num_var = 123
num_arr_var = [1, 2, 3]
logic_var = true
logic_arr_var = [true, true, false]
char_arr_var = [1, 2, "3"]
char_var = '1"23'
mat_var = N[[1, 2], [3, 4]]
recursive_var = {"a"=>1, "b"=>{"c"=>3}, "d"=>"whatever"}
comp_var = Complex(1,2)
single_char_var = 'a'
""")
            wait_for_idle(kc)
            execute(kc=kc, code="%put null_var num_var num_arr_var logic_var logic_arr_var char_arr_var char_var mat_var recursive_var comp_var single_char_var")
            wait_for_idle(kc)
            execute(kc=kc, code="%use sos")
#            wait_for_idle(kc)
#            execute(kc=kc, code='''
#%use sos
#named_list_var = list(named_list_var)
#''')
            wait_for_idle(kc)
            execute(kc=kc, code="%dict null_var num_var num_arr_var logic_var logic_arr_var char_arr_var char_var mat_var recursive_var comp_var single_char_var")
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(list(res['num_arr_var']), [1,2,3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, True, False])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], [1, 2, '3'])
            self.assertEqual(res['mat_var'].shape, (2,2))
            self.assertEqual(res['recursive_var'], {'a': 1, 'b': {'c': 3}, 'd': 'whatever'})
            self.assertEqual(res['comp_var'], 1+2j)
            self.assertEqual(res['single_char_var'], 'a')
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
コード例 #14
0
    def testRerun(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''\
%run
parameter: a=10

[default]
b = a
''')
            wait_for_idle(kc)
            #
            execute(kc=kc, code='''\
%rerun --a 20
''')
            wait_for_idle(kc)
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 20)
コード例 #15
0
    def testTarget(self):
        for f in [
                'A1.txt', 'A2.txt', 'C2.txt', 'B2.txt', 'B1.txt', 'B3.txt',
                'C1.txt', 'C3.txt', 'C4.txt'
        ]:
            if file_target(f).exists():
                file_target(f).unlink()
        #
        #  A1 <- B1 <- B2 <- B3
        #   |
        #   |
        #  \/
        #  A2 <- B2 <- C1 <- C2 <- C4
        #                    C3
        #
        script = '''\
%run -t B1.txt -s force
[A_1]
input: 'B1.txt'
output: 'A1.txt'
run:
    touch A1.txt

[A_2]
depends:  'B2.txt'
run:
    touch A2.txt

[B1: provides='B1.txt']
depends: 'B2.txt'
run:
    touch B1.txt

[B2: provides='B2.txt']
depends: 'B3.txt', 'C1.txt'
run:
    touch B2.txt

[B3: provides='B3.txt']
run:
    touch B3.txt

[C1: provides='C1.txt']
depends: 'C2.txt', 'C3.txt'
run:
    touch C1.txt

[C2: provides='C2.txt']
depends: 'C4.txt'
run:
    touch C2.txt

[C3: provides='C3.txt']
depends: 'C4.txt'
run:
    touch C3.txt

[C4: provides='C4.txt']
run:
    touch C4.txt

        '''
        script2 = '''\
import os
fail = 0
for f in ['A1.txt', 'A2.txt']:
    fail += os.path.exists(f)
for f in ['C2.txt', 'B2.txt', 'B1.txt', 'B3.txt', 'C1.txt', 'C3.txt', 'C4.txt']:
    fail += not os.path.exists(f)
fail
'''
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code=script)
            wait_for_idle(kc)
            execute(kc=kc, code=script2)
            res = get_result(iopub)
            self.assertEqual(res, 0)