From be51044059a9cc7ce89379e59cad799d6e314990 Mon Sep 17 00:00:00 2001 From: Patrick Jentsch Date: Thu, 22 Jun 2023 12:45:23 +0200 Subject: [PATCH] Fix cqi_over_socketio not handling cqi status correctly --- app/corpora/cqi_over_socketio/cqi.py | 12 +- .../cqi_over_socketio/cqi_corpora_corpus.py | 349 +++++++++--------- .../cqi_corpora_corpus_subcorpora.py | 4 +- 3 files changed, 187 insertions(+), 178 deletions(-) diff --git a/app/corpora/cqi_over_socketio/cqi.py b/app/corpora/cqi_over_socketio/cqi.py index 9d0fbfd6..402b6283 100644 --- a/app/corpora/cqi_over_socketio/cqi.py +++ b/app/corpora/cqi_over_socketio/cqi.py @@ -18,8 +18,8 @@ def cqi_connect(cqi_client: cqi.CQiClient): 'msg': 'Internal Server Error', 'payload': {'code': e.args[0], 'desc': e.args[1]} } - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload} @@ -28,8 +28,8 @@ def cqi_connect(cqi_client: cqi.CQiClient): @cqi_over_socketio def cqi_disconnect(cqi_client: cqi.CQiClient): cqi_status = cqi_client.disconnect() - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload} @@ -38,6 +38,6 @@ def cqi_disconnect(cqi_client: cqi.CQiClient): @cqi_over_socketio def cqi_ping(cqi_client: cqi.CQiClient): cqi_status = cqi_client.ping() - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload} diff --git a/app/corpora/cqi_over_socketio/cqi_corpora_corpus.py b/app/corpora/cqi_over_socketio/cqi_corpora_corpus.py index 3e49ac09..b9dbe425 100644 --- a/app/corpora/cqi_over_socketio/cqi_corpora_corpus.py +++ b/app/corpora/cqi_over_socketio/cqi_corpora_corpus.py @@ -16,8 +16,8 @@ from .utils import cqi_over_socketio, lookups_by_cpos def cqi_corpora_corpus_drop(cqi_client: cqi.CQiClient, corpus_name: str): cqi_corpus = cqi_client.corpora.get(corpus_name) cqi_status = cqi_corpus.drop() - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload} @@ -27,8 +27,8 @@ def cqi_corpora_corpus_drop(cqi_client: cqi.CQiClient, corpus_name: str): def cqi_corpora_corpus_query(cqi_client: cqi.CQiClient, corpus_name: str, subcorpus_name: str, query: str): # noqa cqi_corpus = cqi_client.corpora.get(corpus_name) cqi_status = cqi_corpus.query(subcorpus_name, query) - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload} @@ -50,177 +50,186 @@ def cqi_corpora_corpus_update_db(cqi_client: cqi.CQiClient, corpus_name: str): @cqi_over_socketio def cqi_corpora_corpus_get_visualization_data(cqi_client: cqi.CQiClient, corpus_name: str): corpus = cqi_client.corpora.get(corpus_name) - # s_attrs = [x for x in corpus.structural_attributes.list() if not x.has_values] - # p_attrs = corpus.positional_attributes.list() - # payload = { - # 's_attrs': {}, - # 'p_attrs': {}, - # 'values': { - # 's_attrs': {}, - # 'p_attrs': {} - # } - # } - # for s_attr in s_attrs: - # s_attr_lbound, s_attr_rbound = s_attr.cpos_by_id(text_id) - # s_attr_cpos_range = range(s_attr_lbound, s_attr_rbound + 1) - # payload['text']['lexicon'][text_id] = { - # 's_attrs': [s_attr_lbound, s_attr_rbound], - # 'counts': { - # 'token': s_attr_rbound - s_attr_lbound + 1 - # }, - # 'freqs': { - # p_attr.name: dict(Counter(p_attr.ids_by_cpos(list(s_attr_cpos_range)))) - # for p_attr in p_attrs - # } - # } - # for p_attr in p_attrs: - # payload['p_attrs'] = dict( - - # ) - # payload['values']['p_attrs'] = dict( - # zip( - # range(0, p_attr.lexicon_size), - # p_attr.values_by_ids(list(range(0, p_attr.lexicon_size))) - # ) - # ) - text = corpus.structural_attributes.get('text') - text_value_names = [] - text_values = [] - for text_sub_attr in corpus.structural_attributes.list(filters={'part_of': text}): - text_value_names.append(text_sub_attr.name[(len(text.name) + 1):]) - text_values.append(text_sub_attr.values_by_ids(list(range(0, text.size)))) - s = corpus.structural_attributes.get('s') - ent = corpus.structural_attributes.get('ent') - ent_value_names = [] - ent_values = [] - for ent_sub_attr in corpus.structural_attributes.list(filters={'part_of': ent}): - ent_value_names.append(ent_sub_attr.name[(len(ent.name) + 1):]) - ent_values.append(ent_sub_attr.values_by_ids(list(range(0, ent.size)))) - word = corpus.positional_attributes.get('word') - lemma = corpus.positional_attributes.get('lemma') - pos = corpus.positional_attributes.get('pos') - simple_pos = corpus.positional_attributes.get('simple_pos') - payload = {} - payload['corpus'] = {'lexicon': {}, 'values': []} - payload['corpus']['lexicon'][0] = { - 'bounds': [0, corpus.size - 1], - 'counts': { - 'text': text.size, - 's': s.size, - 'ent': ent.size, - 'token': corpus.size + payload = { + 'corpus': { + 'bounds': [0, corpus.size - 1], + 'counts': {}, + 'freqs': {} }, - 'freqs': { - 'word': dict( - zip( - range(0, word.lexicon_size), - word.freqs_by_ids(list(range(0, word.lexicon_size))) - ) - ), - 'lemma': dict( - zip( - range(0, lemma.lexicon_size), - lemma.freqs_by_ids(list(range(0, lemma.lexicon_size))) - ) - ), - 'pos': dict( - zip( - range(0, pos.lexicon_size), - pos.freqs_by_ids(list(range(0, pos.lexicon_size))) - ) - ), - 'simple_pos': dict( - zip( - range(0, simple_pos.lexicon_size), - simple_pos.freqs_by_ids(list(range(0, simple_pos.lexicon_size))) - ) - ) - } + 'p_attrs': {}, + 's_attrs': {}, + 'values': {'p_attrs': {}, 's_attrs': {}} } - payload['text'] = {'lexicon': {}, 'values': None} - for text_id in range(0, text.size): - text_lbound, text_rbound = text.cpos_by_id(text_id) - text_cpos_range = range(text_lbound, text_rbound + 1) - text_s_ids = s.ids_by_cpos(list(text_cpos_range)) - text_ent_ids = ent.ids_by_cpos(list(text_cpos_range)) - payload['text']['lexicon'][text_id] = { - 'bounds': [text_lbound, text_rbound], - 'counts': { - 's': len([x for x in text_s_ids if x != -1]), - 'ent': len([x for x in text_ent_ids if x != -1]), - 'token': text_rbound - text_lbound + 1 - }, - 'freqs': { - 'word': dict( - Counter(word.ids_by_cpos(list(text_cpos_range))) - ), - 'lemma': dict( - Counter(lemma.ids_by_cpos(list(text_cpos_range))) - ), - 'pos': dict( - Counter(pos.ids_by_cpos(list(text_cpos_range))) - ), - 'simple_pos': dict( - Counter(simple_pos.ids_by_cpos(list(text_cpos_range))) - ) - } - } - payload['text']['values'] = text_value_names - payload['s'] = {'lexicon': {}, 'values': None} - for s_id in range(0, s.size): - payload['s']['lexicon'][s_id] = { - # 'bounds': s.cpos_by_id(s_id) - } - payload['s']['values'] = [ - sub_attr.name[(len(s.name) + 1):] - for sub_attr in corpus.structural_attributes.list(filters={'part_of': s}) - ] - payload['ent'] = {'lexicon': {}, 'values': None} - for ent_id in range(0, ent.size): - payload['ent']['lexicon'][ent_id] = { - # 'bounds': ent.cpos_by_id(ent_id) - } - payload['ent']['values'] = ent_value_names - payload['lookups'] = { - 'corpus': {}, - 'text': { - text_id: { - text_value_name: text_values[text_value_name_idx][text_id_idx] - for text_value_name_idx, text_value_name in enumerate(text_value_names) - } for text_id_idx, text_id in enumerate(range(0, text.size)) - }, - 's': {}, - 'ent': { - ent_id: { - ent_value_name: ent_values[ent_value_name_idx][ent_id_idx] - for ent_value_name_idx, ent_value_name in enumerate(ent_value_names) - } for ent_id_idx, ent_id in enumerate(range(0, ent.size)) - }, - 'word': dict( + for p_attr in corpus.positional_attributes.list(): + payload['corpus']['freqs'][p_attr.name] = dict( zip( - range(0, word.lexicon_size), - word.values_by_ids(list(range(0, word.lexicon_size))) - ) - ), - 'lemma': dict( - zip( - range(0, lemma.lexicon_size), - lemma.values_by_ids(list(range(0, lemma.lexicon_size))) - ) - ), - 'pos': dict( - zip( - range(0, pos.lexicon_size), - pos.values_by_ids(list(range(0, pos.lexicon_size))) - ) - ), - 'simple_pos': dict( - zip( - range(0, simple_pos.lexicon_size), - simple_pos.values_by_ids(list(range(0, simple_pos.lexicon_size))) + range(0, p_attr.lexicon_size), + p_attr.freqs_by_ids(list(range(0, p_attr.lexicon_size))) ) ) - } + payload['p_attrs'][p_attr.name] = dict( + zip( + range(0, corpus.size), + p_attr.ids_by_cpos(list(range(0, corpus.size))) + ) + ) + payload['values']['p_attrs'][p_attr.name] = dict( + zip( + range(0, p_attr.lexicon_size), + p_attr.values_by_ids(list(range(0, p_attr.lexicon_size))) + ) + ) + s = corpus.structural_attributes.get('s') + ent = corpus.structural_attributes.get('ent') + for s_attr in corpus.structural_attributes.list(): + if s_attr.has_values: + continue + payload['corpus']['counts'][s_attr.name] = s_attr.size + payload['s_attrs'][s_attr.name] = {'lexicon': {}, 'values': []} + for id in range(0, s_attr.size): + payload['s_attrs'][s_attr.name]['lexicon'][id] = {} + if s_attr.name != 'text': + continue + lbound, rbound = s_attr.cpos_by_id(id) + payload['s_attrs'][s_attr.name]['lexicon'][id]['bounds'] = [lbound, rbound] + cpos_range = range(lbound, rbound + 1) + payload['s_attrs'][s_attr.name]['lexicon'][id]['counts'] = {} + payload['s_attrs'][s_attr.name]['lexicon'][id]['counts']['s'] = len({x for x in s.ids_by_cpos(list(cpos_range)) if x != -1}) + payload['s_attrs'][s_attr.name]['lexicon'][id]['counts']['ent'] = len({x for x in ent.ids_by_cpos(list(cpos_range)) if x != -1}) + payload['s_attrs'][s_attr.name]['lexicon'][id]['counts']['token'] = rbound - lbound + 1 + payload['s_attrs'][s_attr.name]['lexicon'][id]['freqs'] = {} + for p_attr in corpus.positional_attributes.list(): + payload['s_attrs'][s_attr.name]['lexicon'][id]['freqs'][p_attr.name] = dict(Counter(p_attr.ids_by_cpos(list(cpos_range)))) + # for s_attr in s_attrs: + # payload['s_attrs'][s_attr.name] = {'lexicon': {}, 'values': []} + # payload['values']['s_attrs'][s_attr.name] = {} + # for id in range(0, s_attr.size): + # payload['s_attrs'][s_attr.name]['lexicon'][id] = {} + # if s_attr.name != 'text': + # continue + # lbound, rbound = s_attr.cpos_by_id(id) + # cpos_range = range(lbound, rbound + 1) + # # s_ids + # payload['s_attrs'][s_attr.name]['lexicon'][id]['bounds'] = [lbound, rbound] + # payload['s_attrs'][s_attr.name]['lexicon'][id]['counts'] = {} + # payload['s_attrs'][s_attr.name]['lexicon'][id]['counts']['token'] = rbound - lbound + 1 + # payload['s_attrs'][s_attr.name]['lexicon'][id]['freqs'] = { + # p_attr.name: dict(Counter(p_attr.ids_by_cpos(list(cpos_range)))) + # for p_attr in p_attrs + # } + # for sub_attr in corpus.structural_attributes.list(filters={'part_of': s_attr}): + # payload['s_attrs'][s_attr.name]['values'].append(sub_attr.name[(len(s_attr.name) + 1):]) + # payload['values']['s_attrs'][s_attr.name][sub_attr.name[(len(s_attr.name) + 1):]] = dict( + # zip( + # range(0, sub_attr.size), + # sub_attr.values_by_ids(list(range(0, sub_attr.size))) + # ) + # ) + # text = corpus.structural_attributes.get('text') + + # text = corpus.structural_attributes.get('text') + # text_value_names = [] + # text_values = [] + # for text_sub_attr in corpus.structural_attributes.list(filters={'part_of': text}): + # text_value_names.append(text_sub_attr.name[(len(text.name) + 1):]) + # text_values.append(text_sub_attr.values_by_ids(list(range(0, text.size)))) + # s = corpus.structural_attributes.get('s') + # ent = corpus.structural_attributes.get('ent') + # ent_value_names = [] + # ent_values = [] + # for ent_sub_attr in corpus.structural_attributes.list(filters={'part_of': ent}): + # ent_value_names.append(ent_sub_attr.name[(len(ent.name) + 1):]) + # ent_values.append(ent_sub_attr.values_by_ids(list(range(0, ent.size)))) + # word = corpus.positional_attributes.get('word') + # lemma = corpus.positional_attributes.get('lemma') + # pos = corpus.positional_attributes.get('pos') + # simple_pos = corpus.positional_attributes.get('simple_pos') + # payload = {} + + # payload['text'] = {'lexicon': {}, 'values': None} + # for text_id in range(0, text.size): + # text_lbound, text_rbound = text.cpos_by_id(text_id) + # text_cpos_range = range(text_lbound, text_rbound + 1) + # text_s_ids = s.ids_by_cpos(list(text_cpos_range)) + # text_ent_ids = ent.ids_by_cpos(list(text_cpos_range)) + # payload['text']['lexicon'][text_id] = { + # 'bounds': [text_lbound, text_rbound], + # 'counts': { + # 's': len([x for x in text_s_ids if x != -1]), + # 'ent': len([x for x in text_ent_ids if x != -1]), + # 'token': text_rbound - text_lbound + 1 + # }, + # 'freqs': { + # 'word': dict( + # Counter(word.ids_by_cpos(list(text_cpos_range))) + # ), + # 'lemma': dict( + # Counter(lemma.ids_by_cpos(list(text_cpos_range))) + # ), + # 'pos': dict( + # Counter(pos.ids_by_cpos(list(text_cpos_range))) + # ), + # 'simple_pos': dict( + # Counter(simple_pos.ids_by_cpos(list(text_cpos_range))) + # ) + # } + # } + # payload['text']['values'] = text_value_names + # payload['s'] = {'lexicon': {}, 'values': None} + # for s_id in range(0, s.size): + # payload['s']['lexicon'][s_id] = { + # # 'bounds': s.cpos_by_id(s_id) + # } + # payload['s']['values'] = [ + # sub_attr.name[(len(s.name) + 1):] + # for sub_attr in corpus.structural_attributes.list(filters={'part_of': s}) + # ] + # payload['ent'] = {'lexicon': {}, 'values': None} + # for ent_id in range(0, ent.size): + # payload['ent']['lexicon'][ent_id] = { + # # 'bounds': ent.cpos_by_id(ent_id) + # } + # payload['ent']['values'] = ent_value_names + # payload['lookups'] = { + # 'corpus': {}, + # 'text': { + # text_id: { + # text_value_name: text_values[text_value_name_idx][text_id_idx] + # for text_value_name_idx, text_value_name in enumerate(text_value_names) + # } for text_id_idx, text_id in enumerate(range(0, text.size)) + # }, + # 's': {}, + # 'ent': { + # ent_id: { + # ent_value_name: ent_values[ent_value_name_idx][ent_id_idx] + # for ent_value_name_idx, ent_value_name in enumerate(ent_value_names) + # } for ent_id_idx, ent_id in enumerate(range(0, ent.size)) + # }, + # 'word': dict( + # zip( + # range(0, word.lexicon_size), + # word.values_by_ids(list(range(0, word.lexicon_size))) + # ) + # ), + # 'lemma': dict( + # zip( + # range(0, lemma.lexicon_size), + # lemma.values_by_ids(list(range(0, lemma.lexicon_size))) + # ) + # ), + # 'pos': dict( + # zip( + # range(0, pos.lexicon_size), + # pos.values_by_ids(list(range(0, pos.lexicon_size))) + # ) + # ), + # 'simple_pos': dict( + # zip( + # range(0, simple_pos.lexicon_size), + # simple_pos.values_by_ids(list(range(0, simple_pos.lexicon_size))) + # ) + # ) + # } # print(payload) return {'code': 200, 'msg': 'OK', 'payload': payload} diff --git a/app/corpora/cqi_over_socketio/cqi_corpora_corpus_subcorpora.py b/app/corpora/cqi_over_socketio/cqi_corpora_corpus_subcorpora.py index 578968be..38540df7 100644 --- a/app/corpora/cqi_over_socketio/cqi_corpora_corpus_subcorpora.py +++ b/app/corpora/cqi_over_socketio/cqi_corpora_corpus_subcorpora.py @@ -32,8 +32,8 @@ def cqi_corpora_corpus_subcorpora_subcorpus_drop(cqi_client: cqi.CQiClient, corp cqi_corpus = cqi_client.corpora.get(corpus_name) cqi_subcorpus = cqi_corpus.subcorpora.get(subcorpus_name) cqi_status = cqi_subcorpus.drop() - payload = {'code': cqi_status, - 'msg': cqi.api.specification.lookup[cqi_status]} + payload = {'code': cqi_status.code, + 'msg': cqi_status.__class__.__name__} return {'code': 200, 'msg': 'OK', 'payload': payload}