Source code for eat.tests.test_factor

import random
import pandas as pd
import numpy  as np
from ..factor import *

[docs]def test_factor(): """ Test if factor() successfully factors out site-based delay and rate """ # Randomly generate a dictionary of zero-mean site-based rates/delays sites = "abcde" r = 2 * np.random.rand(len(sites)) - 1 r -= np.mean(r) sb = {s:r[i] for i, s in enumerate(sites)} # Generate baseline-based rates/delays using `sb` bb = np.array([(ref, rem, sb[ref] - sb[rem], random.random()) for ref in sites for rem in sites if rem > ref], dtype=[('ref', 'U3'), ('rem', 'U2'), ('val', 'f16'), ('err', 'f16')]) # Use `eat.factor()` to factor out site-based delays/rates from # baseline-based delays/ratse sol = factor(bb) assert sol is not None # The solution is in general different from the original # rates/delays by a constant d = np.array([sol[s] - sb[s] for s in sites]) assert np.max(d) - np.min(d) < 1e-9