cellerie
about
The cell lineage exploratory repository & interactive environment, cellerie, is a streamlined web-based visual tool engineered to enable biologists to dynamically track, filter, and compare gene expression patterns across multiple cell lineage tree data sets simultaneously.

QUICK LAUNCH: DEMO

cellerie allows users to track the lineage of gene expression in cells over time with overlapping data in movies, gene expression levels and cell lineage hierarchies.

cellerie was developed originally as part of Caltech/JPL/ArtCenter Summer Data Visualization Program for the Elowitz Lab.
team
  • michael elowitz, elowitz lab, caltech -- PI
  • sahand hornoz, elowitz lab, caltech
  • santiago lombeyda, cd3, caltech
  • previous team members
  • alex sciuto, datavis summer program '15, cmu
  • pei liew, datavis summer program '15, art center
  • john thompson, datavis summer program '15, gatech
  • sahand hornoz, elowitz lab, caltech
  • zakary singer, elowitz lab, caltech
  • Caltech/JPL/ArtCenter Summer Data Visualization Program Mentors scott davidoff, jpl |  maggie hendrie, art center |  santiago lombeyda, caltech |  hillary mushkin, caltech
  • individual experiment format
    Every experiment consists of a sequence of images (frames in jpg format), where a companion frames.json file describes the cell lineage throughout the image frame sequence. This frames.json files contains the following information:
    • cellParent: An array of integers representing the index number of that particular cell’s parent. First index starts at zero. The root of the tree has -1 as a parent.
    • cellFrame: An array of arrays of frame numbers, representing the frames when the particular cell is present.
    • cellArea An array of arrays of floats, representing the area of the particular cell in each frame of existence. This array’s length should have the same length of the cell’s cellFrame array length.
    • cellPos An array or arrays of position tuples, representing the x and y position of the cell in each particular frame. This array’s length should have the same length of the cell’s cellFrame array length.
    • cellSize An array or arrays of position tuples, representing the width and height of the cell in each particular frame. This array’s length should have the same length of the cell’s cellFrame array length.
    Here is a sample single experiment file. Notice that each of the cell frames will correspond to an image file, found on the path as described in the bundle format's pathToMovieImages line 6.

    This, for instance, is the file for file 2, data/my.experiment.0001/2/frames.json.
    { "BIO_TREE_JSON_FORMAT": "v.0.0.1.2017.01.10", "structureFields": [ "cellParent", "cellFrame", "bdryCells" ], "nodeFields": [ "cellSig", "cellSize", "cellPos", "cellArea"], "leafFields": [ "FISHcounts_Tbx3", "FISHcounts_Esrrb", "FISHcounts_Zscan4", "FISH_prom_Act" ], // ~~~~~~~ structure fields "cellParent": [ -1, // node 0: root, no parent 0, // node 1: parent->0 0, // node 2: parent->0 1, // node 3: parent->1 1, // node 4: parent->1 2, // node 5: parent->2 2 // node 6: parent->2 ], "cellFrame": [ [1001, 1002, 1003, 1004], // node 0: born at 1001, splits after 1004 [1005, 1006, 1007, 1008, 1009], // node 1: born at 1005, splits after 1009 [1005, 1006, 1007, 1008], // node 2: born at 1005, splits after 1008 [1010, 1011, 1012, 1013], // node 3: born at 1010 [1010, 1011, 1012, 1013], // node 4: born at 1010 [1009, 1010, 1011, 1012, 1013], // node 5: born at 1009 [1009, 1010, 1011, 1012, 1013] // node 6: born at 1009 ], "bdryCells": [ 3, 4, 5, 6 ], // ~~~~~~~ node fields "cellSize": [ [[20,20], [21,20], [21,21], [22,22]], // node 0 [[19,20], [20,20], [21,21], [21,22], [21,22]], // node 1 [[18,18], [18,19], [19,19], [20,20]], // node 2 [[21,19], [21,20], [21,21], [22,21]], // node 3 [[20,21], [20,22], [20,22], [21,22]], // node 4 [[22,19], [22,20], [23,21], [24,21], [24,21]], // node 5 [[20,22], [21,22], [22,23], [23,23], [24,23]] // node 6 ], "cellPos": [ [[150,150], [151,150], [150,150], [151,151]], // node 0 [[140,151], [140,150], [139,150], [138,150], [137,150]], // node 1 [[160,150], [160,151], [161,152], [162,152]], // node 2 [[137,140], [137,139], [136,138], [135,137]], // node 3 [[137,160], [138,161], [139,162], [140,161]], // node 4 [[162,162], [162,163], [161,164], [162,165], [163,166]], // node 5 [[162,142], [163,142], [163,141], [162,140], [163,141]] // node 6 ], "cellArea": [ [311, 313, 314, 310], // node 0 [343, 318, 410, 342, 410], // node 1 [354, 403, 333, 413], // node 2 [297, 332, 414, 414], // node 3 [364, 345, 325, 395], // node 4 [378, 399, 413, 402, 383], // node 5 [313, 395, 362, 342, 361] // node 6 ], "cellSig": [ [103.2, 107.4, 103.2, 107.3], // node 0 [106.3, 104.8, 103.2, 109.3, 102.3], // node 1 [109.2, 109.3, 105.3, 103.8], // node 2 [102.1, 108.9, 108.1, 107.2], // node 3 [100.1, 103.2, 109.1, 108.3], // node 4 [100.8, 104.0, 103.3, 109.2, 106.3], // node 5 [108.3, 107.3, 100.0, 102.1, 104.3] // node 6 ], // ~~~~~~~ leaf node fields "FISHcounts_Esrrb": [ 14, 21, 62, 47 ], "FISHcounts_Tbx3": [ 0, 0, 1, 2 ], "FISH_prom_Act": [ 0.51224, 2.1403, 0.81692, 0.15217 ], "FISHcounts_Zscan4": [ 1, 0, 0, 11 ] }
    experiment bundle format
    A set of experiments, as described above, can then be bundled, and prepped to be loaded by cellerie. A data bundle requires 10 entries to work. here is an example:
    var myDataSet = { formatversion: "v.0.0.1", datapath: "data/my.experiment.0001", files: [1,2,3,4,5], pathToJsonFile: { path:"[positionNumber]/frames.json", fixedWidth: false }, pathToMovieImages: { path:"[positionNumber]/frame.[frameNumber].jpg", fixedWidth: false }, pathToFinalImages: { path:"[positionNumber]/finalframe.FISH.png", fixedWidth: false }, imageSize: 512, signalData: [ {arrayName:"cellSig", label:"Esrrb Fluorescence"} ], totalFrames: 20, geneExpressionData: [ {arrayName : "FISHcounts_Esrrb", label: "Esrrb"}, {arrayName : "FISHcounts_Zscan4", label: "zscan"}, {arrayName : "FISHcounts_Tbx3", label: "tbx3"} ] }; cellerieDB.push(myDataSet);
    launch
    download
    To download cellerie, please visit our repository at github.

    cellerie ( ) is a browser based application. Browsers (for your own safety) can only load data from an online server, but not from your own computer. Some browsers do allow to either load data from the same subdirectory or you can even disable safety precautions, and give the browser full access to files on your computer [NOT RECOMMENDED].

    An alternative is to start a local http server that you can then point your browser to an internal/local address along the lines of http://localhost:8000.
    upload
    Direct upload is currently not possible. however, you can post your data on your own website, and link to it directly below, under data path, open cell lines directly. Let us know if you would like to have us permanently host your data on this site.