В программе Work Scan сделана попытка соединить достоинства интерактивных и автоматических систем обработки.
Программа Work Scan реализована на языке C++ в операционной системе Win32. Она предназначена для обработки и графического представления массива одномерных сканов(векторов). Эта программа разработана в группе солнечных исследований на РАТАН-600. Поэтому часть функций обработки и некоторые поля структур с данными специфичны для обработки Солнца.
Программа обработки Work Scan реализована в среде Win32 на языке C++ с поддержкой Drag&Drop для загружаемых данных. Хранение данных в программе реализовано двухпроходной очередью динамически создаваемых структур. Каждая структура содержит данные наблюдений на одной частоте (в общем случае два ряда данных) и необходимую информацию для их обработки. На каждый массив с данными (Data) создается рабочий массив (Work) с копией этих данных. Все функции обработки производятся над данными массивов Work (массив должен быть видимым, т.е. отмечен [checked] галочкой в меню View=>Set View. Перед любой модификацией массива Data программа выводит предупреждающее сообщение с возможностью отменить данную операцию. Помимо самой очереди, в программе создается список всех ее структур с данными. Во время обработки это дает возможность перемещаться не только между соседними структурами (сканами) очереди с помощью кнопок Ь и Ю, но и непосредственно к любому выбранному скану из списка с помощью двойного щелчка мыши.(см.рис. 1)
Рис.1 Общий
вид окна программы
При работе программы Work Scan в окне отображения можно показать любой выбранный скан, его часть или выбранную группу сканов. (в общем случае “скан” состоит из двух последовательностей данных, описывающих состояние поляризации радиоизлучения R и L, каждая из которых, в свою очередь, представлена двумя массивами [Data, Work]). При этом слева и справа от скана будут отображаться шкалы отсчетов для разных поляризаций.
Если курсор находится в окне отображения, то, при нажатии левой кнопки мыши, в строке состояния отображается номер отсчета массива соответствующий положению курсора, координата курсора относительно центрального значения массива (для Солнца- относительно его центра) в единицах измерения горизонтальной шкалы, значения отсчетов положения курсора в единицах вертикальных шкал. При двойном нажатии левой клавиши мыши, при видимом окне ”Local Graph”, в данном окне отображается спектр значений соответствующий положению курсора.
С помощью горизонтального перемещения курсора в окне отображения, при нажатой правой клавиши мыши, можно выбрать участок скана для более детального представления. При этом в строке состояния будет отображаться размер выделенного участка скана.
При обработке конкретного скана “кнопка состояния работы с группой” должна быть в положении “One”. Для работы с группой сканов или со всеми сканами “кнопка состояния работы с группой” должна быть в положении “All”.Выбор группы сканов производится через функцию меню View=>Scan Group. Повторный выбор данной функции отменяет выбор группы. Все операции с группой производятся с массивами одинаковой размерности и одинаковым шагом между отсчетами. Если загруженные данные (сканы) имеют разные размерности массивов или шаги между отсчетов, то с помощью функций меню Transform их можно привести к одинаковой размерности и шагу.
Основными функциями обработки реализованными в программе являются:
Во время работы программа Work Scan использует следующие служебные файлы:
tab_sun.dat,
sh-fits.cfg,
diagram.dat,
corlogta.dat,
gvi_soho.dat,
bitmap3d.pal.
Данные файлы должны находится в
каталоге основной программы.
sh-fits.cfg
-файл, описывающий параметры диаграммы и антенны. используется для перехода
от антенных температур к потокам (функции меню Full
Flux Gauss Flux) Это текстовый файл,
который имеет следующую структуру:
|
Frq - частота
в [GHz],
Coeff2 - коэффициент перевода антенных температур в поток радиоизлучения, Tqsun - антенная температура спокойного Солнца на данной частоте в [К] Theta - полуширина диаграммы направленности, Tann - шумовая температура антенны в [K]. |
diagram.dat
– файл шаблона диаграммы
телескопа. Используется для вычисления шаблона спокойного Солнца в функции
Calc=>Sun
Template.
45 6 15
|
JASC-PAL
0100
256
r0 g0 b0
r1 g1 b1
………
r255 g255 b255
Программа Work Scan поддерживает четыре формата записи данных. Один формат служит для автосохранения данных во время работы программы. Он может также использоваться для сохранения промежуточных рабочих файлов. Файлы данного формата имеют расширение wsf. Остальные форматы близки по форме или полностью соответствуют FITSстандарту. Реализованы два различных подхода к структуре загружаемых данных:
Это формат для хранения одного скана с наблюдениями в отдельном файле. Он не соответствует FITS- стандарту, но похож по структуре. Т.е. имеет FITS-образный заголовок после которого идут данные. Программа Work Scan не сохраняет данные в этом формате. Ниже приводится структура файла.
SIMPLE = F / FILE DOES NOT CONFORM
TO FITS STANDARD
BITPIX = 16 / INTEGER WITH '(I2)'
FORMAT
NAXIS = 1 / NUMBER OF DATA AXES
NAXIS1 = short / LENGTH
OF DATA AXIS 1
PMCSUN = float / POST
MERIDIUM CENTER
DATE-OBS= 'dd/mm/gggg' /
TIME-OBS= 'hh:mm:ss.sss' / UT
OBJECT = 'Object' /
TELESCOP= 'Telescope' /
ORIGIN = 'Origin' /
RADIUS = short / OPTICAL
SOLAR RADIUS (ARCSECOND)
AZIMUTH = float / Azimuth
of observ.
ALTITUDE= float / Altitude
of source
ANGLE = float / Angle
of decl.
CDELT1 = float / ARCSEC
N_POLAR = 2 / NUMBER OF POLARIZATIONS
[1 or 2]
CALIBR = 0 / FLAG OF CALIBRATION
[ 0-NO 1-YES ]
FLAG_IV = 1 / IF 1 => R,L; IF
0 => I,V
COMMENT TQSUN - TEMPERATURE
OF A SURFACE OF THE QUIET SUN AGREED WITH THE COMMENT FORM OF THE DIAGRAM
OF A ANTENNA AND KOEF. OF TRANSITION TO FLUX END
OBS-FREQ= float / GHz
THETA-DG= float / DIMENSION
OF DIAGRAMM (ARCSECOND)
TQSUN = short / Ta[K]
FLUX_L = float / KOEF.
Ta[K] -> FLUX[S.F.U.]
END
POLARIZ = 1 / IF 1 - (R or R+L),
IF 0- (L or R_L)
BSCALE = float /
BZERO = float /
END
data set\r\n
POLARIZ = 0 / IF 1 - (R or R+L),
IF 0- (L or R_L)
BSCALE = float /
BZERO = float /
END
data set\r\n
Описание отдельных полей:
BITPIX - разрешенные значения поля 16 и 64. Если значение поля равно 16 тип записи данных - short (в системе Intel x86);если значение поля равно 64 тип записи short (в текстовом виде, под число отводится 8 байт)
PMCSUN - центральная точка массива(ов) измеряемая в номерах отсчетов от начала записи.
N_POLAR если значение поля равно 1 из файла считывается только первый массив данных. Второго может и не быть.
Формат хранения одного скана наблюдений.
Данный формат соответствует FITS- стандарту. Он является основным форматом программы. Файл данного формата имеет следующую структурузаголовка:
SIMPLE = T / FILE DOES CONFORM
TO FITS STANDARD
BITPIX = 64 / INTEGER WITH '(I8)'
FORMAT
NAXIS = 2 / NUMBER OF DATA AXES
NAXIS1 = short / LENGTH
OF DATA AXIS 1
NAXIS2 = 2 / LENGTH OF DATA
AXIS 2
PMCSUN = float / POST
MERIDIUM CENTER
DATE-OBS= 'gggg/mm/dd' /
TIME-OBS= 'hh:mm:ss.sss' / UT
OBJECT = 'Object' /
TELESCOP= 'Telescope' /
ORIGIN = 'Origin' /
RADIUS = short / OPTICAL
SOLAR RADIUS (ARCSECOND)
AZIMUTH = float / Azimuth
of observ.
ALTITUDE= float / Altitude
of source
ANGLE = float / Angle
of decl.
CDELT1 = float / ARCSEC
POLARSET= 1 / SET1: IF 1 (R
or R+L), IF 0 (L or R-L)
CALIBR = 0 / FLAG OF CALIBRATION
[ 0-NO 1-YES ]
FLAG_IV = 1 / IF 1 => R,L; IF
0 => I,V
COMMENT TQSUN - TEMPERATURE
OF A SURFACE OF THE QUIET SUN AGREED WITH THE
COMMENT FORM OF THE DIAGRAM
OF A ANTENNA AND KOEF. OF TRANSITION TO FLUX
OBS-FREQ= float / GHz
THETA-DG= float / DIMENSION
OF DIAGRAMM (ARCSECOND)
TQSUN = short / Ta[K]
FLUX_L = float / KOEF.
Ta[K] -> Intensity[Jy/arc.sec.]
BSCALE1 = float /
BZERO1 = float /
BSCALE2 = float /
BZERO2 = float /
END
Описание отдельных полей:
BITPIX - разрешенные значения поля 16 и 64. Если значение поля равно 16 тип записи данных - short (binary); если значение поля равно 64 тип записи short (в текстовом виде, под число отводится 8 байт)
PMCSUN - центральная точка массива(ов) измеряемая в номерах отсчетов от начала записи.
POLARSET - поле описывающее поляризацию первого массива данных.
Формат хранения группы сканов.
Данный формат является расширением FITS- формата (BINARY TABLE). Он служит для хранения группы сканов в одном файле. В данном формате сохраняется не только любая группа сканов, но и выделенный участок записи.
Файл имеет следующую структуру заголовка:
SIMPLE = T /
BITPIX = 16 /
NAXIS = 0 /
EXTEND = T /
COMENT This table contains the
set (TFIELDS) of 1-dimensional (TFORM#
COMENT and TDIM#) full disk
scans of the Sun at microwaves (TTYPE#)
COMENT ........
HISTORY This FITS file was created
by the 'Work Scan' task.
END
XTENSION= 'BINTABLE' /
BITPIX = 8 /
NAXIS = 2 /
NAXIS1 = long /
NAXIS2 = 1 /
PCOUNT = 0 /
GCOUNT = 1 /
TFIELDS = short /
EXTNAME = 'SELECTED SOLAR RADIO
SCANS' /
EXTVER = 1 /
DATE = 'dd/mm/gg' /
ORIGIN = 'Origin' /
TELESCOP= 'Telescope' /
INSTRUME= 'Instrument' /
DATE_OBS= 'gggg-mm-ddThh:mm:ss.sss'
/
SCI_OBJ = 'SYNOPTIC GROUND BASED
DATA FOR SOHO' /
SCI_SPEC= 'MICROWAVE OBSERVATIONS'
/
OBJECT = 'Object' /
AZIMUTH = float /
ALTITUDE= float /
CENTRE_X= float /
XSCALE = float /
ANGLE = float /
SOLAR_R = float /
BUNIT = 'JY/ARCSEC' /
TFORMi = 'shortI'
/
TDIMi = '(shortI)'
/
TTYPEi = 'FREQUENCY float
GHZ xxx' / xxx - (R or L or R+L or R-L)
TSCALi = float
/
TZEROi = float
/
END
CENTRE_X - центральная точка массивов в единицах шкалы абсцисс (от начала записи)
Панель инструментов (ToolBar) содержит следующие управляющие элементы:
1 2 3
4 5 6
7 8 9
10
1.Загрузка файла с данными
в программу
2. Сохранение массива(ов)
Data
3.Сохранение массива(ов)
Work
4. Выбор работы с группой(“One”
, “All”)
5.Переход к соседнему скану
6.Показ всего скана
7.Настройка
8.Переход к соседнему скану
9.Печать содержимого окна
отображения
10. Запуск на выполнение
списка команд
В панели инструментов видимы только активные кнопки.
Главное меню программы состоит
из следующих полей:
File Scan TransformCalcViewSpec.FuncScriptHelp
Ниже приводится полный список
функций меню.
File
|
Open Загрузка
файла с данными.
Append... Добавление в программу файлов с данными.
Print... Печать содержимого окна отображения. Export...Сохранение содержимого окна отображения в WMF или PS форматах. Set InitDirДиалог настройки переменных программы. Script Edit... Редактирование файла скриптов Run file.exe Запуск выполнения внешней программы. |
|||||||||
Scan
|
Data->Wrksh Копирование
содержимого массива Data
в массив Work.
Wrksh->Data Копирование содержимого массива Work в массив Data.
|
|||||||||
Comm.List… Создание
списка часто повторяющихся операций.
PopUp Menu…Конфигурация всплывающего меню. Delete Удаление активного скана. |
||||||||||
Transform
|
Move Scan Сдвиг
активного скана относительно остальных (только в группе сканов).
Equal Length Приведение всех сканов к одинаковой длине массивов. Equal Step Приведение всех сканов к одинаковому шагу между элементами массивов(минимальному) и одинаковой длине массивов Scan sub scan Вычитание одного скана(даты) из остальных сканов(дат). Center Sun Нахождение центральных значений сканов и приведение сканов к одной длине. Group scan min Вычисление нижней огибающей группы сканов. Group scan aver Вычисление среднего скана из группы сканов. |
|||||||||
Calc
|
Full FluxВычисление
полного потока выделенного участка массива.
Correlation Вычисление коэффициента корреляции между выделенными участками разных сканов. Sigma Вычисление AMD дисперсии выделенного участка массива. Surf3DВычисление матрицы для представления группы сканов (Surf, Contour). Local spectrum Построение спектра выделенных позиций на скане. Spectral lineАнализ выделенного участка скана на спектральные линии. Magnetic Field Вычисление напряженностей магнитного поля на выделенном участке скана по третьей гармонике гирочастоты (3570/lcr). Sun Template Построение шаблона “спокойного” солнца. FITS convolutionВставка двумерного изображения (белый свет, рентген, магнетограмма и т.п.) и свертка его с диаграммой РАТАН. |
|||||||||
View
|
Choice ScaleДиалог
выбора участка массива для показа(работы).
Choice Path Окно демонстрации выбранного участка относительно всего массива. Local GraphПоказ окна для демонстрации спектров.
Scan header Показ заголовка активного скана. Gauss Param Вывод в окно редактора параметров гауссиан(после гаусс- анализа). |
|||||||||
Spec.Func
|
выпадающее меню (инициализируется
подключаемой DLL)
|
|||||||||
Script | выпадающее меню (инициализируется файлами каталога Script) | |||||||||
Help | Main helpВызов
HELP-файла
по работе с программой Work Scan
About... Cancel Отмена выполнения функций с блокировками сообщений. |
ОПИСАНИЕ НЕКОТОРЫХ ФУНКЦИЙ МЕНЮ
Диалог настройки программы
Work
Scan
Общий вид диалоговой панелии
описание полей:
Flux Units – строка
для вывода в текстовый редактор,
X axis Units – символ
для обозначения единиц оси X,
Sun flux time – время
получения полных потоков в часах,
Flux Koef.–
коэффициент на который домножаются вычисляемые потоки,
Noise level – уровень шумов
(используется некоторыми функциями),
Min Yaxis scale I(V) – минимальный
размер соответствующей шкалы в отсчетах,
Autosave time(min) – промежуток
времени автосахранения состояния программы,
Vert. Beam Koef.- коэффициент
для вычисления вертикальной диаграммы по формуле:
qhor[arc sec] = HBK / Frq [GHz]
Директорий файлов с полными потоками и время получения
полных потоков используется при калибровке сканов Солнца с помощью меню
Scan=>Correction=>CalibrFlux
Обе функции работают с парами элементов массивов симметричными относительно центрального значения (поле PMCSUNили CENTRE_X в файлах с данными).
Функция Min rel.Csun заменяет элементы участка массива отображенном на экране на минимальное значение получаемое при сравнении этих элементов с симметричными.
Функция Copy rel.Csun копирует отображенный участок массива на место симметричного участка.
Функция запрашивает параметр равный одному из следующих значений:
0 - значение постоянной составляющей вычисляется как среднее между десятью первыми и десятью последними элементами массива;
1 - значение постоянной составляющей вычисляется как среднее между десятью последними элементами массива;
2 - значение постоянной составляющей вычисляется как среднее между десятью первыми элементами массива;
3 - значение постоянной составляющей вычисляется как среднее между десятью центральными элементами участка массива изображенного на экране;
Функция автоматической коррекции переключения усиления.
После вызова функции нужно указать курсором (с помощью двойного щелчка левой клавиши мыши) место переключения на участке скана отображенного на экране
Функция вычисляет коэффициент изменения усиления и умножает на него все элементы массива правее указанного места переключения. Вычисление коэффициента осуществляется из условия аппроксимации участка из пяти точек массива в месте переключения линейной функцией.
Функция заменяет массив Work гауссианой вычисляя ее параметры из симметричных участков относительно центра Солнца(Луны) удаленных на 1.2 и 1.5 радиуса. Используется для удаления широкой составляющей записи связанной с боковыми лепестками диаграммы направленности.
Scan=>Correction=>Center Vscan
Итерационное вычисление положения центра Солнца(Луны)
активного скана. Если происходит работа с группой сканов функция присваивает
найденное значение всем сканам группы. Вычисление осуществляется из условия
равенства производных скана на краях записи объекта.
В функциях Gauss
и
Median
при задании отрицательного
значения окно сглаживания вычисляется для каждого скана как произведение
модуля введенного значения и полуширины диаграммы направленности на данной
частоте.
Quiet Sun Ta после вызова функции нужно с помощью курсора (двойной щелчок левой клавиши мыши) указать в окне отображения точку , которой будет сопоставляться табличное значение антенной температуры спокойного солнца на данной волне (sh-fits.cfg). Функция отслеживает только вертикальную координату курсора. Уровень спокойного солнца на каждой волне указывается отдельно.
Quiet
Point Ta после вызова функции нужно с помощью курсора (двойной
щелчок левой клавиши мыши) указать на скане точку, которой будет сопоставляться
табличное значение температуры спокойного солнца на данной волне (sh-fits.cfg).
Функция отслеживает горизонтальную координату курсора, из которой
вычисляется номер точки на скане с табличной температурой.
Full Flux.
Для ее работы надо создать в основном директории [см.
File=>Set
InitDir] поддиректории с именами
<год (пример 1990)>
в которых должны находиться файлы с данными потоков за месяц с именами
<месяц(3буквы).год(2цифры) (пример
aug.92)>.
Функция считает интеграл от скана (в интенсивности) и
масштабирует скан таким образом, чтобы этот интеграл равнялся интерполированному
потоку на данной волне в в данный момент времени. Интерполяция по времени-
линейная, а по частоте- кубическими сплайнами с условиями на гладкость.
При приравнивании учитывается, что на коротких волнах
вертикальная диаграмма РАТАН захватывает не все Солнце, а только часть.
Для этого используется коэффициент (из файла tab_sun.dat-[Боровик
В.Н.]), который показывает, какую часть потока мы загребаем вертикальной
диаграммой.
Формат файлов с данными потоков:
Дата поток1 поток2 поток3 поток4 [поток 5]
Пример файла:
1995 | 1000 | 2000 | 3750 | 9400 | 17000 |
APR | MHz | MHz | MHz | MHz | MHz |
1 | 51. | 58. | 74. | 271. | 575. |
2 | 50. | 57. | 73. | 270. | 574. |
3 | 48. | 57. | 74. | 271. | 572. |
4 | 48. | 57. | 74. | 270. | 574. |
Black bodyПеред запуском функции надо участок скана с калибровочной ступенькой отобразить на экране (в крупном масштабе).Функция запрашивает значение температуры калибровочной ступеньки.
чтобы перейти от антенных температур к потокам, используется таблица коэффициентов, полученная с помощью измерений по крабу (Коржавин А.Н.)
F_источника= интеграл (по источнику) * коэфф2
(из файла sh-fits.cfg)
Скан предварительно должен быть откалиброван.
Функция аппроксимирует выделенный участок скана набором гауссиан. При выполнении функции, через окно диалога, запрашивается три параметра.
Общее количество гауссиан
К-во гауссиан, положение которых будет указано курсором Аппроксимация фона кубическим сплайном |
__________ | |
Qclear=Ц | Q2vis-Q2hor |
Для вычисления матрицы двумерного представления (Surf, Contour)
спектров сканов надо выделить группу сканов (функция
View=>Scan Group) или нажать кнопку ALL.
При выборе функции появляется диалоговое
окно, в котором надо указать формат файла вывода (BMP, FITS или ASCII)
и другие параметры. При создании BMP файла используется палитра
из файлаbitmap3d.palили
другого, указанного в File=>SetInitDir=>3D Palette File
Во время вычислений критической длины волны при построении спектров поляризаций все значения меньше заданного уровня шумов заменяются нулями. Если вводимое значение минимальной поляризации отрицательное, то минимум поляризации вычисляется как произведение модуля введенного значения и заданного уровня шумов.
При загрузке двумерного изображения (белый свет, рентген, магнетограмма и т.п.) запрашивается три параметра- 1)уровень шумов карты (для свертки с диаграммой РАТАН), 2)знак позиционного угла (для поворота карты на угол, под которым диаграмма РАТАН сканирует Солнце в день наблюдения) и 3)уровень нуля для прорисовки карты в окне отображения. Рабочий массив (Worksheet) заменяется результатом свертки карты с диаграммой РАТАН. Последнее пустое окошко в Toolbar предназначено для задания смещения двумерного изображения по вертикали (в пикселах).
Построение шаблона “спокойного” солнца. Шаблон в виде круга, с поправкой
на уярчение к краю и экваториальную активность умножается на коэффициент
солнечной активности. В зависимости от выбора метода активности поправка
(которая берется равной 1 на волне 2 см), интерполируется на другие волны.
Поиск спектральных линий. Первый параметр задает отношение амплитуд на частоте линии и соседних частотах. Первая галочка опрделяет, в каких единицах ищется линия- в антенных температурах (К) или интенсивности (Ян). Вторая галочка определяет, от какого уровня отсчитываетчя амплитуда линии- от нуля или от табличного значения антенной температуры Солнца на данной волне (значения берутся из файла sh-fits.cfg).
Функция выбора группы сканов для демонстрации и работы. При вызове функции появляется следующее окно диалога.
Выбор способа представления группы сканов (см. функцию
Scan
Group)
Диалог основных настроек окна отображения.
Общий вид окна и описание полей следующие.
Окна редактирования - если первый
символ -%, программа
отображает собственные заголовки рисунка и осей, иначе отображается содержимое
окон редактора.
Frq - отображение в списке длин волн при работе с группой Date - отображение в списке дат при работе с группой Time - отображение в списке дат и длин волн View list - показ списка при работе с группой Color -включение цветного отображения сканов Fits Image - показ подгруженного двумерного изображения List(in/out) -
отображение списка внутри или снаружи рисунка со сканами
View Scale -
показ оцифровки шкал
Show scans Intensity Data - отображение массива Data первой (R , R+L) поляризации Intensity worksheet - отображение массива Work первой (R , R+L) поляризации Polarization Data - отображение массива Data второй (L , R-L) поляризации Polarization worksheet - отображение массива Work второй (L , R-L) поляризации View <All> Message - отображение предупреждающего сообщения при работе с группой. |
Spec.Func
Выпадающее меню инициализируемое при подключении динамических библиотек функций находящихся в подкаталоге STARTUP. Интерфейс подключения библиотек подробно описан в пункте .ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ. По умолчанию в подкаталоге находится динамическая библиотека smoothfn.dll содержащая функции расчета нелинейного фона разработанные В.С. Шергиным и Б.Л. Ерухимовым.
Выпадающее меню которое инициализируется
при подключении скриптов из каталога Script. Имя каталога может
быть изменено через диалог настройки программы File=>Set
InitDir. Элементы меню называются
именами файлов (без расширения spt) из указанного каталога. Файлы
скриптов имеют структуру, подобную файлам для пакетной обработки, но состоят
только из секции [Commands]. Указанные команды выполняются только над уже
загруженными данными.
step1.spt
[Commands] FlagAllScan=1 ViewWorkI=1 ViewWorkV=1 IVtoRL=1 ViewDataI=0 ViewDataV=0 FindScanGreatGHz=10 CalibrQuietSunTa CalcCenterVscan=1 |
step2.spt
[Commands] FlagAllScan=1 SetRangeRSun=-2.5 2.3 SubTailOfScan=3 ViewFullScan IVtoRL=1 MedianSmooth=12 GaussSmooth=-0.3 FindScanGreatGHz=4 CalibrQuietSunTa |
step3.spt
[Commands] ;ViewScansGroup=3 #0.955 0.985 1.015 1.045 1.670 ViewRangeGroup=3 0.955 1.6 FlagAllScan=1 MoveScan=-100 ViewScansGroup=0 CopyWorkSheetToData SetRangeRSun=-2 2 ViewCenterSun=1 ViewScanList=1 |
step3.spt
[Commands] FlagAllScan=1 ViewFullScan CorrAutoMoveLR CopyWorkSheetToData SetRangeRSun=-2 2 |
step4.spt
[Commands] ViewScansGroup=3 #1.015 1.95 2.95 4.27 6.95 10.35 14.25 15.65 ViewScanList=1 XScanList=1 ViewDigitFrame=1 |
В программе реализована функция пакетной обработки файлов. Для этого нужно создать файл сценария обработки с расширением pkf и загрузить его через меню File=>Load PackFile или как параметр командной строки: scanwrk.exe –pk filename.pkf.
Файл сценария имеет следующую структуру:
[Init]
AppHide=1 ;если значение
равно 1 приложение не отображает главное окно.
AppExit=1 ;если
значение равно 1 приложение закрывается после завершения пакетной обработки.
OutFile=MyLog.txt
; имя log файла
OutPrefix=p_ ;
префикс
создаваемых файлов, если явно не задано имя
FileMask=*.* ;
маска
обрабатываемых файлов, если значение не задано, то обрабатываются файлы
из [Files]
OutDir=c:\out
;
директорий, где
сохраняются полученные результаты.
InDir=c:\in ; директорий,
где располагаются входные файлы
[Files] – список
входных файлов, если не задано значение FileMask
file1.wsf
file2.fit
file3.0hd
[Commands] – список выполняемых команд.
Command1
Command2
…………..
CommandN
Примеры пакетных файлов:
файл line.pkf
[Init] AppHide=1 AppExit=0 OutFile=Log.txt OutPrefix=p_ FileMask=*.fit OutDir=d:\2000 InDir=d:\2000 [Commands]
|
файл my_pack.pkf
|
Список возможных команд
Команда имеет следующий формат Command=arg1 arg2 arg3 arg4 #ExtString, где
arg1 arg2 arg3 arg4 –возможные числовые аргументы команды
#ExtString –возможное строковое значение команды, если задано строка начинается #%sExtString, то выходная строка будет иметь следующий вид: ВходнойФайлExtString
Если команда начинается со
знака + , то данная команда будет выполнена при успешном результате
последней из следующих выполненных команд: FindScanGreatGHz, FindScanGHz
.
Command | Menu | Arguments |
DeleteMagField | View~Screen~Delete MagField | |
FindMagField | Calc~Magnetic Field | Arg1-polarization minimum |
FindSpectralLine | Calc~Spectral Line | Agr1-Line Scale; Agr2- Ta or Int; Arg3- Min Scale |
NonLinearReg | Scan~Correction~Non-linear reg | |
QuietPointTa | Scan~Calibration~Quiet Point Ta | |
SaveWorkSpace | File~Save~WorkSpace | ExtString- Output file name |
CorrAutoMoveLR | Scan~Correction~Auto move LR | |
EqNull | Scan~Modification~Eq.Null | Arg1- 0 or 1 |
GroupScanMin | Transform~Group scan min | |
GroupScanAver | Transform~Group scan aver | |
MinRelCsun | Scan~Modification~Min rel Csun | |
CopyRelCsun | Scan~Modification~Copy rel Csun | |
CalcSigma | Calc~Sigma | |
CalcCenterVscan | Scan~Correction~Center Vscan | Arg1- 0 or 1 |
ScanSubScan | Transform~Scan sub scan | |
CalcEqualStep | Transform~Equal Step | |
CorrLineTail | Scan~Correction~Line tail | Arg1- number of points |
CalcCorrelation | Calc~Correlation | Arg1- 0 or 1 |
CorrEqualLength | Transform~Equal Length | |
MoveScan | Move Scan | Arg1- number of points |
CalibrBlackBody | Scan~Calibration~Black body | Arg1- calibration Ta |
CorrOverturn | Scan~Correction~Overturn | |
TaToFlux | Scan~Modification~Ta[K]=>Flux | |
MoveLfromR | Scan~Correction~Move L from R | Arg1- number of points |
CalcCenterSun | Transform~Center Sun | Arg1- 0 or 1 |
CalcWideGauss | Scan~Correction~Wide Gauss | |
ExportPicture | File~Export… | Arg1- width; Arg2- height; Arg3- type(1-eps;3-wmf); Arg4- thick pen #OutFileName |
CalcSurf3D | Calc~Surf3D | Arg1- type(0-ASCII;1-FITS;2-BMP); Arg2- sort(0-wavelength;1-frequensy); Arg3- view header(0 or 1); Arg4- view scan position (0 or 1); #OutFileName |
CalcAbsValue | Scan~Modification~ABS[Wrksh] | |
CorrRLCrossTalk | Scan~Correction~RL Cross-Talk | Arg1- value |
SaveToPirat | File~Wrksh to PIRAT | |
DeleteGauss | View~Screen~Delete Gauss | |
CalcScanDerive | Scan~Modification~Derive | |
CalcScanPolarization | Scan~Modification~Polarization | |
CalcLine | Scan~Modification~Line | |
CalibrFullFlux | Scan~Calibration~Full Flux | |
CalibrQuietSunTa | Scan~Calibration~Quiet Point Ta | |
CalcFullFlux | Calc~Full Flux | |
GaussAnaliz | Calc~Gauss Flux | Arg1- gaussian number; Arg2- flag background( 0 or 1) |
ScanDelete | Scan~Delete | |
IVtoRL | Scan~Modification~I,V? R,L | Arg1- flag (0 or 1) |
DataSubWorkSheet | Scan~Modification~Data--Wrksh | |
Scan*N | Scan~Wrksh*N | Arg1- N |
Scan+N | Scan~Wrksh+N | Arg1- N |
SubTailOfScan | Scan~Modification~Line tail | Arg1- flag(0-auto;1-right;2-left; 3-center) |
CopyDataToWorkSheet | Scan~Data->Wrksh | |
CopyWorkSheetToData | Scan~Wrksh->Data | |
ViewFullScan | View~Screen~Full scan | |
DataClear | File Clear | |
GaussSmooth | Scan~Smooth~Gauss | Arg1- value [“] |
MedianSmooth | Scan~Smooth~Median | Arg1- value [“] |
TemperatureScaling | ||
SaveData | File~Save~Data | |
SaveWorkSheet | File~Save~WorkSheet | Arg1- type(0-bynary; 1-ascii); Arg2-type(0-header, 1-fits);#OutFileName |
ViewSunDisk | View~Screen~Sun Disk | Arg1- 0-off;1-on |
ViewRangeGroup | View~Scan Group~Scan Group | Arg1-form(0-ungroup,1-group,2-array,3-vert, group); Arg2- min frequency; Arg3- max frequency. |
ReloadIniSection | ||
SetNoiseLevel | File~Set IniDir | Arg1- noise value |
FindScanGreatGHz | Arg1- frequency | |
ViewScansGroup | View~Scan Group~Scan Group | Arg1-form(0-ungroup,1-group,2-array,3-vert, group); Arg2- flag frequency; #list (ex.: #1.2 2.1 3.0 4.5 ) |
ViewFormGroup | View~Scan Group~View Group | Arg1-form(0-ungroup,1-group,2-array,3-vert, group). |
XScanList | View~Set View | Arg1– 0-off, 1-on |
ViewScanList | View~Set View | Arg1– 0-off, 1-on |
ViewData-Gauss | View~Set View | Arg1– 0-off, 1-on |
ViewColor | View~Set View | Arg1– 0-off, 1-on |
ViewFormList | View~Set View | Arg1– flag(1–FrqList; 2-DateList; 3-DateFrqList) |
ViewCenterSun | View~Set View | Arg1– 0-off, 1-on |
ViewEqualScale | View~Screen~Equal Scale | Arg1– 0-off, 1-on |
ViewDigitFrame | View~Screen~Digit Frame | Arg1– 0-off, 1-on |
FindScanGHz | Arg1-frequency | |
SetRangePoint | Arg1-min point; Arg2-max point. | |
SetRangeRSun | Arg1-min point; Arg2-max point. | |
ViewWorkV | View~Set View | Arg1– 0-off, 1-on |
ViewWorkI | View~Set View | Arg1– 0-off, 1-on |
ViewDataV | View~Set View | Arg1– 0-off, 1-on |
ViewDataI | View~Set View | Arg1– 0-off, 1-on |
FlagAllScan | Arg1– 0-off, 1-on |
Во время работы программа Work Scan через элементы меню Spec.Func использует функции находящиеся в динамических библиотеках в подкаталоге STARTUP. Пользователь может подключить к программе Work Scan собственные функции обработки данных создав свою динамическую библиотеку и расположив ее в подкаталоге STARTUP. Для связи с библиотеками программа Work Scan использует структуру SF_INIT и вызовы функций: InitSDllMenu , SelectDllFunction .
Структура SF_INIT
struct SF_INIT
{
int Npix, | //общее количество элементов массива Work |
int nbeg, | //номер начального элемента выделенного участка массива Work |
int nend, | //номер последнего элемента выделенного участка массива Work |
int wParam, | //идентификатор выбранного элемента меню Spec.Func |
int FlagDialog; | //флаг инициализации диалога (при вызове функции равен TRUE) |
char *Object, | //ссылка на строку содержащую объект наблюдения |
char *DateObs, | //ссылка на строку содержащую дату наблюдения |
char *TimeObs; | //ссылка на строку содержащую время наблюдения |
float Frq, | //частота наблюдения |
float noise, | //заданный уровень шумов |
float xdel, | //шаг между отсчетами массива Work |
float *data; | //адрес начального элемента массива Work |
HWND hWnd; | //идентификатор главного окна программы |
LPSTR txt; | //ссылка на текстовый массив (при входе в функцию равен NULL) |
char TitleEd[64]; | //строка для инициализации заголовка окна редактора (пустая) |
};
Если при выходе из функций динамической библиотеки txt не равен NULL, создается окно редактора с заголовком TitleEd и содержимым буфера txt. После этого буфер txt удаляется.
Функция InitSDllMenu
void _export InitSDllMenu(HMENU Menu, int Num); - функция инициализации меню Spec.Func. Вызывается при загрузке программы Work Scan в момент подключения динамической библиотеки. Имеет следующие параметры: Menu - указатель на меню Spec.Func , Num - число необходимое при создании идентификаторов меню.
Пример функции:
void _export InitSDllMenu(HMENU Menu, int Num)
{
HMENU menu=CreatePopupMenu();
AppendMenu(menu,MF_STRING|MF_ENABLED,Num+ID_MENU1,"My
Func1");
AppendMenu(menu,MF_STRING|MF_ENABLED,Num+ID_MENU2,"My
Func2");
AppendMenu(Menu,MF_POPUP|MF_ENABLED,(UINT)menu,"MyDllFunc");
}
Значения собственных идентификаторов (ID_MENU1 и т.п.) должны находится в промежутке от 1 до 99.
Функция SelectDllFunction
void _export SelectDllFunction(HINSTANCE hInst, struct SF_INIT *MyData); - функция вызова функций обработки данных соответствующих выбранному элементу меню Spec.Func. Имеет следующие параметры: hInst - идентификатор модуля Work Scan , MyData - указатель на структуру SF_INIT.
Пример функции:
void _export SelectDllFunction(HINSTANCE hInst, struct SF_INIT *MyData)
{
int Nn,kk;
float *data;
Nn=MyData->nend-MyData->nbeg;
kk=MyData->FlagDialog;
data=MyData->data;
if(kk)
{
DialogBox(...);
MyData->FlagDialog=FALSE;
}
if(MyData->txt==NULL)
{
MyData->txt=new(char[1024]);
strcpy(MyData->TitleEd,’’My
Work’’);
}
kk=MyData->wParam;
switch(kk)
{
case ID_MENU1: MyFunc1(data,
Nn);break;
case ID_MENU2: MyFunc2(MyData);break;
}
}
Утилита (Choosed Scan) позволяет из набора файлов с одиночными сканами наблюдений выделить серию, по любой комбинации следующих признаков (Объект, Дата наблюдения, Время наблюдения, Частота наблюдения), для последующей загрузки в программу Work Scan.
Общий вид окна программы:
Главное окно программы состоит из трех списков(Headers, Temp, Save List)
Headers - список содержащий имена заголовочных файлов. При выделении строки списка в строке состояния отображается количество файлов с данными содержащихся в данном заголовочном файле. Двойной щелчок мыши заполняет список Temp именами файлов с данными содержащимися в данном файле заголовка.
Temp - рабочий список содержащий имена файлов с данными выбранными с помощью функций программы. При выделении строки списка в строке состояния отображаются параметры выбранного файла (Объект, частота, дата и время наблюдения). При двойном щелчке выбранный файл копируется в список Save List.
Save List - список содержащий имена выбранных файлов. Результатом сохранения программы является заголовочный файл содержащий имена файлов данного списка. При двойном щелчке мыши выбранный файл удаляется из списка.
Краткое описание функций элементов меню:
File
Open Загрузка
файлов содержащихся в выбранном каталоге.
Close Удаление
всех данных из программы.
Save List Сохранения
списка выбранных файлов.
Work
Clear Tmp Очистка
содержимого списка Temp
Clear Save Очистка
содержимого списка Save List
Tmp->Save Копирование
содержимого списка Tempв список Save List
Функции выборки данных осуществляются с помощью следующих элементов панели инструментов (ToolBar): списковList1,List2 и кнопки(Global/Local).
Когда кнопка находится в состоянии Global списки List1и List2производят выборки из всех файлов загруженных в программу. При состоянии Localвыборки производятся из содержимого списка Temp.
List1 - содержит следующие поля:
All - заполняет список
Temp именами всех файлов загруженных в программу.
Frequency - заполняет
список List2 имеющимися частотами
Object - заполняет
список List2 имеющимися названиями объектов
Observ.Date -
заполняет
список List2 имеющимися датами наблюдений
Observ.Time -
заполняет
списокList2 имеющимися временами наблюдений
List2 - при выборе
элемента списка, оставляет в списке Temp имена
файлов удовлетворяющие выбранному элементу.