У меня есть файл mrc, в котором 10 штук. После загрузки в DM я могу просматривать фрагменты, используя стрелки влево и вправо. Я хотел бы использовать сценарий DM для чтения файла mrc, а затем сохранить каждую часть в отдельный файл. Это возможно?
Извините за двусмысленность. Для формата mrc он может содержать несколько изображений одинакового размера. Например, когда вы используете режим in-situ для сбора изображений, GMS сохранит каждое изображение в один файл. Формат Mrc позволяет сохранить все эти изображения в один файл. Мне нужно разделить эти изображения в файле mrc и сохранить каждое в один файл. Под стрелкой влево и вправо я имею в виду клавишу со стрелкой на клавиатуре. Загрузите тестовый файл mrc с этого сайта: ftp.ebi.ac.uk/empiar/world_availability/10146/data
Я обнаружил, что мое требование может быть достигнуто с помощью File->Save as series. Я проверю, есть ли соответствующая команда
Проблема была решена командой слайса2. Я нашел решение в вашем замечательном уроке.
Привет, ChenZX! Я заметил, что у вас на сайте есть пара вопросов, которые все еще помечены как «без ответа». Не могли бы вы их пересмотреть и либо внести поправки, оставив открытые вопросы, либо пометить их как отвеченные? (Нажмите галочку под кнопками голосования рядом с ответом, который, по вашему мнению, является лучшим.)
Извини. Я забыл. Я отмечу их как отвеченные в ближайшее время.
Я обнаружил, что галочки выбранных мной ответов исчезли. Я не знаю, что произошло.
Как странно! Я вижу, что все ваши вопросы действительно оказываются «без ответа»…
@BmyGuest Один из вариантов: я выбираю лучшим ответом только ваш ответ или ответ Майка. Система подумала, что мы обманываем.
Это, конечно, может быть. ИскусственныйНеинтеллект в действии :c)


Рад, что вы уже решили это сами. Чтобы получить ответ и здесь, на StackOverflow, я бы сделал это вот так. (Протестировано на вашем примере файла)
string path = "C:\\temp\\test.mrc"
if ( !OpenDialog( NULL , "Load MRC stack from" , path , path ) ) exit(0)
image stack := NewImageDocumentFromFile(path).ImageDocumentGetRootImage()
if ( !stack.ImageIsValid() )
Throw("Could not read file:\n"+path)
//stack.ShowImage()
if ( 3 != stack.ImageGetNumDimensions() )
Throw("File is not a 3D stack.")
number sx,sy,sz
stack.ImageGetDimensionSizes(sx,sy,sz)
string folder = PathExtractDirectory(path,0)
string baseName = PathExtractBasename(path,0)
// Split and save
for(number i=0;i<sz;i++){
image img := stack.slice2(0,0,i, 0,sx,1, 1,sy,1).ImageClone()
string filePath = folder+basename+"_"+i
OpenAndSetProgressWindow("Saving file "+(i+1)+" / "+sz,filepath,"")
img.ImageGetOrCreateImageDocument().ImageDocumentSaveToFile( "Gatan Format", filePath)
Result("\n saved: "+filePath)
}
CloseProgressWindow()
Немного растерян. Что вы имеете в виду, используя стрелки влево и вправо? На палитре Slice или где? Было бы полезно, если бы вы предоставили доступ к какому-нибудь фиктивному файлу MRC, который показывает, что вы имеете в виду, поскольку я не привык работать с этим форматом данных. Что именно означают 10 «кусков»?