Skip to content

Commit 35d9f05

Browse files
authored
Merge pull request #52 from DeepRank/issue51
Issue51
2 parents 94cf2ca + 7df74a8 commit 35d9f05

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed

pdb2sql/many2sql.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,30 @@
1313
class many2sql(pdb2sql):
1414

1515
def __init__(self, pdbfiles, tablenames=None):
16-
"""Create a sql database containing multiple pdbs."""
16+
"""Create a sql database containing multiple pdbs.
17+
18+
Args:
19+
pdbfiles(list): list of pdb files or data.
20+
tablenames (list): list of table names in string
21+
Defaults to None.
22+
23+
Raises:
24+
TypeError: pdbfiles must be a list
25+
TypeError: tablenames must be a list
26+
TypeError: tablenames must be a list of strings
27+
"""
1728

1829
if not isinstance(pdbfiles, list):
19-
raise ValueError('pdbfiles must be a list')
30+
raise TypeError('pdbfiles must be a list')
31+
32+
if tablenames is not None:
33+
if not isinstance(tablenames, list):
34+
raise TypeError('tablenames must be a list')
35+
else:
36+
for i in tablenames:
37+
if not isinstance(i, str):
38+
raise TypeError(f'tablenames must be a list of strings,'
39+
f' {i} is a type of {type(i)}')
2040

2141
self.npdb = len(pdbfiles)
2242

test/test_many2sql.py

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import unittest
2-
import os
32
import numpy as np
43
from pathlib import Path
54
from pdb2sql import many2sql
@@ -12,53 +11,46 @@
1211
class TestMany2SQL(unittest.TestCase):
1312

1413
def setUp(self):
15-
self.pdb1 = os.fspath(Path(pdb_folder, '1AK4', '1AK4_5w.pdb'))
16-
self.pdb2 = os.fspath(Path(pdb_folder, '1AK4', '1AK4_10w.pdb'))
14+
pdb1 = Path(pdb_folder, '1AK4', '1AK4_5w.pdb')
15+
pdb2 = Path(pdb_folder, '1AK4', '1AK4_10w.pdb')
16+
self.pdbs = [pdb1, pdb2]
17+
self.tablenames = [str(pdb1), str(pdb2)]
1718

1819
def test_init_from_files(self):
1920
"""Verify init from path."""
20-
pdbs = [self.pdb1, self.pdb2]
21-
many = many2sql(pdbs, tablenames=pdbs)
21+
many = many2sql(self.pdbs, tablenames=self.tablenames)
2222

2323
def test_init_from_pdb_data(self):
2424
"""Verify init from data."""
25-
pdbs = [self.pdb1, self.pdb2]
26-
sqls = [pdb2sql(p) for p in pdbs]
25+
sqls = [pdb2sql(p) for p in self.pdbs]
2726
data = [db.sql2pdb() for db in sqls]
28-
many = many2sql(data, tablenames=pdbs)
27+
many = many2sql(data, tablenames=self.tablenames)
2928

3029
def test_init_from_sql(self):
3130
"""Verify default sqls."""
32-
pdbs = [self.pdb1, self.pdb2]
33-
sqls = [pdb2sql(p) for p in pdbs]
34-
many = many2sql(sqls, tablenames=pdbs)
31+
sqls = [pdb2sql(p) for p in self.pdbs]
32+
many = many2sql(sqls, tablenames=self.tablenames)
3533

3634
def test_call(self):
3735
"""Test call function."""
38-
pdbs = [self.pdb1, self.pdb2]
39-
many = many2sql(pdbs, tablenames=pdbs)
36+
many = many2sql(self.pdbs, tablenames=self.tablenames)
4037
chainA = many(chainID='A')
4138

4239
def test_get_all(self):
4340
"""Test get_all function."""
44-
pdbs = [self.pdb1, self.pdb2]
45-
many = many2sql(pdbs, tablenames=pdbs)
41+
many = many2sql(self.pdbs, tablenames=self.tablenames)
4642
data = many.get_all('x,y,z', chainID='A')
4743

4844
def test_get_intersection(self):
4945
"""Test get_all function."""
50-
pdbs = [self.pdb1, self.pdb2]
51-
many = many2sql(pdbs, tablenames=pdbs)
46+
many = many2sql(self.pdbs, tablenames=self.tablenames)
5247
data = many.get_intersection('x,y,z')
5348

5449
def test_intersect(self):
5550
"""Test get_all function."""
56-
pdbs = [self.pdb1, self.pdb2]
57-
many = many2sql(pdbs, tablenames=pdbs)
51+
many = many2sql(self.pdbs, tablenames=self.tablenames)
5852
chainA = many.intersect()
5953

6054

6155
if __name__ == '__main__':
62-
# runner = unittest.TextTestRunner(verbosity=2)
63-
# unittest.main(testRunner=runner)
64-
unittest.main()
56+
unittest.main()

0 commit comments

Comments
 (0)