import unittest
import numpy as np
from polymers import physics
from ..test import Parameters
parameters = Parameters()
WLC = physics.single_chain.wlc.WLC
class Base(unittest.TestCase):
def test_init(self):
for _ in range(parameters.number_of_loops):
_ = WLC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
parameters.hinge_mass_reference,
parameters.persistance_length_reference
)
def test_number_of_links(self):
for _ in range(parameters.number_of_loops):
number_of_links = \
np.random.randint(
parameters.number_of_links_minimum,
high=parameters.number_of_links_maximum
)
self.assertEqual(
number_of_links,
WLC(
number_of_links,
parameters.link_length_reference,
parameters.hinge_mass_reference,
parameters.persistance_length_reference
).number_of_links
)
def test_link_length(self):
for _ in range(parameters.number_of_loops):
link_length = \
parameters.link_length_reference + \
parameters.link_length_scale*(0.5 - np.random.rand())
self.assertEqual(
link_length,
WLC(
parameters.number_of_links_minimum,
link_length,
parameters.hinge_mass_reference,
parameters.persistance_length_reference
).link_length
)
def test_hinge_mass(self):
for _ in range(parameters.number_of_loops):
hinge_mass = \
parameters.hinge_mass_reference + \
parameters.hinge_mass_scale*(0.5 - np.random.rand())
self.assertEqual(
hinge_mass,
WLC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
hinge_mass,
parameters.persistance_length_reference
).hinge_mass
)
def test_persistance_length(self):
for _ in range(parameters.number_of_loops):
persistance_length = \
parameters.persistance_length_reference + \
parameters.persistance_length_scale*(0.5 - np.random.rand())
self.assertEqual(
persistance_length,
WLC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
parameters.hinge_mass_reference,
persistance_length
).persistance_length
)
def test_all_parameters(self):
for _ in range(parameters.number_of_loops):
number_of_links = \
np.random.randint(
parameters.number_of_links_minimum,
high=parameters.number_of_links_maximum
)
link_length = \
parameters.link_length_reference + \
parameters.link_length_scale*(0.5 - np.random.rand())
hinge_mass = \
parameters.hinge_mass_reference + \
parameters.hinge_mass_scale*(0.5 - np.random.rand())
persistance_length = \
parameters.persistance_length_reference + \
parameters.persistance_length_scale*(0.5 - np.random.rand())
model = WLC(
number_of_links,
link_length,
hinge_mass,
persistance_length
)
self.assertEqual(
number_of_links,
model.number_of_links
)
self.assertEqual(
link_length,
model.link_length
)
self.assertEqual(
hinge_mass,
model.hinge_mass
)
self.assertEqual(
persistance_length,
model.persistance_length
)