Skip to content
Snippets Groups Projects
Commit a906d23b authored by ac_fx's avatar ac_fx
Browse files

removed node.js dependency

parent 99eaf2f1
Branches
No related tags found
No related merge requests found
% ctc2lever
% import ctc format tiff folder into .LEVER
function h5File=ctc2lever(ctcFolder,outpath,expName)
function [h5File,imageData]=ctc2lever(ctcFolder,outpath,expName)
if ~exist('expName','var')
expName=[];
end
h5File=importFolder(ctcFolder,outpath,expName);
[h5File,imageData]=importFolder(ctcFolder,outpath,expName);
% make a lever file from matlab. otherwise leverjs will try to use node,
% and node is a pain for some...
mxNode.mxMakeLEVER(imageData,outpath);
Import.leverImport([],outpath,h5File);
4;
function h5File=importFolder(ctcFolder,outfolder,expName)
function [h5File, imageData]=importFolder(ctcFolder,outfolder,expName)
h5File=[];
parts=strsplit(ctcFolder,filesep);
if isempty(expName)
expName=[parts{end-1} '_challenge_' parts{end}];
end
h5File=fullfile(outfolder,[expName '.h5']);
if exist(h5File,'file')
imageData=[];
return
end
......@@ -48,14 +51,14 @@ for t=1:length(flist)
im(:,:,z)=imread(fullfile(ctcFolder,fname),z);
end
if 1==t
imd=MicroscopeData.MakeMetadataFromImage(im);
imd.DatasetName=expName;
imd.NumberOfFrames = length(flist);
imd.PixelPhysicalSize=imd1.PixelPhysicalSize;
if (size(imd.Dimensions,2)~=3)
imd.Dimensions=[imd.Dimensions 1];
imageData=MicroscopeData.MakeMetadataFromImage(im);
imageData.DatasetName=expName;
imageData.NumberOfFrames = length(flist);
imageData.PixelPhysicalSize=imd1.PixelPhysicalSize;
if (size(imageData.Dimensions,2)~=3)
imageData.Dimensions=[imageData.Dimensions 1];
end
Import.prepareH5(h5File,imd);
Import.prepareH5(h5File,imageData);
end
% ACK - mat2gray here??!?
im=mat2gray(im);
......
function mxCreateColorTable(conn)
cmd=horzcat([
'DROP TABLE IF EXISTS tblColors;'...
'CREATE TABLE tblColors (jsColor STRING);'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#FF0000","dark":"#662626"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#FF8000","dark":"#663326"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#FFFF00","dark":"#666626"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#00FF00","dark":"#266626"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#00FFFF","dark":"#266666"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#0080FF","dark":"#263366"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#8000FF","dark":"#332666"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#FF0080","dark":"#662633"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#008000","dark":"#263326"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#00BFBF","dark":"#264D4D"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#BF00BF","dark":"#4D264D"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#BFBF00","dark":"#4D4D26"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#CB0066","dark":"#512629"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#986600","dark":"#3D2926"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#00CBFF","dark":"#265166"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#FF9866","dark":"#663D29"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#00CB00","dark":"#265126"}'');'...
'INSERT INTO tblColors(jsColor) VALUES(''{"bright":"#CB9800","dark":"#513D26"}'')']);
exec(conn,cmd);
function CONSTANTS=mxMakeCONSTANTS(imageData,targetFolder)
CONSTANTS=[];
[ret, host] = system('hostname');
host=host(1:end-1);
CONSTANTS.version = ['matlab_' host '_' date()];
CONSTANTS.imageData = imageData;
CONSTANTS.ui.rootImageFolder= fullfile(CONSTANTS.imageData.imageDir,CONSTANTS.imageData.DatasetName);
% create a LEVER file. up until feb 22 this was done via node.js
% but node install is awkward for some so we implement now in matlab also
% yucky to have two entry points...but needs must
function CONSTANTS=mxMakeLEVER(imageData,targetFolder)
if ~exist(targetFolder,'dir')
mkdir(targetFolder);
end
% make sure targetFolder is FQ
targetFolder=dir(targetFolder);
targetFolder=fullfile(targetFolder(1).folder,targetFolder(1).name);
[targetFolder]=fileparts(targetFolder);
imageData.imageDir=targetFolder;
CONSTANTS=mxNode.mxMakeCONSTANTS(imageData,targetFolder);
strDB=fullfile(targetFolder,[imageData.DatasetName,'.LEVER']);
if exist(strDB,'file')
fprintf(2,'mxMakeLever: ERROR:: target file %s already exists. failing\n',strDB);
return;
end
% create a new database
conn = database(strDB, '','', 'org.sqlite.JDBC', 'jdbc:sqlite:');
% sql to build db
mxNode.sqlMakeLever(conn,CONSTANTS)
mxNode.createColorTable(conn);
Write.updateConstants(conn,CONSTANTS);
close(conn);
function sqlMakeLever(conn,CONSTANTS)
cmd=[
'DROP TABLE IF EXISTS tblConstants;'...
'CREATE TABLE tblConstants (jsConstants BLOB,uiStatus STRING);'...
'INSERT INTO tblConstants VALUES(''' jsonencode(CONSTANTS) ''',"newborn");'...
'DROP TABLE IF EXISTS tblDistCC;'...
...
'CREATE TABLE tblDistCC(cellID_src INTEGER, cellID_dst INTEGER, cost NUMERIC, PRIMARY KEY(cellID_src,cellID_dst));'...
'DROP TABLE IF EXISTS tblCosts;'...
'CREATE TABLE tblCosts(cellID_src INTEGER, cellID_dst INTEGER, cost NUMERIC, PRIMARY KEY(cellID_src,cellID_dst));'...
'DROP TABLE IF EXISTS tblEditList;'...
'CREATE TABLE tblEditList (editID INTEGER PRIMARY KEY, dateTime STRING, imageFrame INTEGER, userID INTEGER, operation STRING,arguments STRING);'...
'DROP TABLE IF EXISTS tblTracks;'...
'CREATE TABLE tblTracks (trackID INTEGER PRIMARY KEY, idxColor INTEGER);'...
'DROP TABLE IF EXISTS tblFamilies;'...
'CREATE TABLE tblFamilies(cellID_parent INTEGER PRIMARY KEY,'...
' cellID_child1 INTEGER, cellID_child2 INTEGER);'...
'DROP TABLE IF EXISTS tblAlgorithms;'...
'CREATE TABLE IF NOT EXISTS tblAlgorithms (fqn STRING, type STRING, jsAlgorithmInfo STRING);'...
'DROP TABLE IF EXISTS uiExtFamilies;'...
'CREATE TABLE IF NOT EXISTS uiExtFamilies(trackID INTEGER PRIMARY KEY);'...
'DROP TABLE IF EXISTS tblManualEdits;'...
'CREATE TABLE IF NOT EXISTS tblManualEdits(cellID_src INTEGER, cellID_dst INTEGER, dateTime STRING, '...
'userID STRING,PRIMARY KEY(cellID_src,cellID_dst));'...
...
'DROP TABLE IF EXISTS tblZombies;'...
'DROP TABLE IF EXISTS tblCells;'...
];
if (~is3D(CONSTANTS))
% zdim===1 --> 2-D
cmd=[cmd 'CREATE TABLE tblCells (cellID INTEGER PRIMARY KEY, time INTEGER, channel INTEGER DEFAULT 1, trackID INTEGER, centroid STRING,'...
'surface STRING, area INTEGER, maxRadius INTEGER DEFAULT 0, u16pixels BLOB, segCC INTEGER);'...
'CREATE TABLE tblZombies (editID INTEGER,cellID INTEGER, time INTEGER, channel INTEGER, '...
' trackID INTEGER, centroid STRING, surface STRING, area INTEGER, maxRadius INTEGER, '...
' u16pixels BLOB, segCC INTEGER, PRIMARY KEY(editID,cellID));'...
];
else
% 3D
cmd=['CREATE TABLE tblCells (cellID INTEGER PRIMARY KEY, time INTEGER, trackID INTEGER, centroid STRING,'...
' channel INTEGER DEFAULT 1, area INTEGER, maxRadius INTEGER DEFAULT 0, verts BLOB, edges BLOB, normals BLOB, '...
' faces BLOB, u16pixels BLOB, segCC INTEGER);'...
'CREATE TABLE tblZombies (editID INTEGER,cellID INTEGER, time INTEGER, trackID INTEGER, centroid STRING,'...
' channel INTEGER, area INTEGER, maxRadius INTEGER, verts BLOB, edges BLOB, normals BLOB,faces BLOB, u16pixels BLOB, '...
' segCC INTEGER, PRIMARY KEY(editID,cellID));'
];
end
exec(conn,cmd);
......@@ -51,11 +51,9 @@ else
end
% process the movie
bErase=Helpers.eraseAll(strDB);
if ~bErase
% if leverjs not installed
% call the ctc version of erase all so we don't need to install node.js
% just for ctc use
LJSCTC.ctcEraseAll(strDB);
end
Batch.processMovie(strDB);
if ~isempty(ljsctc.gtEvalPath)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment