def importCorpus(self, name): if not self.importFree: reply = QtWidgets.QMessageBox.warning( self, "Stop current import?", 'There is already an import ongoing, would you like to cancel it and start a new import?', buttons=QtWidgets.QMessageBox.Abort | QtWidgets.QMessageBox.Cancel) if reply == QtWidgets.QMessageBox.Cancel: return self.cancelImporter.emit() try: if name in get_corpora_list( CorpusConfig('', graph_host='localhost', graph_port=7474)): reply = QtWidgets.QMessageBox.warning( self, "Overwrite corpus?", 'The {} corpus appears to be imported already. Would you like to overwrite it?' .format(name), buttons=QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel) if reply == QtWidgets.QMessageBox.Cancel: return except ConnectionError: reply = QtWidgets.QMessageBox.critical( self, "Could not connect to local server", 'Please make sure there is a local Neo4j server running.') return directory = QtWidgets.QFileDialog.getExistingDirectory( self, 'Select a directory containing the {} corpus'.format(name), os.path.expanduser('~')) if directory == '': return self.corpusToImport.emit(name, directory)
def test_basic_query(timed_config): with CorpusContext(timed_config) as g: q = g.query_graph(g.word).filter(g.word.label == 'are') print(g.word.label == 'are') print(q.cypher()) assert (all(x['label'] == 'are' for x in q.all())) assert ('timed' in get_corpora_list(timed_config))
def importForceAligned(self): if not self.importFree: reply = QtWidgets.QMessageBox.warning(self, "Stop current import?", 'There is already an import ongoing, would you like to cancel it and start a new import?', buttons = QtWidgets.QMessageBox.Abort | QtWidgets.QMessageBox.Cancel) if reply == QtWidgets.QMessageBox.Cancel: return self.cancelImporter.emit() directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Select a directory containing the TextGrids', os.path.expanduser('~')) if directory == '': return name = os.path.basename(directory) try: if name in get_corpora_list(CorpusConfig('',graph_host = 'localhost', graph_port=7474)): reply = QtWidgets.QMessageBox.warning(self, "Overwrite corpus?", 'The {} corpus appears to be imported already. Would you like to overwrite it?'.format(name), buttons = QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel) if reply == QtWidgets.QMessageBox.Cancel: return except ConnectionError: reply = QtWidgets.QMessageBox.critical(self, "Could not connect to local server", 'Please make sure there is a local Neo4j server running.') return self.corpusToImport.emit(name, directory)
def test_order_by(timed_config): with CorpusContext(timed_config) as g: q = g.query_graph(g.word).filter(g.word.label == 'are').order_by(g.word.begin.column_name('begin'))#.times('begin','end') prev = 0 print(q.cypher()) print(q.all()) for x in q.all(): assert(x['begin'] > prev) prev = x['begin'] assert('timed' in get_corpora_list(timed_config))
def test_order_by(timed_config): with CorpusContext(timed_config) as g: q = g.query_graph(g.word).filter(g.word.label == 'are').order_by( g.word.begin.column_name('begin')) #.times('begin','end') prev = 0 print(q.cypher()) print(q.all()) for x in q.all(): assert (x['begin'] > prev) prev = x['begin'] assert ('timed' in get_corpora_list(timed_config))
def test_order_by(timed_config): with CorpusContext(timed_config) as g: print(g.hierarchy.type_properties) print(g.hierarchy.token_properties) q = g.query_graph(g.word).filter(g.word.label == 'are').order_by( g.word.begin.column_name('begin')) prev = 0 print(q.cypher()) print(q.all()) for x in q.all(): print(x['begin']) assert (x['begin'] > prev) prev = x['begin'] assert ('timed' in get_corpora_list(timed_config))
def test_query_duration(acoustic_config): with CorpusContext(acoustic_config) as g: q = g.query_graph(g.phone).filter(g.phone.label == 'aa') q = q.order_by(g.phone.begin.column_name('begin')).times().duration() print(q.cypher()) results = q.all() assert (len(results) == 3) assert (abs(results[0]['begin'] - 2.704) < 0.001) assert (abs(results[0]['duration'] - 0.078) < 0.001) assert (abs(results[1]['begin'] - 9.320) < 0.001) assert (abs(results[1]['duration'] - 0.122) < 0.001) assert (abs(results[2]['begin'] - 24.560) < 0.001) assert (abs(results[2]['duration'] - 0.039) < 0.001) assert ('acoustic' in get_corpora_list(acoustic_config))
def test_query_duration(acoustic_config): with CorpusContext(acoustic_config) as g: q = g.query_graph(g.phone).filter(g.phone.label == 'aa') q = q.order_by(g.phone.begin.column_name('begin')).times().duration() print(q.cypher()) results = q.all() assert(len(results) == 3) assert(abs(results[0]['begin'] - 2.704) < 0.001) assert(abs(results[0]['duration'] - 0.078) < 0.001) assert(abs(results[1]['begin'] - 9.320) < 0.001) assert(abs(results[1]['duration'] - 0.122) < 0.001) assert(abs(results[2]['begin'] - 24.560) < 0.001) assert(abs(results[2]['duration'] - 0.039) < 0.001) assert('acoustic' in get_corpora_list(acoustic_config))
def connectToServer(self, ignore=False): host = self.hostEdit.text() if host == '': if not ignore: reply = QtWidgets.QMessageBox.critical( self, "Invalid information", "IP address must be specified or named 'localhost'.") return port = self.portEdit.text() try: port = int(port) except ValueError: if not ignore: reply = QtWidgets.QMessageBox.critical( self, "Invalid information", "Port must be an integer.") return user = self.userEdit.text() if not user: user = None password = self.passwordEdit.text() if not password: password = None current_corpus = self.corporaList.text() if current_corpus is None: current_corpus = '' config = CorpusConfig(current_corpus, graph_host=host, graph_port=port, graph_user=user, graph_password=password) self.corporaList.clear() try: corpora = get_corpora_list(config) self.corporaList.add(corpora) if config.corpus_name and config.corpus_name in corpora: with CorpusContext(config) as c: c.hierarchy = c.generate_hierarchy() c.save_variables() self.corporaList.select(current_corpus) except (ConnectionError, AuthorizationError, NetworkAddressError) as e: self.configChanged.emit(None) if not ignore: reply = QtWidgets.QMessageBox.critical( self, "Could not connect to server", str(e)) return
def connectToServer(self, ignore = False): host = self.hostEdit.text() if host == '': if not ignore: reply = QtWidgets.QMessageBox.critical(self, "Invalid information", "IP address must be specified or named 'localhost'.") return port = self.portEdit.text() try: port = int(port) except ValueError: if not ignore: reply = QtWidgets.QMessageBox.critical(self, "Invalid information", "Port must be an integer.") return user = self.userEdit.text() if not user: user = None password = self.passwordEdit.text() if not password: password = None current_corpus = self.corporaList.text() if current_corpus is None: current_corpus = '' config = CorpusConfig(current_corpus, graph_host = host, graph_port = port, graph_user = user, graph_password = password) self.corporaList.clear() try: corpora = get_corpora_list(config) self.corporaList.add(corpora) if config.corpus_name and config.corpus_name in corpora: with CorpusContext(config) as c: c.hierarchy = c.generate_hierarchy() c.save_variables() self.corporaList.select(current_corpus) except (ConnectionError, AuthorizationError, NetworkAddressError) as e: self.configChanged.emit(None) if not ignore: reply = QtWidgets.QMessageBox.critical(self, "Could not connect to server", str(e)) return
def test_query_coda_phone(syllable_morpheme_config): with CorpusContext(syllable_morpheme_config) as g: q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter_right_aligned(g.syllable) print(q.cypher()) assert (len(list(q.all())) == 2) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter(g.phone.end == g.syllable.end) print(q.cypher()) assert (len(list(q.all())) == 2) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter_not_right_aligned(g.syllable) print(q.cypher()) assert (len(list(q.all())) == 0) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter(g.phone.end != g.syllable.end) print(q.cypher()) assert (len(list(q.all())) == 0) assert ('syllable_morpheme' in get_corpora_list(syllable_morpheme_config))
def test_query_coda_phone(syllable_morpheme_config): with CorpusContext(syllable_morpheme_config) as g: q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter_right_aligned(g.syllable) print(q.cypher()) assert(len(list(q.all())) == 2) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter(g.phone.end == g.syllable.end) print(q.cypher()) assert(len(list(q.all())) == 2) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter_not_right_aligned(g.syllable) print(q.cypher()) assert(len(list(q.all())) == 0) q = g.query_graph(g.phone).filter(g.phone.label == 'k') q = q.filter(g.phone.end != g.syllable.end) print(q.cypher()) assert(len(list(q.all())) == 0) assert('syllable_morpheme' in get_corpora_list(syllable_morpheme_config))
def test_basic_query(timed_config): with CorpusContext(timed_config) as g: q = g.query_graph(g.word).filter(g.word.label == 'are') print(q.cypher()) assert(all(x['label'] == 'are' for x in q.all())) assert('timed' in get_corpora_list(timed_config))