Source code for tvb.interfaces.command.demos.importers.brain_tumor_connectivity_importer

# -*- coding: utf-8 -*-
#
#
# TheVirtualBrain-Framework Package. This package holds all Data Management, and 
# Web-UI helpful to run brain-simulations. To use it, you also need to download
# TheVirtualBrain-Scientific Package (for simulators). See content of the
# documentation-folder for more details. See also http://www.thevirtualbrain.org
#
# (c) 2012-2023, Baycrest Centre for Geriatric Care ("Baycrest") and others
#
# This program is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.  See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this
# program.  If not, see <http://www.gnu.org/licenses/>.
#
#
#   CITATION:
# When using The Virtual Brain for scientific publications, please cite it as explained here:
# https://www.thevirtualbrain.org/tvb/zwei/neuroscience-publications
#
#


"""
Import connectivities from Brain Tumor zip archives

.. moduleauthor:: Bogdan Valean <bogdan.valean@codemart.ro>
"""
import sys
from tvb.adapters.uploaders.region_mapping_importer import RegionMappingImporter, RegionMappingImporterModel
from tvb.adapters.uploaders.zip_surface_importer import ZIPSurfaceImporter, ZIPSurfaceImporterModel
from tvb.basic.logger.builder import get_logger
from tvb.basic.readers import try_get_absolute_path
from tvb.interfaces.command.lab import *

CONN_ZIP_FILE = "SC.zip"
LOG = get_logger(__name__)


[docs]def import_tumor_connectivities(project_id, folder_path): conn_gids = [] for patient in os.listdir(folder_path): patient_path = os.path.join(folder_path, patient) if os.path.isdir(patient_path): user_tags = os.listdir(patient_path) for user_tag in user_tags: conn_folder = os.path.join(patient_path, user_tag) connectivity_zip = os.path.join(conn_folder, CONN_ZIP_FILE) if not os.path.exists(connectivity_zip): LOG.error("File {} does not exist.".format(connectivity_zip)) continue import_conn_adapter = ABCAdapter.build_adapter_from_class(ZIPConnectivityImporter) import_conn_model = ZIPConnectivityImporterModel() import_conn_model.uploaded = connectivity_zip import_conn_model.data_subject = patient import_conn_model.generic_attributes.user_tag_1 = user_tag import_op = fire_operation(project_id, import_conn_adapter, import_conn_model) import_op = wait_to_finish(import_op) conn_gids.append(dao.get_results_for_operation(import_op.id)[0].gid) return conn_gids
[docs]def import_surface_rm(project_id, conn_gid): # Import surface and region mapping from tvb_data berlin subjects (68 regions) rm_file = try_get_absolute_path("tvb_data", "berlinSubjects/DH_20120806/DH_20120806_RegionMapping.txt") surface_zip_file = try_get_absolute_path("tvb_data", "berlinSubjects/DH_20120806/DH_20120806_Surface_Cortex.zip") surface_importer = ABCAdapter.build_adapter_from_class(ZIPSurfaceImporter) surface_imp_model = ZIPSurfaceImporterModel() surface_imp_model.uploaded = surface_zip_file surface_imp_operation = fire_operation(project_id, surface_importer, surface_imp_model) surface_imp_operation = wait_to_finish(surface_imp_operation) surface_gid = dao.get_results_for_operation(surface_imp_operation.id)[0].gid rm_importer = ABCAdapter.build_adapter_from_class(RegionMappingImporter) rm_imp_model = RegionMappingImporterModel() rm_imp_model.mapping_file = rm_file rm_imp_model.surface = surface_gid rm_imp_model.connectivity = conn_gid rm_import_operation = fire_operation(project_id, rm_importer, rm_imp_model) wait_to_finish(rm_import_operation)
if __name__ == '__main__': # Path to TVB folder input_folder = sys.argv[1] # Project where DTs will be imported project_id = sys.argv[2] conn_gids = import_tumor_connectivities(project_id, input_folder) import_surface_rm(project_id, conn_gids[0])