source: trunk/python/utils.py @ 1824

Last change on this file since 1824 was 1824, checked in by Malte Marquarding, 14 years ago

Refactoring of init.py. Moved functionality into separate modules. Some minor fixes to make unit test work under 'standard asap'.

File size: 1.8 KB
Line 
1import os
2
3def mask_and(a, b):
4    assert(len(a)==len(b))
5    return [ a[i] & b[i] for i in xrange(len(a)) ]
6
7def mask_or(a, b):
8    assert(len(a)==len(b))
9    return [ a[i] | b[i] for i in xrange(len(a)) ]
10
11def mask_not(a):
12    return [ not i for i in a ]
13
14def _n_bools(n, val):
15    return [ val for i in xrange(n) ]
16
17def _is_sequence_or_number(param, ptype=int):
18    if isinstance(param,tuple) or isinstance(param,list):
19        if len(param) == 0: return True # empty list
20        out = True
21        for p in param:
22            out &= isinstance(p,ptype)
23        return out
24    elif isinstance(param, ptype):
25        return True
26    return False
27
28def _to_list(param, ptype=int):
29    if isinstance(param, ptype):
30        if ptype is str: return param.split()
31        else: return [param]
32    if _is_sequence_or_number(param, ptype):
33        return param
34    return None
35
36def unique(x):
37    """
38    Return the unique values in a list
39    Parameters:
40        x:      the list to reduce
41    Examples:
42        x = [1,2,3,3,4]
43        print unique(x)
44        [1,2,3,4]
45    """
46    return dict([ (val, 1) for val in x]).keys()
47
48def list_files(path=".",suffix="rpf"):
49    """
50    Return a list files readable by asap, such as rpf, sdfits, mbf, asap
51    Parameters:
52        path:     The directory to list (default '.')
53        suffix:   The file extension (default rpf)
54    Example:
55        files = list_files("data/","sdfits")
56        print files
57        ['data/2001-09-01_0332_P363.sdfits',
58        'data/2003-04-04_131152_t0002.sdfits',
59        'data/Sgr_86p262_best_SPC.sdfits']
60    """
61    if not os.path.isdir(path):
62        return None
63    valid = "rpf rpf.1 rpf.2 sdf sdfits mbf asap".split()
64    if not suffix in valid:
65        return None
66    files = [os.path.expanduser(os.path.expandvars(path+"/"+f)) for f in os.listdir(path)]
67    return filter(lambda x: x.endswith(suffix),files)
Note: See TracBrowser for help on using the repository browser.