def decimate(input_files,output_file,bin_factor): input_files = glob.glob(input_files) print "processing %d files"%len(input_files) img = ndimage_file.read_image(input_files[0]) nsize = img.shape[0]/2 for input_file in input_files: print 'processing ', input_file output_file = spider_utility.spider_filename(output_file, input_file) for i, img in enumerate(ndimage_file.iter_images(input_file)): img = ndimage_interpolate.downsample(img, bin_factor) #img = ndimage_interpolate.interpolate_ft(img, (nsize,nsize)) ndimage_file.write_image(output_file, img, i)
''' import sys #sys.path.append('/home/robertl/tmp/arachnid-0.0.1/') from arachnid.core.app import tracing from arachnid.core.metadata import format from arachnid.core.image import ndimage_file from arachnid.core.image import reconstruct import numpy,logging if __name__ == "__main__": image_file = sys.argv[1] align_file = sys.argv[2] output = sys.argv[3] thread_count=16 tracing.configure_logging() #Note: this code assuming you are reconstructing a dala stack or a translated stack # Read an alignment file align,header = format.read_alignment(align_file, ndarray=True) logging.error("Reconstructing %d particles"%len(align)) assert(header[0]=='id') index = align[:, 0].astype(numpy.int) align[:, 1] = numpy.rad2deg(align[:, 1]) iter_single_images = ndimage_file.iter_images(image_file, index) image_size = ndimage_file.read_image(image_file).shape[0] vol = reconstruct.reconstruct_bp3f_mp(iter_single_images, image_size, align, thread_count=thread_count) ndimage_file.write_image(output, vol)
.. literalinclude:: ../../arachnid/snippets/image/shift.py :language: python :lines: 17- :linenos: ''' import sys from arachnid.core.metadata import format from arachnid.core.metadata import spider_utility from arachnid.core.metadata import relion_utility from arachnid.core.image import ndimage_file from arachnid.core.image import ndimage_utility if __name__ == '__main__': # Parameters input_file = sys.argv[1] output_file = sys.argv[2] mult=1.0 # Read an alignment file align = format.read(input_file, numeric=True) for i in xrange(len(align)): filename, id = relion_utility.relion_file(align[i].rlnImageName) img = ndimage_file.read_image(filename, id-1) img = ndimage_utility.fourier_shift(img, align[i].rlnOriginX, align[i].rlnOriginY) ndimage_file.write_image(spider_utility.spider_filename(output_file, filename), img, id-1)
Download to edit and run: :download:`reproject_test.py <../../arachnid/snippets/image/reproject_test.py>` To run: .. sourcecode:: sh $ python reproject_test.py vol.spi ref_stack.spi 2 .. literalinclude:: ../../arachnid/snippets/image/reproject_test.py :language: python :lines: 22- :linenos: ''' import sys from arachnid.core.image import ndimage_file from arachnid.core.image import reproject from arachnid.core.orient import healpix if __name__ == '__main__': # Parameters image_file = sys.argv[1] output = sys.argv[2] healpix_order = int(sys.argv[3]) vol = ndimage_file.read_image(image_file) rad = vol.shape[0] / 2 ang = healpix.angles(healpix_order) imgs = reproject.reproject_3q(vol, rad, ang) ndimage_file.write_stack(output, imgs)
if __name__ == "__main__": tracing.configure_logging() image_file = sys.argv[1] # phase_flip_dala_stack.spi align_file = sys.argv[2] # align.spi param_file = sys.argv[3] output = sys.argv[4] # raw_vol.spi bin_factor = float( sys.argv[5]) if len(sys.argv) > 5 else 1.0 # raw_vol.spi thread_count = 32 extra = spider_params.read(param_file) extra.update(spider_params.update_params(bin_factor, **extra)) print "Loaded param file" extra.update(thread_count=thread_count) align, header = format.read_alignment(align_file, ndarray=True) logging.error("Reconstructing %d particles" % len(align)) selection = align[:, 15:17] align[:, 6:8] /= extra['apix'] iter_single_images = ndimage_file.iter_images(image_file, selection) image_size = ndimage_file.read_image(image_file).shape[0] vol = reconstruct.reconstruct_bp3f_mp(iter_single_images, image_size, align, process_image=process_image, **extra) if vol is not None: ndimage_file.write_image(output, vol)
''' Interporate a volume Download to edit and run: :download:`interpolate_volume.py <../../arachnid/snippets/image/interpolate_volume.py>` To run: .. sourcecode:: sh $ python interpolate_volume.py .. literalinclude:: ../../arachnid/snippets/image/interpolate_volume.py :language: python :lines: 16- :linenos: ''' import sys from arachnid.core.image import ndimage_file from arachnid.core.image import ndimage_interpolate if __name__ == '__main__': # Parameters input_file = sys.argv[1] bin_factor = float(sys.argv[2]) output_file = sys.argv[3] img=ndimage_file.read_image(input_file) img=ndimage_interpolate.interpolate_bilinear(img, bin_factor) ndimage_file.write_image(output_file, img)
from arachnid.core.image import ndimage_utility import glob if __name__ == '__main__': # Parameters input_files = sys.argv[1] output_file = sys.argv[2] params_file = sys.argv[3] bin_factor = int(sys.argv[4]) input_files = glob.glob(input_files) print "processing %d files"%len(input_files) radius = spider_params.read(params_file)['pixel_diameter']/2 img = ndimage_file.read_image(input_files[0]) mask = ndimage_utility.model_disk(radius, img.shape)*-1+1 mask = ndimage_interpolate.downsample(mask, bin_factor) for input_file in input_files: print 'processing ', input_file output_file = spider_utility.spider_filename(output_file, input_file) for i, img in enumerate(ndimage_file.iter_images(input_file)): img = ndimage_interpolate.downsample(img, bin_factor) img=ndimage_utility.normalize_standard(img, mask) ndimage_file.write_image(output_file, img, i)