<s> """<STR_LIT>""" <EOL> import warnings <EOL> import numpy as np <EOL> from bayespy . utils import misc <EOL> from bayespy . inference . vmp . nodes import CategoricalMarkovChain , Dirichlet <EOL> class TestCategoricalMarkovChain ( misc . TestCase ) : <EOL> def test_init ( self ) : <EOL> """<STR_LIT>""" <EOL> p0 = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] ) <EOL> P = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] , size = ( <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> self . assertEqual ( ( ) , Z . plates , msg = "<STR_LIT>" ) <EOL> self . assertEqual ( ( ( <NUM_LIT:2> , ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> ) ) , Z . dims , msg = "<STR_LIT>" ) <EOL> p0 = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] , size = ( <NUM_LIT:4> , ) ) <EOL> P = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] , size = ( <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> self . assertEqual ( ( <NUM_LIT:4> , ) , Z . plates , msg = "<STR_LIT>" ) <EOL> self . assertEqual ( ( ( <NUM_LIT:2> , ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> ) ) , Z . dims , msg = "<STR_LIT>" ) <EOL> p0 = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] ) <EOL> P = np . random . dirichlet ( [ <NUM_LIT:1> , <NUM_LIT:1> ] , size = ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> self . assertEqual ( ( <NUM_LIT:4> , ) , Z . plates , msg = "<STR_LIT>" ) <EOL> self . assertEqual ( ( ( <NUM_LIT:2> , ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> ) ) , Z . dims , msg = "<STR_LIT>" ) <EOL> p0 = np . array ( [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ) <EOL> P = Dirichlet ( <NUM_LIT> * np . ones ( <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:2> , ) ) <EOL> Z = CategoricalMarkovChain ( p0 , P , <EOL> states = <NUM_LIT> ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertTrue ( np . all ( ~ np . isnan ( u [ <NUM_LIT:0> ] ) ) , <EOL> msg = "<STR_LIT>" ) <EOL> self . assertTrue ( np . all ( ~ np . isnan ( u [ <NUM_LIT:1> ] ) ) , <EOL> msg = "<STR_LIT>" ) <EOL> pass <EOL> def test_message_to_child ( self ) : <EOL> """<STR_LIT>""" <EOL> with warnings . catch_warnings ( ) : <EOL> warnings . simplefilter ( "<STR_LIT:ignore>" , RuntimeWarning ) <EOL> p0 = np . array ( [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] ) <EOL> P = np . array ( <NUM_LIT:3> * [ [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] ] ] ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1.0> , <NUM_LIT:0> ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] , <EOL> [ [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] , <EOL> [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] ] ] ) <EOL> p0 = np . array ( [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ) <EOL> P = np . array ( <NUM_LIT:3> * [ [ [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ] ] ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] , <EOL> [ [ [ <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> ] ] ] ) <EOL> p0 = np . array ( [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ) <EOL> P = np . array ( <NUM_LIT:3> * [ [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] ] ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] , <EOL> [ [ [ <NUM_LIT:0.0> , <NUM_LIT:0.5> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:0.5> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:0.5> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.0> ] ] ] ) <EOL> p0 = np . array ( [ [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ] ) <EOL> P = np . array ( [ [ [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] ] ] , <EOL> [ [ [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ] ] ] ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , <EOL> [ [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] , <EOL> [ <NUM_LIT:0.5> , <NUM_LIT:0.5> ] ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] , <EOL> [ [ [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] ] ] , <EOL> [ [ [ <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> ] ] ] ] ) <EOL> p0 = np . array ( [ <NUM_LIT:1.0> , <NUM_LIT:0.0> ] ) <EOL> P = Dirichlet ( [ <NUM_LIT> , <NUM_LIT> ] , <EOL> plates = ( <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> Z = CategoricalMarkovChain ( p0 , P ) <EOL> u = Z . _message_to_child ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1.0> , <NUM_LIT:0> ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] , <EOL> [ [ [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] ] , <EOL> [ [ <NUM_LIT:0.0> , <NUM_LIT:0.0> ] , <EOL> [ <NUM_LIT:0.0> , <NUM_LIT:1.0> ] ] ] ) <EOL> pass <EOL> def test_random ( self ) : <EOL> """<STR_LIT>""" <EOL> with warnings . catch_warnings ( ) : <EOL> warnings . simplefilter ( "<STR_LIT:ignore>" , RuntimeWarning ) <EOL> Z = CategoricalMarkovChain ( [ <NUM_LIT:1> , <NUM_LIT:0> ] , [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] , <EOL> states = <NUM_LIT:3> ) <EOL> z = Z . random ( ) <EOL> self . assertAllClose ( z , [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] ) <EOL> p0 = [ [ <NUM_LIT:1> , <NUM_LIT:0> ] , [ <NUM_LIT:0> , <NUM_LIT:1> ] ] <EOL> P = [ [ [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] ] , <EOL> [ [ [ <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> ] ] ] ] <EOL> Z = CategoricalMarkovChain ( p0 , P , <EOL> states = <NUM_LIT:3> ) <EOL> z = Z . random ( ) <EOL> self . assertAllClose ( z , [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] ] ) <EOL> Z = CategoricalMarkovChain ( [ <NUM_LIT:1> , <NUM_LIT:0> ] , [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] , <EOL> states = <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:3> , <NUM_LIT:4> ) ) <EOL> z = Z . random ( ) <EOL> self . assertAllClose ( z , np . ones ( ( <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:1> ) ) * [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] ) <EOL> p0 = [ <NUM_LIT:1> , <NUM_LIT:0> ] <EOL> P = [ [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] , <EOL> [ [ <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> ] ] , <EOL> [ [ <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> ] ] ] <EOL> Z = CategoricalMarkovChain ( p0 , P , <EOL> states = <NUM_LIT:4> ) <EOL> z = Z . random ( ) <EOL> self . assertAllClose ( z , [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> ] ) <EOL> pass </s>
