fits.py 1.93 KB
Newer Older
Wei Shoulin's avatar
Wei Shoulin committed
1
2
3
4

from ..common.delegate import Delegate

class FitsApi(object):
Wei Shoulin's avatar
Wei Shoulin committed
5
6
7
    """
    Raw Fits Operation Class of IFS
    """
Wei Shoulin's avatar
Wei Shoulin committed
8
9
10
11
    def __init__(self, sub_system="ifs"):
        self.sub_system = sub_system
        self.module = Delegate().load(sub_module = "ifs")
        self.stub = getattr(self.module, "FitsApi")()
Wei Shoulin's avatar
Wei Shoulin committed
12
13
        self.file_prefix = self.stub.root_dir
        
Wei Shoulin's avatar
Wei Shoulin committed
14
15
16
    def find(self, **kwargs):
        '''
        parameter kwargs:
Wei Shoulin's avatar
Wei Shoulin committed
17
18
19
20
21
22
            obs_time = [int],
            file_name = [str],
            exp_time = (start, end),
            ccd_num = [int],
            qc0_status = [int],
            prc_status = [int]
Wei Shoulin's avatar
Wei Shoulin committed
23

Wei Shoulin's avatar
Wei Shoulin committed
24
        return list of raw records
Wei Shoulin's avatar
Wei Shoulin committed
25
26
27
        '''
        return self.stub.find(**kwargs)

Wei Shoulin's avatar
Wei Shoulin committed
28
29
30
31
32
33
34
    def get(self, **kwargs):
        '''  query database, return a record as dict

        parameter kwargs:
            fits_id = [int] 

        return dict or None
Wei Shoulin's avatar
Wei Shoulin committed
35
        '''
Wei Shoulin's avatar
Wei Shoulin committed
36
37
38
39
40
        return self.stub.get(**kwargs)

    def read(self, **kwargs):
        ''' yield bytes of fits file

Wei Shoulin's avatar
Wei Shoulin committed
41
        parameter kwargs:
Wei Shoulin's avatar
Wei Shoulin committed
42
43
44
45
            fits_id = [int],
            file_path = [str], 
            chunk_size = [int] default 20480

Wei Shoulin's avatar
Wei Shoulin committed
46
47
        yield bytes of fits file
        '''
Wei Shoulin's avatar
Wei Shoulin committed
48
49
50
51
        return self.stub.read(**kwargs)

    def update_proc_status(self, **kwargs):
        ''' update the status of reduction
Wei Shoulin's avatar
Wei Shoulin committed
52

Wei Shoulin's avatar
Wei Shoulin committed
53
54
55
56
57
        parameter kwargs:
            fits_id = [int],
            status = [int]
        '''
        return self.stub.update_proc_status(**kwargs)
Wei Shoulin's avatar
Wei Shoulin committed
58

Wei Shoulin's avatar
Wei Shoulin committed
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
    def update_qc0_status(self, **kwargs):
        ''' update the status of reduction
        
        parameter kwargs:
            fits_id = [int],
            status = [int]
        '''        
        return self.stub.update_qc0_status(**kwargs)    

    def write(self, **kwargs):
        ''' copy a local file to file storage, then reduce the header of fits file and insert a record into database
 
        parameter kwargs:
            file_path = [str]
        '''        
        yield self.stub.write(**kwargs)
Wei Shoulin's avatar
Wei Shoulin committed
75