12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Fri Sep 4 15:25:17 2020
- @author: p277634
- """
- import numpy as np
- from scipy.io import loadmat
- from itertools import combinations
- class BNVfiles():
- def __init__(self):
- self.fileNodes = './data/Desikan-Killiany68_myTest.txt'
- self.fileMapper = './data/mapFS2DTI.mat'
- self.pathsave = './dataSave/'
- self.nroi = 68
- self.pairs = np.array(list(combinations(range(self.nroi),2)), dtype=np.int32)
- self._getMapper()
-
- def _getMapper(self):
- self.map = loadmat(self.fileMapper)['map']['raw2cross'][0][0][0]-1
-
- def doNodes(self, colors=None, sizes=None, name='nodes'):
- """ Desikan parcelation by default
- @ colors: [nRoi], scale for coloring nodes
- @ sizes: [nROi], scale for the size of nodes """
- A = np.loadtxt(self.fileNodes)
- if colors is not None:
- A[:,3] = colors[self.map]
-
- if sizes is not None:
- A[:,4] = sizes[self.map]
-
- np.savetxt(self.pathsave+name + '.node', A)
-
- def doEdges(self, edges, weights, name='edges'):
- """ @ edges: directed FC with sign
- @ weights: strength of edge """
- ## Edges are transposed with respect to brain connectivity toolbox
- fc = np.zeros((self.nroi, self.nroi))
- for i in range(self.pairs.shape[0]):
- if edges[i] > 0:
- fc[self.map[self.pairs[i,0]], self.map[self.pairs[i,1]]] = weights[i]
- elif edges[i] < 0:
- fc[self.map[self.pairs[i,1]], self.map[self.pairs[i,0]]] = weights[i]
-
- np.savetxt(self.pathsave+name + '.edge', fc.T)
|