README.md 4.75 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
16

## installation
BO ZHANG's avatar
BO ZHANG committed
17

BO ZHANG's avatar
BO ZHANG committed
18
19
20
21
`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
22
cd csst_proto
BO ZHANG's avatar
BO ZHANG committed
23
24
25
26
27
28
29
30
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
31
32
```

BO ZHANG's avatar
BO ZHANG committed
33
34
35
36
37
## instruction

A simple example on how to use this package:

```python
BO ZHANG's avatar
BO ZHANG committed
38
from csst_proto.top_level_interface import flip_image
BO ZHANG's avatar
BO ZHANG committed
39
40
41
from astropy.io import fits

# read an L0 image
BO ZHANG's avatar
BO ZHANG committed
42
img = fits.getdata("CSST_MS_SCI_06_L0_img.fits")
BO ZHANG's avatar
BO ZHANG committed
43
44
45
46
# flip the image
img_flipped = flip_image(img=img)
```

BO ZHANG's avatar
BO ZHANG committed
47
## algorithm description
BO ZHANG's avatar
BO ZHANG committed
48
49

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


## timeline

BO ZHANG's avatar
BO ZHANG committed
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| 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
69

BO ZHANG's avatar
BO ZHANG committed
70
## important stages
BO ZHANG's avatar
BO ZHANG committed
71
72
73
74
75
76
1. **code**, **code style** & `top_level_interface`
2. **installation**: `source code` & `setup.py` -> `pip install <package_name>`
3. **a simple instruction**: `README.md`
4. **unittest**: `pytest`
5. *gitlab CI/CD pipeline: `.gitlab-ci.yml`
6. *sphinx-based documentation: `doc/` & `readthedocs.yml`
BO ZHANG's avatar
BO ZHANG committed
77

BO ZHANG's avatar
BO ZHANG committed
78
## useful links
BO ZHANG's avatar
BO ZHANG committed
79
80
81
82
83
84
85
- 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
86
87
88
89
  - 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
90
91
92
93
94
- `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
95
- restructured text: https://docutils.sourceforge.io/rst.html
BO ZHANG's avatar
BO ZHANG committed
96
- readthedocs: https://readthedocs.io/ or https://rtfd.io/
BO ZHANG's avatar
BO ZHANG committed
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

## `data manager`

```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"))
```