@ValidateLarchPlugin
def gsescan_group(fname, _larch=None, bad=None, **kws):
    escan = EscanData(fname, bad=bad)
    if escan.status is not None:
        raise ValueError('Not a valid Escan Data file')

    group = _larch.symtable.create_group()
    group.__name__ ='GSE Escan Data file %s' % fname
    for key, val in escan.__dict__.items():
        if not key.startswith('_'):
            setattr(group, key, val)

    group.array_labels = group.pos_desc + group.sums_names
    group.get_data = escan.get_data
    return group
Stack holds the index of unpaired brackets
dataset/ETHPy150Open xraypy/xraylarch/plugins/io/gse_escan.py/gsescan_group--crossover with--dataset/ETHPy150Open algorhythms/LeetCode/031 Longest Valid Parentheses.py/Solution.longestValidParentheses