Advertisement
Guest User

Untitled

a guest
May 25th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. import os
  2. import re
  3. import sys
  4. import sqlite3
  5. import xlwings as xw
  6. import string
  7. import numpy
  8.  
  9.  
  10. def FindDirs(dir):
  11. """List directories"""
  12. dirs = []
  13. pattern = re.compile("^[^.]+$")
  14. for content in os.listdir(dir):
  15. if pattern.match(content):
  16. dirs.append(os.path.abspath(content))
  17. return dirs
  18.  
  19.  
  20. def WhereIs(verbose=False):
  21. """Display whats in the script's folder"""
  22. pathname = os.path.dirname(sys.argv[0])
  23. return os.path.abspath(pathname)
  24. if verbose is True:
  25. print("\nPath where the script is saved:\n", pathname, "\n")
  26. print("\nFiles contained in the folder:\n", os.listdir(pathname), "\n")
  27.  
  28.  
  29. def CreateTable(pdb, listvars):
  30. try:
  31. GenerateRows(pdb, listvars)
  32. except:
  33. print("Table %s already exists." % (pdb))
  34. ans = input("Try to overwrite table? (y/n)\n")
  35. if ans == "y":
  36. db.cur.execute("DROP TABLE IF EXISTS %s" % (pdb))
  37. GenerateRows(pdb, listvars)
  38. else:
  39. quit()
  40.  
  41.  
  42. def GenerateRows(pdb, listvars):
  43. """Generate table for DMS data"""
  44. db.cur.execute("CREATE TABLE %s(id INTEGER PRIMARY KEY, position INTEGER, wt TEXT, mutation TEXT)" % (pdb))
  45. if len(listvars) > 0:
  46. for i in listvars:
  47. db.cur.execute("ALTER TABLE %s ADD COLUMN %s FLOAT" % (pdb, i))
  48. else:
  49. print("Only one column supplied")
  50. db.cur.execute("ALTER TABLE %s ADD COLUMN fitness FLOAT" % (pdb))
  51.  
  52.  
  53.  
  54. class DatabaseSelector():
  55. """Manage database connection"""
  56. def __init__(self):
  57. current_path = WhereIs()
  58. self.local_dirs = FindDirs(current_path)
  59. self.local_dirs.append(current_path)
  60. self.DatabaseListing()
  61. if self.database_list:
  62. print("Finding databases...")
  63. self.DatabaseIterator()
  64. else:
  65. print("No database found!")
  66.  
  67. def DatabaseListing(self):
  68. self.database_list = []
  69. for directory in self.local_dirs:
  70. for unique_database in self.FindDb(directory):
  71. self.database_list.append(os.path.join(directory, unique_database))
  72.  
  73. def DatabaseIterator(self):
  74. for database in self.database_list:
  75. answer_selector = input("Is this the correct database: %s (y|n|q)?\n" % (database))
  76. if answer_selector == "yes" or answer_selector == "y":
  77. try:
  78. self.conn = sqlite3.connect(database)
  79. self.cur = self.conn.cursor()
  80. print("Connected to: %s !" % (database))
  81. break
  82. except:
  83. print("Unable to connect to database %s" % (database))
  84. continue
  85. elif answer_selector == "no" or answer_selector == "n":
  86. continue
  87. elif answer_selector == "quit" or answer_selector == "q":
  88. print("Exiting program...")
  89. quit()
  90.  
  91. def FindDb(self, directory, p1="^.+.sqlite3", p2="^database.+"):
  92. """Find output files"""
  93. files = []
  94. pattern1 = re.compile(p1)
  95. pattern2 = re.compile(p2)
  96. for content in os.listdir(directory):
  97. if pattern1.match(content):
  98. files.append(content)
  99. if not files:
  100. for content in os.listdir(directory):
  101. if pattern2.match(content):
  102. files.append(content)
  103. return files
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement