casa学习代码记录

标题

casa是专门用于处理VLA望远镜的集成软件,相应的教程对于干涉阵处理来说可谓是非常详细,甚至对于其他干涉阵的pipline来说,一些参数的意义甚至可以参考回来casa教程的的说明:以下记录一下相关的代码和主要的流程:

ps:很多具体到实际的物理意义我也说不清楚太多东西,以后可能理解深了,会尝试添加一下说明。

https://casaguides.nrao.edu/index.php/Karl_G._Jansky_VLA_Tutorials#Self-calibration_of_VLA_Data
这个网址是教程大全,还是要参考着官方的教程来看

https://data.nrao.edu/portal/#/
这里可以下载到开放的数据,选择你需要的项目的数据
下面开始全部流程

查看观测日志

https://www.vla.nrao.edu/cgi-bin/oplogs.cgi
先确定你数据的日期(可以先看(2)确定日期也可以在你下载数据那里点击scan也有一些信息),然后在这个网站上查询当天本项目望远镜的情况,例如下面写着data lost的那就记得要先flag掉(也有可能在你下载数据之前望远镜已经flag了)

例如这个就写着天线X在XX时间lost,你在后面的操作中就要flag掉这些数据

确定数据的各种信息

先对数据进行解压tar -xvf 文件名,获得.ms文件

msfile = 'spw6.ms'
listobs(vis=msfile)

一共有这些源,前面几个是校准源(建议记住这些源名字,虽然你可以使用filed0,1,2这些编号去索引,但是容易搞混)

G16.7+0.1(targe), J1331+3030, J1407+2827,J1822-0938(phase calibration),0137+331=3C48(flux calibration)

一共15个频率窗口,前面和后面是重复的

选择这个窗口spw6

阵列天线分布图,找到一个最中间作为参考天线,例如e25


plotants(vis=msfile,figfile='plotants_antenna_layout.png')

ea25

本教程只处理一个窗口的数据(当你数据量不大的时候,也可以全部窗口一些处理)

简单看看spw6的10~55通道数据的情况(因为每个spw前后的一些通道总是不太好)

plotms(vis =msfile, xaxis='time',yaxis='amp', correlation='RR,LL',coloraxis='field', avgchannel='64')

plotms(vis =msfile, xaxis='channel',yaxis='amp', correlation='RR,LL',coloraxis='field', avgtime='1e8')

感觉这个窗口的数据还可以,先把他分出来成新的文件吧,减少文件的大小

split(vis=msfile,outputvis='XXX_spw6.ms',spw='6:10~55',datacolumn='all')
#这个spw的格式是6窗口的10到55通道
msfile = 'XXX_spw6.ms' #后面就用这个新的.ms文件了

Initi Flag

对数据进行一个基础的flag

flagdata(vis=msfile, mode='quack', quackinterval=5.0, quackmode='beg') 
flagdata(vis=msfile, mode='manual', antenna='ea13')
#flagdata(vis=msfile, mode='manual', scan='1')

#分别是对每段时间的起始几秒的数据flag;对观测日志里面不好的数据进行flag;
#对第一个scan数据(从listobs中发现观测时间只有几秒)flag

#对校准源的数据做一个更加细致的flag,flag掉那些一眼看上去的坏的数据点,以及标记看起来不好的数据点。通过plotms打开校准源。

```python
plotms(vis=msfile,field='',
       xaxis='chan',yaxis='amp',correlation='RR,LL',
       avgtime='1e8',spw='', coloraxis='baseline', iteraxis='spw')

plotms(vis=msfile,
       xaxis='time',yaxis='amp',correlation='RR,LL',
       avgchannel='64', coloraxis='field', iteraxis='spw')

利用下面的工具栏确定异常数据是来源是哪里(eg:天线?scan?时间?)

ps:flag之后的数据以修改的数据的格式存放在一个flag文件里面,每次做了flag或者校准命令都会保存,但是不显示具体实现了什么操作,你可以通过以下两个例子来给你当前flag状态的保存或者回溯到上一个flag,当然casa也会自动保存flag的版本,但是只有编号没有flag的信息。

flagmanager(vis = msfile,
            mode = 'save',
            versionname = 'initialflags',
            comment = 'initial flags, including quack',
            merge='replace')
            
flagmanager(vis = msfile,
            mode = 'restore',
            versionname = 'flags.flagdata_2',
            merge='replace')

# versionname就是flag的版本,第一个是保存,第二个是回溯。

Initial Flux Density Scaling

gencal(vis=msfile, caltable='spw6.antpos',caltype='antpos') 
# 天线的位置校准,有可能没有

setjy(vis=msfile, listmodels=True)
setjy(vis=msfile, field='0137+331=3C48',standard='Perley-Butler 2017',model='3C48_C.im',usescratch=True,scalebychan=True,spw='')
#先看有那些模型,然后确定流量校准源的模型

refantenna='ea25'

Initial Phase Calibration

gaincal(vis='spw6.ms', caltable='spw6.G0all',field='0137+331=3C48, J1822-0938', refant=refantenna, spw='0:27~36',gaintype='G',calmode='p', solint='int',minsnr=5,gaintable=['spw6.antpos'])
#实际上并没有用到这个输出的增益表,只是简单看看增益的情况

plotms(vis='spw6.G0all', xaxis='time',yaxis='phase',
coloraxis='corr',iteraxis='antenna',plotrange=[-1,-1,-180,180])
#每个gain后面都值得plotms一下表格确定一下输出情况

gaincal(vis='spw6.ms', caltable='spw6.G0',field='0137+331=3C48', refant=refantenna, spw='0:27~36', calmode='p', solint='int',minsnr=5, timerange='', gaintable=['spw6.antpos'])
#相位校准,3C138是流量校准源,这个时间的选择不一定需要,如果这个源有两端的观测,你可以像我一样用时间去限制只要前面一段的观测。

plotms(vis='spw6.G0',xaxis='time',yaxis='phase',coloraxis='corr',iteraxis='antenna',plotrange=[-1,-1,-180,180])

Delay calibration

gaincal(vis=msfile, caltable='spw6.K0',field='0137+331=3C48',refant=refantenna,spw='0:10~55',gaintype='K',solint='inf',combine='scan',minsnr=5,gaintable=['spw6.antpos','spw6.G0'])

plotms(vis='spw6.K0',xaxis='antenna1',yaxis='delay',coloraxis='baseline')

Bandpass calibration

bandpass(vis=msfile,caltable='spw6.B0',field='0137+331=3C48',spw='0:10~55',refant=refantenna,combine='scan',solint='inf',bandtype='B',gaintable=['spw6.antpos','spw6.G0','spw6.K0'])

plotms(vis='spw6.B0',xaxis='chan',yaxis='amp',coloraxis='corr',gridrows=2,gridcols=2, spw='0:10~55',iteraxis='antenna')

plotms(vis='spw6.B0',xaxis='chan',yaxis='phase',coloraxis='corr',gridrows=2,gridcols=2, spw='0:10~55',iteraxis='antenna',plotrange=[-1,-1,-180,180])

flagdata(vis=msfile, mode='manual', antenna='ea04&ea25')

flag ea04&ea25?

Gain Calibration

gaincal(vis=msfile,caltable='spw6.G1',field='0137+331=3C48',spw='0:10~55',
solint='inf',refant=refantenna,gaintype='G',calmode='ap',solnorm=False,
gaintable=['spw6.antpos','spw6.K0','spw6.B0'],interp=['','','nearest'])

gaincal(vis=msfile,caltable='spw6.G1',field='J1822-0938',spw='0:10~55',
solint='inf',refant=refantenna,gaintype='G',calmode='ap',gaintable=['spw6.antpos','spw6.K0','spw6.B0'],interp=['','','nearest'],solnorm=False,append=True)

#照常看一下输出的情况
plotms(vis='spw6.G1',xaxis='time',yaxis='amp', correlation='/',coloraxis='baseline')
plotms(vis='spw6.G1',xaxis='time',yaxis='phase',correlation='/',coloraxis='baseline', plotrange=[-1,-1,-180,180])

Scaling the Amplitude Gains

myscale = fluxscale(vis='spw6.ms',caltable='spw6.G1',fluxtable='spw6.fluxscale1',reference='0137+331=3C48',transfer=['J1822-0938'],incremental=False)

plotms(vis='spw6.fluxscale1',xaxis='time',yaxis='amp',
correlation='R',coloraxis='baseline')

https://science.nrao.edu/facilities/vla/docs/manuals/observing/callist

VLA公布的校准源流量密度等信息

Applying the Calibration

applycal(vis=msfile,field='0137+331=3C48',gaintable=['spw6.antpos','spw6.fluxscale1','spw6.K0','spw6.B0'],gainfield=['','0137+331=3C48','',''],interp=['','nearest','',''],calwt=False)

applycal(vis=msfile,field='J1822-0938',gaintable=['spw6.antpos','spw6.fluxscale1','spw6.K0','spw6.B0'],gainfield=['','J1822-0938','',''],interp=['','nearest','',''],calwt=False)

#对target
applycal(vis=msfile,field='G16.7+0.1',gaintable=['spw6.antpos','spw6.fluxscale1','spw6.K0','spw6.B0'],gainfield=['','J1822-0938','',''],interp=['','nearest','',''],calwt=False)

checking

plotms(vis='spw6.ms',field='*3C48',correlation='RR,LL',avgtime='60',xaxis='channel',yaxis='amp',ydatacolumn='corrected',coloraxis='corr', spw='0:10~55')

plotms(vis='spw6.ms',field='*3C48',correlation='RR,LL',xaxis='time',yaxis='amp',ydatacolumn='corrected',coloraxis='corr', spw='0:10~55',avgchannel='64')

#first flag !ea17&ea25

#second flag scan134 ? ea25&ea28,ea25&ea26,ea24&ea25,ea25? 
#or change refantenna ea25 from target

baseline,antenna,scan,channel,time

flagmanager(vis = msfile,mode = 'save',versionname = 'initialflag_1',comment='first flag',merge='replace')

flagdata(vis=msfile, mode='manual', antenna='ea17&ea25')

mapping


split(vis=msfile,outputvis='spw6_cal.ms',datacolumn='corrected',field='0137+331=3C48,J1822-0938', spw='0:10~55')

split(vis='spw6.ms',outputvis='spw6_target.ms',datacolumn='corrected',field='G16.7+0.1', spw='0:10~55')

statwt(vis='spw6_target.ms',datacolumn='data')

cleansource='M31_spw6_cal.ms'

#计算cell可以使用
plotms(vis='spw6_target.ms',xaxis='uvwave',yaxis='amp',ydatacolumn='data', field='G16.7+0.1',avgtime='30',correlation='RR')

plotms(vis='spw6_target.ms',xaxis='real',yaxis='imag',ydatacolumn='data', field='G16.7+0.1',avgtime='30',correlation='RR')

plotms(vis='spw6_target.ms',xaxis='uwave',yaxis='vwave',ydatacolumn='data', field='G16.7+0.1',avgtime='30',correlation='RR')

np.degrees(1/17500)*360011.7
11.7/53
tclean(vis='spw6_cal.ms',field='0137+331=3C48',imagename='cal_0137+331=3C48',specmode='mfs', datacolumn='data',imsize=100,cell=['3.0arcsec'],weighting='briggs',robust=0,niter=1000,interactive=True)

tclean(vis='spw6_cal.ms',field='J1822-0938',imagename='cal_J1822-0938',specmode='mfs', datacolumn='data',imsize=100,cell=['3.0arcsec'],weighting='briggs',robust=0,niter=1000,interactive=True)

tclean(vis='spw6_target.ms', imagename='SNR',specmode='mfs',niter=20000,gain=0.1, threshold='0.0mJy',deconvolver='multiscale',scales=[0, 5, 15, 45], smallscalebias=0.9,interactive=True,imsize=[200,200], cell=['3.0arcsec','3.0arcsec'],stokes='I',weighting='briggs',robust=0.5,pbcor=False,savemodel='modelcolumn')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OC类与对象

OC类与对象 本篇是对上一篇的内容的继续学习。从单例模式开始继续学习 文章目录 单例模式定义应用场景特点单例模式的创建 隐藏与封装理解什么是封装目的访问控制符合成存取方法特性的指示符点语法访问属性 对象初始化便利的初始化方法 类的继承特点语法格式重写父类方法super关…

SimpleDateFormat类.Java

目录 1.1构造方法 1.2格式规则 1.3常用方法 1.4练习1( 出生日期) 1.5练习2(秒杀活动) java.text.SimpleDateFormat 是日期/时间格式化类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来…

机器学习理论基础—集成学习(1)

机器学习理论基础—集成学习 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务,有时也称为多分类系统等。 分类: 根据集成学习中的个体学习器的不同可以分为同质集成(集成的学习器相同例如全部是决策树)&#xff0c…

上市公司专利数据、专利申请、专利授权和质量指标计算面板数据(1990-2022年)

01、数据简介 专利作为企业创新能力和核心竞争力的体现,越来越受到上市公司的重视。了解上市公司的专利数据、专利申请、专利授权和质量指标计算,有助于投资者更好地评估公司的创新能力和长期发展潜力。 通过分析上市公司的专利数据、专利申请、专利授…

【国标语音对讲】EasyCVR视频汇聚平台海康/大华/宇视摄像头GB28181语音对讲配置

一、背景分析 近年来,国内视频监控应用发展迅猛,系统接入规模不断扩大,涌现了大量平台提供商,平台提供商的接入协议各不相同,终端制造商需要给每款终端维护提供各种不同平台的软件版本,造成了极大的资源浪…

[C++ QT项目实战]----系统实现双击表格某一行,表格数据不再更新,可以查看该行所有信息,选中表更新之后,数据可以继续更新

前言 在需要庞大的数据量的系统中,基于合适的功能对数据进行观察和使用至关重要,本篇在自己项目实战的基础上,基于C QT编程语言,对其中一个数据功能进行分析和代码实现,希望可以有所帮助。一些特殊原因,图片…

回溯-单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…

压测--混合场景设置

1、设计测试场景 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标满足需求定义的检验活动。一般有以下场景: 基准场景:单接口少量并发用户下压测,评估单个功能点性能。负载场景:逐步增…

Python实践应用|NC文件读取

import netCDF4 as nc import numpy as np import matplotlib.pyplot as plt# 打开NC文件 nc_file E:/NC_file/air.sig995.2012.nc # 将your_file.nc替换为你的NC文件路径 nc_data nc.Dataset(nc_file, r)# 查看NC文件中包含的变量 print("Variables in the NC file:&q…

免费简单好用的内网穿透工具(ngrok、natapp),微信回调地址配置

B站视频地址 文章目录 Natapp1、登录注册账号、下载软件2、使用2-1、购买隧道、查看token2-2、端口穿透 Ngrok1、登录注册账号、下载软件2、使用2-1、获取并设置 token2-2、使用 3、隧道 微信回调配置1、注册测试公众号2、回调代码3、回调配置 在一些特殊的场景下,需…

C#基础之结构体

结构体 文章目录 1、概念2、基本语法3、示例4、结构体的使用5、访问修饰符6、结构体的构造函数思考1 描述矩形信息思考2 职业名字释放了技能思考3 小怪兽思考4 多个小怪兽思考5 奥特曼打小怪兽 1、概念 结构体是一种一定义变量类型 它是数据和函数的集合,可以在结…

PCIe总线-MPS MRRS RCB参数介绍(四)

1.概述 PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载,即Data Payload。Data Payload的长度和MPS(Max Payload Size)、MRRS(Max Read Request Size)和RCB(Read Completion Boundary&#xff0…

计算机存储原理.2

1.主存储器与CPU之间的连接 2.存储器芯片的输入输出信号 3.增加主存的存储字长 3.1位扩展 数据总线的利用成分是不充分的(单块只能读写一位),为了解决这个问题所以引出了位扩展。 使用多块存储芯片解决这个问题。 3.2字扩展 因为存储器买的是8k*8位的&am…

硬件21、接线端子XH2.54、2.54排针排母、2510接插件、PH2.0、町洋接线端子5.08、ISP接口JTAG插座

XH2.54端子的间距为2.54毫米,2.54排针排母的间距也是2.54mm,2510接插件也是2.54、而PH2.0端子的间距为2.0毫米,町洋接线端子插针间的距离是5.08mm,ISP接口JTAG插座针脚的间距一般也是2.54mm XH2.54 针脚间距为2.54mm 插头 接线…

IIS中搭建.Net Core项目,步骤详解

一、准备服务器 1)安装IIS 这个比较简单,百度一下就行 2)安装 .NET Core 运行时 下载地址:下载 .NET(Linux、macOS 和 Windows) 因为我是本地开发,所以我下载的是SDK 安装成功之后显示如下: 检查是否安装…

判断字符串由几个单词组成(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int world 0;int i 0;char c 0;char string[81] { 0 };int num 0;//提示用户&#xff…

使用Github Action实现Hexo博客自动化部署

本文参考自 Akilar&#xff0c;原文地址&#xff1a;https://akilar.top/posts/f752c86d/ 每次部署Hexo都需要运行指令三件套&#xff0c;随着文章越来越多&#xff0c;编译的时间也随之越来越长&#xff0c;通过Github Action&#xff0c;我们只需要在每次完成博客的编写或修…

OSPF路由计算

1.区域内路由计算 &#xff08;1&#xff09;LSA的基本概念 LS Age&#xff1a;当LSA被始发时&#xff0c;该字段为0&#xff0c;随着LSA在网络中被泛洪&#xff0c;该时间逐渐累加&#xff0c;当到达MaxAge&#xff08;缺省值为3600s&#xff09;时&#xff0c;LSA不再用于路…

传统过程自动化工厂的智能扩展

一 通过NOA概念&#xff0c;公开、安全地迈向未来 随着数字化转型在过程自动化工业中的不断深入&#xff0c;许多公司都面临着同一挑战——如何平衡创新和传统。放眼望去&#xff0c;过程自动化工业和信息技术似乎在以不同的速度发展。虽然过程自动化工厂通过使用传统的自动化…

基于springboot实现企业oa管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现企业oa管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足&#xff0c;创建了一个计算机管理企业OA管理系统的方案…
最新文章