Best Python code snippet using pytest-benchmark
test_Cluster.py
Source:test_Cluster.py  
...26            from Bio.Cluster import mean, median27        elif TestCluster.module == 'Pycluster':28            from Pycluster import mean, median29        data = numpy.array([34.3, 3, 2])30        self.assertAlmostEqual(mean(data), 13.1, places=3)31        self.assertAlmostEqual(median(data), 3.0, places=3)32        data = [5, 10, 15, 20]33        self.assertAlmostEqual(mean(data), 12.5, places=3)34        self.assertAlmostEqual(median(data), 12.5, places=3)35        data = [1, 2, 3, 5, 7, 11, 13, 17]36        self.assertAlmostEqual(mean(data), 7.375, places=3)37        self.assertAlmostEqual(median(data), 6.0, places=3)38        data = [100, 19, 3, 1.5, 1.4, 1, 1, 1]39        self.assertAlmostEqual(mean(data), 15.988, places=3)40        self.assertAlmostEqual(median(data), 1.45, places=3)41    def test_matrix_parse(self):42        if TestCluster.module == 'Bio.Cluster':43            from Bio.Cluster import treecluster44        elif TestCluster.module == 'Pycluster':45            from Pycluster import treecluster46        # Normal matrix, no errors47        data1 = numpy.array([[1.1, 1.2],48                             [1.4, 1.3],49                             [1.1, 1.5],50                             [2.0, 1.5],51                             [1.7, 1.9],52                             [1.7, 1.9],53                             [5.7, 5.9],54                             [5.7, 5.9],55                             [3.1, 3.3],56                             [5.4, 5.3],57                             [5.1, 5.5],58                             [5.0, 5.5],59                             [5.1, 5.2]])60        # Another normal matrix, no errors; written as a list61        data2 = [[1.1, 2.2, 3.3, 4.4, 5.5],62                  [3.1, 3.2, 1.3, 2.4, 1.5],63                  [4.1, 2.2, 0.3, 5.4, 0.5],64                  [12.1, 2.0, 0.0, 5.0, 0.0]]65        # Ragged matrix66        data3 = [[91.1, 92.2, 93.3, 94.4, 95.5],67                  [93.1, 93.2, 91.3, 92.4],68                  [94.1, 92.2, 90.3],69                  [12.1, 92.0, 90.0, 95.0, 90.0]]70        # Matrix with bad cells71        data4 = [[7.1, 7.2, 7.3, 7.4, 7.5],72                   [7.1, 7.2, 7.3, 7.4, 'snoopy'],73                   [7.1, 7.2, 7.3, None, None]]74        # Matrix with a bad row75        data5 = [[23.1, 23.2, 23.3, 23.4, 23.5],76                   None,77                   [23.1, 23.0, 23.0, 23.0, 23.0]]78        # Various references that don't point to matrices at all79        data6 = "snoopy"80        data7 = {'a': [[2.3, 1.2], [3.3, 5.6]]}81        data8 = []82        data9 = [None]83        try:84            treecluster(data1)85        except Exception:  # TODO - Which exceptions?86            self.fail("treecluster failed to accept matrix data1")87        try:88            treecluster(data2)89        except Exception:  # TODO - Which exceptions?90            self.fail("treecluster failed to accept matrix data2")91        self.assertRaises(TypeError, lambda: treecluster(data3))92        self.assertRaises(TypeError, lambda: treecluster(data4))93        self.assertRaises(TypeError, lambda: treecluster(data5))94        self.assertRaises(TypeError, lambda: treecluster(data6))95        self.assertRaises(TypeError, lambda: treecluster(data7))96        self.assertRaises(TypeError, lambda: treecluster(data8))97        self.assertRaises(TypeError, lambda: treecluster(data9))98    def test_kcluster(self):99        if TestCluster.module == 'Bio.Cluster':100            from Bio.Cluster import kcluster101        elif TestCluster.module == 'Pycluster':102            from Pycluster import kcluster103        nclusters = 3104        # First data set105        weight = numpy.array([1, 1, 1, 1, 1])106        data = numpy.array([[1.1, 2.2, 3.3, 4.4, 5.5],107                            [3.1, 3.2, 1.3, 2.4, 1.5],108                            [4.1, 2.2, 0.3, 5.4, 0.5],109                            [12.1, 2.0, 0.0, 5.0, 0.0]])110        mask = numpy.array([[1, 1, 1, 1, 1],111                             [1, 1, 1, 1, 1],112                             [1, 1, 1, 1, 1],113                             [1, 1, 1, 1, 1]], int)114        # TODO - Use a context manager here once we drop Python 2.6115        # Method should be one letter:116        self.assertRaises(ValueError, kcluster, data,117                          **{"nclusters": nclusters, "mask": mask,118                             "weight": weight, "transpose": 0, "npass": 100,119                             "method": "any", "dist": "e"})120        # Distance should be one letter:121        self.assertRaises(ValueError, kcluster, data,122                          **{"nclusters": nclusters, "mask": mask,123                             "weight": weight, "transpose": 0, "npass": 100,124                             "method": "a", "dist": "euclidean"})125        clusterid, error, nfound = kcluster(data, nclusters=nclusters,126                                            mask=mask, weight=weight,127                                            transpose=0, npass=100,128                                            method='a', dist='e')129        self.assertEqual(len(clusterid), len(data))130        correct = [0, 1, 1, 2]131        mapping = [clusterid[correct.index(i)] for i in range(nclusters)]132        for i in range(len(clusterid)):133            self.assertEqual(clusterid[i], mapping[correct[i]])134        # Second data set135        weight = numpy.array([1, 1])136        data = numpy.array([[1.1, 1.2],137                      [1.4, 1.3],138                      [1.1, 1.5],139                      [2.0, 1.5],140                      [1.7, 1.9],141                      [1.7, 1.9],142                      [5.7, 5.9],143                      [5.7, 5.9],144                      [3.1, 3.3],145                      [5.4, 5.3],146                      [5.1, 5.5],147                      [5.0, 5.5],148                      [5.1, 5.2]])149        mask = numpy.array([[1, 1],150                            [1, 1],151                            [1, 1],152                            [1, 1],153                            [1, 1],154                            [1, 1],155                            [1, 1],156                            [1, 1],157                            [1, 1],158                            [1, 1],159                            [1, 1],160                            [1, 1],161                            [1, 1]], int)162        # TODO - Use a context manager here once we drop Python 2.6163        # Method should be one letter:164        self.assertRaises(ValueError, kcluster, data,165                          **{"nclusters": 3, "mask": mask,166                             "weight": weight, "transpose": 0, "npass": 100,167                             "method": "any", "dist": "e"})168        # Distance should be one letter:169        self.assertRaises(ValueError, kcluster, data,170                          **{"nclusters": 3, "mask": mask,171                             "weight": weight, "transpose": 0, "npass": 100,172                             "method": "a", "dist": "euclidean"})173        clusterid, error, nfound = kcluster(data, nclusters=3, mask=mask,174                                            weight=weight, transpose=0,175                                            npass=100, method='a', dist='e')176        self.assertEqual(len(clusterid), len(data))177        correct = [0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1]178        mapping = [clusterid[correct.index(i)] for i in range(nclusters)]179        for i in range(len(clusterid)):180            self.assertEqual(clusterid[i], mapping[correct[i]])181    def test_clusterdistance(self):182        if TestCluster.module == 'Bio.Cluster':183            from Bio.Cluster import clusterdistance184        elif TestCluster.module == 'Pycluster':185            from Pycluster import clusterdistance186        # First data set187        weight = numpy.array([1, 1, 1, 1, 1])188        data = numpy.array([[1.1, 2.2, 3.3, 4.4, 5.5],189                            [3.1, 3.2, 1.3, 2.4, 1.5],190                            [4.1, 2.2, 0.3, 5.4, 0.5],191                            [12.1, 2.0, 0.0, 5.0, 0.0]])192        mask = numpy.array([[1, 1, 1, 1, 1],193                            [1, 1, 1, 1, 1],194                            [1, 1, 1, 1, 1],195                            [1, 1, 1, 1, 1]], int)196        # Cluster assignments197        c1 = [0]198        c2 = [1, 2]199        c3 = [3]200        # TODO - Use a context manager here once we drop Python 2.6201        # Method should be one letter:202        self.assertRaises(ValueError, clusterdistance, data,203                          **{"mask": mask, "weight": weight,204                             "index1": c1, "index2": c2, "transpose": 0,205                             "method": "any", "dist": "e"})206        # Distance should be one letter:207        self.assertRaises(ValueError, clusterdistance, data,208                          **{"mask": mask, "weight": weight,209                             "index1": c1, "index2": c2, "transpose": 0,210                             "method": "a", "dist": "euclidean"})211        distance = clusterdistance(data, mask=mask, weight=weight,212                                   index1=c1, index2=c2, dist='e',213                                   method='a', transpose=0)214        self.assertAlmostEqual(distance, 6.650, places=3)215        distance = clusterdistance(data, mask=mask, weight=weight,216                                   index1=c1, index2=c3, dist='e',217                                   method='a', transpose=0)218        self.assertAlmostEqual(distance, 32.508, places=3)219        distance = clusterdistance(data, mask=mask, weight=weight,220                                   index1=c2, index2=c3, dist='e',221                                   method='a', transpose=0)222        self.assertAlmostEqual(distance, 15.118, places=3)223        # Second data set224        weight = numpy.array([1, 1])225        data = numpy.array([[1.1, 1.2],226                         [1.4, 1.3],227                         [1.1, 1.5],228                         [2.0, 1.5],229                         [1.7, 1.9],230                         [1.7, 1.9],231                         [5.7, 5.9],232                         [5.7, 5.9],233                         [3.1, 3.3],234                         [5.4, 5.3],235                         [5.1, 5.5],236                         [5.0, 5.5],237                         [5.1, 5.2]])238        mask = numpy.array([[1, 1],239                            [1, 1],240                            [1, 1],241                            [1, 1],242                            [1, 1],243                            [1, 1],244                            [1, 1],245                            [1, 1],246                            [1, 1],247                            [1, 1],248                            [1, 1],249                            [1, 1],250                            [1, 1]], int)251        # Cluster assignments252        c1 = [0, 1, 2, 3]253        c2 = [4, 5, 6, 7]254        c3 = [8]255        # TODO - Use a context manager here once we drop Python 2.6256        # Method should be one letter:257        self.assertRaises(ValueError, clusterdistance, data,258                          **{"mask": mask, "weight": weight,259                             "index1": c1, "index2": c2,260                             "method": "any", "dist": "e",261                             "transpose": 0})262        # Distance should be one letter:263        self.assertRaises(ValueError, clusterdistance, data,264                          **{"mask": mask, "weight": weight,265                             "index1": c1, "index2": c2,266                             "method": "a", "dist": "euclidena",267                             "transpose": 0})268        distance = clusterdistance(data, mask=mask, weight=weight,269                                   index1=c1, index2=c2, dist='e',270                                   method='a', transpose=0)271        self.assertAlmostEqual(distance, 5.833, places=3)272        distance = clusterdistance(data, mask=mask, weight=weight,273                                   index1=c1, index2=c3, dist='e',274                                   method='a', transpose=0)275        self.assertAlmostEqual(distance, 3.298, places=3)276        distance = clusterdistance(data, mask=mask, weight=weight,277                                   index1=c2, index2=c3, dist='e',278                                   method='a', transpose=0)279        self.assertAlmostEqual(distance, 0.360, places=3)280    def test_treecluster(self):281        if TestCluster.module == 'Bio.Cluster':282            from Bio.Cluster import treecluster283        elif TestCluster.module == 'Pycluster':284            from Pycluster import treecluster285        # First data set286        weight1 = [1, 1, 1, 1, 1]287        data1 = numpy.array([[1.1, 2.2, 3.3, 4.4, 5.5],288                                [3.1, 3.2, 1.3, 2.4, 1.5],289                                [4.1, 2.2, 0.3, 5.4, 0.5],290                                [12.1, 2.0, 0.0, 5.0, 0.0]])291        mask1 = numpy.array([[1, 1, 1, 1, 1],292                             [1, 1, 1, 1, 1],293                             [1, 1, 1, 1, 1],294                             [1, 1, 1, 1, 1]], int)295        # TODO - Use a context manager here once we drop Python 2.6296        # Method should be one letter:297        self.assertRaises(ValueError, treecluster,298                          **{"data": data1, "mask": mask1, "weight": weight1,299                             "transpose": 0, "method": "any", "dist": "e"})300        # Distance should be one letter:301        self.assertRaises(ValueError, treecluster,302                          **{"data": data1, "mask": mask1, "weight": weight1,303                             "transpose": 0, "method": "any", "dist": "euclidean"})304        # test first data set305        # Pairwise average-linkage clustering"306        tree = treecluster(data=data1, mask=mask1, weight=weight1,307                           transpose=0, method='a', dist='e')308        self.assertEqual(len(tree), len(data1) - 1)309        self.assertEqual(tree[0].left, 2)310        self.assertEqual(tree[0].right, 1)311        self.assertAlmostEqual(tree[0].distance, 2.600, places=3)312        self.assertEqual(tree[1].left, -1)313        self.assertEqual(tree[1].right, 0)314        self.assertAlmostEqual(tree[1].distance, 7.300, places=3)315        self.assertEqual(tree[2].left, 3)316        self.assertEqual(tree[2].right, -2)317        self.assertAlmostEqual(tree[2].distance, 21.348, places=3)318        # Pairwise single-linkage clustering319        tree = treecluster(data=data1, mask=mask1, weight=weight1,320                           transpose=0, method='s', dist='e')321        self.assertEqual(len(tree), len(data1) - 1)322        self.assertEqual(tree[0].left, 1)323        self.assertEqual(tree[0].right, 2)324        self.assertAlmostEqual(tree[0].distance, 2.600, places=3)325        self.assertEqual(tree[1].left, 0)326        self.assertEqual(tree[1].right, -1)327        self.assertAlmostEqual(tree[1].distance, 5.800, places=3)328        self.assertEqual(tree[2].left, -2)329        self.assertEqual(tree[2].right, 3)330        self.assertAlmostEqual(tree[2].distance, 12.908, places=3)331        # Pairwise centroid-linkage clustering332        tree = treecluster(data=data1, mask=mask1, weight=weight1,333                           transpose=0, method='c', dist='e')334        self.assertEqual(len(tree), len(data1) - 1)335        self.assertEqual(tree[0].left, 1)336        self.assertEqual(tree[0].right, 2)337        self.assertAlmostEqual(tree[0].distance, 2.600, places=3)338        self.assertEqual(tree[1].left, 0)339        self.assertEqual(tree[1].right, -1)340        self.assertAlmostEqual(tree[1].distance, 6.650, places=3)341        self.assertEqual(tree[2].left, -2)342        self.assertEqual(tree[2].right, 3)343        self.assertAlmostEqual(tree[2].distance, 19.437, places=3)344        # Pairwise maximum-linkage clustering345        tree = treecluster(data=data1, mask=mask1, weight=weight1,346                           transpose=0, method='m', dist='e')347        self.assertEqual(len(tree), len(data1) - 1)348        self.assertEqual(tree[0].left, 2)349        self.assertEqual(tree[0].right, 1)350        self.assertAlmostEqual(tree[0].distance, 2.600, places=3)351        self.assertEqual(tree[1].left, -1)352        self.assertEqual(tree[1].right, 0)353        self.assertAlmostEqual(tree[1].distance, 8.800, places=3)354        self.assertEqual(tree[2].left, 3)355        self.assertEqual(tree[2].right, -2)356        self.assertAlmostEqual(tree[2].distance, 32.508, places=3)357        # Second data set358        weight2 = [1, 1]359        data2 = numpy.array([[0.8223, 0.9295],360                             [1.4365, 1.3223],361                             [1.1623, 1.5364],362                             [2.1826, 1.1934],363                             [1.7763, 1.9352],364                             [1.7215, 1.9912],365                             [2.1812, 5.9935],366                             [5.3290, 5.9452],367                             [3.1491, 3.3454],368                             [5.1923, 5.3156],369                             [4.7735, 5.4012],370                             [5.1297, 5.5645],371                             [5.3934, 5.1823]])372        mask2 = numpy.array([[1, 1],373                             [1, 1],374                             [1, 1],375                             [1, 1],376                             [1, 1],377                             [1, 1],378                             [1, 1],379                             [1, 1],380                             [1, 1],381                             [1, 1],382                             [1, 1],383                             [1, 1],384                             [1, 1]], int)385        # Test second data set386        # Pairwise average-linkage clustering387        tree = treecluster(data=data2, mask=mask2, weight=weight2,388                           transpose=0, method='a', dist='e')389        self.assertEqual(len(tree), len(data2) - 1)390        self.assertEqual(tree[0].left, 5)391        self.assertEqual(tree[0].right, 4)392        self.assertAlmostEqual(tree[0].distance, 0.003, places=3)393        self.assertEqual(tree[1].left, 9)394        self.assertEqual(tree[1].right, 12)395        self.assertAlmostEqual(tree[1].distance, 0.029, places=3)396        self.assertEqual(tree[2].left, 2)397        self.assertEqual(tree[2].right, 1)398        self.assertAlmostEqual(tree[2].distance, 0.061, places=3)399        self.assertEqual(tree[3].left, 11)400        self.assertEqual(tree[3].right, -2)401        self.assertAlmostEqual(tree[3].distance, 0.070, places=3)402        self.assertEqual(tree[4].left, -4)403        self.assertEqual(tree[4].right, 10)404        self.assertAlmostEqual(tree[4].distance, 0.128, places=3)405        self.assertEqual(tree[5].left, 7)406        self.assertEqual(tree[5].right, -5)407        self.assertAlmostEqual(tree[5].distance, 0.224, places=3)408        self.assertEqual(tree[6].left, -3)409        self.assertEqual(tree[6].right, 0)410        self.assertAlmostEqual(tree[6].distance, 0.254, places=3)411        self.assertEqual(tree[7].left, -1)412        self.assertEqual(tree[7].right, 3)413        self.assertAlmostEqual(tree[7].distance, 0.391, places=3)414        self.assertEqual(tree[8].left, -8)415        self.assertEqual(tree[8].right, -7)416        self.assertAlmostEqual(tree[8].distance, 0.532, places=3)417        self.assertEqual(tree[9].left, 8)418        self.assertEqual(tree[9].right, -9)419        self.assertAlmostEqual(tree[9].distance, 3.234, places=3)420        self.assertEqual(tree[10].left, -6)421        self.assertEqual(tree[10].right, 6)422        self.assertAlmostEqual(tree[10].distance, 4.636, places=3)423        self.assertEqual(tree[11].left, -11)424        self.assertEqual(tree[11].right, -10)425        self.assertAlmostEqual(tree[11].distance, 12.741, places=3)426        # Pairwise single-linkage clustering427        tree = treecluster(data=data2, mask=mask2, weight=weight2,428                           transpose=0, method='s', dist='e')429        self.assertEqual(len(tree), len(data2) - 1)430        self.assertEqual(tree[0].left, 4)431        self.assertEqual(tree[0].right, 5)432        self.assertAlmostEqual(tree[0].distance, 0.003, places=3)433        self.assertEqual(tree[1].left, 9)434        self.assertEqual(tree[1].right, 12)435        self.assertAlmostEqual(tree[1].distance, 0.029, places=3)436        self.assertEqual(tree[2].left, 11)437        self.assertEqual(tree[2].right, -2)438        self.assertAlmostEqual(tree[2].distance, 0.033, places=3)439        self.assertEqual(tree[3].left, 1)440        self.assertEqual(tree[3].right, 2)441        self.assertAlmostEqual(tree[3].distance, 0.061, places=3)442        self.assertEqual(tree[4].left, 10)443        self.assertEqual(tree[4].right, -3)444        self.assertAlmostEqual(tree[4].distance, 0.077, places=3)445        self.assertEqual(tree[5].left, 7)446        self.assertEqual(tree[5].right, -5)447        self.assertAlmostEqual(tree[5].distance, 0.092, places=3)448        self.assertEqual(tree[6].left, 0)449        self.assertEqual(tree[6].right, -4)450        self.assertAlmostEqual(tree[6].distance, 0.242, places=3)451        self.assertEqual(tree[7].left, -7)452        self.assertEqual(tree[7].right, -1)453        self.assertAlmostEqual(tree[7].distance, 0.246, places=3)454        self.assertEqual(tree[8].left, 3)455        self.assertEqual(tree[8].right, -8)456        self.assertAlmostEqual(tree[8].distance, 0.287, places=3)457        self.assertEqual(tree[9].left, -9)458        self.assertEqual(tree[9].right, 8)459        self.assertAlmostEqual(tree[9].distance, 1.936, places=3)460        self.assertEqual(tree[10].left, -10)461        self.assertEqual(tree[10].right, -6)462        self.assertAlmostEqual(tree[10].distance, 3.432, places=3)463        self.assertEqual(tree[11].left, 6)464        self.assertEqual(tree[11].right, -11)465        self.assertAlmostEqual(tree[11].distance, 3.535, places=3)466        # Pairwise centroid-linkage clustering467        tree = treecluster(data=data2, mask=mask2, weight=weight2,468                           transpose=0, method='c', dist='e')469        self.assertEqual(len(tree), len(data2) - 1)470        self.assertEqual(tree[0].left, 4)471        self.assertEqual(tree[0].right, 5)472        self.assertAlmostEqual(tree[0].distance, 0.003, places=3)473        self.assertEqual(tree[1].left, 12)474        self.assertEqual(tree[1].right, 9)475        self.assertAlmostEqual(tree[1].distance, 0.029, places=3)476        self.assertEqual(tree[2].left, 1)477        self.assertEqual(tree[2].right, 2)478        self.assertAlmostEqual(tree[2].distance, 0.061, places=3)479        self.assertEqual(tree[3].left, -2)480        self.assertEqual(tree[3].right, 11)481        self.assertAlmostEqual(tree[3].distance, 0.063, places=3)482        self.assertEqual(tree[4].left, 10)483        self.assertEqual(tree[4].right, -4)484        self.assertAlmostEqual(tree[4].distance, 0.109, places=3)485        self.assertEqual(tree[5].left, -5)486        self.assertEqual(tree[5].right, 7)487        self.assertAlmostEqual(tree[5].distance, 0.189, places=3)488        self.assertEqual(tree[6].left, 0)489        self.assertEqual(tree[6].right, -3)490        self.assertAlmostEqual(tree[6].distance, 0.239, places=3)491        self.assertEqual(tree[7].left, 3)492        self.assertEqual(tree[7].right, -1)493        self.assertAlmostEqual(tree[7].distance, 0.390, places=3)494        self.assertEqual(tree[8].left, -7)495        self.assertEqual(tree[8].right, -8)496        self.assertAlmostEqual(tree[8].distance, 0.382, places=3)497        self.assertEqual(tree[9].left, -9)498        self.assertEqual(tree[9].right, 8)499        self.assertAlmostEqual(tree[9].distance, 3.063, places=3)500        self.assertEqual(tree[10].left, 6)501        self.assertEqual(tree[10].right, -6)502        self.assertAlmostEqual(tree[10].distance, 4.578, places=3)503        self.assertEqual(tree[11].left, -10)504        self.assertEqual(tree[11].right, -11)505        self.assertAlmostEqual(tree[11].distance, 11.536, places=3)506        # Pairwise maximum-linkage clustering507        tree = treecluster(data=data2, mask=mask2, weight=weight2,508                           transpose=0, method='m', dist='e')509        self.assertEqual(len(tree), len(data2) - 1)510        self.assertEqual(tree[0].left, 5)511        self.assertEqual(tree[0].right, 4)512        self.assertAlmostEqual(tree[0].distance, 0.003, places=3)513        self.assertEqual(tree[1].left, 9)514        self.assertEqual(tree[1].right, 12)515        self.assertAlmostEqual(tree[1].distance, 0.029, places=3)516        self.assertEqual(tree[2].left, 2)517        self.assertEqual(tree[2].right, 1)518        self.assertAlmostEqual(tree[2].distance, 0.061, places=3)519        self.assertEqual(tree[3].left, 11)520        self.assertEqual(tree[3].right, 10)521        self.assertAlmostEqual(tree[3].distance, 0.077, places=3)522        self.assertEqual(tree[4].left, -2)523        self.assertEqual(tree[4].right, -4)524        self.assertAlmostEqual(tree[4].distance, 0.216, places=3)525        self.assertEqual(tree[5].left, -3)526        self.assertEqual(tree[5].right, 0)527        self.assertAlmostEqual(tree[5].distance, 0.266, places=3)528        self.assertEqual(tree[6].left, -5)529        self.assertEqual(tree[6].right, 7)530        self.assertAlmostEqual(tree[6].distance, 0.302, places=3)531        self.assertEqual(tree[7].left, -1)532        self.assertEqual(tree[7].right, 3)533        self.assertAlmostEqual(tree[7].distance, 0.425, places=3)534        self.assertEqual(tree[8].left, -8)535        self.assertEqual(tree[8].right, -6)536        self.assertAlmostEqual(tree[8].distance, 0.968, places=3)537        self.assertEqual(tree[9].left, 8)538        self.assertEqual(tree[9].right, 6)539        self.assertAlmostEqual(tree[9].distance, 3.975, places=3)540        self.assertEqual(tree[10].left, -10)541        self.assertEqual(tree[10].right, -7)542        self.assertAlmostEqual(tree[10].distance, 5.755, places=3)543        self.assertEqual(tree[11].left, -11)544        self.assertEqual(tree[11].right, -9)545        self.assertAlmostEqual(tree[11].distance, 22.734, places=3)546    def test_somcluster(self):547        if TestCluster.module == 'Bio.Cluster':548            from Bio.Cluster import somcluster549        elif TestCluster.module == 'Pycluster':550            from Pycluster import somcluster551        # First data set552        weight = [1, 1, 1, 1, 1]553        data = numpy.array([[1.1, 2.2, 3.3, 4.4, 5.5],554                            [3.1, 3.2, 1.3, 2.4, 1.5],555                            [4.1, 2.2, 0.3, 5.4, 0.5],556                            [12.1, 2.0, 0.0, 5.0, 0.0]])557        mask = numpy.array([[1, 1, 1, 1, 1],558                            [1, 1, 1, 1, 1],559                            [1, 1, 1, 1, 1],560                            [1, 1, 1, 1, 1]], int)561        # TODO - Use a context manager here once we drop Python 2.6562        # Distance should be one letter:563        self.assertRaises(ValueError, somcluster,564                          **{"data": data, "mask": mask, "weight": weight,565                             "transpose": 0, "nxgrid": 10, "nygrid": 10,566                             "inittau": 0.02, "niter": 100, "dist": "euclidean"})567        clusterid, celldata = somcluster(data=data, mask=mask, weight=weight,568                                         transpose=0, nxgrid=10, nygrid=10,569                                         inittau=0.02, niter=100, dist='e')570        self.assertEqual(len(clusterid), len(data))571        self.assertEqual(len(clusterid[0]), 2)572        # Second data set573        weight = [1, 1]574        data = numpy.array([[1.1, 1.2],575                            [1.4, 1.3],576                            [1.1, 1.5],577                            [2.0, 1.5],578                            [1.7, 1.9],579                            [1.7, 1.9],580                            [5.7, 5.9],581                            [5.7, 5.9],582                            [3.1, 3.3],583                            [5.4, 5.3],584                            [5.1, 5.5],585                            [5.0, 5.5],586                            [5.1, 5.2]])587        mask = numpy.array([[1, 1],588                            [1, 1],589                            [1, 1],590                            [1, 1],591                            [1, 1],592                            [1, 1],593                            [1, 1],594                            [1, 1],595                            [1, 1],596                            [1, 1],597                            [1, 1],598                            [1, 1],599                            [1, 1]], int)600        clusterid, celldata = somcluster(data=data, mask=mask, weight=weight,601                                         transpose=0, nxgrid=10, nygrid=10,602                                         inittau=0.02, niter=100, dist='e')603        self.assertEqual(len(clusterid), len(data))604        self.assertEqual(len(clusterid[0]), 2)605    def test_distancematrix_kmedoids(self):606        if TestCluster.module == 'Bio.Cluster':607            from Bio.Cluster import distancematrix, kmedoids608        elif TestCluster.module == 'Pycluster':609            from Pycluster import distancematrix, kmedoids610        data = numpy.array([[2.2, 3.3, 4.4],611                            [2.1, 1.4, 5.6],612                            [7.8, 9.0, 1.2],613                            [4.5, 2.3, 1.5],614                            [4.2, 2.4, 1.9],615                            [3.6, 3.1, 9.3],616                            [2.3, 1.2, 3.9],617                            [4.2, 9.6, 9.3],618                            [1.7, 8.9, 1.1]])619        mask = numpy.array([[1, 1, 1],620                            [1, 1, 1],621                            [0, 1, 1],622                            [1, 1, 1],623                            [1, 1, 1],624                            [0, 1, 0],625                            [1, 1, 1],626                            [1, 0, 1],627                            [1, 1, 1]], int)628        weight = numpy.array([2.0, 1.0, 0.5])629        matrix = distancematrix(data, mask=mask, weight=weight)630        self.assertAlmostEqual(matrix[1][0], 1.243, places=3)631        self.assertAlmostEqual(matrix[2][0], 25.073, places=3)632        self.assertAlmostEqual(matrix[2][1], 44.960, places=3)633        self.assertAlmostEqual(matrix[3][0], 4.510, places=3)634        self.assertAlmostEqual(matrix[3][1], 5.924, places=3)635        self.assertAlmostEqual(matrix[3][2], 29.957, places=3)636        self.assertAlmostEqual(matrix[4][0], 3.410, places=3)637        self.assertAlmostEqual(matrix[4][1], 4.761, places=3)638        self.assertAlmostEqual(matrix[4][2], 29.203, places=3)639        self.assertAlmostEqual(matrix[4][3], 0.077, places=3)640        self.assertAlmostEqual(matrix[5][0], 0.040, places=3)641        self.assertAlmostEqual(matrix[5][1], 2.890, places=3)642        self.assertAlmostEqual(matrix[5][2], 34.810, places=3)643        self.assertAlmostEqual(matrix[5][3], 0.640, places=3)644        self.assertAlmostEqual(matrix[5][4], 0.490, places=3)645        self.assertAlmostEqual(matrix[6][0], 1.301, places=3)646        self.assertAlmostEqual(matrix[6][1], 0.447, places=3)647        self.assertAlmostEqual(matrix[6][2], 42.990, places=3)648        self.assertAlmostEqual(matrix[6][3], 3.934, places=3)649        self.assertAlmostEqual(matrix[6][4], 3.046, places=3)650        self.assertAlmostEqual(matrix[6][5], 3.610, places=3)651        self.assertAlmostEqual(matrix[7][0], 8.002, places=3)652        self.assertAlmostEqual(matrix[7][1], 6.266, places=3)653        self.assertAlmostEqual(matrix[7][2], 65.610, places=3)654        self.assertAlmostEqual(matrix[7][3], 12.240, places=3)655        self.assertAlmostEqual(matrix[7][4], 10.952, places=3)656        self.assertAlmostEqual(matrix[7][5], 0.000, places=3)657        self.assertAlmostEqual(matrix[7][6], 8.720, places=3)658        self.assertAlmostEqual(matrix[8][0], 10.659, places=3)659        self.assertAlmostEqual(matrix[8][1], 19.056, places=3)660        self.assertAlmostEqual(matrix[8][2], 0.010, places=3)661        self.assertAlmostEqual(matrix[8][3], 16.949, places=3)662        self.assertAlmostEqual(matrix[8][4], 15.734, places=3)663        self.assertAlmostEqual(matrix[8][5], 33.640, places=3)664        self.assertAlmostEqual(matrix[8][6], 18.266, places=3)665        self.assertAlmostEqual(matrix[8][7], 18.448, places=3)666        clusterid, error, nfound = kmedoids(matrix, npass=1000)667        self.assertEqual(clusterid[0], 5)668        self.assertEqual(clusterid[1], 5)669        self.assertEqual(clusterid[2], 2)670        self.assertEqual(clusterid[3], 5)671        self.assertEqual(clusterid[4], 5)672        self.assertEqual(clusterid[5], 5)673        self.assertEqual(clusterid[6], 5)674        self.assertEqual(clusterid[7], 5)675        self.assertEqual(clusterid[8], 2)676        self.assertAlmostEqual(error, 7.680, places=3)677    def test_pca(self):678        if TestCluster.module == 'Bio.Cluster':679            from Bio.Cluster import pca680        elif TestCluster.module == 'Pycluster':681            from Pycluster import pca682        data = numpy.array([[3.1, 1.2],683                            [1.4, 1.3],684                            [1.1, 1.5],685                            [2.0, 1.5],686                            [1.7, 1.9],687                            [1.7, 1.9],688                            [5.7, 5.9],689                            [5.7, 5.9],690                            [3.1, 3.3],691                            [5.4, 5.3],692                            [5.1, 5.5],693                            [5.0, 5.5],694                            [5.1, 5.2],695                            ])696        mean, coordinates, pc, eigenvalues = pca(data)697        self.assertAlmostEqual(mean[0], 3.5461538461538464)698        self.assertAlmostEqual(mean[1], 3.5307692307692311)699        self.assertAlmostEqual(coordinates[0, 0], 2.0323189722653883)700        self.assertAlmostEqual(coordinates[0, 1], 1.2252420399694917)701        self.assertAlmostEqual(coordinates[1, 0], 3.0936985166252251)702        self.assertAlmostEqual(coordinates[1, 1], -0.10647619705157851)703        self.assertAlmostEqual(coordinates[2, 0], 3.1453186907749426)704        self.assertAlmostEqual(coordinates[2, 1], -0.46331699855941139)705        self.assertAlmostEqual(coordinates[3, 0], 2.5440202962223761)706        self.assertAlmostEqual(coordinates[3, 1], 0.20633980959571077)707        self.assertAlmostEqual(coordinates[4, 0], 2.4468278463376221)708        self.assertAlmostEqual(coordinates[4, 1], -0.28412285736824866)709        self.assertAlmostEqual(coordinates[5, 0], 2.4468278463376221)710        self.assertAlmostEqual(coordinates[5, 1], -0.28412285736824866)711        self.assertAlmostEqual(coordinates[6, 0], -3.2018619434743254)712        self.assertAlmostEqual(coordinates[6, 1], 0.019692314198662915)713        self.assertAlmostEqual(coordinates[7, 0], -3.2018619434743254)714        self.assertAlmostEqual(coordinates[7, 1], 0.019692314198662915)715        self.assertAlmostEqual(coordinates[8, 0], 0.46978641990344067)716        self.assertAlmostEqual(coordinates[8, 1], -0.17778754731982949)717        self.assertAlmostEqual(coordinates[9, 0], -2.5549912731867215)718        self.assertAlmostEqual(coordinates[9, 1], 0.19733897451533403)719        self.assertAlmostEqual(coordinates[10, 0], -2.5033710990370044)720        self.assertAlmostEqual(coordinates[10, 1], -0.15950182699250004)721        self.assertAlmostEqual(coordinates[11, 0], -2.4365601663089413)722        self.assertAlmostEqual(coordinates[11, 1], -0.23390813900973562)723        self.assertAlmostEqual(coordinates[12, 0], -2.2801521629852974)724        self.assertAlmostEqual(coordinates[12, 1], 0.0409309711916888)725        self.assertAlmostEqual(pc[0, 0], -0.66810932728062988)726        self.assertAlmostEqual(pc[0, 1], -0.74406312017235743)727        self.assertAlmostEqual(pc[1, 0], 0.74406312017235743)728        self.assertAlmostEqual(pc[1, 1], -0.66810932728062988)729        self.assertAlmostEqual(eigenvalues[0], 9.3110471246032844)730        self.assertAlmostEqual(eigenvalues[1], 1.4437456297481428)731        data = numpy.array([[2.3, 4.5, 1.2, 6.7, 5.3, 7.1],732                            [1.3, 6.5, 2.2, 5.7, 6.2, 9.1],733                            [3.2, 7.2, 3.2, 7.4, 7.3, 8.9],734                            [4.2, 5.2, 9.2, 4.4, 6.3, 7.2]])735        mean, coordinates, pc, eigenvalues = pca(data)736        self.assertAlmostEqual(mean[0], 2.7500)737        self.assertAlmostEqual(mean[1], 5.8500)738        self.assertAlmostEqual(mean[2], 3.9500)739        self.assertAlmostEqual(mean[3], 6.0500)740        self.assertAlmostEqual(mean[4], 6.2750)741        self.assertAlmostEqual(mean[5], 8.0750)742        self.assertAlmostEqual(coordinates[0, 0], 2.6460846688406905)743        self.assertAlmostEqual(coordinates[0, 1], -2.1421701432732418)744        self.assertAlmostEqual(coordinates[0, 2], -0.56620932754145858)745        self.assertAlmostEqual(coordinates[0, 3], 0.0)746        self.assertAlmostEqual(coordinates[1, 0], 2.0644120899917544)747        self.assertAlmostEqual(coordinates[1, 1], 0.55542108669180323)748        self.assertAlmostEqual(coordinates[1, 2], 1.4818772348457117)749        self.assertAlmostEqual(coordinates[1, 3], 0.0)750        self.assertAlmostEqual(coordinates[2, 0], 1.0686641862092987)751        self.assertAlmostEqual(coordinates[2, 1], 1.9994412069101073)752        self.assertAlmostEqual(coordinates[2, 2], -1.000720598980291)753        self.assertAlmostEqual(coordinates[2, 3], 0.0)754        self.assertAlmostEqual(coordinates[3, 0], -5.77916094504174)755        self.assertAlmostEqual(coordinates[3, 1], -0.41269215032867046)756        self.assertAlmostEqual(coordinates[3, 2], 0.085052691676038017)757        self.assertAlmostEqual(coordinates[3, 3], 0.0)758        self.assertAlmostEqual(pc[0, 0], -0.26379660005997291)759        self.assertAlmostEqual(pc[0, 1], 0.064814972617134495)760        self.assertAlmostEqual(pc[0, 2], -0.91763310094893846)761        self.assertAlmostEqual(pc[0, 3], 0.26145408875373249)762        self.assertAlmostEqual(pc[1, 0], 0.05073770520434398)763        self.assertAlmostEqual(pc[1, 1], 0.68616983388698793)764        self.assertAlmostEqual(pc[1, 2], 0.13819106187213354)765        self.assertAlmostEqual(pc[1, 3], 0.19782544121828985)766        self.assertAlmostEqual(pc[2, 0], -0.63000893660095947)767        self.assertAlmostEqual(pc[2, 1], 0.091155993862151397)768        self.assertAlmostEqual(pc[2, 2], 0.045630391256086845)769        self.assertAlmostEqual(pc[2, 3], -0.67456694780914772)770        # As the last eigenvalue is zero, the corresponding eigenvector is771        # strongly affected by roundoff error, and is not being tested here.772        # For PCA, this doesn't matter since all data have a zero coefficient773        # along this eigenvector.774        self.assertAlmostEqual(eigenvalues[0], 6.7678878332578778)775        self.assertAlmostEqual(eigenvalues[1], 3.0108911400291856)776        self.assertAlmostEqual(eigenvalues[2], 1.8775592718563467)777        self.assertAlmostEqual(eigenvalues[3], 0.0)778if __name__ == "__main__":779    TestCluster.module = 'Bio.Cluster'780    runner = unittest.TextTestRunner(verbosity=2)...test_complex.py
Source:test_complex.py  
...8)9from random import random10# These tests ensure that complex math does the right thing11class ComplexTest(unittest.TestCase):12    def assertAlmostEqual(self, a, b):13        if isinstance(a, complex):14            if isinstance(b, complex):15                unittest.TestCase.assertAlmostEqual(self, a.real, b.real)16                unittest.TestCase.assertAlmostEqual(self, a.imag, b.imag)17            else:18                unittest.TestCase.assertAlmostEqual(self, a.real, b)19                unittest.TestCase.assertAlmostEqual(self, a.imag, 0.)20        else:21            if isinstance(b, complex):22                unittest.TestCase.assertAlmostEqual(self, a, b.real)23                unittest.TestCase.assertAlmostEqual(self, 0., b.imag)24            else:25                unittest.TestCase.assertAlmostEqual(self, a, b)26    def assertCloseAbs(self, x, y, eps=1e-9):27        """Return true iff floats x and y "are close\""""28        # put the one with larger magnitude second29        if abs(x) > abs(y):30            x, y = y, x31        if y == 0:32            return abs(x) < eps33        if x == 0:34            return abs(y) < eps35        # check that relative difference < eps36        self.assert_(abs((x-y)/y) < eps)37    def assertClose(self, x, y, eps=1e-9):38        """Return true iff complexes x and y "are close\""""39        self.assertCloseAbs(x.real, y.real, eps)40        self.assertCloseAbs(x.imag, y.imag, eps)41    def assertIs(self, a, b):42        self.assert_(a is b)43    def check_div(self, x, y):44        """Compute complex z=x*y, and check that z/x==y and z/y==x."""45        z = x * y46        if x != 0:47            q = z / x48            self.assertClose(q, y)49            q = z.__div__(x)50            self.assertClose(q, y)51            q = z.__truediv__(x)52            self.assertClose(q, y)53        if y != 0:54            q = z / y55            self.assertClose(q, x)56            q = z.__div__(y)57            self.assertClose(q, x)58            q = z.__truediv__(y)59            self.assertClose(q, x)60    def test_div(self):61        simple_real = [float(i) for i in xrange(-5, 6)]62        simple_complex = [complex(x, y) for x in simple_real for y in simple_real]63        for x in simple_complex:64            for y in simple_complex:65                self.check_div(x, y)66        # A naive complex division algorithm (such as in 2.0) is very prone to67        # nonsense errors for these (overflows and underflows).68        self.check_div(complex(1e200, 1e200), 1+0j)69        self.check_div(complex(1e-200, 1e-200), 1+0j)70        # Just for fun.71        for i in xrange(100):72            self.check_div(complex(random(), random()),73                           complex(random(), random()))74        self.assertRaises(ZeroDivisionError, complex.__div__, 1+1j, 0+0j)75        # FIXME: The following currently crashes on Alpha76        # self.assertRaises(OverflowError, pow, 1e200+1j, 1e200+1j)77    def test_truediv(self):78        self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)79        self.assertRaises(ZeroDivisionError, complex.__truediv__, 1+1j, 0+0j)80    def test_floordiv(self):81        self.assertAlmostEqual(complex.__floordiv__(3+0j, 1.5+0j), 2)82        self.assertRaises(ZeroDivisionError, complex.__floordiv__, 3+0j, 0+0j)83    def test_coerce(self):84        self.assertRaises(OverflowError, complex.__coerce__, 1+1j, 1L<<10000)85    def test_richcompare(self):86        self.assertRaises(OverflowError, complex.__eq__, 1+1j, 1L<<10000)87        self.assertEqual(complex.__lt__(1+1j, None), NotImplemented)88        self.assertIs(complex.__eq__(1+1j, 1+1j), True)89        self.assertIs(complex.__eq__(1+1j, 2+2j), False)90        self.assertIs(complex.__ne__(1+1j, 1+1j), False)91        self.assertIs(complex.__ne__(1+1j, 2+2j), True)92        self.assertRaises(TypeError, complex.__lt__, 1+1j, 2+2j)93        self.assertRaises(TypeError, complex.__le__, 1+1j, 2+2j)94        self.assertRaises(TypeError, complex.__gt__, 1+1j, 2+2j)95        self.assertRaises(TypeError, complex.__ge__, 1+1j, 2+2j)96    def test_mod(self):97        self.assertRaises(ZeroDivisionError, (1+1j).__mod__, 0+0j)98        a = 3.33+4.43j99        try:100            a % 0101        except ZeroDivisionError:102            pass103        else:104            self.fail("modulo parama can't be 0")105    def test_divmod(self):106        self.assertRaises(ZeroDivisionError, divmod, 1+1j, 0+0j)107    def test_pow(self):108        self.assertAlmostEqual(pow(1+1j, 0+0j), 1.0)109        self.assertAlmostEqual(pow(0+0j, 2+0j), 0.0)110        self.assertRaises(ZeroDivisionError, pow, 0+0j, 1j)111        self.assertAlmostEqual(pow(1j, -1), 1/1j)112        self.assertAlmostEqual(pow(1j, 200), 1)113        self.assertRaises(ValueError, pow, 1+1j, 1+1j, 1+1j)114        a = 3.33+4.43j115        self.assertEqual(a ** 0j, 1)116        self.assertEqual(a ** 0.+0.j, 1)117        self.assertEqual(3j ** 0j, 1)118        self.assertEqual(3j ** 0, 1)119        try:120            0j ** a121        except ZeroDivisionError:122            pass123        else:124            self.fail("should fail 0.0 to negative or complex power")125        try:126            0j ** (3-2j)127        except ZeroDivisionError:128            pass129        else:130            self.fail("should fail 0.0 to negative or complex power")131        # The following is used to exercise certain code paths132        self.assertEqual(a ** 105, a ** 105)133        self.assertEqual(a ** -105, a ** -105)134        self.assertEqual(a ** -30, a ** -30)135        self.assertEqual(0.0j ** 0, 1)136        b = 5.1+2.3j137        self.assertRaises(ValueError, pow, a, b, 0)138    def test_boolcontext(self):139        for i in xrange(100):140            self.assert_(complex(random() + 1e-6, random() + 1e-6))141        self.assert_(not complex(0.0, 0.0))142    def test_conjugate(self):143        self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)144    def test_constructor(self):145        class OS:146            def __init__(self, value): self.value = value147            def __complex__(self): return self.value148        class NS(object):149            def __init__(self, value): self.value = value150            def __complex__(self): return self.value151        self.assertEqual(complex(OS(1+10j)), 1+10j)152        self.assertEqual(complex(NS(1+10j)), 1+10j)153        self.assertRaises(TypeError, complex, OS(None))154        self.assertRaises(TypeError, complex, NS(None))155        self.assertAlmostEqual(complex("1+10j"), 1+10j)156        self.assertAlmostEqual(complex(10), 10+0j)157        self.assertAlmostEqual(complex(10.0), 10+0j)158        self.assertAlmostEqual(complex(10L), 10+0j)159        self.assertAlmostEqual(complex(10+0j), 10+0j)160        self.assertAlmostEqual(complex(1,10), 1+10j)161        self.assertAlmostEqual(complex(1,10L), 1+10j)162        self.assertAlmostEqual(complex(1,10.0), 1+10j)163        self.assertAlmostEqual(complex(1L,10), 1+10j)164        self.assertAlmostEqual(complex(1L,10L), 1+10j)165        self.assertAlmostEqual(complex(1L,10.0), 1+10j)166        self.assertAlmostEqual(complex(1.0,10), 1+10j)167        self.assertAlmostEqual(complex(1.0,10L), 1+10j)168        self.assertAlmostEqual(complex(1.0,10.0), 1+10j)169        self.assertAlmostEqual(complex(3.14+0j), 3.14+0j)170        self.assertAlmostEqual(complex(3.14), 3.14+0j)171        self.assertAlmostEqual(complex(314), 314.0+0j)172        self.assertAlmostEqual(complex(314L), 314.0+0j)173        self.assertAlmostEqual(complex(3.14+0j, 0j), 3.14+0j)174        self.assertAlmostEqual(complex(3.14, 0.0), 3.14+0j)175        self.assertAlmostEqual(complex(314, 0), 314.0+0j)176        self.assertAlmostEqual(complex(314L, 0L), 314.0+0j)177        self.assertAlmostEqual(complex(0j, 3.14j), -3.14+0j)178        self.assertAlmostEqual(complex(0.0, 3.14j), -3.14+0j)179        self.assertAlmostEqual(complex(0j, 3.14), 3.14j)180        self.assertAlmostEqual(complex(0.0, 3.14), 3.14j)181        self.assertAlmostEqual(complex("1"), 1+0j)182        self.assertAlmostEqual(complex("1j"), 1j)183        self.assertAlmostEqual(complex(),  0)184        self.assertAlmostEqual(complex("-1"), -1)185        self.assertAlmostEqual(complex("+1"), +1)186        class complex2(complex): pass187        self.assertAlmostEqual(complex(complex2(1+1j)), 1+1j)188        self.assertAlmostEqual(complex(real=17, imag=23), 17+23j)189        self.assertAlmostEqual(complex(real=17+23j), 17+23j)190        self.assertAlmostEqual(complex(real=17+23j, imag=23), 17+46j)191        self.assertAlmostEqual(complex(real=1+2j, imag=3+4j), -3+5j)192        c = 3.14 + 1j193        self.assert_(complex(c) is c)194        del c195        self.assertRaises(TypeError, complex, "1", "1")196        self.assertRaises(TypeError, complex, 1, "1")197        self.assertEqual(complex("  3.14+J  "), 3.14+1j)198        if test_support.have_unicode:199            self.assertEqual(complex(unicode("  3.14+J  ")), 3.14+1j)200        # SF bug 543840:  complex(string) accepts strings with \0201        # Fixed in 2.3.202        self.assertRaises(ValueError, complex, '1+1j\0j')203        self.assertRaises(TypeError, int, 5+3j)204        self.assertRaises(TypeError, long, 5+3j)205        self.assertRaises(TypeError, float, 5+3j)206        self.assertRaises(ValueError, complex, "")207        self.assertRaises(TypeError, complex, None)208        self.assertRaises(ValueError, complex, "\0")209        self.assertRaises(TypeError, complex, "1", "2")210        self.assertRaises(TypeError, complex, "1", 42)211        self.assertRaises(TypeError, complex, 1, "2")212        self.assertRaises(ValueError, complex, "1+")213        self.assertRaises(ValueError, complex, "1+1j+1j")214        self.assertRaises(ValueError, complex, "--")215        if test_support.have_unicode:216            self.assertRaises(ValueError, complex, unicode("1"*500))217            self.assertRaises(ValueError, complex, unicode("x"))218        class EvilExc(Exception):219            pass220        class evilcomplex:221            def __complex__(self):222                raise EvilExc223        self.assertRaises(EvilExc, complex, evilcomplex())224        class float2:225            def __init__(self, value):226                self.value = value227            def __float__(self):228                return self.value229        self.assertAlmostEqual(complex(float2(42.)), 42)230        self.assertAlmostEqual(complex(real=float2(17.), imag=float2(23.)), 17+23j)231        self.assertRaises(TypeError, complex, float2(None))232        class complex0(complex):233            """Test usage of __complex__() when inheriting from 'complex'"""234            def __complex__(self):235                return 42j236        class complex1(complex):237            """Test usage of __complex__() with a __new__() method"""238            def __new__(self, value=0j):239                return complex.__new__(self, 2*value)240            def __complex__(self):241                return self242        class complex2(complex):243            """Make sure that __complex__() calls fail if anything other than a244            complex is returned"""245            def __complex__(self):246                return None247        self.assertAlmostEqual(complex(complex0(1j)), 42j)248        self.assertAlmostEqual(complex(complex1(1j)), 2j)249        self.assertRaises(TypeError, complex, complex2(1j))250    def test_hash(self):251        for x in xrange(-30, 30):252            self.assertEqual(hash(x), hash(complex(x, 0)))253            x /= 3.0    # now check against floating point254            self.assertEqual(hash(x), hash(complex(x, 0.)))255    def test_abs(self):256        nums = [complex(x/3., y/7.) for x in xrange(-9,9) for y in xrange(-9,9)]257        for num in nums:258            self.assertAlmostEqual((num.real**2 + num.imag**2)  ** 0.5, abs(num))259    def test_repr(self):260        self.assertEqual(repr(1+6j), '(1+6j)')261        self.assertEqual(repr(1-6j), '(1-6j)')262        self.assertNotEqual(repr(-(1+0j)), '(-1+-0j)')263    def test_neg(self):264        self.assertEqual(-(1+6j), -1-6j)265    def test_file(self):266        a = 3.33+4.43j267        b = 5.1+2.3j268        fo = None269        try:270            fo = open(test_support.TESTFN, "wb")271            print >>fo, a, b272            fo.close()...adsorbate_thermo_test.py
Source:adsorbate_thermo_test.py  
...21        """22        Check values of Q_trans, S_trans, Cp_trans, dH_trans23        """24        Q_trans, S_trans, Cp_trans, dH_trans = self.adsorbate_thermo.get_translation_thermo()25        self.assertAlmostEqual(Q_trans[0], 121.638576209145)26        self.assertAlmostEqual(Q_trans[45], 301.9035599354932)27        self.assertAlmostEqual(Q_trans[-2], 811.8757895562588)28        self.assertAlmostEqual(S_trans[0], 56.54717436538365)29        self.assertAlmostEqual(S_trans[45], 64.10547399343213)30        self.assertAlmostEqual(S_trans[-2], 72.33048004244537)31        self.assertAlmostEqual(Cp_trans[0], 8.314472)32        self.assertAlmostEqual(Cp_trans[45], 8.314472)33        self.assertAlmostEqual(Cp_trans[-2], 8.314472)34        self.assertAlmostEqual(dH_trans[0], 2478.9598268)35        self.assertAlmostEqual(dH_trans[45], 6152.70928)36        self.assertAlmostEqual(dH_trans[-2], 16545.79928)37    def test_get_vibration_thermo(self):38        """39        Check values of Q_vib, S_vib, dH_vib, Cv_vib40        """41        Q_vib, S_vib, dH_vib, Cv_vib = self.adsorbate_thermo.get_vibrational_thermo()42        self.assertAlmostEqual(Q_vib[0], 11.034963254025913)43        self.assertAlmostEqual(Q_vib[45], 130.32233489549847)44        self.assertAlmostEqual(Q_vib[-2], 6018.728683338621)45        self.assertAlmostEqual(S_vib[0], 38.07225504419116)46        self.assertAlmostEqual(S_vib[45], 67.49815326008806)47        self.assertAlmostEqual(S_vib[-2], 110.22104390942083)48        self.assertAlmostEqual(dH_vib[0], 5399.089968555581)49        self.assertAlmostEqual(dH_vib[45], 19984.872272678833)50        self.assertAlmostEqual(dH_vib[-2], 75347.8861223393)51        self.assertAlmostEqual(Cv_vib[0], 28.074698286767678)52        self.assertAlmostEqual(Cv_vib[45], 36.77745028228141)53        self.assertAlmostEqual(Cv_vib[-2], 49.93125232130692)54    def test_get_thermo(self):55        """56        Check the NASA polynomials57        """58        nasa = self.adsorbate_thermo.get_thermo()59        a_low = [1253.2, 18.899, -0.0390199, 3.98049e-05, -1.52948e-08, -24879.5, 20.1649]60        a_high = [4092.47, 1.56959, 0.000643606, -5.4255e-07, 9.64746e-11, -397031, -12477.9]61        np.testing.assert_array_almost_equal(nasa.polynomials[0].coeffs, a_low, 1)62        np.testing.assert_array_almost_equal(nasa.polynomials[1].coeffs, a_high, 1)63if __name__ == '__main__':...varasto_test.py
Source:varasto_test.py  
...7        self.ylijaama = Varasto(10, 30)8    9    def test_konstruktori_luo_tyhjan_varaston(self):10        # https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertAlmostEqual11        self.assertAlmostEqual(self.varasto.saldo, 0)12    def test_uudella_varastolla_oikea_tilavuus(self):13        self.assertAlmostEqual(self.varasto.tilavuus, 10)14    def test_lisays_lisaa_saldoa(self):15        self.varasto.lisaa_varastoon(8)16        self.assertAlmostEqual(self.varasto.saldo, 8)17    18    def test_lisayksessa_vain_positiviisia_arvoja(self):19        self.varasto.lisaa_varastoon(-10)20        self.assertAlmostEqual(self.varasto.saldo, 0)21    22    def test_lisayksessa_ei_ylijaama(self):23        self.varasto.lisaa_varastoon(500)24        self.assertAlmostEqual(self.varasto.saldo, 10)25    def test_lisays_lisaa_pienentaa_vapaata_tilaa(self):26        self.varasto.lisaa_varastoon(8)27        # vapaata tilaa pitäisi vielä olla tilavuus-lisättävä määrä eli 228        self.assertAlmostEqual(self.varasto.paljonko_mahtuu(), 2)29    def test_ottaminen_palauttaa_oikean_maaran(self):30        self.varasto.lisaa_varastoon(8)31        saatu_maara = self.varasto.ota_varastosta(2)32        self.assertAlmostEqual(saatu_maara, 2)33    def test_ottaminen_lisaa_tilaa(self):34        self.varasto.lisaa_varastoon(8)35        self.varasto.ota_varastosta(2)36        # varastossa pitäisi olla tilaa 10 - 8 + 2 eli 437        self.assertAlmostEqual(self.varasto.paljonko_mahtuu(), 4)38    39    def test_ottaminen_vain_positiivisilla_arvoilla(self):40        self.varasto.lisaa_varastoon(5)41        saatu_maara = self.varasto.ota_varastosta(-5)42        self.assertAlmostEqual(saatu_maara, 0)43    44    def test_varaston_tyhjentaminen_palauttaa_oikean_maaran_saldon(self):45        self.varasto.lisaa_varastoon(8)46        saatu_maara = self.varasto.ota_varastosta(10)47        self.assertAlmostEqual(saatu_maara, 8)48        self.assertAlmostEqual(self.varasto.saldo, 0)49       50    def test_konstruktori_hyvaksyy_vain_positiivisen_tilavuuden(self):51        self.assertAlmostEqual(self.neg_arvot.tilavuus, 0)52        53    def test_konstruktori_hyvaksyy_vain_positiivisen_alku_saldon(self):54        self.assertAlmostEqual(self.neg_arvot.saldo, 0)55        56    def test_konstruktori_laskee_ylijaamatilanteen_oikein(self):57        self.assertAlmostEqual(self.ylijaama.saldo, 10)58    def test_tulostus_oikein(self):...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
