ds整理的class教程

1. 基础入门

1.1 启动与退出

# 启动 CLASS
$ class

# 启动后显示提示符
CLASS> 

# 退出
CLASS> exit
# 或按 Ctrl+D

  

1.2 基本帮助命令

# 查看所有命令
CLASS> help

# 查看特定命令的帮助
CLASS> help plot

# 查看命令详细说明
CLASS> doc base

# 列出所有变量
CLASS> list/var

  

2. 数据操作

2.1 文件操作

# 读取 GILDAS 格式文件
CLASS> file in observation.30m

# 读取 FITS 文件
CLASS> file fits data.fits

# 查看当前文件信息
CLASS> file

# 创建新文件
CLASS> file out output.30m new

# 写入数据到文件
CLASS> write

# 查看文件内容
CLASS> directory
CLASS> dir  # 简写

  示例 1:读取并查看数据

CLASS> file in ngc7027.co.30m
CLASS> dir

Index  Source    Line      Tsys(K)  IntTime(s)  RA(2000)      Dec(2000)
1      NGC7027   CO(2-1)   450.0    1200        21:07:01.6   +42:14:10
2      NGC7027   CO(2-1)   448.5    1200        21:07:01.6   +42:14:10
3      NGC7027   CO(2-1)   452.3    1200        21:07:01.6   +42:14:10

 

2.2 数据选择

# 选择特定索引的数据
CLASS> get 1
CLASS> get 1-5,10,15-20

# 根据条件选择
CLASS> find /source "NGC7027"
CLASS> get found

# 选择最新观测
CLASS> get /last

# 选择所有数据
CLASS> get /all

# 查看当前选中的数据
CLASS> list

# 统计当前选中的数据
CLASS> statistic

2.3 数据显示

# 基本绘图
CLASS> plot

# 设置绘图参数
CLASS> set device xwin     # 显示在屏幕
CLASS> set device ps       # 输出到 PostScript 文件

# 绘图窗口设置
CLASS> set window -500 500   # 设置速度范围 (km/s)
CLASS> set window auto       # 自动范围

# 叠加绘图
CLASS> plot /over

# 彩色绘图
CLASS> plot /colour

# 多子图
CLASS> plot /multi

示例 2:绘制多组数据对比

 

CLASS> get 1
CLASS> plot
CLASS> get 2
CLASS> plot /over /colour  # 叠加第二组数据,用不同颜色
CLASS> get 3
CLASS> plot /over /colour

 

3. 基线处理

3.1 设置拟合窗口

# 手动设置窗口(速度单位)
CLASS> set window -50 -30 20 40 100 150

# 交互式选择窗口
CLASS> draw window
# 在图上用鼠标点击选择基线窗口

# 显示当前窗口
CLASS> draw window

# 清除窗口
CLASS> set window

  

3.2 基线拟合

bash
# 多项式基线拟合
CLASS> base 0          # 常数基线
CLASS> base 1          # 线性基线
CLASS> base 3          # 3阶多项式

# 带绘图显示的拟合
CLASS> base 3 /plot

# 保存拟合后的数据
CLASS> base 3 /save

# 查看拟合结果
CLASS> base /result

# 残差显示
CLASS> base /residual

示例 3:完整基线处理流程

 

bash
# 1. 读入数据
CLASS> file in spectra.30m
CLASS> get 1

# 2. 查看原始数据
CLASS> plot

# 3. 识别谱线位置,设置基线窗口(避开谱线)
CLASS> set window -120 -80 20 50 120 150
CLASS> draw window

# 4. 尝试不同阶数拟合
CLASS> base 2 /plot
CLASS> base 3 /plot

# 5. 选择最佳拟合(3阶),保存基线扣除后的数据
CLASS> base 3 /save /plot

# 6. 查看处理后的谱线
CLASS> plot

# 7. 检查残差
CLASS> base /residual
CLASS> plot

3.3 高级基线

bash
# 使用用户自定义函数拟合
CLASS> base user 'a+b*x+c*x*x'

# 基于信噪比自动拟合
CLASS> base /auto

# 逐像素拟合(用于制图数据)
CLASS> base /pixel

# 显示拟合参数
CLASS> base /print

4. 谱线拟合

4.1 自动谱线识别

bash
# 自动识别谱线
CLASS> find
CLASS> find /threshold 3.0   # 设置信噪比阈值

# 显示识别到的谱线
CLASS> find /list

# 设置谱线数量
CLASS> line 3
# 然后在图上用鼠标点击谱线左右边界

4.2 高斯拟合

bash
# 执行拟合
CLASS> min

# 带误差估计的拟合
CLASS> min /error

# 固定部分参数
CLASS> fix 1           # 固定第一条谱线的所有参数
CLASS> fix 1 2         # 固定第一条谱线的中心位置
CLASS> free 1          # 释放参数

# 查看拟合结果
CLASS> vis
CLASS> list/line

# 保存拟合结果
CLASS> line /write

示例 4:多谱线高斯拟合

bash
# 1. 准备数据
CLASS> file in co_spectrum.30m
CLASS> get 1
CLASS> base 2 /save /plot

# 2. 设置3条谱线
CLASS> line 3
# 用鼠标依次点击:CO(2-1)左边界 → 右边界 → CO(3-2)左边界 → 右边界 → HCN(3-2)左边界 → 右边界

# 3. 执行拟合
CLASS> min /error

# 4. 查看结果
CLASS> vis
CLASS> list/line

# 5. 绘图显示拟合结果
CLASS> plot /line

# 6. 保存拟合参数
CLASS> line /write lines_fit.dat

4.3 拟合参数详解

bash
# 查看拟合参数含义
CLASS> doc line

# 参数说明:
# Area: 积分强度 (K km/s)
# Vpeak: 峰值速度 (km/s)
# V0: 中心速度 (km/s)
# Width: 半高全宽 (km/s)
# Ta: 峰值温度 (K)
# rms: 均方根噪声 (K)
# S/N: 信噪比

5. 高级功能

5.1 数据运算

bash
# 算术运算
CLASS> data 1          # 显示当前数据
CLASS> data * 1.2      # 乘以常数
CLASS> data + 0.5      # 加常数
CLASS> data smooth 3   # 3通道平滑
CLASS> data /sub       # 减去连续谱

# 两个谱线相减
CLASS> data1 = data1 - data2

# 数据平均
CLASS> average         # 平均当前选择的所有谱线
CLASS> average /weight # 加权平均

5.2 坐标转换

bash
# 速度与频率转换
CLASS> set velocity lsr      # 设置速度系统
CLASS> set frequency 230.538 # 设置参考频率

# 通道数转速度
CLASS> convert chan to vel

# 显示坐标信息
CLASS> show coordinate

5.3 噪声计算

bash
# 计算基线噪声
CLASS> base /rms

# 计算指定区域的噪声
CLASS> stat window
CLASS> stat /rms

# 显示噪声水平
CLASS> list /rms

6. 批量处理脚本

6.1 创建脚本文件

创建文件 process_spectra.class:

bash
! 批量处理光谱数据脚本
! 作者: 你的名字
! 日期: 2024-01-15

! 1. 读取文件
file in /data/original_spectra.30m

! 2. 循环处理所有数据
for i 1 to 59
    get i
    ! 显示处理进度
    message "Processing spectrum " i
    ! 设置基线窗口
    set window -100 -80 -20 0 50 80
    ! 基线拟合
    base 3 /save /plot
    ! 保存处理后的数据
    data /write spectra_processed.30m /append
next

! 3. 统计结果
statistic
message "Batch processing completed!"

6.2 执行脚本

bash
# 在 CLASS 中执行
CLASS> @process_spectra

# 或在命令行执行
$ class -p process_spectra.class

# 带参数执行
$ class process_spectra.class

6.3 实用脚本示例

示例 5:自动基线拟合脚本

bash
! auto_baseline.class
! 自动识别并拟合基线

! 设置参数
set window -500 -400 400 500  ! 边缘区域作为基线
find /threshold 5.0            ! 找信号大于5 sigma的谱线

! 对每个有信号的谱线进行处理
if found > 0
    for j 1 to found
        get j
        ! 避开信号区域拟合基线
        set window -500 -300 300 500
        base 2 /plot
        data /write processed.30m /append
    next
else
    message "No significant lines found!"
endif

7. 实用技巧

7.1 常用快捷键

bash
Ctrl + C    # 中断当前操作
↑ ↓         # 浏览命令历史
Tab         # 自动补全
Ctrl + L    # 清屏

7.2 调试技巧

bash
# 显示详细信息
CLASS> set echo on      # 显示执行的命令
CLASS> set verify on    # 显示变量值
CLASS> set debug 2      # 设置调试级别 (0-3)

# 查看内存使用
CLASS> show memory

# 错误捕获
CLASS> on error continue  # 遇到错误继续执行
CLASS> on error stop      # 遇到错误停止

7.3 常用设置

bash
# 保存设置到配置文件
CLASS> save config

# 加载配置文件
CLASS> load config

# 设置默认参数
CLASS> set device xwin
CLASS> set color on
CLASS> set label font 'helvetica'
CLASS> set size 1.5

7.4 数据导出

bash
# 导出为 ASCII
CLASS> data /write ascii spectrum.dat

# 导出为 FITS
CLASS> data /write fits spectrum.fits

# 导出拟合结果
CLASS> line /write lines.dat

8. 完整工作流程示例

示例 6:完整的数据处理流程

bash
! complete_workflow.class
! 完整的单天线谱线数据处理流程

! === 1. 初始化 ===
message "=== Starting data processing ==="
set echo on
set device xwin

! === 2. 读入数据 ===
message "Loading data..."
file in /data/original/co_30m_20240115.30m
dir

! === 3. 检查数据质量 ===
message "Checking data quality..."
for i 1 to 10
    get i
    base 0 /rms
    list /rms
next

! === 4. 数据平均 ===
message "Averaging data..."
get /all
average /weight

! === 5. 基线拟合 ===
message "Baseline fitting..."
set window -150 -100 -20 20 100 150
base 3 /plot /save

! === 6. 谱线识别 ===
message "Line identification..."
find /threshold 5.0
find /list

! === 7. 高斯拟合 ===
message "Gaussian fitting..."
line 2
min /error
vis
list/line

! === 8. 保存结果 ===
message "Saving results..."
line /write co_lines.dat
data /write fits final_spectrum.fits

! === 9. 生成报告 ===
message "Generating report..."
list/line > report.txt
statistic >> report.txt

message "=== Processing completed! ==="

9. 常见问题解决

9.1 内存不足

bash
# 清理内存
CLASS> free

# 限制数据点数
CLASS> set maxpoints 16384

9.2 绘图问题

bash
# 重置绘图设置
CLASS> reset plot

# 保存当前图
CLASS> hardcopy output.ps

9.3 拟合不收敛

bash
# 尝试不同的初始参数
CLASS> line /reset  # 重新设置谱线
CLASS> min /iterate 100  # 增加迭代次数
CLASS> fix 1 2 3  # 固定部分参数
posted @ 2026-03-26 19:05  cql_astro  阅读(2)  评论(0)    收藏  举报