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 基线拟合
# 多项式基线拟合
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:完整基线处理流程
# 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 高级基线
# 使用用户自定义函数拟合
CLASS> base user 'a+b*x+c*x*x'
# 基于信噪比自动拟合
CLASS> base /auto
# 逐像素拟合(用于制图数据)
CLASS> base /pixel
# 显示拟合参数
CLASS> base /print
4. 谱线拟合
4.1 自动谱线识别
# 自动识别谱线
CLASS> find
CLASS> find /threshold 3.0 # 设置信噪比阈值
# 显示识别到的谱线
CLASS> find /list
# 设置谱线数量
CLASS> line 3
# 然后在图上用鼠标点击谱线左右边界
4.2 高斯拟合
# 执行拟合
CLASS> min
# 带误差估计的拟合
CLASS> min /error
# 固定部分参数
CLASS> fix 1 # 固定第一条谱线的所有参数
CLASS> fix 1 2 # 固定第一条谱线的中心位置
CLASS> free 1 # 释放参数
# 查看拟合结果
CLASS> vis
CLASS> list/line
# 保存拟合结果
CLASS> line /write
示例 4:多谱线高斯拟合
# 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 拟合参数详解
# 查看拟合参数含义
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 数据运算
# 算术运算
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 坐标转换
# 速度与频率转换
CLASS> set velocity lsr # 设置速度系统
CLASS> set frequency 230.538 # 设置参考频率
# 通道数转速度
CLASS> convert chan to vel
# 显示坐标信息
CLASS> show coordinate
5.3 噪声计算
# 计算基线噪声
CLASS> base /rms
# 计算指定区域的噪声
CLASS> stat window
CLASS> stat /rms
# 显示噪声水平
CLASS> list /rms
6. 批量处理脚本
6.1 创建脚本文件
创建文件 process_spectra.class:
! 批量处理光谱数据脚本
! 作者: 你的名字
! 日期: 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 执行脚本
# 在 CLASS 中执行
CLASS> @process_spectra
# 或在命令行执行
$ class -p process_spectra.class
# 带参数执行
$ class process_spectra.class
6.3 实用脚本示例
示例 5:自动基线拟合脚本
! 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 常用快捷键
Ctrl + C # 中断当前操作
↑ ↓ # 浏览命令历史
Tab # 自动补全
Ctrl + L # 清屏
7.2 调试技巧
# 显示详细信息
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 常用设置
# 保存设置到配置文件
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 数据导出
# 导出为 ASCII
CLASS> data /write ascii spectrum.dat
# 导出为 FITS
CLASS> data /write fits spectrum.fits
# 导出拟合结果
CLASS> line /write lines.dat
8. 完整工作流程示例
示例 6:完整的数据处理流程
! 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 内存不足
# 清理内存
CLASS> free
# 限制数据点数
CLASS> set maxpoints 16384
9.2 绘图问题
# 重置绘图设置
CLASS> reset plot
# 保存当前图
CLASS> hardcopy output.ps
9.3 拟合不收敛
# 尝试不同的初始参数
CLASS> line /reset # 重新设置谱线
CLASS> min /iterate 100 # 增加迭代次数
CLASS> fix 1 2 3 # 固定部分参数
浙公网安备 33010602011771号