diff --git a/cxx/assets/test_files/test_crosscat_bernoulli.obs b/cxx/assets/test_files/test_crosscat_bernoulli.obs new file mode 100644 index 0000000..518e6a2 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_bernoulli.obs @@ -0,0 +1,400 @@ +0,has_col0,0 +0,has_col1,0 +1,has_col2,0 +0,has_col3,0 +0,has_col0,1 +0,has_col1,1 +0,has_col2,1 +1,has_col3,1 +1,has_col0,2 +1,has_col1,2 +0,has_col2,2 +1,has_col3,2 +1,has_col0,3 +1,has_col1,3 +1,has_col2,3 +0,has_col3,3 +1,has_col0,4 +1,has_col1,4 +0,has_col2,4 +1,has_col3,4 +1,has_col0,5 +1,has_col1,5 +1,has_col2,5 +0,has_col3,5 +0,has_col0,6 +0,has_col1,6 +0,has_col2,6 +1,has_col3,6 +0,has_col0,7 +0,has_col1,7 +1,has_col2,7 +0,has_col3,7 +0,has_col0,8 +0,has_col1,8 +0,has_col2,8 +1,has_col3,8 +1,has_col0,9 +1,has_col1,9 +0,has_col2,9 +1,has_col3,9 +1,has_col0,10 +1,has_col1,10 +1,has_col2,10 +0,has_col3,10 +1,has_col0,11 +1,has_col1,11 +1,has_col2,11 +0,has_col3,11 +1,has_col0,12 +1,has_col1,12 +1,has_col2,12 +0,has_col3,12 +1,has_col0,13 +1,has_col1,13 +0,has_col2,13 +1,has_col3,13 +0,has_col0,14 +0,has_col1,14 +0,has_col2,14 +1,has_col3,14 +0,has_col0,15 +0,has_col1,15 +0,has_col2,15 +1,has_col3,15 +1,has_col0,16 +1,has_col1,16 +0,has_col2,16 +1,has_col3,16 +1,has_col0,17 +1,has_col1,17 +1,has_col2,17 +0,has_col3,17 +1,has_col0,18 +1,has_col1,18 +1,has_col2,18 +0,has_col3,18 +0,has_col0,19 +0,has_col1,19 +0,has_col2,19 +1,has_col3,19 +1,has_col0,20 +1,has_col1,20 +0,has_col2,20 +1,has_col3,20 +1,has_col0,21 +1,has_col1,21 +1,has_col2,21 +0,has_col3,21 +0,has_col0,22 +0,has_col1,22 +0,has_col2,22 +1,has_col3,22 +1,has_col0,23 +1,has_col1,23 +0,has_col2,23 +1,has_col3,23 +0,has_col0,24 +0,has_col1,24 +0,has_col2,24 +1,has_col3,24 +0,has_col0,25 +0,has_col1,25 +0,has_col2,25 +1,has_col3,25 +1,has_col0,26 +1,has_col1,26 +1,has_col2,26 +0,has_col3,26 +0,has_col0,27 +0,has_col1,27 +0,has_col2,27 +1,has_col3,27 +0,has_col0,28 +0,has_col1,28 +0,has_col2,28 +1,has_col3,28 +0,has_col0,29 +0,has_col1,29 +0,has_col2,29 +1,has_col3,29 +1,has_col0,30 +1,has_col1,30 +0,has_col2,30 +1,has_col3,30 +0,has_col0,31 +0,has_col1,31 +0,has_col2,31 +1,has_col3,31 +0,has_col0,32 +0,has_col1,32 +1,has_col2,32 +0,has_col3,32 +0,has_col0,33 +0,has_col1,33 +0,has_col2,33 +1,has_col3,33 +1,has_col0,34 +1,has_col1,34 +1,has_col2,34 +0,has_col3,34 +1,has_col0,35 +1,has_col1,35 +1,has_col2,35 +0,has_col3,35 +1,has_col0,36 +1,has_col1,36 +1,has_col2,36 +0,has_col3,36 +0,has_col0,37 +0,has_col1,37 +1,has_col2,37 +0,has_col3,37 +0,has_col0,38 +0,has_col1,38 +0,has_col2,38 +1,has_col3,38 +1,has_col0,39 +1,has_col1,39 +0,has_col2,39 +1,has_col3,39 +1,has_col0,40 +1,has_col1,40 +1,has_col2,40 +0,has_col3,40 +1,has_col0,41 +1,has_col1,41 +0,has_col2,41 +1,has_col3,41 +1,has_col0,42 +1,has_col1,42 +0,has_col2,42 +1,has_col3,42 +0,has_col0,43 +0,has_col1,43 +1,has_col2,43 +0,has_col3,43 +1,has_col0,44 +1,has_col1,44 +0,has_col2,44 +1,has_col3,44 +1,has_col0,45 +1,has_col1,45 +0,has_col2,45 +1,has_col3,45 +0,has_col0,46 +0,has_col1,46 +1,has_col2,46 +0,has_col3,46 +1,has_col0,47 +1,has_col1,47 +0,has_col2,47 +1,has_col3,47 +1,has_col0,48 +1,has_col1,48 +1,has_col2,48 +0,has_col3,48 +1,has_col0,49 +1,has_col1,49 +0,has_col2,49 +1,has_col3,49 +1,has_col0,50 +1,has_col1,50 +1,has_col2,50 +0,has_col3,50 +1,has_col0,51 +1,has_col1,51 +0,has_col2,51 +1,has_col3,51 +1,has_col0,52 +1,has_col1,52 +0,has_col2,52 +1,has_col3,52 +1,has_col0,53 +1,has_col1,53 +0,has_col2,53 +1,has_col3,53 +0,has_col0,54 +0,has_col1,54 +0,has_col2,54 +1,has_col3,54 +0,has_col0,55 +0,has_col1,55 +0,has_col2,55 +1,has_col3,55 +1,has_col0,56 +1,has_col1,56 +1,has_col2,56 +0,has_col3,56 +1,has_col0,57 +1,has_col1,57 +1,has_col2,57 +0,has_col3,57 +1,has_col0,58 +1,has_col1,58 +0,has_col2,58 +1,has_col3,58 +0,has_col0,59 +0,has_col1,59 +1,has_col2,59 +0,has_col3,59 +0,has_col0,60 +0,has_col1,60 +1,has_col2,60 +0,has_col3,60 +1,has_col0,61 +1,has_col1,61 +0,has_col2,61 +1,has_col3,61 +1,has_col0,62 +1,has_col1,62 +1,has_col2,62 +0,has_col3,62 +0,has_col0,63 +0,has_col1,63 +1,has_col2,63 +0,has_col3,63 +0,has_col0,64 +0,has_col1,64 +1,has_col2,64 +0,has_col3,64 +0,has_col0,65 +0,has_col1,65 +0,has_col2,65 +1,has_col3,65 +0,has_col0,66 +0,has_col1,66 +0,has_col2,66 +1,has_col3,66 +1,has_col0,67 +1,has_col1,67 +0,has_col2,67 +1,has_col3,67 +0,has_col0,68 +0,has_col1,68 +0,has_col2,68 +1,has_col3,68 +1,has_col0,69 +1,has_col1,69 +0,has_col2,69 +1,has_col3,69 +0,has_col0,70 +0,has_col1,70 +0,has_col2,70 +1,has_col3,70 +0,has_col0,71 +0,has_col1,71 +0,has_col2,71 +1,has_col3,71 +1,has_col0,72 +1,has_col1,72 +1,has_col2,72 +0,has_col3,72 +0,has_col0,73 +0,has_col1,73 +1,has_col2,73 +0,has_col3,73 +1,has_col0,74 +1,has_col1,74 +1,has_col2,74 +0,has_col3,74 +0,has_col0,75 +0,has_col1,75 +0,has_col2,75 +1,has_col3,75 +0,has_col0,76 +0,has_col1,76 +1,has_col2,76 +0,has_col3,76 +0,has_col0,77 +0,has_col1,77 +0,has_col2,77 +1,has_col3,77 +1,has_col0,78 +1,has_col1,78 +0,has_col2,78 +1,has_col3,78 +0,has_col0,79 +0,has_col1,79 +0,has_col2,79 +1,has_col3,79 +0,has_col0,80 +0,has_col1,80 +1,has_col2,80 +0,has_col3,80 +1,has_col0,81 +1,has_col1,81 +0,has_col2,81 +1,has_col3,81 +0,has_col0,82 +0,has_col1,82 +1,has_col2,82 +0,has_col3,82 +1,has_col0,83 +1,has_col1,83 +1,has_col2,83 +0,has_col3,83 +0,has_col0,84 +0,has_col1,84 +0,has_col2,84 +1,has_col3,84 +0,has_col0,85 +0,has_col1,85 +0,has_col2,85 +1,has_col3,85 +0,has_col0,86 +0,has_col1,86 +0,has_col2,86 +1,has_col3,86 +0,has_col0,87 +0,has_col1,87 +0,has_col2,87 +1,has_col3,87 +1,has_col0,88 +1,has_col1,88 +1,has_col2,88 +0,has_col3,88 +0,has_col0,89 +0,has_col1,89 +1,has_col2,89 +0,has_col3,89 +0,has_col0,90 +0,has_col1,90 +0,has_col2,90 +1,has_col3,90 +1,has_col0,91 +1,has_col1,91 +0,has_col2,91 +1,has_col3,91 +0,has_col0,92 +0,has_col1,92 +1,has_col2,92 +0,has_col3,92 +0,has_col0,93 +0,has_col1,93 +1,has_col2,93 +0,has_col3,93 +0,has_col0,94 +0,has_col1,94 +0,has_col2,94 +1,has_col3,94 +0,has_col0,95 +0,has_col1,95 +0,has_col2,95 +1,has_col3,95 +1,has_col0,96 +1,has_col1,96 +1,has_col2,96 +0,has_col3,96 +1,has_col0,97 +1,has_col1,97 +1,has_col2,97 +0,has_col3,97 +0,has_col0,98 +0,has_col1,98 +0,has_col2,98 +1,has_col3,98 +0,has_col0,99 +0,has_col1,99 +1,has_col2,99 +0,has_col3,99 diff --git a/cxx/assets/test_files/test_crosscat_bernoulli.schema b/cxx/assets/test_files/test_crosscat_bernoulli.schema new file mode 100644 index 0000000..dcc833e --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_bernoulli.schema @@ -0,0 +1,4 @@ +col1 ~ bernoulli(id) +col2 ~ bernoulli(id) +col3 ~ bernoulli(id) +col4 ~ bernoulli(id) diff --git a/cxx/assets/test_files/test_crosscat_categorical.obs b/cxx/assets/test_files/test_crosscat_categorical.obs new file mode 100644 index 0000000..8e1f724 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_categorical.obs @@ -0,0 +1,400 @@ +a,has_col0,0 +first,has_col1,0 +1,has_col2,0 +odd,has_col3,0 +d,has_col0,1 +second,has_col1,1 +2,has_col2,1 +even,has_col3,1 +a,has_col0,2 +first,has_col1,2 +3,has_col2,2 +even,has_col3,2 +b,has_col0,3 +first,has_col1,3 +2,has_col2,3 +even,has_col3,3 +d,has_col0,4 +second,has_col1,4 +2,has_col2,4 +even,has_col3,4 +c,has_col0,5 +second,has_col1,5 +3,has_col2,5 +even,has_col3,5 +c,has_col0,6 +second,has_col1,6 +3,has_col2,6 +even,has_col3,6 +d,has_col0,7 +second,has_col1,7 +4,has_col2,7 +even,has_col3,7 +c,has_col0,8 +second,has_col1,8 +4,has_col2,8 +even,has_col3,8 +b,has_col0,9 +first,has_col1,9 +1,has_col2,9 +odd,has_col3,9 +b,has_col0,10 +first,has_col1,10 +4,has_col2,10 +even,has_col3,10 +a,has_col0,11 +first,has_col1,11 +2,has_col2,11 +even,has_col3,11 +a,has_col0,12 +first,has_col1,12 +1,has_col2,12 +odd,has_col3,12 +c,has_col0,13 +second,has_col1,13 +1,has_col2,13 +odd,has_col3,13 +b,has_col0,14 +first,has_col1,14 +4,has_col2,14 +even,has_col3,14 +b,has_col0,15 +first,has_col1,15 +3,has_col2,15 +even,has_col3,15 +b,has_col0,16 +first,has_col1,16 +1,has_col2,16 +odd,has_col3,16 +c,has_col0,17 +second,has_col1,17 +1,has_col2,17 +odd,has_col3,17 +d,has_col0,18 +second,has_col1,18 +4,has_col2,18 +even,has_col3,18 +d,has_col0,19 +second,has_col1,19 +4,has_col2,19 +even,has_col3,19 +d,has_col0,20 +second,has_col1,20 +2,has_col2,20 +even,has_col3,20 +a,has_col0,21 +first,has_col1,21 +4,has_col2,21 +even,has_col3,21 +c,has_col0,22 +second,has_col1,22 +2,has_col2,22 +even,has_col3,22 +c,has_col0,23 +second,has_col1,23 +3,has_col2,23 +even,has_col3,23 +c,has_col0,24 +second,has_col1,24 +1,has_col2,24 +odd,has_col3,24 +b,has_col0,25 +first,has_col1,25 +3,has_col2,25 +even,has_col3,25 +c,has_col0,26 +second,has_col1,26 +3,has_col2,26 +even,has_col3,26 +b,has_col0,27 +first,has_col1,27 +1,has_col2,27 +odd,has_col3,27 +a,has_col0,28 +first,has_col1,28 +1,has_col2,28 +odd,has_col3,28 +b,has_col0,29 +first,has_col1,29 +2,has_col2,29 +even,has_col3,29 +a,has_col0,30 +first,has_col1,30 +3,has_col2,30 +even,has_col3,30 +b,has_col0,31 +first,has_col1,31 +2,has_col2,31 +even,has_col3,31 +d,has_col0,32 +second,has_col1,32 +3,has_col2,32 +even,has_col3,32 +c,has_col0,33 +second,has_col1,33 +2,has_col2,33 +even,has_col3,33 +a,has_col0,34 +first,has_col1,34 +4,has_col2,34 +even,has_col3,34 +d,has_col0,35 +second,has_col1,35 +2,has_col2,35 +even,has_col3,35 +a,has_col0,36 +first,has_col1,36 +4,has_col2,36 +even,has_col3,36 +d,has_col0,37 +second,has_col1,37 +2,has_col2,37 +even,has_col3,37 +b,has_col0,38 +first,has_col1,38 +3,has_col2,38 +even,has_col3,38 +b,has_col0,39 +first,has_col1,39 +1,has_col2,39 +odd,has_col3,39 +c,has_col0,40 +second,has_col1,40 +2,has_col2,40 +even,has_col3,40 +d,has_col0,41 +second,has_col1,41 +3,has_col2,41 +even,has_col3,41 +b,has_col0,42 +first,has_col1,42 +4,has_col2,42 +even,has_col3,42 +d,has_col0,43 +second,has_col1,43 +4,has_col2,43 +even,has_col3,43 +c,has_col0,44 +second,has_col1,44 +1,has_col2,44 +odd,has_col3,44 +b,has_col0,45 +first,has_col1,45 +2,has_col2,45 +even,has_col3,45 +b,has_col0,46 +first,has_col1,46 +3,has_col2,46 +even,has_col3,46 +a,has_col0,47 +first,has_col1,47 +3,has_col2,47 +even,has_col3,47 +a,has_col0,48 +first,has_col1,48 +1,has_col2,48 +odd,has_col3,48 +d,has_col0,49 +second,has_col1,49 +2,has_col2,49 +even,has_col3,49 +d,has_col0,50 +second,has_col1,50 +4,has_col2,50 +even,has_col3,50 +a,has_col0,51 +first,has_col1,51 +2,has_col2,51 +even,has_col3,51 +b,has_col0,52 +first,has_col1,52 +3,has_col2,52 +even,has_col3,52 +d,has_col0,53 +second,has_col1,53 +2,has_col2,53 +even,has_col3,53 +c,has_col0,54 +second,has_col1,54 +3,has_col2,54 +even,has_col3,54 +d,has_col0,55 +second,has_col1,55 +2,has_col2,55 +even,has_col3,55 +d,has_col0,56 +second,has_col1,56 +1,has_col2,56 +odd,has_col3,56 +d,has_col0,57 +second,has_col1,57 +2,has_col2,57 +even,has_col3,57 +d,has_col0,58 +second,has_col1,58 +4,has_col2,58 +even,has_col3,58 +b,has_col0,59 +first,has_col1,59 +1,has_col2,59 +odd,has_col3,59 +c,has_col0,60 +second,has_col1,60 +3,has_col2,60 +even,has_col3,60 +a,has_col0,61 +first,has_col1,61 +3,has_col2,61 +even,has_col3,61 +d,has_col0,62 +second,has_col1,62 +3,has_col2,62 +even,has_col3,62 +c,has_col0,63 +second,has_col1,63 +2,has_col2,63 +even,has_col3,63 +d,has_col0,64 +second,has_col1,64 +2,has_col2,64 +even,has_col3,64 +c,has_col0,65 +second,has_col1,65 +1,has_col2,65 +odd,has_col3,65 +d,has_col0,66 +second,has_col1,66 +2,has_col2,66 +even,has_col3,66 +d,has_col0,67 +second,has_col1,67 +2,has_col2,67 +even,has_col3,67 +a,has_col0,68 +first,has_col1,68 +2,has_col2,68 +even,has_col3,68 +d,has_col0,69 +second,has_col1,69 +3,has_col2,69 +even,has_col3,69 +c,has_col0,70 +second,has_col1,70 +2,has_col2,70 +even,has_col3,70 +a,has_col0,71 +first,has_col1,71 +1,has_col2,71 +odd,has_col3,71 +b,has_col0,72 +first,has_col1,72 +3,has_col2,72 +even,has_col3,72 +d,has_col0,73 +second,has_col1,73 +4,has_col2,73 +even,has_col3,73 +a,has_col0,74 +first,has_col1,74 +1,has_col2,74 +odd,has_col3,74 +b,has_col0,75 +first,has_col1,75 +2,has_col2,75 +even,has_col3,75 +d,has_col0,76 +second,has_col1,76 +1,has_col2,76 +odd,has_col3,76 +b,has_col0,77 +first,has_col1,77 +4,has_col2,77 +even,has_col3,77 +d,has_col0,78 +second,has_col1,78 +3,has_col2,78 +even,has_col3,78 +d,has_col0,79 +second,has_col1,79 +2,has_col2,79 +even,has_col3,79 +d,has_col0,80 +second,has_col1,80 +3,has_col2,80 +even,has_col3,80 +d,has_col0,81 +second,has_col1,81 +1,has_col2,81 +odd,has_col3,81 +a,has_col0,82 +first,has_col1,82 +1,has_col2,82 +odd,has_col3,82 +b,has_col0,83 +first,has_col1,83 +3,has_col2,83 +even,has_col3,83 +a,has_col0,84 +first,has_col1,84 +2,has_col2,84 +even,has_col3,84 +b,has_col0,85 +first,has_col1,85 +2,has_col2,85 +even,has_col3,85 +c,has_col0,86 +second,has_col1,86 +3,has_col2,86 +even,has_col3,86 +b,has_col0,87 +first,has_col1,87 +3,has_col2,87 +even,has_col3,87 +c,has_col0,88 +second,has_col1,88 +4,has_col2,88 +even,has_col3,88 +d,has_col0,89 +second,has_col1,89 +2,has_col2,89 +even,has_col3,89 +d,has_col0,90 +second,has_col1,90 +4,has_col2,90 +even,has_col3,90 +c,has_col0,91 +second,has_col1,91 +1,has_col2,91 +odd,has_col3,91 +d,has_col0,92 +second,has_col1,92 +1,has_col2,92 +odd,has_col3,92 +a,has_col0,93 +first,has_col1,93 +2,has_col2,93 +even,has_col3,93 +d,has_col0,94 +second,has_col1,94 +1,has_col2,94 +odd,has_col3,94 +d,has_col0,95 +second,has_col1,95 +2,has_col2,95 +even,has_col3,95 +d,has_col0,96 +second,has_col1,96 +4,has_col2,96 +even,has_col3,96 +c,has_col0,97 +second,has_col1,97 +2,has_col2,97 +even,has_col3,97 +b,has_col0,98 +first,has_col1,98 +1,has_col2,98 +odd,has_col3,98 +a,has_col0,99 +first,has_col1,99 +1,has_col2,99 +odd,has_col3,99 diff --git a/cxx/assets/test_files/test_crosscat_categorical.schema b/cxx/assets/test_files/test_crosscat_categorical.schema new file mode 100644 index 0000000..6d10003 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_categorical.schema @@ -0,0 +1,4 @@ +col1 ~ stringcat[strings="a:b:c:d",delim=:](id) +col2 ~ stringcat[strings="first:second",delim=:](id) +col3 ~ stringcat[strings="1:2:3:4",delim=:](id) +col4 ~ stringcat[strings="odd:even",delim=:](id) diff --git a/cxx/assets/test_files/test_crosscat_generator.py b/cxx/assets/test_files/test_crosscat_generator.py new file mode 100644 index 0000000..db0e176 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_generator.py @@ -0,0 +1,87 @@ +# Generates a 4 column dataset for one data type. +import numpy as np + +NUM_SAMPLES_1 = 33 +NUM_SAMPLES_2 = 50 +NUM_SAMPLES = 100 + + +def write_out_dataset(filename, dataset): + f = open(filename, 'w') + for i in range(NUM_SAMPLES): + f.write(f"{dataset[i, 0]},col0,{i}\n") + f.write(f"{dataset[i, 1]},col1,{i}\n") + f.write(f"{dataset[i, 2]},col2,{i}\n") + f.write(f"{dataset[i, 3]},col3,{i}\n") + f.close() + +def main(): + rng = np.random.default_rng(1762) + # Generate real data. + + # Draw from a well separated mixture of 3 2-D normals for the first view, and 2 2-D normals for the second view. + e = 0.5 * np.eye(2) + cluster1 = rng.multivariate_normal([-5., -5.], e, NUM_SAMPLES_1) + cluster2 = rng.multivariate_normal([0., 0.], e, NUM_SAMPLES_1) + cluster3 = rng.multivariate_normal([5., 5.], e, NUM_SAMPLES_1 + 1) + view1 = np.concatenate([cluster1, cluster2, cluster3], axis=0) + # Make sure that the first view doesn't non-trivially correlate with the second view. + rng.shuffle(view1) + + # Use a obviously different correlation here. + cov = [[1., 1. / 4.], [1. / 4., 1. / 2.]] + cluster1 = rng.multivariate_normal([5., -5.], cov, NUM_SAMPLES_2) + cluster2 = rng.multivariate_normal([1., 1.], cov, NUM_SAMPLES_2) + view2 = np.concatenate([cluster1, cluster2], axis=0) + + dataset = np.concatenate([view1, view2], axis=1) + write_out_dataset('test_crosscat_normal.obs', dataset) + + # Generate boolean data. + # For the first view, the columns are duplicated. For the second view, one is the opposite of the other. + data = rng.integers(0, 2, size=NUM_SAMPLES) + view1 = np.stack([data, data], axis=1) + + data = rng.integers(0, 2, size=NUM_SAMPLES) + view2 = np.stack([data, 1 - data], axis=1) + + dataset = np.concatenate([view1, view2], axis=1) + write_out_dataset('test_crosscat_bernoulli.obs', dataset) + + # Generate string data. + string1 = ['aba', 'baa', 'abb'] + string2 = ['1', '2', '3'] + + string3 = ['cccd', 'ddcccc'] + string4 = ['first', 'second'] + + column1 = np.random.choice(string1, NUM_SAMPLES, p=[1./3, 1./3, 1./3]) + column2 = np.where(np.equal(column1, 'aba'), '1', + np.where(np.equal(column1, 'baa'), '2', '3')) + view1 = np.stack([column1, column2], axis=1) + + column3 = np.random.choice(string3, NUM_SAMPLES, p=[0.5, 0.5]) + column4 = np.where(np.equal(column1, 'cccd'), 'first', 'second') + view2 = np.stack([column3, column4], axis=1) + dataset = np.concatenate([view1, view2], axis=1) + write_out_dataset('test_crosscat_string.obs', dataset) + + # Generate categorical data. + category1 = ['a', 'b', 'c', 'd'] + category2 = ['first', 'second'] + + category3 = ['1', '2', '3', '4'] + category4 = ['odd', 'even'] + + column1 = np.random.choice(category1, NUM_SAMPLES, p=[0.25, 0.25, 0.25, 0.25]) + column2 = np.where(np.equal(column1, 'a') | np.equal(column1, 'b'), 'first', 'second') + view1 = np.stack([column1, column2], axis=1) + + column3 = np.random.choice(category3, NUM_SAMPLES, p=[0.25, 0.25, 0.25, 0.25]) + column4 = np.where(np.equal(column3, '1') | np.equal(column1, '3'), 'odd', 'even') + view2 = np.stack([column3, column4], axis=1) + dataset = np.concatenate([view1, view2], axis=1) + write_out_dataset('test_crosscat_categorical.obs', dataset) + + +main() diff --git a/cxx/assets/test_files/test_crosscat_normal.obs b/cxx/assets/test_files/test_crosscat_normal.obs new file mode 100644 index 0000000..6784ac9 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_normal.obs @@ -0,0 +1,400 @@ +5.865622015826,has_col0,0 +5.409394553089446,has_col1,0 +4.50594083506061,has_col2,0 +-5.51284012466678,has_col3,0 +5.301352262948929,has_col0,1 +3.9798685817911297,has_col1,1 +3.9346152138255484,has_col2,1 +-5.799456791298532,has_col3,1 +-5.089286652673962,has_col0,2 +-4.2046654256480585,has_col1,2 +5.094332025963338,has_col2,2 +-5.314686507731689,has_col3,2 +4.206026695769683,has_col0,3 +5.290450176358265,has_col1,3 +4.488973716250131,has_col2,3 +-6.16797309848703,has_col3,3 +-5.442838426243058,has_col0,4 +-4.903920036359933,has_col1,4 +3.5347873227511206,has_col2,4 +-5.563623021906307,has_col3,4 +-5.6617360260261735,has_col0,5 +-4.476530733412401,has_col1,5 +4.01794336740602,has_col2,5 +-5.669633674242599,has_col3,5 +-5.167927371070279,has_col0,6 +-5.141084141315898,has_col1,6 +4.410292041907096,has_col2,6 +-4.725616153541609,has_col3,6 +1.548307999523892,has_col0,7 +-0.6628806777324576,has_col1,7 +4.930853622727651,has_col2,7 +-4.270100410591927,has_col3,7 +3.9028103660997537,has_col0,8 +4.687313995080703,has_col1,8 +4.404498820356784,has_col2,8 +-4.706955587274295,has_col3,8 +5.78593824637864,has_col0,9 +4.6415136625104045,has_col1,9 +5.815294235225776,has_col2,9 +-4.3812208873956315,has_col3,9 +-6.044161982980214,has_col0,10 +-4.476336706676164,has_col1,10 +4.466691352310526,has_col2,10 +-5.504155952378125,has_col3,10 +4.51337256713086,has_col0,11 +5.01367353741064,has_col1,11 +5.315769492864902,has_col2,11 +-4.89967575633022,has_col3,11 +0.23317558909011937,has_col0,12 +-1.1576154497538733,has_col1,12 +4.037355458163428,has_col2,12 +-5.090099174581973,has_col3,12 +-0.21442890321608019,has_col0,13 +-1.2108717731720116,has_col1,13 +4.581809260058912,has_col2,13 +-5.502222244564183,has_col3,13 +-5.619951887599391,has_col0,14 +-4.546128226587352,has_col1,14 +6.483758859928739,has_col2,14 +-4.329322044544741,has_col3,14 +4.331255154133274,has_col0,15 +4.269151144771524,has_col1,15 +3.754425603760221,has_col2,15 +-5.644985308453883,has_col3,15 +0.8227406113602412,has_col0,16 +0.22366051070618018,has_col1,16 +4.0174111093428575,has_col2,16 +-5.20368150902296,has_col3,16 +-5.288365694480648,has_col0,17 +-4.558912183417725,has_col1,17 +3.2520983236551047,has_col2,17 +-5.4839142985222695,has_col3,17 +4.88537591487193,has_col0,18 +6.368949242621062,has_col1,18 +5.197943561107243,has_col2,18 +-4.653029432764323,has_col3,18 +-4.29169848575834,has_col0,19 +-5.367909788994714,has_col1,19 +5.527426161830388,has_col2,19 +-4.983528621502534,has_col3,19 +-4.898147992450401,has_col0,20 +-5.4668043272228966,has_col1,20 +4.716194604525009,has_col2,20 +-5.0352651462104285,has_col3,20 +-5.076882300352631,has_col0,21 +-4.1837923388187095,has_col1,21 +4.403984503010983,has_col2,21 +-4.487493972304891,has_col3,21 +5.180659841713187,has_col0,22 +5.072254639944019,has_col1,22 +5.137654014958593,has_col2,22 +-4.629147858485882,has_col3,22 +-6.081796363206771,has_col0,23 +-5.027918225011147,has_col1,23 +5.9487351475813925,has_col2,23 +-4.410796138358348,has_col3,23 +0.15393589105232378,has_col0,24 +-1.3412760387860398,has_col1,24 +5.327531356046033,has_col2,24 +-5.8548302568718045,has_col3,24 +5.097383141968325,has_col0,25 +5.315334099194852,has_col1,25 +4.511929442617641,has_col2,25 +-5.689267162406144,has_col3,25 +-4.678763991672189,has_col0,26 +-4.465304553310711,has_col1,26 +2.5634796985992856,has_col2,26 +-4.657001009632986,has_col3,26 +3.6082136854826348,has_col0,27 +6.9334619356269815,has_col1,27 +4.756512236606617,has_col2,27 +-5.837255198601314,has_col3,27 +0.18873798698173969,has_col0,28 +-0.19321195851640852,has_col1,28 +4.66308614659502,has_col2,28 +-4.792599298730339,has_col3,28 +0.4229622086789553,has_col0,29 +-0.16994270297920008,has_col1,29 +6.136025599545863,has_col2,29 +-3.9978177893612985,has_col3,29 +1.1176273430183725,has_col0,30 +-0.19985584417957405,has_col1,30 +3.168002995577951,has_col2,30 +-5.3660370087837554,has_col3,30 +-4.333261233738561,has_col0,31 +-5.201948115869037,has_col1,31 +3.3905629297006104,has_col2,31 +-5.420905104176539,has_col3,31 +1.0105047058276564,has_col0,32 +-0.7762978457432432,has_col1,32 +5.288250536359595,has_col2,32 +-4.003091138236852,has_col3,32 +-0.2687779707291731,has_col0,33 +-0.262802938386415,has_col1,33 +6.98147502691997,has_col2,33 +-4.571076559167315,has_col3,33 +-0.4505346216114378,has_col0,34 +-0.7989533147933773,has_col1,34 +4.448846550603229,has_col2,34 +-4.82656127990635,has_col3,34 +-3.673603365294807,has_col0,35 +-6.201161514810597,has_col1,35 +5.954605077159009,has_col2,35 +-4.3170722664577745,has_col3,35 +-4.340906411785886,has_col0,36 +-5.3299333925056525,has_col1,36 +4.676669668798539,has_col2,36 +-5.063041049471624,has_col3,36 +-4.974599146913203,has_col0,37 +-4.426099071335764,has_col1,37 +5.547013783772574,has_col2,37 +-5.3061071732902665,has_col3,37 +5.414026052279654,has_col0,38 +5.862076538922297,has_col1,38 +4.075038372824947,has_col2,38 +-5.269040728923578,has_col3,38 +-5.540739772718646,has_col0,39 +-4.627385484824017,has_col1,39 +6.196414860338802,has_col2,39 +-5.321129528574026,has_col3,39 +5.535410357423955,has_col0,40 +5.020109384479833,has_col1,40 +5.335110547261538,has_col2,40 +-4.358046614922601,has_col3,40 +0.3263020428677404,has_col0,41 +0.29283450316372184,has_col1,41 +4.522501915126821,has_col2,41 +-4.26521215905378,has_col3,41 +5.306614556847166,has_col0,42 +5.35403144233317,has_col1,42 +6.75701905185943,has_col2,42 +-3.486956750425156,has_col3,42 +-5.171223961904964,has_col0,43 +-4.178156671651806,has_col1,43 +5.630272009892934,has_col2,43 +-4.288021014298469,has_col3,43 +5.210728975646809,has_col0,44 +4.841085010875366,has_col1,44 +6.903485352189811,has_col2,44 +-4.25178156407459,has_col3,44 +4.344664478487668,has_col0,45 +4.850937993484405,has_col1,45 +5.3374203241093525,has_col2,45 +-5.26087583214078,has_col3,45 +0.28309811005125474,has_col0,46 +0.9924914647265038,has_col1,46 +4.644543231905781,has_col2,46 +-3.965501906651181,has_col3,46 +-5.085429873797359,has_col0,47 +-5.008392718636412,has_col1,47 +4.513377830187429,has_col2,47 +-4.632307955708253,has_col3,47 +5.350017743667681,has_col0,48 +5.8443836589110365,has_col1,48 +5.366458531695846,has_col2,48 +-5.415750885382108,has_col3,48 +5.483218743353558,has_col0,49 +4.949933230932452,has_col1,49 +4.685500689666992,has_col2,49 +-5.396173106114733,has_col3,49 +-4.799370358812453,has_col0,50 +-6.706421510184275,has_col1,50 +0.8177760438451733,has_col2,50 +0.7713654632502768,has_col3,50 +-5.293292343843757,has_col0,51 +-4.916265015600132,has_col1,51 +1.0264517639456177,has_col2,51 +0.20792970748682593,has_col3,51 +4.338014420328881,has_col0,52 +4.891151168724562,has_col1,52 +1.5206539575716858,has_col2,52 +2.1681123035265806,has_col3,52 +5.207805230541151,has_col0,53 +5.132371131989854,has_col1,53 +0.7495495212470575,has_col2,53 +1.7862455928512762,has_col3,53 +-0.702868209078849,has_col0,54 +-0.5959541315332524,has_col1,54 +1.2329957068367825,has_col2,54 +0.7347442904094672,has_col3,54 +-5.685007386455289,has_col0,55 +-5.193234697603248,has_col1,55 +0.6770490487234723,has_col2,55 +1.0296762439943021,has_col3,55 +-0.2166862872419496,has_col0,56 +-0.3516473230048367,has_col1,56 +0.1316313007229355,has_col2,56 +-0.22143099462318716,has_col3,56 +-4.489408983645128,has_col0,57 +-5.70297147366513,has_col1,57 +1.773878309174111,has_col2,57 +0.9968534609145467,has_col3,57 +5.510970936482975,has_col0,58 +5.514610068804799,has_col1,58 +2.6716846766734603,has_col2,58 +0.5606994254368081,has_col3,58 +5.066682199496689,has_col0,59 +4.415182134464223,has_col1,59 +2.0571748155519414,has_col2,59 +-0.004484660249119976,has_col3,59 +5.298941803716568,has_col0,60 +4.851372897237982,has_col1,60 +-0.7417979278032181,has_col2,60 +0.3453173974461824,has_col3,60 +4.612401532124583,has_col0,61 +5.352722209859717,has_col1,61 +0.25939145503970484,has_col2,61 +0.7102063316565713,has_col3,61 +-4.357102791662926,has_col0,62 +-4.415402669618847,has_col1,62 +0.2510864077957684,has_col2,62 +0.40136263173711395,has_col3,62 +-5.089293271957045,has_col0,63 +-3.94329435170418,has_col1,63 +-0.13295077141416467,has_col2,63 +0.4072443472190279,has_col3,63 +-3.8191950934716172,has_col0,64 +-5.383823430742849,has_col1,64 +2.7604423255880586,has_col2,64 +2.0717263885269217,has_col3,64 +-0.14600214736711975,has_col0,65 +1.5479052495818442,has_col1,65 +2.648125921160178,has_col2,65 +0.9778885820908109,has_col3,65 +0.5199062373883183,has_col0,66 +0.09575866964910582,has_col1,66 +0.49243728414996724,has_col2,66 +0.3404137271491413,has_col3,66 +-4.3896597199116725,has_col0,67 +-4.953021330743393,has_col1,67 +0.5312336847875037,has_col2,67 +0.5412754627455536,has_col3,67 +3.899637050628276,has_col0,68 +4.210127548019716,has_col1,68 +1.7769546248631454,has_col2,68 +1.4035030180675687,has_col3,68 +5.575498974732525,has_col0,69 +4.8997399714509,has_col1,69 +0.8683017855843356,has_col2,69 +1.9306707381757537,has_col3,69 +-4.987875627830191,has_col0,70 +-5.862558894607873,has_col1,70 +2.829808526598028,has_col2,70 +0.8003497999258029,has_col3,70 +0.4495825691139935,has_col0,71 +-0.6196796155217177,has_col1,71 +0.44801962212351376,has_col2,71 +1.2174427150030838,has_col3,71 +-1.172416311188204,has_col0,72 +0.2524974159362785,has_col1,72 +1.2480274595741054,has_col2,72 +1.3577576984403104,has_col3,72 +5.555803038306209,has_col0,73 +5.2562162952226865,has_col1,73 +0.0970478534659136,has_col2,73 +0.5237617568787716,has_col3,73 +5.951352775760341,has_col0,74 +5.222571912550346,has_col1,74 +1.5020309844204904,has_col2,74 +1.3478319953210853,has_col3,74 +-5.123645189186426,has_col0,75 +-5.271552507949497,has_col1,75 +1.838991075812292,has_col2,75 +1.6174080402871986,has_col3,75 +-5.258425486176478,has_col0,76 +-5.497076790879828,has_col1,76 +0.5960642205553826,has_col2,76 +1.248561119722877,has_col3,76 +5.041069751470013,has_col0,77 +4.598398773582904,has_col1,77 +3.763914477274835,has_col2,77 +3.0073577210036015,has_col3,77 +6.04588788690316,has_col0,78 +5.222189946927657,has_col1,78 +3.322642758856617,has_col2,78 +0.9145363618706153,has_col3,78 +0.5824242912412388,has_col0,79 +0.2603725434305527,has_col1,79 +1.0731006329080373,has_col2,79 +0.3886718819852104,has_col3,79 +0.3396794686206792,has_col0,80 +-0.7153356489536641,has_col1,80 +1.9487171316495182,has_col2,80 +3.2119372848175574,has_col3,80 +-0.4611762971276513,has_col0,81 +0.03135927050993302,has_col1,81 +1.8105201611712496,has_col2,81 +1.5367549736888297,has_col3,81 +-3.792246512840906,has_col0,82 +-4.851321088281565,has_col1,82 +0.1611437056062187,has_col2,82 +0.8534863836218112,has_col3,82 +-6.123081018239736,has_col0,83 +-5.6209343426311476,has_col1,83 +0.8178251243052574,has_col2,83 +1.4180530300740268,has_col3,83 +-0.8234654829430282,has_col0,84 +-0.3924281032313973,has_col1,84 +0.2619489895332082,has_col2,84 +1.5816734039636584,has_col3,84 +4.168520805296579,has_col0,85 +5.2041634904681695,has_col1,85 +1.1553410470659644,has_col2,85 +1.0869336749622855,has_col3,85 +-0.4212132520050965,has_col0,86 +-0.6752222756411063,has_col1,86 +-0.26436150102469647,has_col2,86 +-0.04404535095303541,has_col3,86 +0.7447135436723163,has_col0,87 +-0.7178723826311184,has_col1,87 +0.6074372943620157,has_col2,87 +0.2160230282869331,has_col3,87 +0.18120526781714258,has_col0,88 +0.9833332647785602,has_col1,88 +0.9406979233370677,has_col2,88 +1.9679747669611976,has_col3,88 +0.36893544496610114,has_col0,89 +0.26170404782618784,has_col1,89 +0.9101246768469998,has_col2,89 +2.1109153782546404,has_col3,89 +-0.03206378040747942,has_col0,90 +0.9518168596627871,has_col1,90 +0.5103342199135298,has_col2,90 +-0.23760805732153245,has_col3,90 +5.229775156949876,has_col0,91 +5.106203375134881,has_col1,91 +1.536325143446195,has_col2,91 +1.5465919489884201,has_col3,91 +-4.610845885003888,has_col0,92 +-5.922766312216904,has_col1,92 +0.9982981245839736,has_col2,92 +2.3421623166332735,has_col3,92 +-0.39620868294390077,has_col0,93 +0.24642613265278973,has_col1,93 +1.4863594356243828,has_col2,93 +2.5887528462565617,has_col3,93 +0.57797752832484,has_col0,94 +-1.033484704780993,has_col1,94 +0.532348169719296,has_col2,94 +-0.4144555529192788,has_col3,94 +5.857473298700159,has_col0,95 +4.38205850599009,has_col1,95 +2.1458234685149136,has_col2,95 +0.8152156757180761,has_col3,95 +0.9107064686662019,has_col0,96 +-1.4403814082118387,has_col1,96 +-0.23697133970108997,has_col2,96 +0.45692438800940005,has_col3,96 +0.3527790999204535,has_col0,97 +0.4996745562208301,has_col1,97 +-0.8715974434078926,has_col2,97 +1.4544305581528936,has_col3,97 +4.79561156138725,has_col0,98 +4.529355545867239,has_col1,98 +2.394988434175554,has_col2,98 +1.174405498414078,has_col3,98 +0.1949175128701681,has_col0,99 +-0.3162700876352805,has_col1,99 +1.6459070993098144,has_col2,99 +1.3287296394008514,has_col3,99 diff --git a/cxx/assets/test_files/test_crosscat_normal.schema b/cxx/assets/test_files/test_crosscat_normal.schema new file mode 100644 index 0000000..39fc656 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_normal.schema @@ -0,0 +1,4 @@ +col1 ~ normal(id) +col2 ~ normal(id) +col3 ~ normal(id) +col4 ~ normal(id) diff --git a/cxx/assets/test_files/test_crosscat_string.obs b/cxx/assets/test_files/test_crosscat_string.obs new file mode 100644 index 0000000..66a7aa6 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_string.obs @@ -0,0 +1,400 @@ +aba,has_col0,0 +1,has_col1,0 +ddcccc,has_col2,0 +second,has_col3,0 +abb,has_col0,1 +3,has_col1,1 +cccd,has_col2,1 +second,has_col3,1 +abb,has_col0,2 +3,has_col1,2 +ddcccc,has_col2,2 +second,has_col3,2 +baa,has_col0,3 +2,has_col1,3 +ddcccc,has_col2,3 +second,has_col3,3 +abb,has_col0,4 +3,has_col1,4 +cccd,has_col2,4 +second,has_col3,4 +abb,has_col0,5 +3,has_col1,5 +cccd,has_col2,5 +second,has_col3,5 +aba,has_col0,6 +1,has_col1,6 +cccd,has_col2,6 +second,has_col3,6 +aba,has_col0,7 +1,has_col1,7 +ddcccc,has_col2,7 +second,has_col3,7 +baa,has_col0,8 +2,has_col1,8 +ddcccc,has_col2,8 +second,has_col3,8 +aba,has_col0,9 +1,has_col1,9 +cccd,has_col2,9 +second,has_col3,9 +abb,has_col0,10 +3,has_col1,10 +ddcccc,has_col2,10 +second,has_col3,10 +baa,has_col0,11 +2,has_col1,11 +cccd,has_col2,11 +second,has_col3,11 +abb,has_col0,12 +3,has_col1,12 +cccd,has_col2,12 +second,has_col3,12 +aba,has_col0,13 +1,has_col1,13 +ddcccc,has_col2,13 +second,has_col3,13 +baa,has_col0,14 +2,has_col1,14 +cccd,has_col2,14 +second,has_col3,14 +baa,has_col0,15 +2,has_col1,15 +ddcccc,has_col2,15 +second,has_col3,15 +abb,has_col0,16 +3,has_col1,16 +cccd,has_col2,16 +second,has_col3,16 +abb,has_col0,17 +3,has_col1,17 +ddcccc,has_col2,17 +second,has_col3,17 +abb,has_col0,18 +3,has_col1,18 +ddcccc,has_col2,18 +second,has_col3,18 +abb,has_col0,19 +3,has_col1,19 +cccd,has_col2,19 +second,has_col3,19 +abb,has_col0,20 +3,has_col1,20 +ddcccc,has_col2,20 +second,has_col3,20 +aba,has_col0,21 +1,has_col1,21 +ddcccc,has_col2,21 +second,has_col3,21 +abb,has_col0,22 +3,has_col1,22 +ddcccc,has_col2,22 +second,has_col3,22 +abb,has_col0,23 +3,has_col1,23 +ddcccc,has_col2,23 +second,has_col3,23 +abb,has_col0,24 +3,has_col1,24 +cccd,has_col2,24 +second,has_col3,24 +aba,has_col0,25 +1,has_col1,25 +ddcccc,has_col2,25 +second,has_col3,25 +aba,has_col0,26 +1,has_col1,26 +cccd,has_col2,26 +second,has_col3,26 +baa,has_col0,27 +2,has_col1,27 +cccd,has_col2,27 +second,has_col3,27 +baa,has_col0,28 +2,has_col1,28 +cccd,has_col2,28 +second,has_col3,28 +abb,has_col0,29 +3,has_col1,29 +ddcccc,has_col2,29 +second,has_col3,29 +aba,has_col0,30 +1,has_col1,30 +ddcccc,has_col2,30 +second,has_col3,30 +abb,has_col0,31 +3,has_col1,31 +ddcccc,has_col2,31 +second,has_col3,31 +abb,has_col0,32 +3,has_col1,32 +cccd,has_col2,32 +second,has_col3,32 +abb,has_col0,33 +3,has_col1,33 +ddcccc,has_col2,33 +second,has_col3,33 +aba,has_col0,34 +1,has_col1,34 +ddcccc,has_col2,34 +second,has_col3,34 +abb,has_col0,35 +3,has_col1,35 +ddcccc,has_col2,35 +second,has_col3,35 +baa,has_col0,36 +2,has_col1,36 +cccd,has_col2,36 +second,has_col3,36 +baa,has_col0,37 +2,has_col1,37 +cccd,has_col2,37 +second,has_col3,37 +baa,has_col0,38 +2,has_col1,38 +cccd,has_col2,38 +second,has_col3,38 +abb,has_col0,39 +3,has_col1,39 +cccd,has_col2,39 +second,has_col3,39 +baa,has_col0,40 +2,has_col1,40 +ddcccc,has_col2,40 +second,has_col3,40 +baa,has_col0,41 +2,has_col1,41 +ddcccc,has_col2,41 +second,has_col3,41 +abb,has_col0,42 +3,has_col1,42 +cccd,has_col2,42 +second,has_col3,42 +baa,has_col0,43 +2,has_col1,43 +cccd,has_col2,43 +second,has_col3,43 +aba,has_col0,44 +1,has_col1,44 +cccd,has_col2,44 +second,has_col3,44 +aba,has_col0,45 +1,has_col1,45 +cccd,has_col2,45 +second,has_col3,45 +abb,has_col0,46 +3,has_col1,46 +cccd,has_col2,46 +second,has_col3,46 +aba,has_col0,47 +1,has_col1,47 +ddcccc,has_col2,47 +second,has_col3,47 +abb,has_col0,48 +3,has_col1,48 +ddcccc,has_col2,48 +second,has_col3,48 +abb,has_col0,49 +3,has_col1,49 +cccd,has_col2,49 +second,has_col3,49 +aba,has_col0,50 +1,has_col1,50 +ddcccc,has_col2,50 +second,has_col3,50 +abb,has_col0,51 +3,has_col1,51 +ddcccc,has_col2,51 +second,has_col3,51 +abb,has_col0,52 +3,has_col1,52 +cccd,has_col2,52 +second,has_col3,52 +baa,has_col0,53 +2,has_col1,53 +cccd,has_col2,53 +second,has_col3,53 +aba,has_col0,54 +1,has_col1,54 +cccd,has_col2,54 +second,has_col3,54 +aba,has_col0,55 +1,has_col1,55 +cccd,has_col2,55 +second,has_col3,55 +baa,has_col0,56 +2,has_col1,56 +ddcccc,has_col2,56 +second,has_col3,56 +aba,has_col0,57 +1,has_col1,57 +cccd,has_col2,57 +second,has_col3,57 +aba,has_col0,58 +1,has_col1,58 +ddcccc,has_col2,58 +second,has_col3,58 +abb,has_col0,59 +3,has_col1,59 +cccd,has_col2,59 +second,has_col3,59 +abb,has_col0,60 +3,has_col1,60 +ddcccc,has_col2,60 +second,has_col3,60 +baa,has_col0,61 +2,has_col1,61 +cccd,has_col2,61 +second,has_col3,61 +aba,has_col0,62 +1,has_col1,62 +ddcccc,has_col2,62 +second,has_col3,62 +aba,has_col0,63 +1,has_col1,63 +ddcccc,has_col2,63 +second,has_col3,63 +aba,has_col0,64 +1,has_col1,64 +cccd,has_col2,64 +second,has_col3,64 +baa,has_col0,65 +2,has_col1,65 +cccd,has_col2,65 +second,has_col3,65 +abb,has_col0,66 +3,has_col1,66 +ddcccc,has_col2,66 +second,has_col3,66 +abb,has_col0,67 +3,has_col1,67 +cccd,has_col2,67 +second,has_col3,67 +abb,has_col0,68 +3,has_col1,68 +ddcccc,has_col2,68 +second,has_col3,68 +abb,has_col0,69 +3,has_col1,69 +ddcccc,has_col2,69 +second,has_col3,69 +baa,has_col0,70 +2,has_col1,70 +cccd,has_col2,70 +second,has_col3,70 +aba,has_col0,71 +1,has_col1,71 +ddcccc,has_col2,71 +second,has_col3,71 +baa,has_col0,72 +2,has_col1,72 +ddcccc,has_col2,72 +second,has_col3,72 +abb,has_col0,73 +3,has_col1,73 +ddcccc,has_col2,73 +second,has_col3,73 +aba,has_col0,74 +1,has_col1,74 +ddcccc,has_col2,74 +second,has_col3,74 +aba,has_col0,75 +1,has_col1,75 +cccd,has_col2,75 +second,has_col3,75 +aba,has_col0,76 +1,has_col1,76 +cccd,has_col2,76 +second,has_col3,76 +abb,has_col0,77 +3,has_col1,77 +ddcccc,has_col2,77 +second,has_col3,77 +abb,has_col0,78 +3,has_col1,78 +cccd,has_col2,78 +second,has_col3,78 +aba,has_col0,79 +1,has_col1,79 +ddcccc,has_col2,79 +second,has_col3,79 +aba,has_col0,80 +1,has_col1,80 +ddcccc,has_col2,80 +second,has_col3,80 +baa,has_col0,81 +2,has_col1,81 +ddcccc,has_col2,81 +second,has_col3,81 +abb,has_col0,82 +3,has_col1,82 +cccd,has_col2,82 +second,has_col3,82 +aba,has_col0,83 +1,has_col1,83 +cccd,has_col2,83 +second,has_col3,83 +aba,has_col0,84 +1,has_col1,84 +ddcccc,has_col2,84 +second,has_col3,84 +abb,has_col0,85 +3,has_col1,85 +ddcccc,has_col2,85 +second,has_col3,85 +abb,has_col0,86 +3,has_col1,86 +cccd,has_col2,86 +second,has_col3,86 +abb,has_col0,87 +3,has_col1,87 +ddcccc,has_col2,87 +second,has_col3,87 +baa,has_col0,88 +2,has_col1,88 +ddcccc,has_col2,88 +second,has_col3,88 +aba,has_col0,89 +1,has_col1,89 +ddcccc,has_col2,89 +second,has_col3,89 +baa,has_col0,90 +2,has_col1,90 +cccd,has_col2,90 +second,has_col3,90 +baa,has_col0,91 +2,has_col1,91 +ddcccc,has_col2,91 +second,has_col3,91 +baa,has_col0,92 +2,has_col1,92 +ddcccc,has_col2,92 +second,has_col3,92 +aba,has_col0,93 +1,has_col1,93 +cccd,has_col2,93 +second,has_col3,93 +baa,has_col0,94 +2,has_col1,94 +ddcccc,has_col2,94 +second,has_col3,94 +baa,has_col0,95 +2,has_col1,95 +cccd,has_col2,95 +second,has_col3,95 +baa,has_col0,96 +2,has_col1,96 +cccd,has_col2,96 +second,has_col3,96 +aba,has_col0,97 +1,has_col1,97 +ddcccc,has_col2,97 +second,has_col3,97 +abb,has_col0,98 +3,has_col1,98 +ddcccc,has_col2,98 +second,has_col3,98 +aba,has_col0,99 +1,has_col1,99 +ddcccc,has_col2,99 +second,has_col3,99 diff --git a/cxx/assets/test_files/test_crosscat_string.schema b/cxx/assets/test_files/test_crosscat_string.schema new file mode 100644 index 0000000..8c54884 --- /dev/null +++ b/cxx/assets/test_files/test_crosscat_string.schema @@ -0,0 +1,4 @@ +col1 ~ bigram(id) +col2 ~ bigram(id) +col3 ~ bigram(id) +col4 ~ bigram(id)