Tutorials¶
Create configuration and input files¶
The configuration file needs to be created which will incorporate all experimental set up parameters. Please refer to documentation of defaults.ReconstructionConfig():
configurationFile = tomography.ReconstructionConfig(angles_names=angles_names,
mask=mask,mask_thrs=0.1,
reference_mask=reference_mask,
symmetry=True,
masked_formulation=True,
angles_values=angles_values,
first_points=first_points,
widths=widths)
The mask is a binarized image indicating which pixels are within the tissue with 1 and those outside the tissue with 0. The reference mask is a brightfield microscopy image of the tissue which was thresholded by the parameter mask_thrs to create the binarized mask. The symmetry parameter implies that one is considering a tissue section which is believed to be symmetrical. Setting this to true permits for more accurate reconstructions for symmetrical tissue samples.
The input file needs to be in a specified format as well. It is a dictionary of dictionaries. Depending on what data you have in projections, you will need to modify the line gene_projection = load(gene, angle) so that the data can be properly loaded and stored in the .hdf5 file.:
def create_filename_data(file_path, angles_names, angles_values, var):
"""Creates h5py file with data.
Argumets:
file_path: string path to .h5py
angles_names: list of angle names in format anglexxx
angles_values: integer values of angle names
var: dictionary containing gene_list and attributes
"""
fout = h5py.File(file_path, 'w')
for g_name, g_ in var.items():
for i, anglename in enumerate(angles_names):
gene_projection = load(gene, angle)
fout.create_dataset("genes/%s/%s" % (g_name, anglename), data=gene_projection)
fout.close()
return profiles
The Tomographer object¶
In the following steps, we will create the Tomographer object and load the ReconstructionConfig file and InputProjection file.
This is done as follows:
filename_data = "/path/to/InputProjection.hdf")
tg = tomography.Tomographer()
tg.load_cfg(configurationFile)
tg.connect_data(filename_data)
Next, the Tomographer object has a method reconstruct. This will take in the gene name and the hyperparameters one wants to use to solve for the spatial profile of the gene.:
result = tg.reconstruct(gene, alpha_beta=(0,0))
If one is unsure of the hyperparameters, replace (0,0) with ‘auto’ to perform a grid search.:
result = tg.reconstruct(gene, crossval_kwargs={"domain":[(-5, 0.8), (-6, 2.5)]})
Note that other specifications for the grid search can be found in optimization.optimize.
Reconstruct multiple genes¶
If one has a list of gene names one would like to reconstruct, tomorun.py can be run using the inputs specified in summary (section 4):
export OMP_NUM_THREADS && OMP_NUM_THREADS=2 && nohup python3 /tomography/tomorun.py -c /configurationFile.hdf5 -i /inputProjections.hdf5 -o /outputFileName.hdf5 -a outputFileNameAlphaBeta.hdf5 -g listofGenes.txt> /outputstderr.txt 2>&1 &