README.md 7.23 KB
Newer Older
BO ZHANG's avatar
BO ZHANG committed
1
## csst_proto 
BO ZHANG's avatar
BO ZHANG committed
2
[![Documentation Status](https://readthedocs.org/projects/csst-proto/badge/?version=latest)](https://csst-proto.readthedocs.io/en/latest/?badge=latest)
BO ZHANG's avatar
BO ZHANG committed
3
 
BO ZHANG's avatar
BO ZHANG committed
4
CSST L1 pipeline prototype.
BO ZHANG's avatar
BO ZHANG committed
5

BO ZHANG's avatar
BO ZHANG committed
6
## homepage
BO ZHANG's avatar
BO ZHANG committed
7

BO ZHANG's avatar
BO ZHANG committed
8
This code is available at *CSST GitLab*:
BO ZHANG's avatar
BO ZHANG committed
9
- [https://csst-tb.bao.ac.cn/code/csst-l1/csst_proto](https://csst-tb.bao.ac.cn/code/csst-l1/csst_proto).
BO ZHANG's avatar
BO ZHANG committed
10

BO ZHANG's avatar
BO ZHANG committed
11
## documentation
BO ZHANG's avatar
BO ZHANG committed
12

BO ZHANG's avatar
BO ZHANG committed
13
14
A sphinx-based documentation is available at
- [https://csst-proto.readthedocs.io/en/latest/](https://csst-proto.readthedocs.io/en/latest/)
BO ZHANG's avatar
BO ZHANG committed
15

BO ZHANG's avatar
BO ZHANG committed
16
17
18
19
20
21
## dependency

- numpy~=1.20.3
- joblib~=1.1.0
- astropy~=5.1

BO ZHANG's avatar
BO ZHANG committed
22
## installation
BO ZHANG's avatar
BO ZHANG committed
23

BO ZHANG's avatar
BO ZHANG committed
24
25
26
27
`csst_proto` can be installed with the following shell command

```bash
git clone https://csst-tb.bao.ac.cn/code/csst-l1/csst_proto.git
BO ZHANG's avatar
BO ZHANG committed
28
cd csst_proto
BO ZHANG's avatar
BO ZHANG committed
29
30
31
32
33
34
35
36
pip install -r requirements.txt
python setup.py install
```

or a single-line command

```bash
sh -c "$(curl -fsSL https://csst-tb.bao.ac.cn/code/csst-l1/csst_proto/-/raw/main/install.sh)"
BO ZHANG's avatar
BO ZHANG committed
37
38
```

BO ZHANG's avatar
BO ZHANG committed
39
40
41
42
43
## instruction

A simple example on how to use this package:

```python
BO ZHANG's avatar
BO ZHANG committed
44
from csst_proto.top_level_interface import flip_image
BO ZHANG's avatar
BO ZHANG committed
45
46
47
from astropy.io import fits

# read an L0 image
BO ZHANG's avatar
BO ZHANG committed
48
img = fits.getdata("CSST_MS_SCI_06_L0_img.fits")
BO ZHANG's avatar
BO ZHANG committed
49
50
51
52
# flip the image
img_flipped = flip_image(img=img)
```

BO ZHANG's avatar
BO ZHANG committed
53
## algorithm description
BO ZHANG's avatar
BO ZHANG committed
54
55

The `csst_proto` uses an awesome algorithm based on `numpy.ndarray` indices to flip images.
BO ZHANG's avatar
BO ZHANG committed
56

BO ZHANG's avatar
BO ZHANG committed
57
---
BO ZHANG's avatar
BO ZHANG committed
58
59
60

## timeline

BO ZHANG's avatar
BO ZHANG committed
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| file / directory   | description                     | urgent | C6  | C7  |
|--------------------|---------------------------------|--------|-----|-----|
| `csst_proto/`      | source code & data              | √√     | √   |     |
| `doc/`             | sphinx-based documentation      |        |     | √   |
| `example/`         | code examples                   | -      | -   | -   |
| `tests/`           | unit tests                      |        |     | √   |
| `.gitignore`       | git file                        |        | √   |     |
| `.gitlab-ci.yml`   | gitlab CI/CD pipeline           |        |     | √   |
| `LICENSE`          | code license                    |        | √   |     |
| `README.md`        | readme file                     | √√     | √   |     |
| `install.sh`       | single-line installation script |        | √   |     |
| `install_local.sh` | local installation script       |        | √   |     |
| `readthedocs.yml`  | readthedocs.io configuration    |        |     | √   |
| `requirements.txt` | code requirements               | √      | √   |     |
| `setup.py`         | sphinx-based documentation      | √√     | √   |     |
BO ZHANG's avatar
BO ZHANG committed
76

BO ZHANG's avatar
BO ZHANG committed
77
## important stages
BO ZHANG's avatar
BO ZHANG committed
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
- stage 1:
  - finished main code
  - good code style
  - `top_level_interface` available
- stage 2:
  - finished `setup.py`
  - can be installed with `pip install <package_name/package_link>` from gitlab
- stage 3:
  - finished instruction
  - `README.md`
- stage 4:
  - finished unittest
  - local unit test passed with `pytest`
- stage 5:
  - gitlab CI/CD pipeline available
  - auto unit tests passed with `.gitlab-ci.yml`
- stage 6:
  - *sphinx-based documentation available
  - `doc/`
  - `readthedocs.yml`

## progress

| module name              | stage 1<br>(source code) | stage 2<br>(installation) | stage 3<br>(instruction) | stage 4<br>(unit tests) | stage 5<br>(gitlab pipeline) | stage 6<br>(sphinx doc) |
|--------------------------|--------------------------|---------------------------|--------------------------|-------------------------|------------------------------|-------------------------|
| `csst_proto`             | √                        | √                         | √                        | √                       | √                            | √                       |
| `csst_ms_mbi_instrument` |                          |                           |                          |                         |                              |                         |
| `csst_ms_mbi_distortion` | √                        | √                         | √                        |                         |                              |                         |
| `csst_ms_mbi_position`   |                          |                           |                          |                         |                              |                         |
| `csst_ms_mbi_flux`       |                          |                           |                          |                         |                              |                         |
| `csst_ms_mbi_photometry` |                          |                           |                          |                         |                              |                         |
| ``                       |                          |                           |                          |                         |                              |                         |
| ``                       |                          |                           |                          |                         |                              |                         |
| ``                       |                          |                           |                          |                         |                              |                         |


BO ZHANG's avatar
BO ZHANG committed
114

BO ZHANG's avatar
BO ZHANG committed
115
## useful links
BO ZHANG's avatar
BO ZHANG committed
116
117
118
119
120
121
122
- python packaging user guide: https://packaging.python.org/en/latest/
- packaging binary extensions (C/C++): https://packaging.python.org/en/latest/guides/packaging-binary-extensions
- `setuptools`: https://packaging.python.org/en/latest/tutorials/installing-packages/
- recommended IDEs
  - PyCharm: https://www.jetbrains.com/pycharm/
  - VS Code: https://code.visualstudio.com/
- `git`: https://git-scm.com/
BO ZHANG's avatar
BO ZHANG committed
123
124
125
126
  - Pro Git: https://git-scm.com/book/en/v2
- Numpydoc: https://numpydoc.readthedocs.io/en/latest/format.html
  - for C: https://peps.python.org/pep-0007/
  - for Python: https://peps.python.org/pep-0008/
BO ZHANG's avatar
BO ZHANG committed
127
    - example.py: https://numpydoc.readthedocs.io/en/latest/example.html#example
BO ZHANG's avatar
BO ZHANG committed
128
129
130
131
132
- `unittest`: https://docs.python.org/3.8/library/unittest.html
- gitlab CI/CD pipeline: https://docs.gitlab.com/ee/ci/pipelines/
- gitlab runners: https://docs.gitlab.com/runner/
- `sphinx`: https://www.sphinx-doc.org/en/master/index.html
- markdown: https://www.markdownguide.org/
BO ZHANG's avatar
BO ZHANG committed
133
- restructured text: https://docutils.sourceforge.io/rst.html
BO ZHANG's avatar
BO ZHANG committed
134
- readthedocs: https://readthedocs.io/ or https://rtfd.io/
BO ZHANG's avatar
BO ZHANG committed
135

BO ZHANG's avatar
BO ZHANG committed
136
## `data manager` for MS MBI
BO ZHANG's avatar
BO ZHANG committed
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

```python
import os
from csst.ms.data_manager import CsstMscDataManager
from csst.ms.backbone import CCD_ID_LIST

# initialize data manager
dm = CsstMscDataManager(
    ver_sim="C5.1", dir_l0="/data/sim_data/MSC_0000100", dir_l1="/home/user/L1Pipeline/msc/work")
# process all CCDs
dm.set_ccd_ids(CCD_ID_LIST)

print("----- available ccd_ids -----")
print(dm.available_ccd_ids)
for ccd_id in dm.target_ccd_ids:
    print("----- L0 images -----")
    print(dm.l0_ccd(ccd_id=ccd_id))
    print(os.path.exists(dm.l0_ccd(ccd_id=ccd_id)))
    print("----- L0 crs -----")
    print(dm.l0_crs(ccd_id=ccd_id))
    print(os.path.exists(dm.l0_ccd(ccd_id=ccd_id)))
    print("----- L0 input cat -----")
    print(dm.l0_cat(ccd_id=ccd_id))
    print(os.path.exists(dm.l0_cat(ccd_id=ccd_id)))
    print("----- L0 input log -----")
    print(dm.l0_log(ccd_id=ccd_id))
    print(os.path.exists(dm.l0_log(ccd_id=ccd_id)))
    print("----- L1 images -----")
    print(dm.l1_ccd(ccd_id, post="img.fits"))
```