1. Cơ bản
1.1 Khởi động và thoát
# Khởi động CLASS
$ class
# Sau khi khởi động, dấu nhắc hiện ra
CLASS>
# Thoát
CLASS> exit
# Hoặc nhấn Ctrl+D
1.2 Lệnh trợ giúp cơ bản
# Xem tất cả lệnh
CLASS> help
# Xem trợ giúp cho lệnh cụ thể
CLASS> help plot
# Xem tài liệu chi tiết
CLASS> doc base
# Liệt kê tất cả biến
CLASS> list/var
2. Thao tác dữ liệu
2.1 Thao tác tập tin
# Đọc tập tin định dạng GILDAS
CLASS> file in observation.30m
# Đọc tập tin FITS
CLASS> file fits data.fits
# Xem thông tin tập tin hiện tại
CLASS> file
# Tạo tập tin mới
CLASS> file out output.30m new
# Ghi dữ liệu vào tập tin
CLASS> write
# Xem nội dung tập tin
CLASS> directory
CLASS> dir # viết tắt
Ví dụ 1: Đọc và xem dữ liệu
# Đọc dữ liệu
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 Chọn dữ liệu
# Chọn dữ liệu theo chỉ mục cụ thể
CLASS> get 1
CLASS> get 1-5,10,15-20
# Chọn theo điều kiện
CLASS> find /source "NGC7027"
CLASS> get found
# Chọn bản ghi mới nhất
CLASS> get /last
# Chọn tất cả dữ liệu
CLASS> get /all
# Xem dữ liệu đã chọn
CLASS> list
# Thống kê dữ liệu đã chọn
CLASS> statistic
2.3 Hiển thị dữ liệu
# Vẽ đồ thị cơ bản
CLASS> plot
# Thiết lập tham số vẽ
CLASS> set device xwin # Hiển thị trên màn hình
CLASS> set device ps # Xuất ra tập tin PostScript
# Thiết lập cửa sổ vẽ
CLASS> set window -500 500 # Đặt dải vận tốc (km/s)
CLASS> set window auto # Dải tự động
# Vẽ chồng
CLASS> plot /over
# Vẽ màu
CLASS> plot /colour
# Nhiều đồ thị con
CLASS> plot /multi
Ví dụ 2: Vẽ so sánh nhiều nhóm dữ liệu
# Vẽ nhóm đầu tiên
CLASS> get 1
CLASS> plot
# Vẽ nhóm thứ hai, chồng lên
CLASS> get 2
CLASS> plot /over /colour # Vẽ chồng nhóm thứ hai, màu khác
# Vẽ nhóm thứ ba, chồng lên
CLASS> get 3
CLASS> plot /over /colour
3. Xử lý nền
3.1 Thiết lập cửa sổ khớp
# Thiết lập cửa sổ thủ công (đơn vị vận tốc)
CLASS> set window -50 -30 20 40 100 150
# Chọn cửa sổ tương tác
CLASS> draw window
# Nhấp chuột trên đồ thị để chọn vùng nền
# Hiển thị cửa sổ hiện tại
CLASS> draw window
# Xóa cửa sổ
CLASS> set window
3.2 Khớp nền
# Khớp đa thức nền
CLASS> base 0 # Nền hằng số
CLASS> base 1 # Nền tuyến tính
CLASS> base 3 # Đa thức bậc 3
# Khớp kèm hiển thị
CLASS> base 3 /plot
# Lưu dữ liệu sau khi khớp
CLASS> base 3 /save
# Xem kết quả khớp
CLASS> base /result
# Hiển thị phần dư
CLASS> base /residual
Ví dụ 3: Quy trình xử lý nền hoàn chỉnh
# 1. Đọc dữ liệu
CLASS> file in spectra.30m
CLASS> get 1
# 2. Xem dữ liệu gốc
CLASS> plot
# 3. Xác định vị trí vạch phổ, thiết lập cửa sổ nền (tránh vạch)
CLASS> set window -120 -80 20 50 120 150
CLASS> draw window
# 4. Thử khớp với bậc khác nhau
CLASS> base 2 /plot
CLASS> base 3 /plot
# 5. Chọn khớp tốt nhất (bậc 3), lưu dữ liệu đã trừ nền
CLASS> base 3 /save /plot
# 6. Xem vạch phổ đã xử lý
CLASS> plot
# 7. Kiểm tra phần dư
CLASS> base /residual
CLASS> plot
3.3 Nền nâng cao
# Khớp với hàm do người dùng tự định nghĩa
CLASS> base user 'a+b*x+c*x*x'
# Khớp tự động dựa trên tỷ số tín hiệu/nhiễu
CLASS> base /auto
# Khớp từng pixel (dùng cho dữ liệu bản đồ)
CLASS> base /pixel
# Hiển thị tham số khớp
CLASS> base /print
4. Khớp vạch phổ
4.1 Nhận dạng vạch phổ tự động
# Nhận dạng vạch phổ tự động
CLASS> find
CLASS> find /threshold 3.0 # Thiết lập ngưỡng tỷ số tín hiệu/nhiễu
# Hiển thị vạch đã nhận dạng
CLASS> find /list
# Thiết lập số lượng vạch
CLASS> line 3
# Sau đó nhấp chuột trên đồ thị để xác định các biên của vạch phổ
4.2 Khớp Gaussian
# Thực hiện khớp
CLASS> min
# Khớp kèm ước lượng sai số
CLASS> min /error
# Cố định một phần tham số
CLASS> fix 1 # Cố định tất cả tham số của vạch thứ nhất
CLASS> fix 1 2 # Cố định vị trí trung tâm của vạch thứ nhất
CLASS> free 1 # Giải phóng tham số
# Xem kết quả khớp
CLASS> vis
CLASS> list/line
# Lưu kết quả khớp
CLASS> line /write
Ví dụ 4: Khớp Gaussian nhiều vạch phổ
# 1. Chuẩn bị dữ liệu
CLASS> file in co_spectrum.30m
CLASS> get 1
CLASS> base 2 /save /plot
# 2. Thiết lập 3 vạch phổ
CLASS> line 3
# Nhấp chuột lần lượt: CO(2-1) biên trái → biên phải → CO(3-2) biên trái → biên phải → HCN(3-2) biên trái → biên phải
# 3. Thực hiện khớp
CLASS> min /error
# 4. Xem kết quả
CLASS> vis
CLASS> list/line
# 5. Vẽ đồ thị kết quả khớp
CLASS> plot /line
# 6. Lưu tham số khớp
CLASS> line /write lines_fit.dat
4.3 Giải thích tham số khớp
# Xem ý nghĩa tham số khớp
CLASS> doc line
# Giải thích tham số:
# Area: Cường độ tích phân (K km/s)
# Vpeak: Vận tốc đỉnh (km/s)
# V0: Vận tốc trung tâm (km/s)
# Width: Độ rộng toàn bộ ở nửa cực đại (km/s)
# Ta: Nhiệt độ đỉnh (K)
# rms: Nhiễu căn bậc hai trung bình (K)
# S/N: Tỷ số tín hiệu trên nhiễu
5. Tính năng nâng cao
5.1 Tính toán dữ liệu
# Phép tính số học
CLASS> data 1 # Hiển thị dữ liệu hiện tại
CLASS> data * 1.2 # Nhân với hằng số
CLASS> data + 0.5 # Cộng với hằng số
CLASS> data smooth 3 # Làm mịn 3 kênh
CLASS> data /sub # Trừ nền liên tục
# Trừ hai vạch phổ
CLASS> data1 = data1 - data2
# Trung bình dữ liệu
CLASS> average # Trung bình tất cả vạch phổ đã chọn
CLASS> average /weight # Trung bình có trọng số
5.2 Chuyển đổi tọa độ
# Chuyển đổi giữa vận tốc và tần số
CLASS> set velocity lsr # Thiết lập hệ vận tốc
CLASS> set frequency 230.538 # Thiết lập tần số tham chiếu
# Chuyển đổi kênh thành vận tốc
CLASS> convert chan to vel
# Hiển thị thông tin tọa độ
CLASS> show coordinate
5.3 Tính nhiễu
# Tính nhiễu nền
CLASS> base /rms
# Tính nhiễu trong vùng được chỉ định
CLASS> stat window
CLASS> stat /rms
# Hiển thị mức nhiễu
CLASS> list /rms
6. Xử lý hàng loạt bằng script
6.1 Tạo tập tin script
Tạo tập tin process_spectra.class:
! Script xử lý hàng loạt dữ liệu phổ
! Ngày: 2024-01-15
! 1. Đọc tập tin
file in /data/original_spectra.30m
! 2. Xử lý tất cả dữ liệu trong vòng lặp
for i 1 to 59
get i
! Hiển thị tiến trình
message "Processing spectrum " i
! Thiết lập cửa sổ nền
set window -100 -80 -20 0 50 80
! Khớp nền
base 3 /save /plot
! Lưu dữ liệu đã xử lý
data /write spectra_processed.30m /append
next
! 3. Thống kê kết quả
statistic
message "Batch processing completed!"
6.2 Thực thi script
# Thực thi trong CLASS
CLASS> @process_spectra
# Hoặc thực thi từ dòng lệnh
$ class -p process_spectra.class
# Thực thi với tham số
$ class process_spectra.class
6.3 Ví dụ script hữu ích
Ví dụ 5: Script khớp nền tự động
! auto_baseline.class
! Nhận dạng và khớp nền tự động
! Thiết lập tham số
set window -500 -400 400 500 ! Vùng biên làm nền
find /threshold 5.0 ! Tìm vạch lớn hơn 5 sigma
! Xử lý mỗi vạch có tín hiệu
if found > 0
for j 1 to found
get j
! Tránh vùng tín hiệu khi khớp nền
set window -500 -300 300 500
base 2 /plot
data /write processed.30m /append
next
else
message "No significant lines found!"
endif
7. Mẹo và thủ thuật
7.1 Phím tắt thông dụng
Ctrl + C # Ngắt thao tác hiện tại
↑ ↓ # Duyệt lịch sử lệnh
Tab # Tự động hoàn thành
Ctrl + L # Xóa màn hình
7.2 Kỹ thuật gỡ lỗi
# Hiển thị thông tin chi tiết
CLASS> set echo on # Hiển thị lệnh đang thực thi
CLASS> set verify on # Hiển thị giá trị biến
CLASS> set debug 2 # Thiết lập mức gỡ lỗi (0-3)
# Xem bộ nhớ sử dụng
CLASS> show memory
# Xử lý lỗi
CLASS> on error continue # Tiếp tục khi gặp lỗi
CLASS> on error stop # Dừng khi gặp lỗi
7.3 Thiết lập thông dụng
# Lưu thiết lập vào tập tin cấu hình
CLASS> save config
# Tải tập tin cấu hình
CLASS> load config
# Thiết lập tham số mặc định
CLASS> set device xwin
CLASS> set color on
CLASS> set label font 'helvetica'
CLASS> set size 1.5
7.4 Xuất dữ liệu
# Xuất ra ASCII
CLASS> data /write ascii spectrum.dat
# Xuất ra FITS
CLASS> data /write fits spectrum.fits
# Xuất kết quả khớp
CLASS> line /write lines.dat
8. Ví dụ quy trình làm việc hoàn chỉnh
Ví dụ 6: Quy trình xử lý dữ liệu hoàn chỉnh
! complete_workflow.class
! Quy trình xử lý dữ liệu phổ từ anten đơn hoàn chỉnh
! === 1. Khởi tạo ===
message "=== Bắt đầu xử lý dữ liệu ==="
set echo on
set device xwin
! === 2. Đọc dữ liệu ===
message "Đang tải dữ liệu..."
file in /data/original/co_30m_20240115.30m
dir
! === 3. Kiểm tra chất lượng dữ liệu ===
message "Đang kiểm tra chất lượng dữ liệu..."
for i 1 to 10
get i
base 0 /rms
list /rms
next
! === 4. Trung bình dữ liệu ===
message "Đang lấy trung bình dữ liệu..."
get /all
average /weight
! === 5. Khớp nền ===
message "Đang khớp nền..."
set window -150 -100 -20 20 100 150
base 3 /plot /save
! === 6. Nhận dạng vạch phổ ===
message "Đang nhận dạng vạch phổ..."
find /threshold 5.0
find /list
! === 7. Khớp Gaussian ===
message "Đang khớp Gaussian..."
line 2
min /error
vis
list/line
! === 8. Lưu kết quả ===
message "Đang lưu kết quả..."
line /write co_lines.dat
data /write fits final_spectrum.fits
! === 9. Tạo báo cáo ===
message "Đang tạo báo cáo..."
list/line > report.txt
statistic >> report.txt
message "=== Xử lý hoàn tất! ==="
9. Giải quyết vấn đề thường gặp
9.1 Thiếu bộ nhớ
# Dọn dẹp bộ nhớ
CLASS> free
# Giới hạn số điểm dữ liệu
CLASS> set maxpoints 16384
9.2 Vấn đề vẽ đồ thị
# Đặt lại thiết lập vẽ
CLASS> reset plot
# Lưu đồ thị hiện tại
CLASS> hardcopy output.ps
9.3 Khớp không hội tụ
# Thử tham số ban đầu khác
CLASS> line /reset # Thiết lập lại vạch phổ
CLASS> min /iterate 100 # Tăng số lần lặp
CLASS> fix 1 2 3 # Cố định một phần tham số