Exemple #1
0
    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)
Exemple #2
0
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)
Exemple #4
0
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))
Exemple #5
0
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))
Exemple #6
0
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))
Exemple #7
0
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))
Exemple #8
0
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))
Exemple #9
0
 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
Exemple #11
0
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))
Exemple #12
0
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))
Exemple #13
0
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))