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']))
예제 #3
0
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']))
예제 #4
0
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'))
예제 #5
0
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