def test_numeric_filter(qtbot): a = Attribute('name','numeric','name') a.update_range(0) a.update_range(100) widget = NumericFilter() qtbot.addWidget(widget) widget.valueEdit.setText('50') assert(widget.value() == (widget.conditionals[0],'50'))
def test_factor_filter(qtbot): a = Attribute('name','factor','name') a.update_range('a') a.update_range('b') widget = FactorFilter(a) qtbot.addWidget(widget) assert(widget.value() == set()) assert(widget.sourceWidget.item(0).text() == 'a') widget.sourceWidget.setCurrentRow(0) widget.addOneButton.clicked.emit() assert(widget.sourceWidget.item(0).text() == 'b') assert(widget.targetWidget.item(0).text() == 'a') assert(widget.value() == set(['a'])) widget.clearAllButton.clicked.emit() assert(widget.sourceWidget.item(1).text() == 'a') assert(widget.targetWidget.count() == 0) assert(widget.sourceWidget.count() == 2) assert(widget.value() == set()) widget.addAllButton.clicked.emit() assert(widget.sourceWidget.count() == 0) assert(widget.targetWidget.count() == 2) assert(widget.targetWidget.item(0).text() == 'b') assert(widget.targetWidget.item(1).text() == 'a') assert(widget.value() == set(['a','b'])) widget.targetWidget.setCurrentRow(0) widget.clearOneButton.clicked.emit() assert(widget.sourceWidget.count() == 1) assert(widget.targetWidget.count() == 1) assert(widget.sourceWidget.item(0).text() == 'b') assert(widget.targetWidget.item(0).text() == 'a') assert(widget.value() == set(['a']))
def test_factor_filter(qtbot): a = Attribute('name', 'factor', 'name') a.update_range('a') a.update_range('b') widget = FactorFilter(a) qtbot.addWidget(widget) assert (widget.value() == set()) assert (widget.sourceWidget.item(0).text() == 'a') widget.sourceWidget.setCurrentRow(0) widget.addOneButton.clicked.emit() assert (widget.sourceWidget.item(0).text() == 'b') assert (widget.targetWidget.item(0).text() == 'a') assert (widget.value() == set(['a'])) widget.clearAllButton.clicked.emit() assert (widget.sourceWidget.item(1).text() == 'a') assert (widget.targetWidget.count() == 0) assert (widget.sourceWidget.count() == 2) assert (widget.value() == set()) widget.addAllButton.clicked.emit() assert (widget.sourceWidget.count() == 0) assert (widget.targetWidget.count() == 2) assert (widget.targetWidget.item(0).text() == 'b') assert (widget.targetWidget.item(1).text() == 'a') assert (widget.value() == set(['a', 'b'])) widget.targetWidget.setCurrentRow(0) widget.clearOneButton.clicked.emit() assert (widget.sourceWidget.count() == 1) assert (widget.targetWidget.count() == 1) assert (widget.sourceWidget.item(0).text() == 'b') assert (widget.targetWidget.item(0).text() == 'a') assert (widget.value() == set(['a']))
def test_numeric_filter(qtbot): a = Attribute('name', 'numeric', 'name') a.update_range(0) a.update_range(100) widget = NumericFilter() qtbot.addWidget(widget) widget.valueEdit.setText('50') assert (widget.value() == (widget.conditionals[0], '50'))
def inspect_csv(path, num_lines = 10, coldelim = None, transdelim = None): """ Generate a list of AnnotationTypes for a specified text file for parsing it as a column-delimited file Parameters ---------- path : str Full path to text file num_lines: int, optional The number of lines to parse from the file coldelim: str, optional A prespecified column delimiter to use, will autodetect if not supplied transdelim : list, optional A prespecfied set of transcription delimiters to look for, will autodetect if not supplied Returns ------- list of AnnotationTypes Autodetected AnnotationTypes for the text file """ if coldelim is not None: common_delimiters = [coldelim] else: common_delimiters = [',','\t',':','|'] if transdelim is not None: trans_delimiters = [transdelim] else: trans_delimiters = ['.',' ', ';', ','] with open(path,'r', encoding='utf-8-sig') as f: lines = [] head = f.readline().strip() for line in f.readlines(): lines.append(line.strip()) best = '' num = 1 for d in common_delimiters: trial = len(head.split(d)) if trial > num: num = trial best = d if best == '': raise(DelimiterError('The column delimiter specified did not create multiple columns.')) head = head.split(best) vals = {h: list() for h in head} for line in lines: l = line.strip().split(best) if len(l) != len(head): raise(PCTError('{}, {}'.format(l,head))) for i in range(len(head)): vals[head[i]].append(l[i]) atts = list() for h in head: if h in ['Transcription', 'transcription']: cat = 'tier' else: cat = Attribute.guess_type(vals[h][:num_lines], trans_delimiters) att = Attribute(Attribute.sanitize_name(h), cat, h) a = AnnotationType(h, None, None, token=False, attribute=att) if cat == 'tier': for t in trans_delimiters: if t in vals[h][0] or t in vals[h][-1]: a.trans_delimiter = t break a.add(vals[h], save = False) atts.append(a) return atts, best