1+ use crate :: calc:: * ;
2+ use ndarray:: { Array1 , Array2 } ;
3+
4+ mod vector_calculations_tests{
5+ use super :: * ;
6+
7+ #[ test]
8+ fn test_median ( ) {
9+ let v: Vec < u32 > = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
10+ assert_eq ! ( median( v) , 3.0 ) ;
11+ }
12+
13+ #[ test]
14+ fn test_mean_float ( ) {
15+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
16+ assert_eq ! ( mean_float( v. iter( ) . collect( ) ) , 3.0 ) ;
17+ }
18+
19+ #[ test]
20+ fn test_median_float ( ) {
21+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
22+ assert_eq ! ( median_float( v. iter( ) . collect( ) ) , 3.0 ) ;
23+ }
24+
25+
26+ #[ test]
27+ fn test_min_float ( ) {
28+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
29+ assert_eq ! ( min_float( v. iter( ) . collect( ) ) , 1.0 ) ;
30+ }
31+
32+ #[ test]
33+ fn test_max_float ( ) {
34+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
35+ assert_eq ! ( max_float( v. iter( ) . collect( ) ) , 5.0 ) ;
36+ }
37+
38+ #[ test]
39+ fn test_sum_float ( ) {
40+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
41+ assert_eq ! ( sum_float( v. iter( ) . collect( ) ) , 15.0 ) ;
42+ }
43+
44+ #[ test]
45+ fn test_std_float ( ) {
46+ let v: Vec < f32 > = vec ! [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ] ;
47+ assert_eq ! ( std_float( v. iter( ) . collect( ) ) , 1.5811388 ) ;
48+
49+ let v: Vec < f32 > = vec ! [ 1.0 , 1.0 , 1.0 ] ;
50+ assert_eq ! ( std_float( v. iter( ) . collect( ) ) , 0.0 ) ;
51+
52+ assert_eq ! ( std_float( vec![ ] ) , 0.0 ) ;
53+ }
54+ }
55+
56+ mod scalefactor_calculations_tests{
57+ use super :: * ;
58+ #[ test]
59+ fn test_calc_ratio ( ) {
60+ let cov1: f32 = 5.0 ;
61+ let cov2: f32 = 10.0 ;
62+
63+ let sf1: f32 = 1.0 ;
64+ let sf2: f32 = 2.0 ;
65+
66+ let pc1: f32 = 1.0 ;
67+ let pc2: f32 = 2.0 ;
68+
69+ let log2 = "log2" ;
70+ let ratio = "ratio" ;
71+ let reciprocal_ratio = "reciprocal_ratio" ;
72+ let subtract = "subtract" ;
73+
74+ let r1 = calc_ratio (
75+ cov1, cov2,
76+ & sf1, & sf2,
77+ & pc1, & pc2,
78+ log2
79+ ) ;
80+ let r2 = calc_ratio (
81+ cov1, cov2,
82+ & sf1, & sf2,
83+ & pc1, & pc2,
84+ ratio
85+ ) ;
86+ let r3 = calc_ratio (
87+ cov1, cov2,
88+ & sf1, & sf2,
89+ & pc1, & pc2,
90+ reciprocal_ratio
91+ ) ;
92+ let r4 = calc_ratio (
93+ cov1, cov2,
94+ & sf1, & sf2,
95+ & pc1, & pc2,
96+ subtract
97+ ) ;
98+ assert_eq ! ( r1, -1.87 ) ;
99+ assert_eq ! ( r2, 0.27 ) ;
100+ assert_eq ! ( r3, -0.27 ) ;
101+ assert_eq ! ( r4, -16.0 ) ;
102+ }
103+
104+ #[ test]
105+ fn test_deseq_scalefactors ( ) {
106+ let counts = Array2 :: from_shape_vec ( ( 3 , 3 ) , vec ! [
107+ 1.0 , 2.0 , 3.0 ,
108+ 4.0 , 5.0 , 6.0 ,
109+ 7.0 , 8.0 , 9.0
110+ ] ) . unwrap ( ) ;
111+ let sf = deseq_scalefactors ( & counts) ;
112+ let expected_sf = Array1 :: from_vec ( vec ! [ 1.233106 , 0.9864848 , 0.82207066 ] ) ;
113+ assert_eq ! ( sf, expected_sf) ;
114+ }
115+ }
0 commit comments