def read_image_to_register(registername, is_imzml, to_flip, moving): mz = None if is_imzml: imzml = imzmlio.open_imzml(registername) current_s = imzmlio.get_full_spectra(imzml) max_x = max(imzml.coordinates, key=lambda item: item[0])[0] max_y = max(imzml.coordinates, key=lambda item: item[1])[1] max_z = max(imzml.coordinates, key=lambda item: item[2])[2] array = imzmlio.get_images_from_spectra(current_s, (max_x, max_y, max_z)).T register = sitk.GetImageFromArray(array) mz, _ = imzml.getspectrum(0) else: register = sitk.ReadImage(registername, sitk.sitkFloat32) if to_flip: dim = register.GetDimension() flip = (True, False) + ((False, ) if dim > 2 else ()) register = sitk.Flip(register, flip) dim = register.GetDimension() register.SetSpacing([1 for i in range(dim)]) identity = np.identity(dim).tolist() flat_list = [item for sublist in identity for item in sublist] direction = tuple(flat_list) register.SetDirection(flat_list) return register, mz
def imzml_to_npy(inputname): p = io.open_imzml(inputname) size = len(p.coordinates) spectra = io.get_spectra_intensities(p) np.save("data/intensities_250DJ.npy", spectra) spectra = io.get_spectra_mzs(p) np.save("data/mzs_250DJ.npy", spectra)
def test_normalize(self): self.imzml = io.open_imzml( "/mnt/d/MALDI/imzML/MSI_20190419_01/00/peaksel_small.imzML") image = io.to_image_array(self.imzml) norm = io.normalize(image) print(image) print(norm.dtype) print(norm.shape)
def read_imzml(inputname): imzml = imzmlio.open_imzml(inputname) spectra = imzmlio.get_full_spectra(imzml) max_x = max(imzml.coordinates, key=lambda item:item[0])[0] max_y = max(imzml.coordinates, key=lambda item:item[1])[1] max_z = max(imzml.coordinates, key=lambda item:item[2])[2] image = imzmlio.get_images_from_spectra(spectra, (max_x, max_y, max_z)) mzs, intensities = imzml.getspectrum(0) return spectra, image
import argparse import random import esmraldi.imzmlio as imzmlio import numpy as np import os parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", help="Input 3D imzml") parser.add_argument("-o", "--output", help="Output directory for 2D imzml") args = parser.parse_args() inputname = args.input outname = args.output imzml = imzmlio.open_imzml(inputname) mz, I = imzml.getspectrum(0) spectra = imzmlio.get_full_spectra(imzml) max_x = max(imzml.coordinates, key=lambda item: item[0])[0] max_y = max(imzml.coordinates, key=lambda item: item[1])[1] max_z = max(imzml.coordinates, key=lambda item: item[2])[2] image = imzmlio.get_images_from_spectra(spectra, (max_x, max_y, max_z)) coordinates = imzml.coordinates print("Parsing all spectra") intensities, new_coords = imzmlio.get_spectra_from_images(image) previous_index = 0 array_coords = np.array(new_coords) array_intensities = np.array(intensities)
import esmraldi.imzmlio as io import esmraldi.spectraprocessing as sp import numpy as np from scipy.stats import pearsonr parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", help="Input MALDI imzML") parser.add_argument("-p", "--prominence", help="Prominence factor for peak selection") args = parser.parse_args() inputname = args.input prominence = float(args.prominence) p = io.open_imzml(inputname) spectra = io.get_spectra(p) mz, I = spectra[0] min_diff = mz[1] - mz[0] wlen = max(10, int(50.0 / min_diff)) indices_mzs = sp.spectra_peak_indices_adaptative(spectra, factor=prominence, wlen=wlen) width_peak_indices = 10 tic = [] medians = [] sic = [] sic_comp = []
for i in range(image.shape[-1]): n, ext = os.path.splitext(name) current_name = n + "_" + str(i + 1) + ext plt.imshow(image[..., i], cmap="gray") plt.axis("off") plt.savefig(current_name, transparent=True, bbox_inches='tight', pad_inches=0, dpi=150) plt.close() ## Open imzML ## This is a MS image where peaks are selected imzml = io.open_imzml("data/wheat/msi.imzML") spectra = io.get_full_spectra(imzml) max_x = max(imzml.coordinates, key=lambda item: item[0])[0] max_y = max(imzml.coordinates, key=lambda item: item[1])[1] msi_images = io.get_images_from_spectra(spectra, shape=(max_x, max_y)) ## Open MRI image mri_itk_image = sitk.ReadImage("data/wheat/mri.png") mri_image = sitk.GetArrayFromImage(mri_itk_image) ## Curvature values obtained by the VCM estimator ## of Lachaud et al. available in DGtal: ## More at https://dgtal.org/doc/stable/moduleVCM.html ## here, parameters r=4, R=5 for VCM computation ## The actual script used is available at https://github.com/fgrelard/MyDGtalContrib/blob/master/curvature.sh ## Requires DGtal library compilation
for i, (x, y, z) in enumerate(image.coordinates): mz, ints = image.getspectrum(i) mz = mz[:1] ints = ints[:1] mzs.append(mz) intensities.append(ints) imzmlio.write_imzml( mzs, intensities, image.coordinates, "/mnt/d/MALDI/imzML/MSI_20190419_01/00/peaksel_small.imzML") parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", help="Input MALDI imzML") parser.add_argument("-o", "--output", help="Output nii file") args = parser.parse_args() inputname = args.input outname = args.output root, ext = os.path.splitext(outname) image = imzmlio.open_imzml(inputname) spectra = imzmlio.get_full_spectra(image) max_x = max(image.coordinates, key=lambda item: item[0])[0] max_y = max(image.coordinates, key=lambda item: item[1])[1] max_z = max(image.coordinates, key=lambda item: item[2])[2] img_array = imzmlio.get_images_from_spectra(spectra, (max_x, max_y, max_z)) mzs, y = image.getspectrum(0) imzmlio.to_nifti(img_array, outname) imzmlio.to_csv(mzs, root + ".csv") #seg.max_variance_sort(image)
import esmraldi.imzmlio as io import SimpleITK as sitk import argparse import numpy as np parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", help="Input spectrum") parser.add_argument("-o", "--output", help="Output spectrum") parser.add_argument("-f", "--factor", help="Scale factor") args = parser.parse_args() input_name = args.input outname = args.output factor = float(args.factor) imzml = io.open_imzml(input_name) original_spectra = io.get_spectra(imzml) mzs = original_spectra[:, 0, :] spectra = imzmlio.get_full_spectra(imzml) max_x = max(imzml.coordinates, key=lambda item:item[0])[0] max_y = max(imzml.coordinates, key=lambda item:item[1])[1] max_z = max(imzml.coordinates, key=lambda item:item[2])[2] image = imzmlio.get_images_from_spectra(spectra, (max_x, max_y, max_z)) itk_image = sitk.GetImageFromArray(image) size = image.shape[:2] new_size = [d*factor for d in size] new_size = new_size[::-1] resized_itk = utils.resize(itk_image, new_size)
def test_to_image_array(self): self.imzml = io.open_imzml( "/mnt/d/MALDI/imzML/MSI_20190419_01/00/peaksel_small.imzML") image2 = io.to_image_array(self.imzml) print(image2.shape)
def test_get_spectra_from_images(self): self.imzml = io.open_imzml( "/mnt/d/MALDI/imzML/MSI_20190419_01/00/peaksel.imzML") coords = self.imzml.coordinates i, newcoords = io.get_spectra_from_images(self.data) self.assertEqual(coords, newcoords)