Source
casalog.post( 'Ephemerides '+str(i-1-backstep)+' and '+str(i)+' have overlap of '+str(-gap_to_previous[i])+' steps', 'INFO')
from __future__ import absolute_import
import os
import glob
from casatasks.private.casa_transition import is_CASA6
if is_CASA6:
from casatools import table as tbtool
from casatasks import casalog
else:
from taskinit import *
# Concatenation of ephemeris tables
#
# Example:
# import recipes.ephemerides.concatephem as cce
# cce.concatephem(ephems=['Neptune1.tab', 'Neptune2.tab', 'Neptune3.tab'],
# outputephem='NeptuneAll.tab')
def concatephem(ephems=[], outputephem=''):
"""
concatephem
Concatenate the given ephemeris tables into a single output table
filling gaps with dummy rows and removing overlap rows.
Before concatenation, test that basic conditions are fulfilled:
same time grid, list of input ephemerides is ordered in time.
ephems - List of the ephemeris tables to be concatenated
default:
outputephem - Name of the output ephemeris to be created from the concatenation
If empty, concatephem will only perform a dryrun.
default: ''
"""
mytb = tbtool()
starts = []
ends = []
stepsizes = []
hasoverlap_with_previous = []
gap_to_previous = [] # negative entry means overlap
shouldconcat_with_previous = []
canconcat_with_previous = []
stepsize_rel_tolerance = 1E-6 # relative difference in time step size must be smaller than this
stepsize_abs_tolerance_d = 0.1/86400. # absolute difference in time step size (days) must be smaller than this
for myephem in ephems:
mytb.open(myephem)
mynrows = mytb.nrows()
if mynrows==0:
mytb.close()
casalog.post('Ephemeris '+myephem+' has no rows.', 'SEVERE')
return
mystart = mytb.getcell('MJD',0)
myend = mytb.getcell('MJD', mynrows-1)
if mynrows<2:
mystepsize = 0
casalog.post('Ephemeris '+myephem+' has only one row.', 'WARN')
else:
mystepsize = mytb.getcell('MJD',1) - mystart
mytb.close()