Overview

Many studies have shown that classic computer tomography could not resolve the reconstruction problem when the number of parallel-flow projections is less than three. We thus sought to develop a transfer learning-based method to reconstruct the original spatial distribution from the parallel-flow projected values of extremely a few angles, herein Flow2Spatial.

Flow2Spatial simplifies the challenge of spatial information reconstruction by leveraging the other related spatial omics information from the consecutive slice. The workflow includes two-steps, namely transferring and learning. The data for transferring in the first step is derived from easily-accessible omics, which is provided by the consecutive slice, such as histological staining, spatial transcriptomics or metabolomics. We then build a generator that yields a new spatial dataset by randomly integrating these observed spatial-omics to enhance the diversity of spatial distribution. Subsequently, all generated spatial data will be used as the training set in the learning step. Here, based on the training set, Flow2Spatial leverages an autoencoder-like deep learning model to build connections between parallel-flow projections and spatial information. Specifically, for each spatial-omics dataset, the encoder mimics the microfluidic chip-based parallel-flow projection process to generate pseudostrips spanning the entire section. In the decoder part, a Residual Networks (ResNet)-based deep learning model is trained by values of pseudostrips and ground truth data by minimizing L1-loss. Finally, the trained decoder is used to reconstruct real spatial information of the experimentally detected proteome.

Here, we use the functions in Flow2Spatial.generator to achieve the transferring step, and Flow2Spatial.model to implement the learning step. There are three functions in Flow2Spatial.generator : omics(), histology() and random(), corresponding to the three types of generators. And there are also three functions in Flow2Spatial.model : preparation(), training() and reconstruction(). To complete the spatial reconstruction, we should run these functions sequentially.