ВВЕДЕНИЕ

ОСНОВНЫЕ КОНЦЕПЦИИ

ОБЩИЕ ПРИНЦИПЫ РАБОТЫ

СЛУЖЕБНЫЕ ФАЙЛЫ

ФОРМАТЫ ЗАПИСИ ДАННЫХ

1. Формат предыдущих версий и конвертора.

2. Формат хранения одного скана наблюдений.

3. Формат хранения группы сканов.

ПАНЕЛЬ ИНСТРУМЕНТОВ (TOOLBAR)

ФУНКЦИИ МЕНЮ

ОПИСАНИЕ НЕКОТОРЫХ ФУНКЦИЙ МЕНЮ

File=>Set InitDir

Scan=>Modification=>Eq. Null

Scan=>Modification=>Min rel.Csun (Copy rel.Csun)

Scan=>Modification=>Line tail

Scan=>Correction=>Change of amplif

Scan=>Correction=>Wide Gauss

Scan=>Correction=>Center Vscan

Scan=>Correction=>Calibr *

Scan=>Smooth=>…

Calc=>Gauss Flux

Calc=>Magnetic Field

View=>Scans Group

View=>Set View

Spec.Func

Script

ПАКЕТНАЯ ОБРАБОТКА ФАЙЛОВ

ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ

Структура SF_INIT

Функция InitSDllMenu

Функция SelectDllFunction

УТИЛИТА ChoosedScan


ВВЕДЕНИЕ

На сегодняшний день интерактивные системы обработки являются основными для наблюдателей. Увеличение количества обрабатываемой информации затрудняет процесс интерактивной обработки. Связано это и с увеличением затрат времени на полный цикл обработки, и с многократностью повторения основных операций обработки. Режим автоматической обработки не может полностью заменить это положение из-за невозможности контроля промежуточных результатов и трудностями алгоритмизации критериев качества данных.

В программе Work Scan  сделана попытка соединить достоинства интерактивных и автоматических систем обработки.

Программа Work Scan  реализована на языке C++ в операционной системе Win32. Она предназначена для обработки и графического представления массива одномерных сканов(векторов). Эта программа разработана в группе солнечных исследований на РАТАН-600. Поэтому часть функций обработки и некоторые поля структур с данными специфичны для обработки Солнца.


ОСНОВНЫЕ КОНЦЕПЦИИ

При создании системы обработки закладывались следующие концепции :

•	наличие графического интерфейса;

•	возможность загрузки любого количества сканов из полученных наблюдений;

•	возможность интерактивной обработки любого скана, любой группы сканов, всех сканов из загруженных;

•	возможность сохранения любых промежуточных результатов;

•	возможность сохранения результатов в общеизвестном формате хранения данных;

•	обратимость операций обработки;

•	возможность представления на экране, получения твердой копии и вывода в общеизвестные графические форматы результатов процесса обработки;

•	открытость для добавления новых функций обработки;


ОСНОВНЫЕ ПРИНЦИПЫ РАБОТЫ

Программа обработки Work Scan реализована в среде Win32 на языке C++ с поддержкой Drag&Drop для загружаемых данных. Хранение данных в программе реализовано двухпроходной очередью динамически создаваемых структур. Каждая структура содержит данные наблюдений на одной частоте (в общем случае два ряда данных) и необходимую информацию для их обработки. На каждый массив с данными (Data) создается рабочий массив (Work) с копией этих данных. Все функции обработки производятся над данными массивов Work (массив должен быть видимым, т.е. отмечен [check] галочкой в меню View=>Set View). Перед любой модификацией массива Data программа выводит предупреждающее сообщение с возможностью отменить данную операцию. Помимо самой очереди, в программе создается список всех ее структур с данными. Во время обработки, это дает возможность перемещаться не только между соседними структурами (сканами) очереди с помощью кнопок ⇐ и ⇒, но и непосредственно к любому выбранному скану из списка с помощью двойного щелчка мыши.(см.рис. 1)

Рис.1 Общий вид окна программы

При работе программы Work Scan  в окне отображения можно показать любой выбранный скан, его часть или выбранную группу сканов. (в общем случае «скан» состоит из двух последовательностей данных, описывающих состояние поляризации радиоизлучения R и L, каждая из которых, в свою очередь, представлена двумя массивами [Data, Work]). При этом слева и справа от скана будут отображаться шкалы отсчетов для разных поляризаций.

0	Если курсор находится в окне отображения, то, при нажатии левой кнопки мыши, в строке состояния отображается номер отсчета массива соответствующий положению курсора, координата курсора относительно центрального значения массива (для Солнца- относительно его центра) в единицах измерения горизонтальной шкалы, значения отсчетов положения курсора в единицах вертикальных шкал. При двойном нажатии левой клавиши мыши, при видимом окне ”Local Graph”, в данном окне отображается спектр значений соответствующий положению курсора.

1	С помощью горизонтального перемещения курсора в окне отображения, при нажатой правой клавиши мыши, можно выбрать участок скана для более детального представления. При этом в строке состояния будет отображаться размер выделенного участка скана.

2	При обработке конкретного скана «кнопка состояния работы с группой» должна быть в положении «One». Для работы с группой сканов или со всеми сканами «кнопка состояния работы с группой» должна быть в положении «All».Выбор группы сканов производится через функцию меню View=>Scan Group. Повторный выбор данной функции отменяет выбор группы. Все операции с группой производятся с массивами одинаковой размерности и одинаковым шагом между отсчетами. Если загруженные данные (сканы) имеют разные размерности массивов или шаги между отсчетов, то с помощью функций меню Transform их можно привести к одинаковой размерности и шагу.

3	Основными функциями обработки реализованными в программе являются:

•	отображение скана(ов) или его(их) фрагмента(ов) в произвольных сочетаниях и масштабах;

•	исправление различных (не фатальных) дефектов записи;

•	свертка с различными сглаживающими фильтрами;

•	центрирование скана по производной на краях Солнца (Луны);

•	центрирование сканов полученных в разное время и с разным временным шагом;

•	получение нижней огибающей или среднего скана по данным наблюдений за несколько дней;

•	простые математические операции над сканами (сложение и умножение на число);

•	оценку ряда параметров локальных источников(ЛИ) радиоизлучения активных образований(АО), таких как одномерная координата, величина потока радиоизлучения, размер источника, с использованием метода гаусс- анализа[1] для разделения радиоизлучения АО на компоненты, соответствующие отдельным ЛИ радиоизлучения.

Любое изображение представленное на экране во время обработки можно вывести на принтер или сохранить в цветном WMF (Windows Metafile) или черно-белом PS (Post Script) форматах.


СЛУЖЕБНЫЕ ФАЙЛЫ

0	Во время работы программа Work Scan использует следующие служебные файлы:

sh-fits.cfg, gvi_soho.dat, tab_sun.dat, corlogta.dat, diagram.dat, bitmap3d.pal. Данные файлы должны находится в каталоге основной программы.

0	sh-fits.cfg -файл описывающий параметры диаграммы и антенны. Это текстовый файл, который имеет следующую структуру:   Frq	Koeff	Tqsun	Theta	Tann, где

Frq -  частота в [GHz],

0	Koeff - коэффициент перевода антенных температур в поток радиоизлучения,

1	Tqsun - яркостная температура спокойного Солнца на данной частоте в [К]

2	Theta - полуширина диаграммы направленности,

3	Tann - шумовая температура антенны в [K].

gvi_soho.dat -файл шаблона полей формата файла для хранения группы сканов. В этот файл можно добавлять дополнительные поля и изменять значения существующих полей до строки начинающейся с символа *.

0	tab_sun.dat -текстовый файл имеющий следующую структуру: Wls	Fqsun	Koeff, где

Wls - длина волны в [см],

0	Fqsun - полный поток спокойного Солнца в солнечных единицах потока [s.f.u.],

1	Koeff - соотношение между вертикальным размером диаграммы и Солнца.

corlogta.dat – файл содержащий коэффициенты для коррекции данных за нелинейность приемной аппаратуры. Файл имеет следующую структуру: Frq	Kf_r	Kf_l, где

Frq – частота в [GHz],

0	Kf_r – коэффициент для коррекции скана с правой поляризацией,

1	Kf_l - коэффициент для коррекции скана с левой поляризацией.

diagram.dat – файл шаблона диаграммы телескопа. Используется для вычисления шаблона спокойного Солнца в функции “Sun Template”.

0	bitmap3d.pal – файл с палитрой для создания BMP-файла в функции “Surf3D”.

Файл имеет следующую структуру:

0	JASC-PAL

1	0100

2	256

3	r0	g0	b0

4	r1	g1	b1

5	………

6	r255	g255	b255


ФОРМАТЫ ЗАПИСИ ДАННЫХ

Программа Work Scan поддерживает четыре формата записи данных. Один формат служит для автосохранения данных во время работы программы. Он может также использоваться для сохранения промежуточных рабочих файлов. Файлы данного формата имеют расширение wsf. Остальные форматы близки по форме или полностью соответствуют FITS стандарту. Реализованы два различных подхода к структуре загружаемых данных:

•	а)Все данные находятся в одном FITS-файле (расширение - BINARY TABLE).

•	б)Каждый скан (в общем случае две поляризации) находится в отдельном файле. На вход программы подается файл со списком имен загружаемых файлов с данными.

1. Формат предыдущих версий и конвертора.

2. Формат хранения одного скана наблюдений.

3. Формат хранения группы сканов.


1. Формат предыдущих версий и конвертора.

Это формат для хранения одного скана с наблюдениями в отдельном файле. Он не соответствует 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 из файла считывается только первый массив данных. Второго может и не быть.


2. Формат хранения одного скана наблюдений.

Данный формат соответствует 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 - поле описывающее поляризацию первого массива данных.


3. Формат хранения группы сканов.

Данный формат является расширением 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)

Панель инструментов (ToolBar) содержит следующие управляющие элементы:

Загрузка файла с данными в программу

Сохранение массива(ов) Data

Сохранение массива(ов) Work

Выбор работы с группой(«One» , «All»)

Переход к соседнему скану

Показ всего скана

Переход к соседнему скану

Печать содержимого окна отображения

Запуск на выполнение списка команд

В панели инструментов видимы только активные кнопки.


ФУНКЦИИ МЕНЮ

Главное меню программы состоит из следующих полей:

[ File | Scan | Transform | Calc | View | Spec.Func | Script |  Help |	Cancel ]

Ниже приводится полный список функций меню.

File

Open	Загрузка файла с данными.

Load WorkSpace	Загрузка файла с промежуточными данными.(wsf)

Load PackFile	Загрузка и выполнение файла пакетной обработки.

Close	Удаление из программы всех загруженных файлов.

Append...	Добавление в программу файлов с данными.

Save	выпадающее подменю

Data	Сохранение массивов Data в исходных файлах (кроме BINATY TABLE)

WorkSheet	Сохранение массивов Work в выбранном формате файлов.

WorkSpace	Сохранение всех данных.

Wrksh to PIRAT	Сохранение загруженных данных в формате программы ‘PIRAT’

Print...	Печать содержимого окна отображения.

Export...	Сохранение содержимого окна отображения в WMF или PS форматах.

Set InitDir	Диалог настройки переменных программы.

Run file.exe	Запуск выполнения внешней программы.

Scan

Data->Wrksh	Копирование содержимого массива Data в массив Work.

Wrksh->Data	Копирование содержимого массива Work в массив Data.

Modification	выпадающее подменю

Data—Wrksh	Замена содержимого массива Work на разность Data-Work.

Wrksh*N	Умножение выделенного участка массива Work на число N.

Wrksh+N	Сложение выделенного участка массива Work с числом N.

Line	Аппроксимация выделенного участка массива Work прямой

Eq. Null	Замена элементов массива не равных нулю на нуль в зависимости от значения флага

ABS(Wrksh)	Вычисление модуля от элементов выделенного участка массива Work.

Derive	Вычисление производной от выделенного участка массива Data.

Polarization	Вычисление локальной степени поляризации (P= V/I*100%).

I,V<=>R,L	Преобразование поляризаций.

Ta[K]=>Flux	Умножение массива Work на коэффициент перевода Ta к потокам.

Min rel.Csun	Вычисление минимума между элементами симметричными относительно центрального значения массива Work.

Copy rel.Csun	Копирование выделенного участка массива Work относительноцентрального значения массива.

Line tail	Вычитание постоянной составляющей массива Work.

Correction 	выпадающее подменю

Ephemeride	Изменение эфемеридных значений загруженных данных.

Change of amplif	Автоматическая коррекция переключения усиления.

RL Cross-Talk	Коррекция паразитного cross-talk сигнала.

Tail of curve	Замена n (первых или последних) элементов массива Work значением n-ого (или N-n) элемента массива Work.

Overturn	Переворот выделенного участка массива Work относительно линии соединяющей его крайние элементы.

Move L from R	Сдвиг массива с одной поляризацией относительно массива с другой поляризацией.

Auto move L R	Автоматический сдвиг массива с одной поляризацией относительно массива с другой поляризацией.

Wide Gauss	Аппроксимация широкой составляющей диаграммы гауссианой.

Center Vscan	Вычисление центра Солнца(Луны) по производным на краях скана.

Non-linear reg.	Соррекция нелинейности при регистрации.

Calibration 	выпадающее подменю

Calibr Quite Tb	Калибровка скана по табличным значениям Ta.

Calibr Flux	Калибровка скана по интегральному потоку.

Calibr Bl.body	Калибровка скана по калибровочной ступеньке.

Smooth 	выпадающее подменю

Gauss	Свертка выделенного участка массива Work с гауссианой

Median	Применение median фильтра к выделенному участку массива Work.

Cube Spline	Аппроксимация выделенного участка массива кубическим сплайном.

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	Вычисление полного потока выделенного участка массива.

Gauss Flux	Гаусс- анализ выделенного участка массива Work.

Interactive Gauss	Интерактивный гаусс- анализ выделенного участка массива Work.

Correlation	Вычисление коэффициента корреляции между выделенными участками разных сканов.

Sigma	Вычисление AMD дисперсии выделенного участка массива.

Surf3D	Вычисление матрицы для представления группы сканов (Surf, Contour).

Local spectrum	Построение спектра выделенных позиций на скане.

Spectral line	Анализ выделенного участка скана на спектральные линии.

Magnetic Field	Вычисление напряженностей магнитного поля на выделенном участке скана по третьей гармонике гирочастоты (3570/lcr).

Sun Template	Построение шаблона “спокойного” солнца.

View

Choice Scale	Диалог выбора участка массива для показа(работы).

Choice Path	Окно демонстрации выбранного участка относительно всего массива.

Local Graph	Показ окна для демонстрации спектров.

Scans Group	выпадающее меню

Scans Group	Диалог выбора группы сканов.

View Group	Диалог представления группы сканов.

Prev. Group	Показ предыдущей выбранной группы сканов.

Screen	выпадающее меню

Full scan	Показ всего скана(ов).

Digit Frame	Включение оцифровки шкал.

Equal Scale	Включение одинаковой шкалы для разных поляризаций.

View Disk	Прорисовка солнечного диска с учетом позиционных углов.

Delete Gauss	Удаление служебных массивов гаусс- анализа.

Delete MagField	Удаление служебного массива расчета магнитных полей.

Set View	Основные настройки окна отображения.

Scan header	Показ заголовка активного скана.

Gauss Param	Вывод в окно редактора параметров гауссиан(после гаусс- анализа).

Spec.Func	выпадающее меню (инициализируется подключаемой DLL)

Script	выпадающее меню (инициализируется файлами каталога Script)

Help

Main help	Вызов HELP-файла по работе с программой Work Scan

About...

Cancel	Отмена выполнения функций с блокировками сообщений.


ОПИСАНИЕ НЕКОТОРЫХ ФУНКЦИЙ МЕНЮ

File=>Set InitDir

Диалог настройки программы Work Scan

Общий вид диалоговой панели и описание полей:

Flux Units – строка для вывода в текстовый редактор,

X axis Units – символ для обозначения единиц оси X,

Jp.observ.time – время получения полных потоков в часах,

Koef.of flux – коэффициент на который домножаются вычисляемые потоки,

Level of noise – уровень шумов (используется некоторыми функциями),

Min Yaxis scale I(V) – минимальный размер соответствующей шкалы в отсчетах,

Autosave time(min) – промежуток времени автосахранения состояния программы,

Output dir – каталог сохраняемых файлов,

Japan flux dir – каталог содержащий файлы полных потоков Солнца,

Ext program file – имя файла выполняемого через меню,

Log corr.file – имя файла с коэффициентами нелинейной коррекции,

Script Folder – каталог с файлами скриптов.

Директорий файлов с полными потоками и время получения полных потоков используется при калибровке сканов Солнца с помощью меню Scan=>Correction=>CalibrFlux.

Scan=>Modification=>Eq. Null

Если флаг равен 1, то функция все элементы выделенного участка массива, меньшие нуля, заменяет на нуль. Если флаг равен 0, то на нуль заменяются элементы массива большие нуля.

Scan=>Modification=>Min rel.Csun (Copy rel.Csun)

Обе функции работают с парами элементов массивов симметричными относительно центрального значения (поле PMCSUN или CENTRE_X в файлах с данными).

Функция Min rel.Csun заменяет элементы участка массива отображенном на экране на минимальное значение получаемое при сравнении этих элементов с симметричными.

Функция Copy rel.Csun копирует отображенный участок массива на место симметричного участка.

Scan=>Modification=>Line tail

Функция запрашивает параметр равный одному из следующих значений:

0 - значение постоянной составляющей вычисляется как среднее между десятью первыми и десятью последними элементами массива;

1 - значение постоянной составляющей вычисляется как среднее между десятью последними элементами массива;

2 - значение постоянной составляющей вычисляется как среднее между десятью первыми элементами массива;

3 - значение постоянной составляющей вычисляется как среднее между десятью центральными элементами участка массива изображенного на экране;

Scan=>Correction=>Change of amplif

Функция автоматической коррекции переключения усиления.

После вызова функции нужно указать курсором (с помощью двойного щелчка левой клавиши мыши) место переключения на участке скана отображенного на экране

Функция вычисляет коэффициент изменения усиления и умножает на него все элементы массива правее указанного места переключения. Вычисление коэффициента осуществляется из условия аппроксимации участка из пяти точек массива в месте переключения линейной функцией.

Scan=>Correction=>Wide Gauss

Функция заменяет массив Work гауссианой вычисляя ее параметры  из симметричных участков относительно центра Солнца(Луны) удаленных на 1.2 и 1.5 радиуса. Используется для удаления широкой составляющей записи связанной с боковыми лепестками диаграммы направленности.

Scan=>Correction=>Center Vscan

Итерационное вычисление положения центра Солнца(Луны) активного скана. Если происходит работа с группой сканов функция присваивает найденное значение всем сканам группы. Вычисление осуществляется из условия равенства производных скана на краях записи объекта.

Scan=>Smooth=>…

В функциях Gauss и Median при задании отрицательного значения окно сглаживания вычисляется для каждого скана как произведение модуля введенного значения и полуширины диаграммы направленности на данной частоте.

Scan=>Correction=>Calibr *

Calibr Quite Tb после вызова функции нужно с помощью курсора (двойной щелчок левой клавиши мыши) указать на скане место с табличным значением  температуры.

Calibr Flux функция жестко привязана к формату данных(частотам) интегральных потоков Солнца обсерватории Toyokava. Для ее работы надо создать в основном директории [см. File=>Set InitDir] поддиректории с именами <год (пример 1990)> в которых должны находиться файлы с данными потоков за месяц с именами<месяц(3буквы)год(2цифры).eno (пример aug92.eno)>.

Формат файлов с данными потоков:

число	поток1	поток2	поток3	поток4

Calibr Bl.body Перед запуском функции надо участок скана с калибровочной ступенькой отобразить на экране (в крупном масштабе). Функция запрашивает значение температуры калибровочной ступеньки.

В пятом столбце файла sh-fits.cfg должны быть правильные значения шумовой температуры антенны.

Calc=>Gauss Flux

Функция аппроксимирует выделенный участок скана набором гауссиан. При выполнении функции, через окно диалога, запрашивается три параметра.

Функция создана на основе программы и алгоритма, разработанного Л.Н. Ивановым.

Calc=>Magnetic Field

Во время вычислений критической длины волны при построении спектров поляризаций все значения меньше заданного уровня шумов заменяются нулями. Если вводимое значение минимальной поляризации отрицательное, то минимум поляризации вычисляется как произведение модуля введенного значения и заданного уровня шумов.

View=>Scans Group

Функция выбора группы сканов для демонстрации и работы. При вызове функции появляется следующее окно диалога.

View=>Set View

Диалог основных настроек окна отображения.

Общий вид окна и описание полей следующие.

	Окна редактирования - если первый символ -%, программа отображает собственные заголовки рисунка и осей, иначе отображается содержимое окон редактора. Frq List - отображение в списке длин волн при работе с группой Date List- отображение в списке дат при работе с группой Date Wls - отображение в списке дат и длин волн View Scale - показ оцифровки шкал View list - показ списка при работе с группой Color on/off -включение цветного отображения сканов List(in/out) - отображение списка внутри или снаружи  рисунка со сканами Center Sun - отображение положения оптического центра и краев Солнца View wrk-gauss - отображение разности между сканом и гауссианами при гаусс- анализе
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

Выпадающее меню которое инициализируется при подключении скриптов из каталога Script. Имя каталога может быть изменено через диалог настройки программы File=>Set InitDir. Элементы меню называются именами файлов (без расширения spt) из указанного каталога. Файлы скриптов имеют структуру, подобную файлам для пакетной обработки, но состоят только из секции [Commands]. Указанные команды выполняются только над уже загруженными данными.


ПАКЕТНАЯ ОБРАБОТКА ФАЙЛОВ

В программе реализована функция пакетной обработки файлов. Для этого нужно создать файл сценария обработки с расширением 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

Список возможных команд

Команда имеет следующий формат 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,VR,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 FlagDialog;	//флаг инициализации диалога (при вызове функции равен TRUE)
char *Object;	//ссылка на строку содержащую объект наблюдения
char *DateObs;	//ссылка на строку содержащую дату наблюдения
char *TimeObs;	//ссылка на строку содержащую время наблюдения
float Frq;	//частота наблюдения
float noise;	//заданный уровень шумов
float xdel;	//шаг между отсчетами массива Work
float *data;	//адрес начального элемента выделенного участка массива Work
HWND hWnd;	//идентификатор главного окна программы
int wParam;	//идентификатор выбранного элемента меню Spec.Func
LPSTR txt;	//ссылка на текстовый массив (при входе в функцию равен NULL)
char TitleEd[64];	//строка для инициализации заголовка окна редактора (пустая)
};

Если при выходе из функций динамической библиотеки txt не равен NULL, создается окно редактора с заголовком TitleEd и содержимым буфера txt. После этого буфер txt удаляется.

Функция InitSDllMenu

void InitSDllMenu(HMENU Menu, int Num); - функция инициализации меню Spec.Func. Вызывается при загрузке программы Work Scan в момент подключения динамической библиотеки. Имеет следующие параметры: Menu - указатель на меню Spec.Func , Num - число необходимое при создании идентификаторов меню.

Пример функции:

void 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 SelectDllFunction(HINSTANCE hInst, struct SF_INIT *MyData); - функция вызова функций обработки данных соответствующих выбранному элементу меню Spec.Func. Имеет следующие параметры: hInst - идентификатор модуля Work Scan , MyData - указатель на структуру SF_INIT.

Пример функции:

void 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;

  }

}


УТИЛИТА ChoosedScan

Утилита (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 имена файлов удовлетворяющие выбранному элементу.