Пакет "Origin"
(специализированный soft для обработки
экспериментальных данных
и подготовки графических материалов к печати).
Origin обеспечивает
представление данных в форме электронных таблиц (очень похоже на Excel),
с тем, однако, отличием, что встроенные в Origin процедуры работы
с данными (ввод, импорт, перемещение, вычисление, отображение, экспорт)
ориентированы
не на бухгалтерские, а на измерительные задачи.
Особенно приятно, что эти специальные возможности реализованы через меню
и командные панели с кнопками. Это позволяет
множество стандартных операций, свойственных обработке экспериментальных
данных, выполнять "одним кликом мыши".
Примечание.
Если Вы уже дружите с компьютером, то очень вероятно, что изучали Excel.
Опыт
показывает, что сагитировать человека перейти с программного продукта,
в котором он уже "набил руку", на какой-либо другой -- дело практически
безнадежное :-))). В таком случае Вы, конечно, пока возде'ржитесь переходить
на Origin, тем более что:
-
многие вещи в нем сделаны далеко не лучшим образом
(особенно программирование)
-
Excel очень удачно взаимодействует с мощной
и универсальной вычислительной средой MatLab (через макрос exlink.xls,
который
Вы найдете в дистрибутиве MatLab)
Но в дальнейшем -- ни в коем случае не обойдите вниманием
версию Origin 7.5.
В отличие от большинства математических
программных продуктов, учебной литературы по Origin до сих пор так
и нет. Данное краткое описание предназначено восполнить этот пробел.
Сравнительное
описание версий
Ввод и импорт данных
Создание и использование
шаблона.
Простейшие операции с данными
в электронной таблице
Статистическая обработка данных
Построение гистограммы
Простейшие операции с графиками
О программировании в Origin
Скачать руководство
фирмы-разработчика по Origin 6.1 (Английский, PDF, 1MB)
Скачать "студенческую" версию:
4 * 1.4MB
Пример проекта (здесь -- без комментариев):
работа 29, статобработка данных по 240 точкам
Альтернатива: Excel+MatLab (скачать руководства PDF и утилиты,
все -- разработки "MathSoft")
ExcelLink (PDF, 800kB, English)
ExcelLink utilities (ZIP, 170kB)
MatLab (PDF под SFX-ZIP, 600kB,
English)
MatLab: Nonlinear Lest Squares
Curve Fitting (PDF под SFX-ZIP, 2MB, English)
MatLab: Optimization (PDF под
SFX-RAR, 1.4MB, English) + 650kB 2vol.
MatLab: Statistics (PDF под SFX-ZIP,
1.4MB, English) + 1.4MB 2vol.
О
доступных версиях программы "Origin"
Версия 5.0 "Student version".
В
отличие от совсем ранних, недостойных здесь упоминания, версий 3 и 4, она
имеет достаточно устоявшийся интерфейс (почти одинаковый с обеими последними
версиями 6.1 и 7.02) при совсем небольшом объеме (дистрибутив
помещается на 4 дискетах).
Поддерживаются, в частности:
-
ввод данных как с клавиатуры, так и импорт из текстового
файла;
-
создание выделенных групп данных для их перемещения
и обработки как объектов;
-
построение графиков, редактирование графических объектов
и экспорт в различные графические форматы;
-
статобработка данных по строкам и столбцам;
-
регрессионный анализ ("МНК") для простейших моделей
(полиномы до 9-й степени, сигмоиды и т.п.);
-
фильтрация и фурье-анализ;
-
интерактивное окно подбора параметров произвольной
(определенной пользователем) зависимости к заданному облаку точек ("Fitting")
методом наибыстрейшего спуска [Levenberg-Marquardt];
-
простейшее программирование вычислений как над отдельными
переменными, так и над объектами, с использованием входного языка LabTalk,
напоминающего
C и имеющего определенный набор специализированных
функций;
-
многооконный режим редактирования "примечаний", позволяющий
вести "дневник" работы, встроенный в проект.
-
совмещенное окно текущих записей, редактирования
программы и прямых вычислений "Script window" (отличающееся всесторонним
неудобством :-) ).
Версия 6.1 "Retail". Главными
видимыми отличиями от 5-й версии являются:
-
возможность редактирования программных файлов LabTalk
("Сценариев")
в нескольких независимых окнах с обеспечением сервисов, традиционных для
современных интегрированных сред программирования (цветная разметка синтаксиса,
автотабуляция, закладки и пр.). Однако возможности отладки, привычные еще
со времен BC3 и QuickBasic4.5 (такие как пошаговое выполнение,
точки останова, наблюдение текущих значений переменных, и пр.), лишь обозначены
в интерфейсе, но реально не поддерживаются :-) .
-
возможность создавать (и переносить с машины на машину
! ) собственные командные панели и группы кнопок, что позволяет запускать
"одним кликом мыши" не только стандартные, но и собственные оригинальные
процедуры, создавая удобную рабочую среду под конкретную задачу.
-
попытка (хотя и косо сделанная) организовать обращение
к данным на базе идей, сходных со средами типа VisualBasic (представление
наборов данных как объектов с определенными для них стандартными свойствами
и методами).
Версия 7.02 "Pro". Главными
видимыми отличиями от 6-й версии являются:
-
появление в среде Origin компилятора (фирмы
NAG Corporation) языка C++ в стандарте ANSI, с определением классов
этого "Языка Origin C" общепринятым способом в заголовочных h-файлах.
Замена интерпретатора компилятором резко подняла быстродействие. (Однако
возможность отладки по-человечески программ, написанных на "напоминающем
C"
языке LabTalk, так и не появилась, а про компилятор C++
NAG Corporation надо еще разбираться).
-
значительное расширение набора процедур анализа данных
(например, добавлена проверка статистических гипотез).
Версия 7.5 . Внешних
отличий не видно. Что пока удалось вычитать в Help'е - это рекомендация
разработчиков пользователю -- "не изучать языка LabTalk,
если вы
только что начинаете работать с Origin". Достаточно знать C++
и определение классов Origin. Таким образом,
лучшие
предчувствия, наконец, оправдались! Однако в сравнении даже с версией
7.02 потребность в ресурсах компьютера намного выше (говорю это по личному
опыту "торможения" на P1-166, происходящего, похоже, не только из-за
недостатка RAM, но также из-за несварения в процессоре :-) ).
Как
пользоваться программой "Origin"
(простейшие навыки для версии 5.0)
Как вводить текст.
-
"Щелкните_мышкой", т.е.посадите текстовый курсор
в той графе таблицы, с которой собираетесь начать ввод.
-
На самой правой секции клавиатуры нажмите клавишу
NumLock
(засветится индикатор) и пользуйтесь этой "калькуляторной" клавиатурой.
-
Ввод будет по умолчанию производиться в столбец.
Для ввода десятичной точки пользуйтесь клавишей ( . ); для ввода
порядка (если требуется) - латинской буквой E (или e); для перехода
в следующую (нижележащую) графу - клавишей Enter. Кроме того, можно
"ходить" по таблице при помощи клавиш со стрелками и мыши.
-
Пример правильно введенного числа:
23.375E-2
-
Вместо десятичной точки в таблице всегда видна запятая
- в принципе можно и при вводе пользоваться клавишей ( , ), однако
такая
привычка для физика крайне вредна.
Ввод ("импорт") УЖЕ ГОТОВОГО текстового файла.
-
Обратитесь к меню FILE / IMPORT > ASCII...
-
Выберите Ваш файл в открывшемся стандартном системном
(Windows) окне "Input". Если файл вдруг вообще не виден там где
он должен быть, то переключившись в Windows поменяйте его расширение, или
же выберите в окне "Input" опцию "Все файлы" ( *.* )
-
По нажатию кнопки INPUT окна "Input" произойдет
заполнение таблицы данными из файла (количество строк и столбцов, а также
новое имя таблицы по имени файла установятся автоматически). Примечание.Подготовка
к операции импорта требует осторожности, поскольку при импорте
данных они записываются на место имеющихся, а страховочный запрос ("Отбросить
или нет старую информацию в таблице?") разработчиками Origin не предусмотрен
:-) . Имеется возможность сконфигурировать
среду так, чтобы данные, например, дописывались в дополнение к существующим.
Но не будем пока вдаваться в эти сложности. Лучше всего при наличии в проекте
уже заполненных таблиц выработать привычку всегда перед импортом
создавать новую пустую таблицу, либо (что гораздо лучше), заблаговременно
создать шаблон (template) и вводить данные в него.
-
Файл будет правильно импортирован при условии, что
информация в нем хоть как-то форматирована (обычно под этим подразумевается
наличие столбцов и строк, причем в строках желательно разделять числа пробелами
или табуляторами). При возникновении проблем с "разделителями" чисел при
импорте, сконфигурируйте режим импорта при помощи меню FILE / IMPORT_OPTIONS...
. Заметим, что запятая в Origin странным образом сожительствует
с десятичной точкой для разделения целой и дробной частей числа :-) , поэтому
в качестве разделителя полей в файлах ее использовать крайне нежелательно.
-
Текстовые заголовки столбцов в Вашем файле не только
не помешают вводу, а даже полезны, если они, конечно, не слишком длинные:
они автоматически введутся как имена или как метки "Labels" столбцов
электронной таблицы
Origin (во втором случае это своеобразный аналог
свойства "Caption", известного из VisualBasic).
Создание
и использование шаблона.
Эта техника понадобится Вам
только в том случае, если Вы многократно обрабатываете данные с одной и
той же структурой и процедурой вычислений.
-
Допустим, Вы завершили отладку процесса обработки
каких-то данных: у Вас есть таблица с удачно поименованными столбцами и
с "вшитой" в нее программой (в окне WORKSHEET_SCRIPT). Для сохранения
ее "каркаса" (Template) воспользуйтесь главным меню FILE_/_SAVE_TEMPLATE_AS...
Разумеется,
файлу шаблона надо придумать осмысленное имя. Примечание.
Тут тонкость! в качестве шаблона надо сохранять не окончательный
вид таблицы, а ее исходный вид, куда Вы будете импортировать данные. Это
особенно станет важно, если WorksheetScript будет содержать команды
создания, удаления и переименования столбцов. Но
это не важно, если Вы не собираетесь менять программно вид таблицы, а данные
будете вводить с клавиатуры.
-
Теперь открыть пустую таблицу, "знающую", как обработать
поступающие в нее данные, проще всего кнопкой OpenTemplate на командной
панели. Следующей за открытием "каркаса" операцией подразумевается импорт
в него данных из текстового файла данных, а затем можно просто запустить
WorksheetScript.
И, наконец, если в окне WorksheetScript
была проставлена опция "автозапуска
при импорте", то и запуск счета тоже произойдет автоматически :-) .
Простейшие
операции с электронной таблицей.
-
Для добавления столбца воспользуйтесь кнопкой AddColumn
или зайдите в главное меню.
-
Для изменения ширины столбца (если не видны числа
целиком или, наоборот, лишнее пустое место) "зацепите" граничную линию
между столбцами на уровне заголовка столбца (при этом курсор должен
принять форму горизонтальных стрелок) и "перетащите" ее.
-
Для переименования таблицы (не пренебрегайте осмысленными
именами!) "щелкните_правой_кнопкой_мыши" по верхушке окна таблицы и выберите
в контекстном меню пункт RENAME... Все имена должны быть
присвоены заблаговременно, до написания программы (если, конечно, Вы
не применяете функции присваивания имен непосредственно в самой программе),
и
удовлетворять требованиям синтаксиса языка LabTalk. После программирования
ничего переименовывать будет нельзя. Не найдя объекта (столбца с указанным
в программе именем), программа не выдаст никаких сообщений, а просто не
сделает то, что Вы хотели, без объяснений. Примеры.
Обращение
col(Viscosity)
станет
причиной сбоя вычислений, если в активной таблице нет колонки с именем
Viscosity.
Обращение
Data_Viscosity
также станет причиной сбоя, если такой колонки нет в
таблице Data.
-
Для выделения столбца щелкните по заголовку столбца.
-
Для выделения строки щелкните по номеру строки (левее
первого столбца).
-
Для вызова контекстного меню, относящегося к выделенной
области, "щелкните_правой_кнопкой" по выделенной области.
-
Для выделения области данных (внутри таблицы или
столбца)
-
Щелкните по первой выбранной ячейке при нажатой клавише
Ctrl.
-
Щелкните по последней выбранной ячейке при нажатой
клавише
Shift.
-
С полученной областью можно выполнять ряд операций,
например, копировать, вырезать, удалять, обрабатывать в программе как текущую
"выделенную область данных" и пр. Примечание. Применение клавиши
Delete
только стирает данные в выделенной области, а для удаления самой области
требуется вызвать пункт DELETE в контекстном меню.
-
Для переименования столбца
-
(первый способ) "дважды_щелкните" по заголовку столбца,
-
(второй способ) щелкните по заголовку столбца правой
кнопкой и воспользуйтесь в контекстном меню пунктом PROPERTIES...
(т.е.
не так, как при переименовании таблицы)
-
Упомянутое контекстное меню позволяет также:
-
Менять статус столбца SET COLUMN AS...
(например, если столбец обозначен как "X", т.е. независимая переменная,
то по умолчанию он выводится на график как абсцисса, в то время как вывести
его в качестве ординаты хотя и можно, но для этого требуется достаточное
искусство). Статус может быть: X, Y, xErr, yErr, Label, "disregard"("никакой").
Столбцы xErr и yErr по умолчанию выведутся на график как изображения
погрешностей по осям.
-
Строить график PLOT... (линией, точками, линией
с точками, колонками и пр.) Для построения графика с погрешностями надо
выделить все те столбцы, информация из которых требуется для графика.
Построение семейства графиков на одном листе ("разноцветных") требует открытия
специального окна из главного меню, при этом, наоборот, никаких выделений
в таблице быть не должно.
-
Программировать вычисление ячеек данного столбца
на основании других данных: SET_COLUMN_VALUES... Эту возможность
лучше всего использовать, если при расчете не требуются данные из других
таблиц. При программировании полезна функция col( ), в качестве
аргумента воспринимающая текстовое имя столбца. Она позволяет обрабатывать
данные
всего столбца как целое. Например: оператор
LabTalk
col(square)=col(argument)^2; заполнит столбец square
квадратами
чисел, содержащихся в столбце argument.
-
Если блок данных выделен "из середины" таблицы, то
во избежание побочных эффектов разумнее всего открыть новое окно (FILE
/ NEW>WORKSHEET ), скопировать в него эти данные и работать с ними
отдельно.
Статистическая
обработка данных.
-
СТАТОБРАБОТКА СТОЛБЦА ДАННЫХ.
"Щелкните_правой_кнопкой" по ранее выделенной
области данных (например, это столбец или его часть) и в контекстном меню
выберите STATISTICS_ON_COLUMNS. Результаты статистической обработки
появятся в новом окне (это будут: среднее значение по данной выборке, ее
среднеквадратическое отклонение, число точек в выборке, СКО оценки среднего
значения и некоторые другие менее нужные величины).
-
СТАТОБРАБОТКА ДАННЫХ ПО СТРОКАМ. В
этом варианте Вы должны выбирать другую команду: STATISTICS_ON_ROWS.
В этом случае результат Вы получите (в разных версиях) либо в новом, либо
в том же окне - в последнем случае в новых автоматически добавляющихся
столбцах, имеющих соответствующие заголовки.
-
Если Вам надо построить график, ординаты точек которого
должны быть усреднены по нескольким отсчетам, то это как раз тот случай,
который обеспечивается действиями по предыдущему пункту. Чтобы столбец,
содержащий среднеквадратические отклонения, изображался на таком графике
в виде "усов", он должен иметь статус столбца-погрешности - yErr.
Построение
гистограммы.
Выделите столбец и через главное
меню запустите команду ANALYSIS / FREQUENCY_COUNT... Вам будет
предложено выбрать, в частности, диапазон изменения анализируемой переменной
и шаг разбиения, однако рекомендуется поначалу положиться на установки
по умолчанию. Гистограмма образуется в виде новой таблицы, после чего ее
графическое изображение строится вышеописанным способом.
Простейшие
операции с графиком
Допустим, Вы уже построили
график. Существуют удобные приемы нанесения и редактирования надписей.
-
Для редактирования надписи по оси абсцисс (ординат)
"дважды_щелкните" мышью по самой надписи. В открывшемся в результате
этого окне набирайте текст, причем для правильного отображения кириллицы
поменяйте шрифт на любой доступный фонт с приписочкой "Cyr".
-
Для редактирования масштаба по любой оси дважды щелкните
по
изображению оси.
-
Для изменения параметров самого изображения графика
дважды щелкните по графику. В открывшемся после этого окне имеются обширные
возможности выбора типа, цвета и размера изображения (например, можно выбирать
форму и размер точек)
-
Для нанесения надписи на поле графика надо "щелкнуть_правой_кнопкой"
в том месте, где примерно должна быть надпись, и выбрать в контекстном
меню пункт ADD_TEXT.... Остальные приемы - те же, что и при редактировании
осей.
-
Для переноса графика из Origin в текстовый редактор
обратитесь в главное меню FILE / EXPORT_PAGE... Экспорт в форматы
BMP,
GIF
даст растровое изображение (с весьма ограниченными возможностями масштабирования),
а в форматы WMF, EMF - векторное, т.е. произвольно масштабируемое.
(Различия состоят в том, что в растровом файле содержится результат построения
изображения, а в векторном - способ или алгоритм этого построения). Проблемы
совместимости с редактором Word минимальны для WMF и EMF
- форматов, хотя сложные графики в этих форматах могут иногда давать объект
(или файл) ужасающего объема (они ведь передают структуру графика абсолютно
точно ! ;-) ).
О
программировании в Origin
Обзор простейших правил программирования на
языке LabTalk
-
Знаки арифметических действий, сравнения и логических
операторов, разделители ( ) , ; { } , синтаксис операторов if,
for, while, switch - как в языке С.
-
Регистр символов - произвольный. Например: Arg2,
arg2
и
ARG2
-
это одна и та же переменная.
-
Подстановка колонки из активной таблицы в качестве
единого операнда в формулу делается функцией col(<имя_колонки>) Например:
col(circ)=2*pi*col(radius)^2;
причем обе колонки
circ, radius должны
заранее существовать.
-
Активизация таблицы - оператор edit<пробел><имя_таблицы>.
Пример
: edit mydata2; делает таблицу mydata2 активной, после чего
функция col( ) будет автоматически относиться к ее столбцам.
-
Подстановка колонки из любой существующей таблицы
в качестве единого операнда в формулу: <имя_таблицы><знак_подчеркивания><имя_столбца>.
(По этой причине, в отличие от C, внутри имен простых переменных
знак подчеркивания здесь запрещен). Пример сложения одноименных столбцов
из разных таблиц: mydata3_arg1=mydata1_arg1+mydata2_arg1;
-
Индексация массивов - как в языке C, квадратными
скобками [ ] . Однако действий в циклах,
где это можно, следует всячески избегать из-за
их медленности, поскольку программа LabTalk обрабатывается не компилятором,
а интерпретируется. Из положения следует пытаться находить выход
путем поиска таких функций, которые обеспечат необходимые действия с помощью
быстродействующих операций над целыми массивами данных.
-
Еще некоторые полезные функции (подробное
описание см. в Help'е):
-
b=sum(a); в столбце
b проинтегрирует
a
и кроме того создаст текущий объект sum
с многими характеристиками
столбца a, например, sum.mean - это будет среднее значение
по a. Объект sum просуществует до того момента, как будет
снова изменен.
-
diff( ); продифференцирует столбец,
-
limits(); найдет границы области значений
данных и сформирует соотв.объект, что очень удобно для отсева промахов,
выходящих за "три-сигма"
-
create a N; создаст (не отображаемый на экране)
вектор
a
длиной
N,
а оператор edit a позволит при
необходимости его увидеть (создаст новую таблицу со столбцом
a, имеющим
статус "disregard"). Заметим, что неотображаемые объекты занимают
значительно меньше места и быстрее обрабатываются, поэтому промежуточные
результаты в вычислениях (после отладки программы) предпочтительно сделать
неотображаемыми.
-
del a; ликвидирует объект a (т.е. высвобождает
память компьютера)
-
min( ); max( ); создадут текущие объекты,
содержащие экстремальные значения и их индексы (положение в пределах столбца).
-
wks - текущий объект с параметрами активной
таблицы. Например, свойство wks.maxrows отображает число занятых
данными строк в активной таблице, а wks.nrows -- полное число строк,
в том числе не заполненных данными.
-
Возможно "вытаскивание" в текст программы процедур,
обрабатывающих команды главного меню. Для этого надо при активном окне
ScriptWindow,
держа
нажатыми Shift+Ctrl, "запустить пункт меню".
При этом вместо немедленного
выполнения команды произойдет вставка имени ее процедуры (в формате Run.Section(<идентификатор>)
) в текст. Это если и не лучший стиль программирования, то по крайней мере
неплохой способ узнать, где искать справку по этой процедуре в Helpе.
Разумной представляется следующая последовательность
действий.
-
На этапе первоначальной отладки программируйте в
окнах SET_COLUMN_VALUES
-
Если программа заработала, то откройте окно WorksheetScript
через
главное меню TOOLS / WORKSHEET_SCRIPT и перенесите в него отлаженные
операторы.
-
Если эта разработка Вам нужна еще на потом, то сохраните
каркас таблицы вместе с программой через главное меню: FILE / SAVE_TEMPLATE_AS...
Примечание для уже знакомых с программированием
Использование "натурального"
языка C для текущей вычислительной работы противоестественно в силу
его неудобочитаемости человеком, которая проистекает из стремления ценой
сокращенных обозначений получать исходный текст программы как можно меньшего
размера. В случае с Origin применение языка, напоминающего C,
и притом не с компилятором, а с интерпретатором, увы, приходится терпеть.
Однако язык LabTalk имеет и дополнительные неудобства, которых нет
в языке C.
Перечислим только самые кричащие
из них.
-
Понятие области видимости переменных отсутствует,
в результате чего разбивка длинной программы на блоки, делаемые разными
авторами, сопровождается проблемой выяснения - откуда какая переменная
"пришла" и какое ее значение на входе в "блок".
-
Поддерживается только 28 текстовых однобуквенных
переменных в формате <знак_процента><буква>, большая часть
которых являются системными, и их смысл надо запоминать. Функции обработки
строк отсутствуют, а вместо них имеется довольно малочитабельное правило
подстановки.
-
Многие функции и операторы, добавленные в LabTalk
по сравнению с языком
C, имеют труднозапоминаемую форму <имя_функции><через_пробел><набор_однобуквенных_или_числовых_параметров>.
Например, в LabTalk-программе (не в меню) вывод данных на график
заказывается несколькими вызовами одной и той же команды Mark с
разными опциями, а атрибуты графика выражаются десятичными числами.
-
И уж совсем "страшилка". Отмечались отдельные случаи,
когда правильная программа на языке LabTalk на одном компьютере
выполнялась, а на другом давала неверный числовой ответ ]:-[ .
К этому стоит добавить, что в окне ScriptWindow,
где
предлагается отлаживать программу,
-
отсутствуют ставшие уже привычными автотабуляция,
цветовая маркировка и ДАЖЕ не задействована клавиша Delete (в
силу чего удалять текст можно только клавишей Backspace, т.е. "с
конца"). Количество же знаков в "табуляторе" столь велико, что ничего не
остается как сплюнуть и писать текст просто в столбец :-) .
-
при отладке, после выполнения (или, при наличии синтаксической
ошибки, - молчаливого невыполнения) выделенного куска программы курсор
"отлетает" на конец программы и всякий раз должен быть вручную возвращен
на исходное место.
-
При распечатке результатов вычислений и диагностических
сообщений в то же окно (в конец) они не снабжаются знаком комментария,
в силу чего впоследствии воспринимаются программой как ошибки.
-
Содержимое окна ScriptWindow не входит в проект,
а сохраняется отдельно.
-
и т.д., и т.п. :-)
Думается,
что сказанного достаточно, чтобы дать нижеследующий совет.
В версии 5
при программировании ограничивайтесь только
простейшими действиями
и не пользуйтесь для программирования в
Origin окном ScriptWindow.
Как же быть, если требуются сложные вычисления?
Разумной представляется следующая последовательность действий.
-
На этапе первоначальной отладки программируйте в
окнах SET_COLUMN_VALUES
-
Если программа заработала, то откройте окно WorksheetScript
через
главное меню TOOLS / WORKSHEET_SCRIPT и перенесите в него отлаженные
операторы.
-
Если эта разработка Вам нужна еще на потом, то сохраните
каркас таблицы вместе с программой через главное меню: FILE / SAVE_TEMPLATE_AS...
-
Если перечисленные действия все же не позволяют решить
задачу обработки большого объема данных при поточных вычислениях,
смените версию продукта на 7.5 и изучайте классы языка "Origin
C".
-
Если и это не помогает, то пользуйтесь MatLab,
Statistica, Excel, SPSS.
Disk1Disk2Disk3Disk4