def test__getBeadsVolume_1stage(self, mock_loadIndividualSettings): self.prep_createBeadsVolSettings(1) param = 'Initial sample volume' self.prep_settingsFile(param, [100, 29, 50, 0, 0, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') v = s._getBeadsVolume(0, 1) self.assertEqual(v, 15) v = s._getBeadsVolume(1, 1) self.assertEqual(v, 31) v = s._getBeadsVolume(2, 1) self.assertEqual(v, 22) # Rewriting the settings file. # Now the function should calculate volume from the initial volume and fraction param = 'Beads volume' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') v = s._getBeadsVolume(0, 1) self.assertEqual(v, 100) v = s._getBeadsVolume(1, 1) self.assertEqual(v, 29*0.9) v = s._getBeadsVolume(2, 1) self.assertEqual(v, 50*1.5) # Rewriting the settings file. # Now the function should calculate volume from the DNA cutoff value param = 'Fraction' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') a,b,c = bl.getBeadsVolumeCoef() expected_dna_cutoff = 150 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 100 * f_expected v = s._getBeadsVolume(0, 1) self.assertEqual(v, v_expected) expected_dna_cutoff = 300 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 29 * f_expected v = s._getBeadsVolume(1, 1) self.assertEqual(v, v_expected) expected_dna_cutoff = 100 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 50 * f_expected v = s._getBeadsVolume(2, 1) self.assertEqual(v, v_expected)
def test__getBeadsVolumeCoef(self): a, b, c = bl.getBeadsVolumeCoef() # Coefficients are not None self.assertIsNotNone(a) self.assertIsNotNone(b) self.assertIsNotNone(c) # Coefficients are of the right type self.assertIsInstance(a, float) self.assertIsInstance(b, float) self.assertIsInstance(c, float)
def test_calcBeadVolFractionFromDNACutoff(self, mock_loadIndividualSettings): param = 'Initial sample volume' self.prep_settingsFile(param, [100, 29, 50, 0, 0, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') f = s._calcBeadVolFractionFromDNACutoff(1000) a,b,c = bl.getBeadsVolumeCoef() f_expected = a + b / 1000 + c / 1000 ** 2 self.assertEqual(f, f_expected) f = s._calcBeadVolFractionFromDNACutoff(160) a,b,c = bl.getBeadsVolumeCoef() f_expected = a + b / 160 + c / 160 ** 2 self.assertEqual(f, f_expected)
def test_getBeadsVolUsingDNACutoff(self, mock_loadIndividualSettings): self.prep_createBeadsVolSettings(1) param = 'Initial sample volume' self.prep_settingsFile(param, [100, 29, 50, 0, 0, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') a,b,c = bl.getBeadsVolumeCoef() f_expected = a + b / 150 + c / 150 ** 2 v = s._getBeadsVolUsingDNACutoff(0, 1) self.assertEqual(v, f_expected*100) self.assertFalse(v == 0) f_expected = a + b / 300 + c / 300 ** 2 v = s._getBeadsVolUsingDNACutoff(1, 1) self.assertEqual(v, f_expected*29) f_expected = a + b / 100 + c / 100 ** 2 v = s._getBeadsVolUsingDNACutoff(2, 1) self.assertEqual(v, f_expected*50) self.delTempSettingsFile() del s self.prep_createBeadsVolSettings(2) param = 'Initial sample volume' self.prep_settingsFile(param, [100, 29, 50, 0, 0, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') f_expected = a + b / 900 + c / 900 ** 2 v = s._getBeadsVolUsingDNACutoff(0, 1) self.assertEqual(v, f_expected*100) f_expected = a + b / 800 + c / 800 ** 2 v = s._getBeadsVolUsingDNACutoff(1, 1) self.assertEqual(v, f_expected*29) f_expected = a + b / 700 + c / 700 ** 2 v = s._getBeadsVolUsingDNACutoff(2, 1) self.assertEqual(v, f_expected*50)
def test__getBeadsVolume_2stage(self, mock_loadIndividualSettings): self.prep_createBeadsVolSettings(2) param = 'Initial sample volume' self.prep_settingsFile(param, [100, 29, 50, 0, 0, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') v = s._getBeadsVolume(0, 1) self.assertEqual(v, 30) v = s._getBeadsVolume(1, 1) self.assertEqual(v, 20) v = s._getBeadsVolume(2, 1) self.assertEqual(v, 25) v = s._getBeadsVolume(0, 2) self.assertEqual(v, 15) v = s._getBeadsVolume(1, 2) self.assertEqual(v, 31) v = s._getBeadsVolume(2, 2) self.assertEqual(v, 22) # Rewriting the settings file. # Now the function should calculate volume from the initial volume and fraction param = 'Beads volume' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) param = 'Beads volume upper cutoff' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') v = s._getBeadsVolume(0, 1) self.assertEqual(v, 100*0.5) v = s._getBeadsVolume(1, 1) self.assertEqual(v, 29*0.6) v = s._getBeadsVolume(2, 1) self.assertEqual(v, 50*0.55) v = s._getBeadsVolume(0, 2) self.assertEqual(v, 100*(1.0-0.5)) v = s._getBeadsVolume(1, 2) self.assertEqual(v, 29*(0.9-0.6)) v = s._getBeadsVolume(2, 2) self.assertEqual(v, 50*(1.5-0.55)) # Rewriting the settings file. # Now the function should calculate volume from the initial volume and DNA cutoff param = 'Fraction' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) param = 'Fraction upper cutoff' self.prep_settingsFile(param, [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]) s = ponec.settings(self.mock_csv_path) s.cutoffs = s.returnProtocolParameter('Number of cutoffs') s.initial_sample_vol_list = s._returnSampleParameterList('Initial sample volume') a,b,c = bl.getBeadsVolumeCoef() expected_dna_cutoff = 900 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 100 * f_expected v = s._getBeadsVolume(0, 1) self.assertEqual(v, v_expected) exp_dna_cutoff_2 = 150 f_expected_2 = a + b / exp_dna_cutoff_2 + c / exp_dna_cutoff_2 ** 2 v_expected_2 = 100 * (f_expected_2 - f_expected) v = s._getBeadsVolume(0, 2) self.assertEqual(v, v_expected_2) expected_dna_cutoff = 800 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 29 * f_expected v = s._getBeadsVolume(1, 1) self.assertEqual(v, v_expected) exp_dna_cutoff_2 = 300 f_expected_2 = a + b / exp_dna_cutoff_2 + c / exp_dna_cutoff_2 ** 2 v_expected_2 = 29 * (f_expected_2 - f_expected) v = s._getBeadsVolume(1, 2) self.assertEqual(v, v_expected_2) expected_dna_cutoff = 700 f_expected = a + b / expected_dna_cutoff + c / expected_dna_cutoff ** 2 v_expected = 50 * f_expected v = s._getBeadsVolume(2, 1) self.assertEqual(v, v_expected) exp_dna_cutoff_2 = 100 f_expected_2 = a + b / exp_dna_cutoff_2 + c / exp_dna_cutoff_2 ** 2 v_expected_2 = 50 * (f_expected_2 - f_expected) v = s._getBeadsVolume(2, 2) self.assertEqual(v, v_expected_2)
def _calcBeadVolFractionFromDNACutoff(self, dna_size_cutoff): # Getting polynome coefficients a, b, c = bl.getBeadsVolumeCoef() # Calculating volume multiplier (fraction) frac = a + b / dna_size_cutoff + c / dna_size_cutoff**2 return frac