[QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析

操作环境:win10+虚拟机ubuntu下QOCA(ver 1.33)
数据:通过解算得到的安徽省CORS参考站坐标时间序列(neu格式)

QOCA软件是优秀的GNSS坐标时间序列分析软件,其简介及PCA模块的使用方法在QOCA online tutor上已经有详细介绍:
附上链接:Principal component analysis.pdf
[QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第1张图片
下面简单介绍利用PCA模块对时间序列的共模误差进行分析的过程(具体PCA的介绍请下载相关文献)

  1. QOCA各模块调用最核心的部分在于驱动文件,输入输出文件和对各参数的设置均在这个驱动文件里面,本次以pca.drv文件为例,给出常规pca分析所用到的驱动文件,并根据introduction文件给出每行参数的注释。(以下文件删除中文注释部分再运行)
    注:本次pca运算采用的输入文件是经过QOCA analyze_tseri模块分析后,扣除了阶跃、速度、周年项、半周年项等项的残差序列。具体的分析过程将在另外一篇博文中介绍。
=========================================================================
*          << key word controlled driving file format >>                *
* symbol ":" must exist in command lines as index pointor               *
* any non-blank character at first column means comment line            *
* 第一列存在任何非空的的字符,均认为该行为注释行,不执行                   *
* empty after ":" means comment line too, but line apears in out file   *
=========================================================================
  job-type:                     regional filtering
c  job-type:                     tectonic signal
*%本次pca分析的工作类型:“regional filtering”意味着所有的构造和季节性条件都被删除。我们的目标是获得共模误差(主要是高频信号);“tectonic signal”意味着季节性信号被删除。时间序列包含构造信号(速度或跳跃或地震后)。*
  decomposition method:             PCA
*%选择分解算法:“PCA”:主成分分析;“KLE”:Karhunen-Loeve展开;“SVD”:奇异值分解*
  apriori value file:             coordinate.solutn
*%(站点位置和速度先验值文件)与之前QOCA各模块的先验文件格式一样*
  input site list file(site_list):         pca.site
*%(站点列表文件名)在站点列表文件中,第一行是站点总数。其余的行是站点名称。有时用户可能会意外地设置多余的站点名称。pca程序将检查站点名称列表并删除多余的站点名称。*
  input qob list file(in_list):          pca_data.list
*%(输入文件列表名)在In_list文件中,第一行是数据文件数。其余的行是文件名(包括路径)和文件类型。*
*%type=11:QOCA map文件。(analyze_tseri output residual file format)
%type=12:SOPAC neu文件。
%type=13:一个站点的单组件(n,e,u)文件(欧文的文件)
%type=14:GIPSY stacov format 
%type=15:REASoN web service xyz tar file format 
%type=16:high-rate coordinate file(map格式)
%默认数据类型为11。*
  output file:                         pca.out
*%(输出文件名)此文件记录每个站点的输入/输出信息、调整后的偏差、趋势和季节性术语、东、北和向上分量的本征值和功率百分比。如果“adj_6par”选项未激活,本征值和百分比功率仍列在输出文件中。*
 component file:                      pca.cpt   component
*%(输出主成分文件)第一个输入是文件名,第二个输入是输出类别。如果类别是“component”:输出缩放的主分量值。如果类别是“vector”:输出特征向量值。如果类别是“time series”:分别输出东、b北和天方向的时间序列。
%默认类别为“component”。其他类别仍在建设中。目前,PCA代码只输出前12个主分量。*
  regional filtered time series file:  pca.res   residual
*%(输出滤波结果文件)第一项是文件名,第二项是输出类别。如果类别是“residual”:输出未过滤、已过滤的值及其残差。*
  spatial eigenvector file:            pca.seign
*%(空间特征向量输出文件)该文件记录了前10个主分量每个站的标准化空间响应。*
  network range (sit_range, degree):    0 360 -90 90
*%(网络的地理范围)单位°*
  solution span (soln_span):           2013.0  2018.5
*%(分析的开始和结束时间点)*
  do horizontal jointly:              no
*%在“regional filtering”任务中,我们通常分别对东部和北部时间序列进行分析。在这种情况下,此选项应为“否”。然而,在“tectonic signal”任务中,许多用户希望联合分析东、北分量,得到水平主分量。在这种情况下,此选项应为“是”。*
  fill_gap option:                    yes
*%默认为“是”。如果答案是“否”,程序将禁用补齐缺失值功能。在大多数情况下,填补时间序列缺口是必要的。否则,间隙将被指定为零。它会产生人为的规律,造成误导。如果每个时间序列都没有间隙,则是理想的。然而,在实践中,许多时间序列都有大或小的缺失。如果我们在pca分析中丢弃有间隙的站点,我们将丢失许多站点,有时甚至是大多数站点。如何填补这一空白并不容易,仍然是一个悬而未决的问题。如果任务是“regional filtering”,即时间序列以高频共模误差为主,台站对cme的响应相似。在这种情况下,pca程序使用“叠加”值来填补空白。如果任务是“tectonic signal”,这意味着时间序列中的模式是由构造信号控制的,每个站点的构造信号可能会有一到两个数量级的差异。在这种情况下,pca程序首先将平滑的平均值分配给缺失值。然后进行pca分析。然后利用第一主成分时间序列和台站响应重新填补空白。在此过程之后,重新进行主成分分析,以获得更新的主成分和台站响应。利用更新后的第一主成分及其相应的台站响应来重新填补空白。*
  adj_6par option:                    no
*%如果答案是“是”,程序将在执行PCA分析之前为每个时间序列调整6个参数(偏差、趋势、周年和半周年)。一般来说,时间序列还有其他信号,比如跳跃。我们建议用户使用analyze_tseri来删除6个参数和其他不相关的信号(如跳跃)。然后使用残差时间序列(analyze_tseri程序的输出)作为pca程序的输入文件。在这种情况下,应关闭adj_6par选项。*
 outlier_sigma criterion (enu, mm):  30.0 30.0 50.0
  outlier_value criterion (enu, mm):  200.0 200.0 300.0
  minimum data percentage (cut_p):    30.0
  minimum sites for each epoch (cut_t,percentage):   15.0
  reference frame:                   WGS84
  reference coordinate, rtime:       geodetic 2013
c  iteration number:                  4
  end: 
  exit:

  1. 准备上述驱动文件中提到的先验文件coordinate.solutn、输入文件(analyze_tseri模块的残差文件)、pca.site、pca_data.list文件,分别为:
    (1). 先验文件coordinate.solutn,是在analyze_tseri模块运行完之后在输出文件中提取的更新后的先验文件(在analyze_tseri模块介绍中会介绍如何生成)
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第2张图片
    (2).输入文件(analyze_tseri模块的残差文件)
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第3张图片
    (3).pca.site
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第4张图片
    (4).pca_data.list
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第5张图片
    设置好驱动文件和前期准备文件即可运行pca pca.drv ,生成的文件有: pca.out、 pca.cpt、 pca.res、 pca.seign文件,分别为:
    (1)pca.out
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第6张图片
    (2) pca.cpt
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第7张图片
    (3)pca.res
    [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第8张图片
    (4) pca.seign[QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析_第9张图片

为了方便后面解算完成提取各个测站的信息,在工程目录下运行完pca之后,再利用以下脚本分别新建文件夹,在利用脚本提取信息,现贴出各脚本,其功能在脚本中均有注释。
(1)

declare -a sites=(AQSS AQWJ AQYX CZLA CZMG CZTC FYFN FYJS HBSX HSQM LAHQ LAHS MASM SZDS SZDS SZLB WHWH XCJD XCLX XCNG)
for (( i=0 ; i<18 ; i++ ))
do  
 mkdir ${sites[$i]}
 chmod 777 ${sites[$i]}
 cp -r pca.cpt ./${sites[$i]}
 cp -r pca.out ./${sites[$i]}
 cp -r pca.res ./${sites[$i]}
 cp -r pca.seign ./${sites[$i]}
 cd ${sites[$i]}
 chmod 777 pca*
 cd ../
done

(2)

#从pca.seign提取前三阶主成分对应的标准化特征向量

declare -a sites=(AQSS AQWJ AQYX CZLA CZMG CZTC FYFN FYJS HBSX HSQM LAHQ LAHS MASM SZDS SZDS SZLB WHWH XCJD XCLX XCNG)
for (( i=0 ; i<18 ; i++ ))
do 
  cp ${sites[$i]}/pca.seign pca.seign
  sed -i '/*/d' pca.seign                  #删除含有“*”的那一行
  echo ${sites[$i]} >> 1st2nd3rd_eVector.txt
  cat pca.seign | awk '{print $3 " " $4 " " $5 " " $6}' >> 1st2nd3rd_eVector.txt
  rm pca.seign
done

(3)

#列出前三阶主成分特征值占总特征值的百分比

echo '1st order' >> 1st2nd3rd_per.txt
grep '   1   ' pca.out >> 1st2nd3rd_per.txt

echo '2nd order' >> 1st2nd3rd_per.txt
grep '   2   ' pca.out >> 1st2nd3rd_per.txt

echo '3rd order' >> 1st2nd3rd_per.txt
grep '   3   ' pca.out >> 1st2nd3rd_per.txt

(4)

#!/bin/bash
#从滤波后残差序列输出文件pca.res中提取各站的cme序列
mkdir cme
mkdir filtered
mkdir unfiltered
declare -a sites=(AQSS AQWJ AQYX CZLA CZMG CZTC FYFN FYJS HBSX HSQM LAHQ LAHS MASM SZDS SZDS SZLB WHWH XCJD XCLX XCNG)
for (( i=0 ; i<18 ; i++ ))
do  
  cd ${sites[$i]}
  grep ${sites[$i]}_GPS pca.res >> ${sites[$i]}_temp.txt

  grep north ${sites[$i]}_temp.txt | awk '{print $1 " " $4}' >> ${sites[$i]}_n_cme.txt
  grep east_ ${sites[$i]}_temp.txt | awk '{print $4}'        >> ${sites[$i]}_e_cme.txt
  grep  up__ ${sites[$i]}_temp.txt | awk '{print $4}'        >> ${sites[$i]}_u_cme.txt          #cme序列
  paste -d" " ${sites[$i]}_n_cme.txt ${sites[$i]}_e_cme.txt ${sites[$i]}_u_cme.txt >> ${sites[$i]}_cme.txt
  mv ${sites[$i]}_cme.txt ../cme

  grep north ${sites[$i]}_temp.txt | awk '{print $1 " " $3}' >> ${sites[$i]}_n_filtered.txt
  grep east_ ${sites[$i]}_temp.txt | awk '{print $3}'        >> ${sites[$i]}_e_filtered.txt
  grep  up__ ${sites[$i]}_temp.txt | awk '{print $3}'        >> ${sites[$i]}_u_filtered.txt     #滤波后的残差序列
  paste -d" " ${sites[$i]}_n_filtered.txt ${sites[$i]}_e_filtered.txt ${sites[$i]}_u_filtered.txt >> ${sites[$i]}_filtered.txt
  mv ${sites[$i]}_filtered.txt ../filtered

  grep north ${sites[$i]}_temp.txt | awk '{print $1 " " $2}' >> ${sites[$i]}_n_unfiltered.txt
  grep east_ ${sites[$i]}_temp.txt | awk '{print $2}'        >> ${sites[$i]}_e_unfiltered.txt
  grep  up__ ${sites[$i]}_temp.txt | awk '{print $2}'        >> ${sites[$i]}_u_unfiltered.txt   #滤波前的序列
  paste -d" " ${sites[$i]}_n_unfiltered.txt ${sites[$i]}_e_unfiltered.txt ${sites[$i]}_u_unfiltered.txt >> ${sites[$i]}_unfiltered.txt
  mv ${sites[$i]}_unfiltered.txt ../unfiltered

  rm *.txt
  cd ..
done

参考文献:
[1]纪海源. 基于GAMIT/GLOBK与QOCA的汾渭断陷带地壳运动研究[D]. 西安科技大学, 2014.
[2]QOCA官网online toturing
感谢昆明理工大学李建涛师兄提供的学习材料

你可能感兴趣的:(其他笔记)