Esempio n. 1
0
def read_xml_data(folder=None, filename='output00000246.xml'):
    output_path = folder or os.path.abspath(os.path.dirname(__file__))

    xml_file = os.path.join(output_path, filename)

    mcds = pyMCDS_cells(xml_file, output_path=output_path)

    ncells = len(mcds.data['discrete_cells']['ID'])

    centers = np.zeros((ncells, 3))
    centers[:, 0] = mcds.data['discrete_cells']['position_x']
    centers[:, 1] = mcds.data['discrete_cells']['position_y']
    centers[:, 2] = mcds.data['discrete_cells']['position_z']

    colors = np.zeros((ncells, 3))
    colors[:, 0] = 1
    colors[:, 1] = 1
    colors[:, 2] = 0

    cycle_model = mcds.data['discrete_cells']['cycle_model']

    cell_type = mcds.data['discrete_cells']['cell_type']

    onco = mcds.data['discrete_cells']['oncoprotein']
    onco_min = onco.min()
    onco_range = onco.max() - onco.min()

    # This coloring is only approximately correct, but at least it shows
    # variation in cell colors
    for idx in range(ncells):
        if cell_type[idx] == 1:
            colors[idx, 0] = 1
            colors[idx, 1] = 1
            colors[idx, 2] = 0
        if cycle_model[idx] < 100:
            colors[idx, 0] = 1.0 - (onco[idx] - onco_min) / onco_range
            colors[idx, 1] = colors[idx, 0]
            colors[idx, 2] = 0
        elif cycle_model[idx] == 100:
            colors[idx, 0] = 1
            colors[idx, 1] = 0
            colors[idx, 2] = 0
        elif cycle_model[idx] > 100:
            colors[idx, 0] = 0.54  # 139./255
            colors[idx, 1] = 0.27  # 69./255
            colors[idx, 2] = 0.075  # 19./255

    radius = mcds.data['discrete_cells']['total_volume'] * .75 / np.pi
    radius = np.cbrt(radius)

    return centers, colors, radius
def read_data():
    global idx_xml, xml_files

    mcds = pyMCDS_cells(xml_files[idx_xml], _DATA_DIR)

    ncells = len(mcds.data['discrete_cells']['ID'])

    centers = np.zeros((ncells, 3))
    centers[:, 0] = mcds.data['discrete_cells']['position_x']
    centers[:, 1] = mcds.data['discrete_cells']['position_y']
    centers[:, 2] = mcds.data['discrete_cells']['position_z']

    colors = np.zeros((ncells, 3))
    colors[:, 0] = 1
    colors[:, 1] = 1
    colors[:, 2] = 0

    cycle_model = mcds.data['discrete_cells']['cycle_model']

    cell_type = mcds.data['discrete_cells']['cell_type']

    onco = mcds.data['discrete_cells']['oncoprotein']
    onco_min = onco.min()
    onco_range = onco.max() - onco.min()

    # This coloring is only approximately correct, but at least it shows
    # variation in cell colors
    for idx in range(ncells):
        if cell_type[idx] == 1:
            colors[idx, 0] = 1
            colors[idx, 1] = 1
            colors[idx, 2] = 0
        if cycle_model[idx] < 100:
            colors[idx, 0] = 1.0 - (onco[idx] - onco_min) / onco_range
            colors[idx, 1] = colors[idx, 0]
            colors[idx, 2] = 0
        elif cycle_model[idx] == 100:
            colors[idx, 0] = 1
            colors[idx, 1] = 0
            colors[idx, 2] = 0
        elif cycle_model[idx] > 100:
            colors[idx, 0] = 0.54  # 139./255
            colors[idx, 1] = 0.27  # 69./255
            colors[idx, 2] = 0.075  # 19./255

    radius = mcds.data['discrete_cells']['total_volume'] * .75 / np.pi
    radius = np.cbrt(radius)

    return centers, colors, radius
Esempio n. 3
0
print('# num_days = ', num_days)
kdx += 1
ymax = float(sys.argv[kdx])
print('ymax = ', ymax)

print('data_dir = ', data_dir)
os.chdir(data_dir)
#xml_files = glob.glob('output/output*.xml')
xml_files = glob.glob('output*.xml')
os.chdir('..')
xml_files.sort()
#print('xml_files = ',xml_files)

ds_count = len(xml_files)
print("----- ds_count = ", ds_count)
mcds = [pyMCDS_cells(xml_files[i], data_dir) for i in range(ds_count)]

tval = np.linspace(0, mcds[-1].get_time(), ds_count)
print('tval= ', tval)

y_load = np.array([
    np.floor(mcds[idx].data['discrete_cells']['assembled_virion']).sum()
    for idx in range(ds_count)
]).astype(int)
print(y_load)

xvals = [*range(1, num_days + 1)]
xvals = [el * 1440 for el in xvals]
xlabels = tuple(str(val) for val in range(1, num_days + 1))
plt.xticks(xvals, xlabels)
Esempio n. 4
0
import numpy as np
import matplotlib.pyplot as plt  # if you want to plot results

# run this script from your output directory
xml_files = glob.glob('output*.xml')
xml_files.sort()
print(xml_files)

n = len(xml_files)
t = np.zeros(n)
uninfected = np.zeros(n)
infected = np.zeros(n)
dead = np.zeros(n)
idx = 0
for f in xml_files:
    mcds = pyMCDS_cells(f, '.')
    t[idx] = mcds.get_time()

    cycle = mcds.data['discrete_cells']['cycle_model']
    cycle = cycle.astype(int)

    ID_uninfected = np.where(
        (mcds.data['discrete_cells']['assembled_virion'] < 1) & (cycle < 100))
    ID_infected = np.where(
        (mcds.data['discrete_cells']['assembled_virion'] >= 1) & (cycle < 100))
    uninfected[idx] = len(ID_uninfected[0])
    infected[idx] = len(ID_infected[0])

    dead_ID = np.where(cycle >= 100)
    dead[idx] = len(dead_ID[0])
    #    print(infected)
Esempio n. 5
0
    colors_array.Modified()


def win_callback(obj, event):
    global size
    global panel
    if size != obj.GetSize():
        size_old = size
        size = obj.GetSize()
        size_change = [size[0] - size_old[0], 0]
        panel.re_align(size_change)


if __name__ == '__main__':
    # mcds = pyMCDS_cells('output00000001.xml', '.')  # 23123 cells
    mcds = pyMCDS_cells('output00000246.xml', '.')
    print('time=', mcds.get_time())

    print(mcds.data['discrete_cells'].keys())

    ncells = len(mcds.data['discrete_cells']['ID'])

    global xyz
    xyz = np.zeros((ncells, 3))
    xyz[:, 0] = mcds.data['discrete_cells']['position_x']
    xyz[:, 1] = mcds.data['discrete_cells']['position_y']
    xyz[:, 2] = mcds.data['discrete_cells']['position_z']
    #xyz = xyz[:1000]

    np.random.seed(42)
    # rgb = np.random.rand(xyz.shape[0], 3)
Esempio n. 6
0
#from pyMCDS import pyMCDS
from pyMCDS_cells import pyMCDS_cells
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use("TkAgg")

argc = len(sys.argv)
print('argv=', sys.argv)
print('argv[0]=', sys.argv[0])
#p1=string.atof(sys.argv[1])

#mcds = pyMCDS_cells('output00000000.xml','output');
#mcds = pyMCDS_cells('output00000002.xml')
fname = "output%08d.xml" % int(sys.argv[1])
mcds = pyMCDS_cells(fname)

#In [7]: mcds.data['discrete_cells'].keys()
#Out[7]: dict_keys(['ID', 'position_x', 'position_y', 'position_z', 'total_volume', 'cell_type', 'cycle_model', 'current_phase', 'elapsed_time_in_phase', 'nuclear_volume', 'cytoplasmic_volume', 'fluid_fraction', 'calcified_fraction', 'orientation_x', 'orientation_y', 'orientation_z', 'polarity', 'migration_speed', 'motility_vector_x', 'motility_vector_y', 'motility_vector_z', 'migration_bias', 'motility_bias_direction_x', 'motility_bias_direction_y', 'motility_bias_direction_z', 'persistence_time', 'motility_reserved', 'receptor', 'elastic_coefficient'])

tval = int(mcds.get_time())
print('time = ', tval)
cx = mcds.data['discrete_cells']['position_x']
cy = mcds.data['discrete_cells']['position_y']
print('x size =', cx.size)
print('y size =', cy.size)
bad_max = 5000
#idx_bad = np.where((cx > bad_max) ^ (cy > bad_max))
#print('idx_bad=',idx_bad)

#cycle = mcds.data['discrete_cells']['cycle_model']
Esempio n. 7
0
from pyMCDS_cells import pyMCDS_cells
import numpy as np
from fury import window, actor, ui

#mcds = pyMCDS_cells('output00000001.xml','data')
mcds = pyMCDS_cells('output00000001.xml','.')  # 23123 cells
print('time=',mcds.get_time())

print(mcds.data['discrete_cells'].keys())
#Out[7]: dict_keys(['ID', 'position_x', 'position_y', 'position_z', 'total_volume', 'cell_type', 'cycle_model', 'current_phase', 'elapsed_time_in_phase', 'nuclear_volume', 'cytoplasmic_volume', 'fluid_fraction', 'calcified_fraction', 'orientation_x', 'orientation_y', 'orientation_z', 'polarity', 'migration_speed', 'motility_vector_x', 'motility_vector_y', 'motility_vector_z', 'migration_bias', 'motility_bias_direction_x', 'motility_bias_direction_y', 'motility_bias_direction_z', 'persistence_time', 'motility_reserved', 'oncoprotein', 'elastic_coefficient', 'kill_rate', 'attachment_lifetime', 'attachment_rate'])

# http://www.mathcancer.org/blog/paraview-for-physicell-part-1/

# The following lines assign an integer to represent
# a color, defined in a Color Map.
# sval = 0   # immune cells are yellow?
# if val[5,idx] == 1:  # [5]=cell_type
#   sval = 1   # lime green
# if (val[6,idx] == 6) or (val[6,idx] == 7):
#   sval = 0
# if val[7,idx] == 100:  # [7]=current_phase
#   sval = 3   # apoptotic: red
# if val[7,idx] > 100 and val[7,idx] < 104:
#   sval = 2   # necrotic: brownish

ncells = len(mcds.data['discrete_cells']['ID'])
print('num cells = ',ncells)

#xyz = np.empty((ncells,3))
xyz = np.zeros((ncells,3))
import glob
from pyMCDS_cells import pyMCDS_cells
import numpy as np

xml_files = glob.glob('output*.xml')
xml_files.sort()
print(xml_files)
num_xml = len(xml_files)
print(num_xml)
tcount = 0
count_macs = np.zeros(44)
#mcds1 = pyMCDS('output00000001.xml', 'timeseries_set')
for xml_f in xml_files:
    # mcds = pyMCDS_cells('output00000001.xml','.')
    mcds = pyMCDS_cells(xml_f,'.')

    # Matlab (Adrianne)
    # ind1(tcount) = length(find( MCDS.discrete_cells.metadata.type == 3)); %CD8
    # ind2(tcount) = length(find( MCDS.discrete_cells.metadata.type == 4)); %macs
    # ind3(tcount) = length(find( MCDS.discrete_cells.metadata.type == 5)); %neutrophils
    # dead_cells(tcount) = length(MCDS.discrete_cells.dead_cells);
    # live_target_cells(tcount) = length(find( MCDS.discrete_cells.metadata.type == 1))-dead_cells(tcount);
    # infected_cells(tcount) = length(find(MCDS.discrete_cells.custom.virion>1));

    print('time=',mcds.get_time())
    cell_id = mcds.data['discrete_cells']['ID']
    num_cells = cell_id.shape[0]
    print('# cells = ',num_cells)
    cell_type = mcds.data['discrete_cells']['cell_type']
    macs = np.where(cell_type == 4.0)
    count_macs[tcount] = len(macs[0])
Esempio n. 9
0
from pyMCDS_cells import pyMCDS_cells
import numpy as np
from fury import window, actor, ui

#mcds = pyMCDS_cells('output00000001.xml','data')
#mcds = pyMCDS_cells('output00000001.xml','.')  # 23123 cells
mcds = pyMCDS_cells('output00000001.xml', '../tmpdir')  # 23123 cells
print('time=', mcds.get_time())

print(mcds.data['discrete_cells'].keys())
#Out[7]: dict_keys(['ID', 'position_x', 'position_y', 'position_z', 'total_volume', 'cell_type', 'cycle_model', 'current_phase', 'elapsed_time_in_phase', 'nuclear_volume', 'cytoplasmic_volume', 'fluid_fraction', 'calcified_fraction', 'orientation_x', 'orientation_y', 'orientation_z', 'polarity', 'migration_speed', 'motility_vector_x', 'motility_vector_y', 'motility_vector_z', 'migration_bias', 'motility_bias_direction_x', 'motility_bias_direction_y', 'motility_bias_direction_z', 'persistence_time', 'motility_reserved', 'oncoprotein', 'elastic_coefficient', 'kill_rate', 'attachment_lifetime', 'attachment_rate'])

# http://www.mathcancer.org/blog/paraview-for-physicell-part-1/

# The following lines assign an integer to represent
# a color, defined in a Color Map.
# sval = 0   # immune cells are yellow?
# if val[5,idx] == 1:  # [5]=cell_type
#   sval = 1   # lime green
# if (val[6,idx] == 6) or (val[6,idx] == 7):
#   sval = 0
# if val[7,idx] == 100:  # [7]=current_phase
#   sval = 3   # apoptotic: red
# if val[7,idx] > 100 and val[7,idx] < 104:
#   sval = 2   # necrotic: brownish

ncells = len(mcds.data['discrete_cells']['ID'])
print('num cells = ', ncells)

#xyz = np.empty((ncells,3))
xyz = np.zeros((ncells, 3))