<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homer.zpr.fer.hr/bactimas/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Igor</id>
	<title>Bactimas - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homer.zpr.fer.hr/bactimas/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Igor"/>
	<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Special:Contributions/Igor"/>
	<updated>2026-04-29T02:48:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Installation_dev&amp;diff=46</id>
		<title>Installation dev</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Installation_dev&amp;diff=46"/>
		<updated>2023-07-18T11:12:36Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A note to the developers ==&lt;br /&gt;
To add a new algorithm one has to do two things:&lt;br /&gt;
&lt;br /&gt;
*(a) Write a class that implements the  ITrackingAlgorithm interface (javadoc here: http://homer.zpr.fer.hr/bactimas/doku.php?id=javadoc:javadoc).&lt;br /&gt;
&lt;br /&gt;
 These are the summaries of the requested methods:&lt;br /&gt;
    void beforeBatch(int firstFrameNo) &lt;br /&gt;
             Invoked before processing batch.&lt;br /&gt;
    void beforeStep(int frameNo) &lt;br /&gt;
             Invoked before every step().&lt;br /&gt;
    java.lang.String getAbbrev() &lt;br /&gt;
             Algorihm name abbreviation, used for display in the frame tree.&lt;br /&gt;
    java.lang.String getClassName() &lt;br /&gt;
             Class name, used for instantiation.&lt;br /&gt;
    java.lang.String getName() &lt;br /&gt;
             A friendly name, to be shown to the user.&lt;br /&gt;
    void step(int frameNo, VPoint translation) &lt;br /&gt;
             This is the main function to implement - the one that performs the tracking / segmentation.     &lt;br /&gt;
&lt;br /&gt;
 From within the these methods, primarily step() method, a develeoper has at his disposal the entire ImageJ library and several&lt;br /&gt;
 additional Bactimas methods, such as (from the CurrentExperiment class):      &lt;br /&gt;
   &lt;br /&gt;
   ImagePlus getImagePlus(ImageStripType channel, int frameNo, String altFormat) &lt;br /&gt;
      Returns the ImageJ&#039;s ImagePlus object for the given frameNo, channel and (not required) alternative image format (tif, jpg, ...) with png being default&lt;br /&gt;
   LinkedList&amp;lt;Bacteria&amp;gt; getBacteriasForFrame(int frameNo) getBacteriasForFrame(int frameNo)&lt;br /&gt;
      Returns the list of bacterias on the given frame.&lt;br /&gt;
   boolean saveROI(Roi roi, int frameNo, Bacteria b, int roiType) &lt;br /&gt;
      Perists the (caluculated) roi for the bacteria b into the database.&lt;br /&gt;
   etc.&lt;br /&gt;
&lt;br /&gt;
 Also, it is probably helpful to take a look at the implementation of proposed &amp;quot;Copy And Adjust&amp;quot; algorihtm in the class:&lt;br /&gt;
   bactimas.algorithms.CopyAndAdjustAlgorithm implements ITrackingAlgorithm &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* (b)  Append the full class name in the conf/all.algorithms file text file so that Bactimas can instantiate it at run time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Recommended:&lt;br /&gt;
&lt;br /&gt;
  * See the already available algorithms implementing the //ITrackingAlgorithm// interface.&lt;br /&gt;
  * Consult the [[javadoc:javadoc|JavaDoc]] for the details.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Installation_dev&amp;diff=45</id>
		<title>Installation dev</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Installation_dev&amp;diff=45"/>
		<updated>2023-07-18T11:12:01Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;====== A note to the developers ====== To add a new algorithm one has to do two things:  **(a)** Write a class that implements the  ITrackingAlgorithm interface (javadoc here: http://homer.zpr.fer.hr/bactimas/doku.php?id=javadoc:javadoc).   These are the summaries of the requested methods:     void beforeBatch(int firstFrameNo)               Invoked before processing batch.     void beforeStep(int frameNo)               Invoked before every step().     java.lang.String g...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== A note to the developers ======&lt;br /&gt;
To add a new algorithm one has to do two things:&lt;br /&gt;
&lt;br /&gt;
**(a)** Write a class that implements the  ITrackingAlgorithm interface (javadoc here: http://homer.zpr.fer.hr/bactimas/doku.php?id=javadoc:javadoc).&lt;br /&gt;
&lt;br /&gt;
 These are the summaries of the requested methods:&lt;br /&gt;
    void beforeBatch(int firstFrameNo) &lt;br /&gt;
             Invoked before processing batch.&lt;br /&gt;
    void beforeStep(int frameNo) &lt;br /&gt;
             Invoked before every step().&lt;br /&gt;
    java.lang.String getAbbrev() &lt;br /&gt;
             Algorihm name abbreviation, used for display in the frame tree.&lt;br /&gt;
    java.lang.String getClassName() &lt;br /&gt;
             Class name, used for instantiation.&lt;br /&gt;
    java.lang.String getName() &lt;br /&gt;
             A friendly name, to be shown to the user.&lt;br /&gt;
    void step(int frameNo, VPoint translation) &lt;br /&gt;
             This is the main function to implement - the one that performs the tracking / segmentation.     &lt;br /&gt;
&lt;br /&gt;
 From within the these methods, primarily step() method, a develeoper has at his disposal the entire ImageJ library and several&lt;br /&gt;
 additional Bactimas methods, such as (from the CurrentExperiment class):      &lt;br /&gt;
   &lt;br /&gt;
   ImagePlus getImagePlus(ImageStripType channel, int frameNo, String altFormat) &lt;br /&gt;
      Returns the ImageJ&#039;s ImagePlus object for the given frameNo, channel and (not required) alternative image format (tif, jpg, ...) with png being default&lt;br /&gt;
   LinkedList&amp;lt;Bacteria&amp;gt; getBacteriasForFrame(int frameNo) getBacteriasForFrame(int frameNo)&lt;br /&gt;
      Returns the list of bacterias on the given frame.&lt;br /&gt;
   boolean saveROI(Roi roi, int frameNo, Bacteria b, int roiType) &lt;br /&gt;
      Perists the (caluculated) roi for the bacteria b into the database.&lt;br /&gt;
   etc.&lt;br /&gt;
&lt;br /&gt;
 Also, it is probably helpful to take a look at the implementation of proposed &amp;quot;Copy And Adjust&amp;quot; algorihtm in the class:&lt;br /&gt;
   bactimas.algorithms.CopyAndAdjustAlgorithm implements ITrackingAlgorithm &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**(b)**  Append the full class name in the conf/all.algorithms file text file so that Bactimas can instantiate it at run time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Recommended:&lt;br /&gt;
  * See the already available algorithms implementing the //ITrackingAlgorithm// interface.&lt;br /&gt;
  * Consult the [[javadoc:javadoc|JavaDoc]] for the details.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Database&amp;diff=44</id>
		<title>Database</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Database&amp;diff=44"/>
		<updated>2023-07-18T11:11:27Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;== BactImAs Database ==  In principle, you can use any database you like as long as you can connect (have a) JDBC driver for that database.  For the time being, we&amp;#039;re using sqlite database, since it is light, portable, multi-platform and easy to install.  Below, you&amp;#039;ll find both sqlite create database script, and Microsoft SQL Server database script.  Starting from those, it&amp;#039;s easy to adjust the script for any SQL database server.  Note that you should not bother with cr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BactImAs Database ==&lt;br /&gt;
&lt;br /&gt;
In principle, you can use any database you like as long as you can connect (have a) JDBC driver for that database. &lt;br /&gt;
For the time being, we&#039;re using sqlite database, since it is light, portable, multi-platform and easy to install. &lt;br /&gt;
Below, you&#039;ll find both sqlite create database script, and Microsoft SQL Server database script. &lt;br /&gt;
Starting from those, it&#039;s easy to adjust the script for any SQL database server.&lt;br /&gt;
&lt;br /&gt;
Note that you should not bother with creating an empty sqlite database, there is one included in the installation package.&lt;br /&gt;
&lt;br /&gt;
=== Database diagram ===&lt;br /&gt;
&lt;br /&gt;
(Views are shown in gray.)\\&lt;br /&gt;
[[File:db.png]]&lt;br /&gt;
&lt;br /&gt;
===== SqLite Create Database Script =====&lt;br /&gt;
  CREATE TABLE Version (&lt;br /&gt;
    version char(10) primary key&lt;br /&gt;
  );&lt;br /&gt;
  insert into Version(version) values (&amp;quot;v.0.7.&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Bacteria] (&lt;br /&gt;
    &amp;quot;idBacteria&amp;quot;    integer PRIMARY KEY AUTOINCREMENT NOT NULL,&lt;br /&gt;
    &amp;quot;idExperiment&amp;quot;    integer,&lt;br /&gt;
    &amp;quot;bactName&amp;quot;    varchar(50) NOT NULL COLLATE NOCASE,&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE UNIQUE INDEX [Bacteria_unq_exp_bactName]&lt;br /&gt;
  ON [Bacteria] ([idExperiment] DESC, [bactName] DESC);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [BacteriaSplit] (&lt;br /&gt;
    &amp;quot;idBacteriaParent&amp;quot;    integer NOT NULL,&lt;br /&gt;
    &amp;quot;idBacteriaChildA&amp;quot;    integer NOT NULL,&lt;br /&gt;
    &amp;quot;idBacteriaChildB&amp;quot;    integer NOT NULL,&lt;br /&gt;
    &amp;quot;frameNo&amp;quot;   integer NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idBacteriaParent]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaParent])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaChildA])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaChildB])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Measurement] (&lt;br /&gt;
    &amp;quot;idMeasurement&amp;quot;   integer PRIMARY KEY AUTOINCREMENT NOT NULL,&lt;br /&gt;
    &amp;quot;measurementName&amp;quot;   nvarchar(20) NOT NULL COLLATE NOCASE&lt;br /&gt;
  );&lt;br /&gt;
  CREATE UNIQUE INDEX [Measurement_unq_measurementName] ON [Measurement] ([measurementName] DESC);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [RoiType] (&lt;br /&gt;
    &amp;quot;idRoiType&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;typeName&amp;quot;    varchar(20) NOT NULL COLLATE NOCASE,&lt;br /&gt;
      PRIMARY KEY ([idRoiType])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Roi] (&lt;br /&gt;
    &amp;quot;idBacteria&amp;quot;    integer NOT NULL,&lt;br /&gt;
    &amp;quot;frameNo&amp;quot;   integer NOT NULL,&lt;br /&gt;
    &amp;quot;idRoiType&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;roiBlob&amp;quot;   blob,&lt;br /&gt;
    &amp;quot;roiName&amp;quot;   nvarchar(50) COLLATE NOCASE,&lt;br /&gt;
      PRIMARY KEY ([idBacteria], [frameNo], [idRoiType]),&lt;br /&gt;
      FOREIGN KEY ([idBacteria])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idRoiType])&lt;br /&gt;
          REFERENCES [RoiType]([idRoiType])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Frame] (&lt;br /&gt;
    &amp;quot;idFrame&amp;quot;   integer PRIMARY KEY AUTOINCREMENT NOT NULL,&lt;br /&gt;
    &amp;quot;idExperiment&amp;quot;    integer,&lt;br /&gt;
    &amp;quot;frameNo&amp;quot;   integer NOT NULL,&lt;br /&gt;
    &amp;quot;frameRedFileName&amp;quot;    nvarchar(500) COLLATE NOCASE,&lt;br /&gt;
    &amp;quot;frameGreenFileName&amp;quot;    nvarchar(500) COLLATE NOCASE,&lt;br /&gt;
    &amp;quot;frameBlueFileName&amp;quot;   nvarchar(500) COLLATE NOCASE,&lt;br /&gt;
    &amp;quot;transX&amp;quot;    smallint DEFAULT 0,&lt;br /&gt;
    &amp;quot;transY&amp;quot;    smallint DEFAULT 0,  &lt;br /&gt;
    ignoreFrame char(1) default &#039;n&#039;, &lt;br /&gt;
    bgRedMean double,   &lt;br /&gt;
    bgGreenMean double, &lt;br /&gt;
    bgBlueMean double, &lt;br /&gt;
    Algorithm varchar(500),&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE INDEX idx_frame_id_experiment_frame_no on frame(idExperiment, frameNo);&lt;br /&gt;
  CREATE TABLE [ExperimentMeasurements] (&lt;br /&gt;
    &amp;quot;idExperiment&amp;quot;    integer NOT NULL,&lt;br /&gt;
    &amp;quot;idMeasurement&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;idChannel&amp;quot;   smallint, collarSize int default 0,&lt;br /&gt;
      PRIMARY KEY ([idExperiment], [idMeasurement])&lt;br /&gt;
  ,&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment]),&lt;br /&gt;
      FOREIGN KEY ([idMeasurement])&lt;br /&gt;
          REFERENCES [Measurement]([idMeasurement])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Channel] (&lt;br /&gt;
    &amp;quot;idChannel&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;channelName&amp;quot;   nvarchar(5) NOT NULL COLLATE NOCASE,&lt;br /&gt;
      PRIMARY KEY ([idChannel])&lt;br /&gt;
  &lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Palette] (&lt;br /&gt;
    &amp;quot;idPalette&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;paletteName&amp;quot;   nvarchar(30) NOT NULL COLLATE NOCASE,&lt;br /&gt;
      PRIMARY KEY ([idPalette])&lt;br /&gt;
  &lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [PaletteColor] (&lt;br /&gt;
    &amp;quot;idPalette&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;ordinal&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;red&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;green&amp;quot;   smallint NOT NULL,&lt;br /&gt;
    &amp;quot;blue&amp;quot;    smallint NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idPalette], [ordinal])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Experiment] (&lt;br /&gt;
  &lt;br /&gt;
    [idExperiment] integer  PRIMARY KEY AUTOINCREMENT NOT NULL,&lt;br /&gt;
    [expName] char(100)  NULL,&lt;br /&gt;
    [redMovieFileName] nvarchar(500)  NULL,&lt;br /&gt;
    [greenMovieFileName] nvarchar(500)  NULL,&lt;br /&gt;
    [blueMovieFileName] nvarchar(500)  NOT NULL,&lt;br /&gt;
    [movieSpf] INTEGER  NULL,&lt;br /&gt;
    [dateCreated] integer  NULL, &lt;br /&gt;
    pixelWidthMicron decimal(6,2), &lt;br /&gt;
    pixelHeightMicron decimal(6,2), &lt;br /&gt;
    pictureScale decimal(6,2)&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [BacteriaMeasurement] (&lt;br /&gt;
                  &amp;quot;idBacteria&amp;quot;                       integer NOT NULL,&lt;br /&gt;
                  &amp;quot;frameNo&amp;quot;                         integer NOT NULL,&lt;br /&gt;
                  &amp;quot;idMeasurement&amp;quot;                          smallint NOT NULL,&lt;br /&gt;
                  &amp;quot;idRoiType&amp;quot;                       smallint NOT NULL,&lt;br /&gt;
                  &amp;quot;idChannel&amp;quot; smallint not null,&lt;br /&gt;
                  &amp;quot;value&amp;quot;                float NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idBacteria], [frameNo], [idMeasurement], [idRoiType], idChannel),&lt;br /&gt;
      FOREIGN KEY ([idBacteria])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idMeasurement])&lt;br /&gt;
          REFERENCES [Measurement]([idMeasurement]),&lt;br /&gt;
      FOREIGN KEY ([idChannel])&lt;br /&gt;
          REFERENCES [Channel]([idChannel])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE BacteriaState (&lt;br /&gt;
          idState integer PRIMARY KEY,&lt;br /&gt;
          stateName varchar(50) not null,&lt;br /&gt;
          stateTag char(1) not null&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE BacteriaStateChange (&lt;br /&gt;
      idBacteria        integer ,&lt;br /&gt;
      frameNo           integer ,&lt;br /&gt;
      idState           integer ,&lt;br /&gt;
      PRIMARY KEY (idBacteria, frameNo, idState),&lt;br /&gt;
      FOREIGN KEY (idBacteria) REFERENCES Bacteria(idBacteria),&lt;br /&gt;
      FOREIGN KEY (idState) REFERENCES BacteriaState(idState)&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE ExperimentEvent (&lt;br /&gt;
      idExperiment  integer NOT NULL,&lt;br /&gt;
      frameNo       integer NOT NULL,&lt;br /&gt;
      eventDesc      varchar(255) not null,&lt;br /&gt;
      eventAbbr      varchar(15) not null, &lt;br /&gt;
      PRIMARY KEY (idExperiment, frameNo),&lt;br /&gt;
      FOREIGN KEY (idExperiment) REFERENCES Experiment(idExperiment)&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;area&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;mean&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;min&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;max&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;x&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;y&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;perim.&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;major&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;minor&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;angle&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feret&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;kurt&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;slice&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feretx&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;ferety&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feretangle&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;minferet&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;length&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;width&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;rawintden&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;intden&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;stddev&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;height&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;median&#039;);&lt;br /&gt;
  &lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (1,&#039;Red&#039;);&lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (2,&#039;Green&#039;);&lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (3,&#039;Blue&#039;);&lt;br /&gt;
  &lt;br /&gt;
  insert into Palette(idPalette, paletteName) values (1, &#039;Default pallete&#039;);&lt;br /&gt;
  &lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,1,0,0,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,2,0,0,255);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,3,0,255,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,4,255,127,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,5,255,0,0);&lt;br /&gt;
  &lt;br /&gt;
  insert into BacteriaState values (1, &#039;Death&#039;, &#039;*&#039;);&lt;br /&gt;
  insert into BacteriaState values (2, &#039;Ignore&#039;, &#039;#&#039;);  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaMeanMeasurement as &lt;br /&gt;
  SELECT idBacteria, frameNo, channelName, AVG(value) as mean, count(*) as cnt  -- if there are duplicate measuements on diff channels&lt;br /&gt;
    FROM BacteriaMeasurement&lt;br /&gt;
              JOIN Measurement&lt;br /&gt;
                ON BacteriaMeasurement.idMeasurement = Measurement.idMeasurement&lt;br /&gt;
               AND lower(measurementName) = &#039;mean&#039;&lt;br /&gt;
              JOIN Channel&lt;br /&gt;
                ON BacteriaMeasurement.idChannel = Channel.idChannel&lt;br /&gt;
  GROUP BY idBacteria, frameNo, channelName;&lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaAreaMeasurement as&lt;br /&gt;
  SELECT MArea.idBacteria, frameNo, pixelWidthMicron * pixelHeightMicron * AVG(value)/(pictureScale * pictureScale) as areaSquareMicron, AVG(value) as area, count(*) as cnt  -- if there are duplicate measuements on diff channels&lt;br /&gt;
    FROM BacteriaMeasurement AS MArea&lt;br /&gt;
              JOIN Measurement&lt;br /&gt;
                ON MArea.idMeasurement = measurement.idMeasurement&lt;br /&gt;
               AND lower(measurementName) = &#039;area&#039;&lt;br /&gt;
              JOIN Bacteria&lt;br /&gt;
                ON MArea.idBacteria = Bacteria.idBacteria&lt;br /&gt;
              JOIN Experiment&lt;br /&gt;
                ON Bacteria.idExperiment = Experiment.idExperiment &lt;br /&gt;
  GROUP BY MArea.idBacteria, frameNo, pixelWidthMicron, pixelHeightMicron, pictureScale;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaMeasurement AS&lt;br /&gt;
  SELECT expName as exp_name,&lt;br /&gt;
         Bacteria.idExperiment AS id_experiment,&lt;br /&gt;
         DistBactMeasurement.frameNo AS frame_no,       &lt;br /&gt;
         DistBactMeasurement.frameNo * movieSpf AS time_s,       &lt;br /&gt;
         Bacteria.bactName AS bact_name,&lt;br /&gt;
         Bacteria.idBacteria AS id_bacteria, &lt;br /&gt;
  &lt;br /&gt;
         length (Bacteria.bactName) AS generation,&lt;br /&gt;
         Birth.parentName     AS parent,       &lt;br /&gt;
         CASE WHEN (Bacteria.bactName = Birth.childAName) THEN Birth.childBName&lt;br /&gt;
              ELSE Birth.childAName&lt;br /&gt;
         END AS sibling,       &lt;br /&gt;
         -- Division.childAName || &#039;, &#039; || Division.childBName AS progeny, &lt;br /&gt;
         Division.childAName  AS progeny_a,&lt;br /&gt;
         Division.childBName  AS progeny_b,       &lt;br /&gt;
  &lt;br /&gt;
         (Birth.frameNo - 1) * movieSpf                AS birth_time,&lt;br /&gt;
         (Division.frameNo - 1) * movieSpf             AS division_time,&lt;br /&gt;
         (Division.frameNo - Birth.frameNo) * movieSpf AS interdivision_time,&lt;br /&gt;
  &lt;br /&gt;
         1.0 * (DivisionArea.areaSquareMicron/BirthArea.areaSquareMicron)/((Division.frameNo - Birth.frameNo) * movieSpf)     AS growth_rate,       &lt;br /&gt;
         1.0 * (DivisionArea.areaSquareMicron - BirthArea.areaSquareMicron)/((Division.frameNo - Birth.frameNo) * movieSpf)   AS growth_velocity,&lt;br /&gt;
  &lt;br /&gt;
         CurrArea.area,&lt;br /&gt;
         CurrArea.areaSquareMicron AS area_square_microns,&lt;br /&gt;
         CASE WHEN (PrevFrame.frameNo IS NULL) THEN 0&lt;br /&gt;
              ELSE CurrArea.areaSquareMicron - PrevArea.areaSquareMicron&lt;br /&gt;
         END AS area_square_microns_growth,&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
         CurrRedMean.Mean   AS red_mean,&lt;br /&gt;
         currGreenMean.Mean AS green_mean,&lt;br /&gt;
         currBlueMean.Mean  AS blue_mean,  &lt;br /&gt;
  &lt;br /&gt;
         Frame.bgRedMean   AS red_bg,&lt;br /&gt;
         Frame.bgGreenMean AS green_bg,&lt;br /&gt;
         Frame.bgBlueMean  AS blue_bg,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   AS red_mean_bg_cor,&lt;br /&gt;
         (currGreenMean.Mean - Frame.bgGreenMean) AS green_mean_bg_cor,&lt;br /&gt;
         (currBlueMean.Mean  - Frame.bgBlueMean)  AS blue_mean_bg_cor,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   * CurrArea.areaSquareMicron AS red_ctcf,&lt;br /&gt;
         (currGreenMean.Mean - Frame.bgGreenMean) * CurrArea.areaSquareMicron AS green_ctcf,&lt;br /&gt;
         (currBlueMean.Mean  - Frame.bgBlueMean)  * CurrArea.areaSquareMicron AS blue_ctcf,&lt;br /&gt;
         &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   - (PrevRedMean.Mean   - PrevFrame.bgRedMean)   AS red_mean_bg_cor_change,&lt;br /&gt;
         (CurrGreenMean.Mean - Frame.bgGreenMean) - (PrevGreenMean.Mean - PrevFrame.bgGreenMean) AS green_mean_bg_cor_change,&lt;br /&gt;
         (CurrBlueMean.Mean  - Frame.bgBlueMean)  - (PrevBlueMean.Mean  - PrevFrame.bgBlueMean)  AS blue_mean_bg_cor_change,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   * CurrArea.areaSquareMicron - (PrevRedMean.Mean   - PrevFrame.bgRedMean)   * PrevArea.areaSquareMicron AS red_ctcf_change,&lt;br /&gt;
         (CurrGreenMean.Mean - Frame.bgGreenMean) * CurrArea.areaSquareMicron - (PrevGreenMean.Mean - PrevFrame.bgGreenMean) * PrevArea.areaSquareMicron AS green_ctcf_change,&lt;br /&gt;
         (CurrBlueMean.Mean  - Frame.bgBlueMean)  * CurrArea.areaSquareMicron - (PrevBlueMean.Mean  - PrevFrame.bgBlueMean)  * PrevArea.areaSquareMicron AS blue_ctcf_change&lt;br /&gt;
         &lt;br /&gt;
                &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  FROM      (SELECT DISTINCT idBacteria, frameNo FROM BacteriaMeasurement) AS DistBactMeasurement &lt;br /&gt;
            JOIN Bacteria &lt;br /&gt;
              ON DistBactMeasurement.idBacteria = bacteria.idBacteria&lt;br /&gt;
            JOIN Experiment &lt;br /&gt;
              ON Bacteria.idExperiment = Experiment.idExperiment&lt;br /&gt;
            JOIN Frame&lt;br /&gt;
              ON Bacteria.idExperiment       = Frame.idExperiment&lt;br /&gt;
             AND DistBactMeasurement.frameNo = Frame.frameNo&lt;br /&gt;
             AND Frame.ignoreFrame = &#039;n&#039;           &lt;br /&gt;
       LEFT JOIN Frame PrevFrame&lt;br /&gt;
              ON PrevFrame.idExperiment = Bacteria.idExperiment&lt;br /&gt;
             AND PrevFrame.frameNo = (SELECT MAX(frameNo) FROM Frame F WHERE F.idExperiment = PrevFrame.idExperiment AND F.frameNo &amp;lt; DistBactMeasurement.frameNo AND ignoreFrame = &#039;n&#039;)&lt;br /&gt;
       LEFT JOIN (&lt;br /&gt;
          SELECT BirthParent.bactName AS parentName, idBacteriaChildA, idBacteriaChildB, BirthChildA.bactName AS childAName, BirthChildB.bactName AS childBName, frameNo&lt;br /&gt;
            FROM BacteriaSplit &lt;br /&gt;
                      JOIN Bacteria AS BirthParent ON BacteriaSplit.idBacteriaParent = BirthParent.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS BirthChildA ON BacteriaSplit.idBacteriaChildA = BirthChildA.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS BirthChildB ON BacteriaSplit.idBacteriaChildB = BirthChildB.idBacteria     &lt;br /&gt;
       ) AS Birth&lt;br /&gt;
          ON (DistBactMeasurement.idBacteria = Birth.idBacteriaChildA OR DistBactMeasurement.idBacteria = Birth.idBacteriaChildB)&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN (&lt;br /&gt;
          SELECT idBacteriaParent, DivChildA.bactName AS childAName, DivChildB.bactName AS childBName, frameNo&lt;br /&gt;
            FROM BacteriaSplit                &lt;br /&gt;
                      JOIN Bacteria AS DivChildA ON BacteriaSplit.idBacteriaChildA = DivChildA.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS DivChildB ON BacteriaSplit.idBacteriaChildB = DivChildB.idBacteria   &lt;br /&gt;
       ) AS Division&lt;br /&gt;
          ON (DistBactMeasurement.idBacteria = Division.idBacteriaParent)&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS BirthArea&lt;br /&gt;
              ON Birth.frameNo                  = BirthArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria = BirthArea.idBacteria&lt;br /&gt;
  &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS DivisionArea&lt;br /&gt;
              ON DivisionArea.frameNo = ((SELECT MAX(frameNo) FROM Frame F WHERE F.idExperiment = Experiment.idExperiment AND F.frameNo &amp;lt; Division.frameNo AND ignoreFrame = &#039;n&#039;))&lt;br /&gt;
             AND DivisionArea.idBacteria = DistBactMeasurement.idBacteria&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS PrevArea&lt;br /&gt;
              ON PrevFrame.frameNo               = PrevArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria  = PrevArea.idBacteria&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS CurrArea&lt;br /&gt;
              ON DistBactMeasurement.frameNo    = CurrArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria = CurrArea.idBacteria           &lt;br /&gt;
       --// Prev mean&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS prevBlueMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = prevBlueMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = prevBlueMean.idBacteria           &lt;br /&gt;
             AND prevBlueMean.channelName = &#039;Blue&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS prevGreenMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = prevGreenMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = prevGreenMean.idBacteria&lt;br /&gt;
             AND prevGreenMean.channelName = &#039;Green&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS PrevRedMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = PrevRedMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = PrevRedMean.idBacteria&lt;br /&gt;
             AND PrevRedMean.channelName = &#039;Red&#039;&lt;br /&gt;
      --// Curr mean&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS currBlueMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = currBlueMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = currBlueMean.idBacteria           &lt;br /&gt;
             AND currBlueMean.channelName = &#039;Blue&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS currGreenMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = currGreenMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = currGreenMean.idBacteria&lt;br /&gt;
             AND currGreenMean.channelName = &#039;Green&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS CurrRedMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = CurrRedMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = CurrRedMean.idBacteria&lt;br /&gt;
             AND CurrRedMean.channelName = &#039;Red&#039;;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===== MS Sql Server Create Database Script =====&lt;br /&gt;
  CREATE TABLE Version (&lt;br /&gt;
      version char(10) primary key&lt;br /&gt;
  );&lt;br /&gt;
  insert into Version(version) values (&#039;v.0.7.&#039;);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Experiment] (&lt;br /&gt;
      [idExperiment] integer  PRIMARY KEY identity(1000, 1) NOT NULL,&lt;br /&gt;
      [expName] char(100)  NULL,&lt;br /&gt;
      [redMovieFileName] nvarchar(500)  NULL,&lt;br /&gt;
      [greenMovieFileName] nvarchar(500)  NULL,&lt;br /&gt;
      [blueMovieFileName] nvarchar(500)  NOT NULL,&lt;br /&gt;
      [movieSpf] INTEGER  NULL,&lt;br /&gt;
      [dateCreated] integer  NULL, &lt;br /&gt;
      pixelWidthMicron decimal(6,2), &lt;br /&gt;
      pixelHeightMicron decimal(6,2), &lt;br /&gt;
      pictureScale decimal(6,2)&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Bacteria] (&lt;br /&gt;
      idBacteria    integer PRIMARY KEY identity(1, 1) NOT NULL,&lt;br /&gt;
      idExperiment    integer,&lt;br /&gt;
      bactName    varchar(50) NOT NULL ,&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE UNIQUE INDEX [Bacteria_unq_exp_bactName]&lt;br /&gt;
  ON [Bacteria] ([idExperiment] DESC, [bactName] DESC);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [BacteriaSplit] (&lt;br /&gt;
      idBacteriaParent    integer NOT NULL,&lt;br /&gt;
      idBacteriaChildA    integer NOT NULL,&lt;br /&gt;
      idBacteriaChildB    integer NOT NULL,&lt;br /&gt;
      frameNo   integer NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idBacteriaParent]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaParent])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaChildA])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idBacteriaChildB])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Measurement] (&lt;br /&gt;
      idMeasurement   integer PRIMARY KEY identity NOT NULL,&lt;br /&gt;
      measurementName   nvarchar(20) NOT NULL &lt;br /&gt;
  );&lt;br /&gt;
  CREATE UNIQUE INDEX [Measurement_unq_measurementName] ON [Measurement] ([measurementName] DESC);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;area&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;mean&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;min&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;max&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;x&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;y&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;perim.&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;major&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;minor&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;angle&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feret&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;kurt&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;slice&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feretx&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;ferety&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;feretangle&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;minferet&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;length&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;width&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;rawintden&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;intden&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;stddev&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;height&#039;);&lt;br /&gt;
  INSERT INTO Measurement(measurementName) VALUES (&#039;median&#039;);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [RoiType] (&lt;br /&gt;
      idRoiType   smallint NOT NULL,&lt;br /&gt;
      typeName    varchar(20) NOT NULL ,&lt;br /&gt;
      PRIMARY KEY ([idRoiType])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  insert into RoiType values (1, &#039;Human&#039;)&lt;br /&gt;
  insert into RoiType values (2, &#039;Computer&#039;)&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Roi] (&lt;br /&gt;
      idBacteria    integer NOT NULL,&lt;br /&gt;
      frameNo   integer NOT NULL,&lt;br /&gt;
      idRoiType   smallint NOT NULL,&lt;br /&gt;
      roiBlob   VARBINARY (MAX),&lt;br /&gt;
      roiName   nvarchar(50) ,&lt;br /&gt;
      PRIMARY KEY ([idBacteria], [frameNo], [idRoiType]),&lt;br /&gt;
      FOREIGN KEY ([idBacteria])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idRoiType])&lt;br /&gt;
          REFERENCES [RoiType]([idRoiType])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Frame] (&lt;br /&gt;
      idFrame             integer PRIMARY KEY identity ,&lt;br /&gt;
      idExperiment        integer,&lt;br /&gt;
      frameNo             integer NOT NULL,&lt;br /&gt;
      frameRedFileName    nvarchar(500) ,&lt;br /&gt;
      frameGreenFileName  nvarchar(500) ,&lt;br /&gt;
      frameBlueFileName   nvarchar(500) ,&lt;br /&gt;
      transX              smallint DEFAULT 0,&lt;br /&gt;
      transY              smallint DEFAULT 0,  &lt;br /&gt;
      ignoreFrame         char(1) default &#039;n&#039;, &lt;br /&gt;
      bgRedMean           float(53),   &lt;br /&gt;
      bgGreenMean         float(53), &lt;br /&gt;
      bgBlueMean          float(53), &lt;br /&gt;
      [Algorithm]         varchar(500),&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE INDEX idx_frame_id_experiment_frame_no on frame(idExperiment, frameNo)&lt;br /&gt;
  CREATE TABLE [ExperimentMeasurements] (&lt;br /&gt;
      idExperiment    integer NOT NULL,&lt;br /&gt;
      idMeasurement   integer NOT NULL,&lt;br /&gt;
      idChannel       smallint, &lt;br /&gt;
      collarSize      int default 0,&lt;br /&gt;
      PRIMARY KEY ([idExperiment], [idMeasurement]),&lt;br /&gt;
      FOREIGN KEY ([idExperiment])&lt;br /&gt;
          REFERENCES [Experiment]([idExperiment]),&lt;br /&gt;
      FOREIGN KEY ([idMeasurement])&lt;br /&gt;
          REFERENCES [Measurement]([idMeasurement])&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE [Channel] (&lt;br /&gt;
      idChannel     smallint NOT NULL,&lt;br /&gt;
      channelName   nvarchar(5) NOT NULL ,&lt;br /&gt;
      PRIMARY KEY ([idChannel])&lt;br /&gt;
  &lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (1,&#039;Red&#039;);&lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (2,&#039;Green&#039;);&lt;br /&gt;
  INSERT INTO Channel(idChannel, channelName) VALUES (3,&#039;Blue&#039;);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [Palette] (&lt;br /&gt;
      idPalette     smallint NOT NULL,&lt;br /&gt;
      paletteName   nvarchar(30) NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idPalette])&lt;br /&gt;
  &lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  insert into Palette(idPalette, paletteName) values (1, &#039;Default pallete&#039;)&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [PaletteColor] (&lt;br /&gt;
      idPalette smallint NOT NULL,&lt;br /&gt;
      ordinal   smallint NOT NULL,&lt;br /&gt;
      red       smallint NOT NULL,&lt;br /&gt;
      green     smallint NOT NULL,&lt;br /&gt;
      blue      smallint NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idPalette], [ordinal])&lt;br /&gt;
      FOREIGN KEY ([idPalette])&lt;br /&gt;
          REFERENCES [Palette]([idPalette])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,1,0,0,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,2,0,0,255);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,3,0,255,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,4,255,127,0);&lt;br /&gt;
  INSERT INTO PaletteColor(idPalette, ordinal, red, green, blue) VALUES (1,5,255,0,0);&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE [BacteriaMeasurement] (&lt;br /&gt;
      idBacteria        integer NOT NULL,&lt;br /&gt;
      frameNo           integer NOT NULL,&lt;br /&gt;
      idMeasurement     int  NOT NULL,&lt;br /&gt;
      idRoiType         smallint NOT NULL,&lt;br /&gt;
      idChannel         smallint not null,&lt;br /&gt;
      value             float NOT NULL,&lt;br /&gt;
      PRIMARY KEY ([idBacteria], [frameNo], [idMeasurement], [idRoiType], idChannel),&lt;br /&gt;
      FOREIGN KEY ([idBacteria])&lt;br /&gt;
          REFERENCES [Bacteria]([idBacteria]),&lt;br /&gt;
      FOREIGN KEY ([idMeasurement])&lt;br /&gt;
          REFERENCES [Measurement]([idMeasurement]),&lt;br /&gt;
      FOREIGN KEY ([idChannel])&lt;br /&gt;
          REFERENCES [Channel]([idChannel])&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE BacteriaState (&lt;br /&gt;
          idState integer PRIMARY KEY,&lt;br /&gt;
          stateName varchar(50) not null,&lt;br /&gt;
          stateTag char(1) not null&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  insert into BacteriaState values (1, &#039;Death&#039;, &#039;*&#039;);&lt;br /&gt;
  insert into BacteriaState values (2, &#039;Ignore&#039;, &#039;#&#039;);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE TABLE BacteriaStateChange (&lt;br /&gt;
      idBacteria        integer ,&lt;br /&gt;
      frameNo           integer ,&lt;br /&gt;
      idState           integer ,&lt;br /&gt;
      PRIMARY KEY (idBacteria, frameNo, idState),&lt;br /&gt;
      FOREIGN KEY (idBacteria) REFERENCES Bacteria(idBacteria),&lt;br /&gt;
      FOREIGN KEY (idState) REFERENCES BacteriaState(idState)&lt;br /&gt;
  );&lt;br /&gt;
  CREATE TABLE ExperimentEvent (&lt;br /&gt;
      idExperiment    integer NOT NULL,&lt;br /&gt;
      frameNo         integer NOT NULL,&lt;br /&gt;
      eventDesc       varchar(255) not null,&lt;br /&gt;
      eventAbbr       varchar(15) not null, &lt;br /&gt;
      PRIMARY KEY (idExperiment, frameNo),&lt;br /&gt;
      FOREIGN KEY (idExperiment) REFERENCES Experiment(idExperiment)&lt;br /&gt;
  );&lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaMeanMeasurement as &lt;br /&gt;
  SELECT idBacteria, frameNo, channelName, AVG(value) as mean, count(*) as cnt  -- if there are duplicate measuements on diff channels&lt;br /&gt;
    FROM BacteriaMeasurement&lt;br /&gt;
              JOIN Measurement&lt;br /&gt;
                ON BacteriaMeasurement.idMeasurement = Measurement.idMeasurement&lt;br /&gt;
               AND lower(measurementName) = &#039;mean&#039;&lt;br /&gt;
              JOIN Channel&lt;br /&gt;
                ON BacteriaMeasurement.idChannel = Channel.idChannel&lt;br /&gt;
  GROUP BY idBacteria, frameNo, channelName;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaAreaMeasurement as&lt;br /&gt;
  SELECT MArea.idBacteria, frameNo, pixelWidthMicron * pixelHeightMicron * AVG(value)/(pictureScale * pictureScale) as areaSquareMicron, AVG(value) as area, count(*) as cnt  -- if there are duplicate measuements on diff channels&lt;br /&gt;
    FROM BacteriaMeasurement AS MArea&lt;br /&gt;
              JOIN Measurement&lt;br /&gt;
                ON MArea.idMeasurement = measurement.idMeasurement&lt;br /&gt;
               AND lower(measurementName) = &#039;area&#039;&lt;br /&gt;
              JOIN Bacteria&lt;br /&gt;
                ON MArea.idBacteria = Bacteria.idBacteria&lt;br /&gt;
              JOIN Experiment&lt;br /&gt;
                ON Bacteria.idExperiment = Experiment.idExperiment &lt;br /&gt;
  GROUP BY MArea.idBacteria, frameNo, pixelWidthMicron, pixelHeightMicron, pictureScale;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  CREATE VIEW vBacteriaMeasurement AS&lt;br /&gt;
  SELECT expName as exp_name,&lt;br /&gt;
         Bacteria.idExperiment AS id_experiment,&lt;br /&gt;
         DistBactMeasurement.frameNo AS frame_no,       &lt;br /&gt;
         DistBactMeasurement.frameNo * movieSpf AS time_s,       &lt;br /&gt;
         Bacteria.bactName AS bact_name,&lt;br /&gt;
         Bacteria.idBacteria AS id_bacteria, &lt;br /&gt;
  &lt;br /&gt;
         len (Bacteria.bactName) AS generation,&lt;br /&gt;
         Birth.parentName     AS parent,       &lt;br /&gt;
         CASE WHEN (Bacteria.bactName = Birth.childAName) THEN Birth.childBName&lt;br /&gt;
              ELSE Birth.childAName&lt;br /&gt;
         END AS sibling,       &lt;br /&gt;
         -- Division.childAName || &#039;, &#039; || Division.childBName AS progeny, &lt;br /&gt;
         Division.childAName  AS progeny_a,&lt;br /&gt;
         Division.childBName  AS progeny_b,       &lt;br /&gt;
  &lt;br /&gt;
         (Birth.frameNo - 1) * movieSpf                AS birth_time,&lt;br /&gt;
         (Division.frameNo - 1) * movieSpf             AS division_time,&lt;br /&gt;
         (Division.frameNo - Birth.frameNo) * movieSpf AS interdivision_time,&lt;br /&gt;
  &lt;br /&gt;
         1.0 * (DivisionArea.areaSquareMicron/BirthArea.areaSquareMicron)/((Division.frameNo - Birth.frameNo) * movieSpf)     AS growth_rate,       &lt;br /&gt;
         1.0 * (DivisionArea.areaSquareMicron - BirthArea.areaSquareMicron)/((Division.frameNo - Birth.frameNo) * movieSpf)   AS growth_velocity,&lt;br /&gt;
  &lt;br /&gt;
         CurrArea.area,&lt;br /&gt;
         CurrArea.areaSquareMicron AS area_square_microns,&lt;br /&gt;
         CASE WHEN (PrevFrame.frameNo IS NULL) THEN 0&lt;br /&gt;
              ELSE CurrArea.areaSquareMicron - PrevArea.areaSquareMicron&lt;br /&gt;
         END AS area_square_microns_growth,&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
         CurrRedMean.Mean   AS red_mean,&lt;br /&gt;
         currGreenMean.Mean AS green_mean,&lt;br /&gt;
         currBlueMean.Mean  AS blue_mean,  &lt;br /&gt;
  &lt;br /&gt;
         Frame.bgRedMean   AS red_bg,&lt;br /&gt;
         Frame.bgGreenMean AS green_bg,&lt;br /&gt;
         Frame.bgBlueMean  AS blue_bg,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   AS red_mean_bg_cor,&lt;br /&gt;
         (currGreenMean.Mean - Frame.bgGreenMean) AS green_mean_bg_cor,&lt;br /&gt;
         (currBlueMean.Mean  - Frame.bgBlueMean)  AS blue_mean_bg_cor,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   * CurrArea.areaSquareMicron AS red_ctcf,&lt;br /&gt;
         (currGreenMean.Mean - Frame.bgGreenMean) * CurrArea.areaSquareMicron AS green_ctcf,&lt;br /&gt;
         (currBlueMean.Mean  - Frame.bgBlueMean)  * CurrArea.areaSquareMicron AS blue_ctcf,&lt;br /&gt;
         &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   - (PrevRedMean.Mean   - PrevFrame.bgRedMean)   AS red_mean_bg_cor_change,&lt;br /&gt;
         (CurrGreenMean.Mean - Frame.bgGreenMean) - (PrevGreenMean.Mean - PrevFrame.bgGreenMean) AS green_mean_bg_cor_change,&lt;br /&gt;
         (CurrBlueMean.Mean  - Frame.bgBlueMean)  - (PrevBlueMean.Mean  - PrevFrame.bgBlueMean)  AS blue_mean_bg_cor_change,&lt;br /&gt;
  &lt;br /&gt;
         (CurrRedMean.Mean   - Frame.bgRedMean)   * CurrArea.areaSquareMicron - (PrevRedMean.Mean   - PrevFrame.bgRedMean)   * PrevArea.areaSquareMicron AS red_ctcf_change,&lt;br /&gt;
         (CurrGreenMean.Mean - Frame.bgGreenMean) * CurrArea.areaSquareMicron - (PrevGreenMean.Mean - PrevFrame.bgGreenMean) * PrevArea.areaSquareMicron AS green_ctcf_change,&lt;br /&gt;
         (CurrBlueMean.Mean  - Frame.bgBlueMean)  * CurrArea.areaSquareMicron - (PrevBlueMean.Mean  - PrevFrame.bgBlueMean)  * PrevArea.areaSquareMicron AS blue_ctcf_change&lt;br /&gt;
         &lt;br /&gt;
                &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  FROM      (SELECT DISTINCT idBacteria, frameNo FROM BacteriaMeasurement) AS DistBactMeasurement &lt;br /&gt;
            JOIN Bacteria &lt;br /&gt;
              ON DistBactMeasurement.idBacteria = bacteria.idBacteria&lt;br /&gt;
            JOIN Experiment &lt;br /&gt;
              ON Bacteria.idExperiment = Experiment.idExperiment&lt;br /&gt;
            JOIN Frame&lt;br /&gt;
              ON Bacteria.idExperiment       = Frame.idExperiment&lt;br /&gt;
             AND DistBactMeasurement.frameNo = Frame.frameNo&lt;br /&gt;
             AND Frame.ignoreFrame = &#039;n&#039;           &lt;br /&gt;
       LEFT JOIN Frame PrevFrame&lt;br /&gt;
              ON PrevFrame.idExperiment = Bacteria.idExperiment&lt;br /&gt;
             AND PrevFrame.frameNo = (SELECT MAX(frameNo) FROM Frame F WHERE F.idExperiment = PrevFrame.idExperiment AND F.frameNo &amp;lt; DistBactMeasurement.frameNo AND ignoreFrame = &#039;n&#039;)&lt;br /&gt;
       LEFT JOIN (&lt;br /&gt;
          SELECT BirthParent.bactName AS parentName, idBacteriaChildA, idBacteriaChildB, BirthChildA.bactName AS childAName, BirthChildB.bactName AS childBName, frameNo&lt;br /&gt;
            FROM BacteriaSplit &lt;br /&gt;
                      JOIN Bacteria AS BirthParent ON BacteriaSplit.idBacteriaParent = BirthParent.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS BirthChildA ON BacteriaSplit.idBacteriaChildA = BirthChildA.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS BirthChildB ON BacteriaSplit.idBacteriaChildB = BirthChildB.idBacteria     &lt;br /&gt;
       ) AS Birth&lt;br /&gt;
          ON (DistBactMeasurement.idBacteria = Birth.idBacteriaChildA OR DistBactMeasurement.idBacteria = Birth.idBacteriaChildB)&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN (&lt;br /&gt;
          SELECT idBacteriaParent, DivChildA.bactName AS childAName, DivChildB.bactName AS childBName, frameNo&lt;br /&gt;
            FROM BacteriaSplit                &lt;br /&gt;
                      JOIN Bacteria AS DivChildA ON BacteriaSplit.idBacteriaChildA = DivChildA.idBacteria&lt;br /&gt;
                      JOIN Bacteria AS DivChildB ON BacteriaSplit.idBacteriaChildB = DivChildB.idBacteria   &lt;br /&gt;
       ) AS Division&lt;br /&gt;
          ON (DistBactMeasurement.idBacteria = Division.idBacteriaParent)&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS BirthArea&lt;br /&gt;
              ON Birth.frameNo                  = BirthArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria = BirthArea.idBacteria&lt;br /&gt;
  &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS DivisionArea&lt;br /&gt;
              ON DivisionArea.frameNo = ((SELECT MAX(frameNo) FROM Frame F WHERE F.idExperiment = Experiment.idExperiment AND F.frameNo &amp;lt; Division.frameNo AND ignoreFrame = &#039;n&#039;))&lt;br /&gt;
             AND DivisionArea.idBacteria = DistBactMeasurement.idBacteria&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS PrevArea&lt;br /&gt;
              ON PrevFrame.frameNo               = PrevArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria  = PrevArea.idBacteria&lt;br /&gt;
       &lt;br /&gt;
       LEFT JOIN vBacteriaAreaMeasurement AS CurrArea&lt;br /&gt;
              ON DistBactMeasurement.frameNo    = CurrArea.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria = CurrArea.idBacteria           &lt;br /&gt;
       --// Prev mean&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS prevBlueMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = prevBlueMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = prevBlueMean.idBacteria           &lt;br /&gt;
             AND prevBlueMean.channelName = &#039;Blue&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS prevGreenMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = prevGreenMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = prevGreenMean.idBacteria&lt;br /&gt;
             AND prevGreenMean.channelName = &#039;Green&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS PrevRedMean&lt;br /&gt;
              ON PrevFrame.frameNo                 = PrevRedMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria    = PrevRedMean.idBacteria&lt;br /&gt;
             AND PrevRedMean.channelName = &#039;Red&#039;&lt;br /&gt;
      --// Curr mean&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS currBlueMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = currBlueMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = currBlueMean.idBacteria           &lt;br /&gt;
             AND currBlueMean.channelName = &#039;Blue&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS currGreenMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = currGreenMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = currGreenMean.idBacteria&lt;br /&gt;
             AND currGreenMean.channelName = &#039;Green&#039;&lt;br /&gt;
       LEFT JOIN vBacteriaMeanMeasurement AS CurrRedMean&lt;br /&gt;
              ON DistBactMeasurement.frameNo      = CurrRedMean.frameNo&lt;br /&gt;
             AND DistBactMeasurement.idBacteria   = CurrRedMean.idBacteria&lt;br /&gt;
             AND CurrRedMean.channelName = &#039;Red&#039;;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=43</id>
		<title>JavaDoc</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=43"/>
		<updated>2023-07-18T11:09:20Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;iframe key=&amp;quot;javadoc&amp;quot; level=&amp;quot;homer&amp;quot; path=&amp;quot;bactimas_javadoc/index.html&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=42</id>
		<title>JavaDoc</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=42"/>
		<updated>2023-07-18T11:07:18Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;iframe key=&amp;quot;javsadoc&amp;quot; level=&amp;quot;homer&amp;quot; path=&amp;quot;bactimas_javadoc/index.html&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=41</id>
		<title>JavaDoc</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=41"/>
		<updated>2023-07-18T11:06:26Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;iframe key=&amp;quot;javsadoc&amp;quot; level=&amp;quot;&amp;quot; path=&amp;quot;bactimas_javadoc/index.html&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=40</id>
		<title>JavaDoc</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=JavaDoc&amp;diff=40"/>
		<updated>2023-07-18T11:01:20Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;{{url&amp;gt;https://homer.zpr.fer.hr/bactimas_javadoc/index.html 98%, 1024px}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{url&amp;gt;https://homer.zpr.fer.hr/bactimas_javadoc/index.html 98%, 1024px}}&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=39</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=39"/>
		<updated>2023-07-18T11:01:09Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
* Users&lt;br /&gt;
** Installation|Installation&lt;br /&gt;
** User manual|User manual&lt;br /&gt;
** Video tutorial|Video tutorial&lt;br /&gt;
* Developers&lt;br /&gt;
** Installation_dev|Installation&lt;br /&gt;
** JavaDoc|JavaDoc&lt;br /&gt;
** Database|Database&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=38</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=38"/>
		<updated>2023-07-18T11:00:54Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
* Users&lt;br /&gt;
** Installation|Installation&lt;br /&gt;
** User manual|User manual&lt;br /&gt;
** Video tutorial|Video tutorial&lt;br /&gt;
* Developers&lt;br /&gt;
** Installation_dev|installation&lt;br /&gt;
** JavaDoc|JavaDoc&lt;br /&gt;
** Database|Database&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Video_tutorial&amp;diff=37</id>
		<title>Video tutorial</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Video_tutorial&amp;diff=37"/>
		<updated>2023-07-18T10:56:47Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;= Video Tutorial =  == 1. BactImAs structure and Phase 1  == Video explaining BactImAs structure and where to store experiment images and databases. &amp;lt;youtube&amp;gt;B_A87dSbhP8&amp;lt;/youtube&amp;gt;   == 2. New experiment  == Video explaining how to define new experiment, and set the initial cell ROIs.  &amp;lt;youtube&amp;gt;fEv40wU9x_Y&amp;lt;/youtube&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Video Tutorial =&lt;br /&gt;
&lt;br /&gt;
== 1. BactImAs structure and Phase 1  ==&lt;br /&gt;
Video explaining BactImAs structure and where to store experiment images and databases.&lt;br /&gt;
&amp;lt;youtube&amp;gt;B_A87dSbhP8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. New experiment  ==&lt;br /&gt;
Video explaining how to define new experiment, and set the initial cell ROIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fEv40wU9x_Y&amp;lt;/youtube&amp;gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=36</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=36"/>
		<updated>2023-07-18T10:55:33Z</updated>

		<summary type="html">&lt;p&gt;Igor: /* 6.3. SQL Pane */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== BactImAs User Manual ======&lt;br /&gt;
&lt;br /&gt;
===== 1. BactImAs GUI =====                                                                                                                                          &lt;br /&gt;
Image below shows the BactImAs GUI. &lt;br /&gt;
&lt;br /&gt;
GUI consists of three main parts: &lt;br /&gt;
  * R/G/B channel images, scrollable image panes showing every second frame of the experiment&lt;br /&gt;
  * Frame/cell tree on the right showing all frames and cells/ROIs&lt;br /&gt;
  * Status window showing messages from the program (can be minified)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Bactrack_gui.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you chose (click) on a frame(on the tree or on the R/G/B channel image) a new image stack will appear showing that frame&#039;s images in all combinations: R, G, B, R+G, R+B, B+G, RGB, with annotated ROIs (you can turn off annotations using Roi Manager):  &lt;br /&gt;
&lt;br /&gt;
[[File:Frame.png|300px]]&lt;br /&gt;
&lt;br /&gt;
One can scroll to any of these and use it (typically) to assign ROIs using ImageJ polygon selection tool.&lt;br /&gt;
&lt;br /&gt;
Every GUI command/option is described in detail below (also, note the table of contents on the upper right side).&lt;br /&gt;
&lt;br /&gt;
===== 2. Experiment =====                                                                                                                                          &lt;br /&gt;
 &lt;br /&gt;
//**Note: please read the installation instructions first, especially the &amp;quot;BactImAs structure&amp;quot; part.**//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.1. Setup new experiment ====&lt;br /&gt;
                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
You must prepare, beforehand, three folders: red, green and blue (each containing image sequence of the appropriate channel).                                &lt;br /&gt;
Images must be 8-bit PNGs, and must be named unanimously (having the same name, and increasing number at the end), e.g.:                                                                                                                                                                                             &lt;br /&gt;
  *         phase_image_0000.png                                                                                                           &lt;br /&gt;
  *         phase_image_0001.png                                                                                                           &lt;br /&gt;
  *         phase_image_0002.png                                                                                                           &lt;br /&gt;
  *         ...         &lt;br /&gt;
                                                                                                                                           &lt;br /&gt;
Don&#039;t worry, ImageJ will do this for you (by deafault), if you say File-&amp;gt;Save As-&amp;gt;Image sequence.&lt;br /&gt;
Also, note that once you&#039;ve processed the movie (i.e. performed cell segmentations) you can measure on a whole different set of images (typically original TIFFs), as long as the ROIs (cell selections) hit the same spot.                                                           &lt;br /&gt;
These folders should not be moved afterwards (in this version) - the program will expect images to be at the same place when you (later) load the experiment.&lt;br /&gt;
Should you move them, you&#039;ll have to edit the experiment properties and set the new file locations.&lt;br /&gt;
In other words, images WILL NOT be saved to database, only the calculated/defined ROIs, measurements etc.                                                  &lt;br /&gt;
&lt;br /&gt;
Once the folders are prepared (note that these can be stored anywhere (local hardrive, external server... but it is highly recommended to keep them in the default location under data/images folder). Start BactImAs.jar and select Experiment-&amp;gt;New experiment.  &lt;br /&gt;
You will be asked to choose folders for each channel (“Red”, “Green” and “Blue”.  (the location you define in this step will be saved but can be changed later  if you decide to move the folders). Then you must give an unique name to your experiment. Next to this name, BactImAs  automatically assigns exp. id (e.g. id 1076) that can be later used in SQL queries. BactImAs will then load images in a few sec and you are ready to start the time-lapse movie processing. &lt;br /&gt;
&lt;br /&gt;
Optional: This is a good time to also define here some important experimental settings such as pixel size. However, you can also do it at any other time. &lt;br /&gt;
                                                                                                                                                               &lt;br /&gt;
==== 2.2. Load experiment ====&lt;br /&gt;
Use Experiment-&amp;gt;Load ( Alt+2) to load an experiment.&lt;br /&gt;
Pick an existing experiment and wait for the experiment to load.&lt;br /&gt;
If you don&#039;t see the images on the R/G/B channels, that probably means that you haven&#039;t set up the folders right (see above), or you received a database from someone else and need to point the R/G/B folders to new locations.&lt;br /&gt;
Either way:&lt;br /&gt;
==== 2.3. Edit experiment (settings) ====&lt;br /&gt;
Once you&#039;ve loaded the experiment you can change it&#039;s settings via Experiment-&amp;gt;Edit current experiment (Alt+4).   &lt;br /&gt;
You&#039;ll get a dialog like this one:&lt;br /&gt;
&lt;br /&gt;
[[File:Editexperiment.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The most common use case for changing the experiment settings is when someone sends you his or hers database and adjoining image files.   &lt;br /&gt;
Since they&#039;ve probably stored the in the different folder (than you), you&#039;ll have to change this folder paths in order for the images to load.&lt;br /&gt;
&lt;br /&gt;
==== 2.4. Delete experiment ====&lt;br /&gt;
To delete the experiment chose Experiment-&amp;gt;delete (Alt+3).  &lt;br /&gt;
This will not delete the image files on your disk, just the records in the database pertaining to that experiment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 3. Segmentation =====  &lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set up your experiment, given it a name, and set the images folders, you may proceed to actual cell segmentation.&lt;br /&gt;
&lt;br /&gt;
==== 3.1. Detecting translations (registering) ====&lt;br /&gt;
&lt;br /&gt;
It is common for have slight translations from one frame to another (eg due to sligt camera movements).  &lt;br /&gt;
It is very important to align or &amp;quot;register&amp;quot; such images, since the default built-in &amp;quot;Copy-and-Adjust&amp;quot; algorithm is very sensitive to such defects.  &lt;br /&gt;
You can use an external program to align/register images beforehand, all the better (e.g. http://bigwww.epfl.ch/thevenaz/stackreg/).&lt;br /&gt;
However, there is also a built-in algorithm for detection of translations, and if you haven&#039;t aligned the images externally, this is the first thing you must do in the segmentation process. &lt;br /&gt;
The built-in algorithm is suitable only for translations, so if you have rotations or some other kind of transformations, you&#039;ll have to adjust such images externally.&lt;br /&gt;
=== Built-in algorith ===&lt;br /&gt;
Select the first frame and then click &amp;quot;Detect trans&amp;quot; button below the cell tree on the right.&lt;br /&gt;
The program will ask you for a range (default = 20), this number specifies  the number of pixels the program will &#039;slide&#039; one image over the other (in every direction) in an attempt to align them. &lt;br /&gt;
Start with default = 20 (bigger number = slower), you can later detect translation for just one problematic frame if you need to (with the higher value than 20).&lt;br /&gt;
Translations will be saved to database and you will not have to do this again.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.2. Define initial cells =====&lt;br /&gt;
The built-in C&amp;amp;A algorithm tracks cells with regars to their position on the previous frame.   &lt;br /&gt;
This implies that you have to define the initial cells on the first frame, and start tracking from the second frame.   &lt;br /&gt;
To achieve that:&lt;br /&gt;
  * Open the first frame, and define bacteria. You click on the frame tree (right) and issue &amp;quot;Add&amp;quot; command to generate bacteria, &lt;br /&gt;
       and then you click on the bacterium and &amp;quot;Add&amp;quot; human ROIs (Regions Of Interest, i.e. selections) &lt;br /&gt;
Then you repeat the following (for each bacterium):&lt;br /&gt;
  * define ROI with ImageJ&#039;s polygon selection tool &lt;br /&gt;
  * click on the appropriate Human ROI node in the frame tree and issue &#039;Set Roi&#039; command.&lt;br /&gt;
    &lt;br /&gt;
==== 3.3. Segmentation and Tracking Algorithm ====&lt;br /&gt;
&lt;br /&gt;
Before describing the tracking via built-in algorithm, a quick note on the BactTrack modular structure.   &lt;br /&gt;
BactImAs is designed to be a &amp;quot;platform for the cell segmentation and tracking&amp;quot; and should, ideally, be able to handle any such task.&lt;br /&gt;
We recognize that there is no single algorithm suitable for all kinds of tracking tasks and have therefore enabled for various algorithms to be included in the BactImAs Platform and used for cell segmentation.&lt;br /&gt;
While algorithm design is more a task for the developers (please, see Devs documentation), the user, on the other hand, has the option to use any of the available algorithms. &lt;br /&gt;
Not only can different algorithms be used for different experiments, the user can assign different algorithms for different frames of the same experiment!   &lt;br /&gt;
Using the &amp;quot;Set Algorithm&amp;quot; command, a chosen algorithm can be assigned for any frame range.&lt;br /&gt;
If not assigned, the default built-in &amp;quot;Copy And Adjust&amp;quot; algorithm is used.&lt;br /&gt;
There is a &amp;quot;Fast Copy And Adjust&amp;quot; version of the algorithm available (not default) which differs from the default algorithm in the amount of information written to the log.&lt;br /&gt;
The &amp;quot;Fast Copy And Adjust&amp;quot; writes minimal information and is therefore faster, however cell segmentation results are identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.4. Segmentation and Tracking ====&lt;br /&gt;
    &lt;br /&gt;
Click on the frame (e.g. second frame) and issue &#039;Track&#039; command. Enter the number of frames to process (default = 5).   &lt;br /&gt;
Track will attempt to segment the cells on the assigned number of frames starting from the selected frame.  &lt;br /&gt;
Each cell/frame is segmented using that cell&#039;s ROI from the previous frame.   &lt;br /&gt;
Human ROIs always have precedence over computer ROIs, e.g. if there are both human and computer ROIs on the previous frame, the algorithm will use human ROI.   &lt;br /&gt;
&lt;br /&gt;
When you issue the &amp;quot;Track&amp;quot; command you&#039;ll have the option of changing certain algorithm parameters.&lt;br /&gt;
This is useful in situations when algorithm does not perform well.&lt;br /&gt;
&lt;br /&gt;
[[File:Ca_params.png|}}px]]&lt;br /&gt;
Parameters description:&lt;br /&gt;
  * &amp;quot;Ball radius&amp;quot; is a value in pixel that defines the size(radius) of the disk used to &amp;quot;draw&amp;quot; the cell. You may think of it as a radius of the tip of the broad ballpen used to draw the cell. In other words, this radius relates to the width of a cell - and you can measure that width W with ImageJ (or simply by zooming and counting the pixels yourself) and then assign the ball radius to just below the W/2. The default value is 4 which is appropriate for the cells of width 9, 10, 11...&lt;br /&gt;
  * &amp;quot;Channel&amp;quot; is simply the channel used for segmentation, or more precisely - images from the so labelled channels (folders) are used. Note that you can use e.g. blue channel for the first 10 frames, then green channel for the next five, then blue again, etc. In general, you want to use the channel on which the edge detection works best, you can try that for yourself using ImageJ or &amp;quot;Help decide&amp;quot; button below.&lt;br /&gt;
  * &amp;quot;Range&amp;quot; is a value in pixels relating to the possible elongation of the cells on their poles. If the algorithm doesn&#039;t catch up will cell growth on the poles, you may want to increase this number.&lt;br /&gt;
  * &amp;quot;Max ball delta perc&amp;quot; is given in percentages and defines the maximal additional area one disk can contribute when expanding the selection. If you find that the cells are erroneously growing to fast, &amp;quot;bubbling up&amp;quot; on the sides and poles, you may want to decrease this number.&lt;br /&gt;
  * &amp;quot;Threshold method&amp;quot; - the C&amp;amp;A algorithm relies heavily on the edge detection (and subsequent thresholding). If the algorithm performs badly, you may want to try changing the default method, you should choose the method that best outlines the cells (click &#039;Help decide&#039; to see the gallery of methods).&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set the parameters, the program will attempt to track the cells. You&#039;ll be able to see the segmentation as it happens and/or inspect it again using the &amp;quot;Reports&amp;quot; facilities:&lt;br /&gt;
&lt;br /&gt;
==== 3.5. Reports ====&lt;br /&gt;
There are two types of reports (and command buttons): &lt;br /&gt;
  * &amp;quot;Color report&amp;quot; is a report (ImageJ stack) on which every cell is drawn in a different color, while background is drawn in black.    Cell&#039;s offsprings will be drawn in the nuance of the parent-cell color, e.g. all descendant of the red cell will be drawn in nuances of red. Example: [[File:Segmentation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
  * &amp;quot;Report&amp;quot; is a report (ImageJ stack) on which cells ROIs are outlined over original images. There is also a color/BW version of this report (you&#039;re asked to chose on click). BW report uses less memory as each of the stack&#039;s image is BW and, of course, BW use less memory than color images.&lt;br /&gt;
    * BW - human ROIs are outlined with white, and computer ROIs with black&lt;br /&gt;
    * Color - human ROIs are outlined with green and computer ROIs with red, e.g.: [[File:Report_with_color_option.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.6. Cell divisions ====&lt;br /&gt;
&lt;br /&gt;
For the time being cell division recognition is not supported and cell divisions are assigned manually in the following way: &lt;br /&gt;
  - Open the frame where bacteriium (e.g. bacterium &#039;B&#039;) is splitting &lt;br /&gt;
  - Click on the bacterium &#039;B&#039; on the frame tree and issue &amp;quot;Split&amp;quot; command. &lt;br /&gt;
  - Program will replace this bacterium in the current frame with its two offsprings: &#039;BA&#039; and &#039;BB&#039;. They will both have the human ROIs defined (erroneously), you have to overwrite it: &lt;br /&gt;
    * Define ROIs with ImageJ&#039;s polygon selection tool for each offspring (and click &amp;quot;SetRoi&amp;quot; to save). &lt;br /&gt;
&lt;br /&gt;
Split move/delete - If you made an error and defined split on the wrong frame, you can move the split up/down N frames, or even delete it all together.&lt;br /&gt;
To move the split you have to select one of the children in the split frame, and click on the &amp;quot;Move/del split&amp;quot;.  &lt;br /&gt;
E.g. let&#039;s say there is a split on the frame 10: A = AA + AB. QQ&lt;br /&gt;
Click on either AA or AB and then click &#039;Move/del split&#039;.  &lt;br /&gt;
The procedure is also thoroughly explained (in the program) when you click the &amp;quot;Move/del split&amp;quot; (and you have a chance to cancel if you change you mind).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 4. Measuring =====&lt;br /&gt;
&lt;br /&gt;
Once cells are segmented, various measurements are acquired in a fully automated way.  &lt;br /&gt;
BactImAs separates these two processes which has a nice side-effect that, for instance, cell segmentation and tracking can be outsourced or performed by a different person than a person taking measurements.&lt;br /&gt;
Using BactImAs&#039;s (color) reports (described above), it is easy to visually inspect the quality of the segmentation process.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4.1. Background correction ====&lt;br /&gt;
&lt;br /&gt;
Command &amp;quot;Set/msr bg (R+G+B)&amp;quot; is used to measure (store in the database) the background intensities of the red, green and blue channel images. These are used to compute the background corrected values afterwards.&lt;br /&gt;
After you click on this command an ImageJ stack will appear with all the frames of the experiment:   &lt;br /&gt;
[[File:Measure_bg.png|200px]]&lt;br /&gt;
Using this stack, user has to assign the (rectangular) background area (subarea of the whole image), typically the are of the image that never holds any of the cells.&lt;br /&gt;
As with other measures, one can chose whether to measure on the original tif images (recommmended) or the png images used for tracking and segmentation.&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
&lt;br /&gt;
==== 4.2. Cell measurements ====&lt;br /&gt;
Cells are measured using the &amp;quot;Measure&amp;quot; command. User can chose to take any or all available ImageJ measures on the assigned channel (r,g,b).&lt;br /&gt;
If you want to measure the same attribute on the different channels (e.g. mean on red and green channel) you have to measure twice: first on green and then on red channel (or vice versa).&lt;br /&gt;
When saving measurements in the database BactImAs behaves in the following way:  &lt;br /&gt;
(a) if the same measurement on the same channel already exists - it is overwritten   &lt;br /&gt;
(b) otherwise, measurement is saved (added to the already existing measurements)   &lt;br /&gt;
So, in our example, green mean will be saved according to the (b) principle, and red mean also.&lt;br /&gt;
Should you measure the green mean again, the initial green mean would be overwritten in accordance with (a).   &lt;br /&gt;
&lt;br /&gt;
Upon clicking on the &amp;quot;Measure&amp;quot;, a user is presented with following dialog:   &lt;br /&gt;
[[File:Measure.png|200px]]&lt;br /&gt;
&lt;br /&gt;
In the example above, the following will be measured:&lt;br /&gt;
  * Area on the red channel (though channel is irrelevant for area measure)&lt;br /&gt;
  * Mean on the green channel&lt;br /&gt;
  * IntDen on the red channel with **collar** of one pixel. **Collar** is the width of the outer rim belt you want to ignore (e.g. if you want to exclude the cell&#039;s membranes)&lt;br /&gt;
&lt;br /&gt;
Typically, you want to measure area and mean on all channels.&lt;br /&gt;
&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
You can repeat the measuring process arbitrary number of times, or measure (repeat for) just a assigned number of frames, etc.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides a number of additional, derived measures, defined as follows:&lt;br /&gt;
(note that you must first measure area, mean on all channels and background fluorescences on all channels for these measures to be available):&lt;br /&gt;
&lt;br /&gt;
^Name   ^Description    ^Is numerical (= can be mapped to the lin. tree) ^&lt;br /&gt;
|generation                 |Stage of descent from a common ancestor | |&lt;br /&gt;
|parent                     |Ancestor cell of a specific bacteria    | |&lt;br /&gt;
|sibling                    |Sibling cell of a specific bacteria     | |&lt;br /&gt;
|progeny_a                  |Specific progeny of a bacteria          | |&lt;br /&gt;
|progeny_b                  |Specific progeny of the bacteria        | |&lt;br /&gt;
|birth_time                 |Frame proceeding the division event     |yes|&lt;br /&gt;
|division_time              |Frame previous to the division event    |yes|&lt;br /&gt;
|interdivision_time         |=Division_time-Birth_ time              |yes|&lt;br /&gt;
|growth_rate                |=(Area at division_time/Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|growth_velocity            |=(Area at division_time-Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|area_square_microns        |=Measured area* (pixel_width*pixel_height)/scale*scale  |yes|&lt;br /&gt;
|area_square_microns_growth |=(area_square_microns(n)-area_square_microns(n+1))/time |yes|&lt;br /&gt;
|red_mean_bg_cor            |=Red_mean-red_bg       |yes|&lt;br /&gt;
|green_mean_bg_cor          |=Green_mean-green_bg   |yes|&lt;br /&gt;
|blue_mean_bg_cor           |=Blue_mean-blue_bg     |yes|&lt;br /&gt;
|red_ctcf                   |=red_mean_bg_cor*area_square_microns   |yes|&lt;br /&gt;
|green_ctcf                 |=green_mean_bg_cor*area_square_microns |yes|&lt;br /&gt;
|blue_ctcf                  |=blue_mean_bg_cor*area_square_microns  |yes|&lt;br /&gt;
|red_mean_bg_cor_change     |=(red_mean_bg_cor (n)-red_mean_bg_cor (n+1))/time      |yes|&lt;br /&gt;
|green_mean_bg_cor_change   |=(green_mean_bg_cor(n)-green_mean_bg_cor(n+1))/time    |yes|&lt;br /&gt;
|blue_mean_bg_cor_change    |=(blue_mean_bg_cor (n)-blue_mean_bg_cor (n+1))/time)   |yes|&lt;br /&gt;
|red_ctcf_change            |=(red_ctcf(n)-red_ctcf(n+1))/time      |yes|&lt;br /&gt;
|green_ctcf_change          |=(green_ctcf(n)-green_ctcf(n+1)/time   |yes|&lt;br /&gt;
|blue_ctcf_change           |=(blue_ctcf(n)-blue_ctcg(n+1))/time    |yes|&lt;br /&gt;
&lt;br /&gt;
Also, note the **&amp;quot;area_square_microns&amp;quot;** measure above, that stands for cell area in square microns of course.   &lt;br /&gt;
It is defined as: **Measured area * (pixel_width*pixel_height)/scale*scale** where:&lt;br /&gt;
  * Measured area is measured using ImageJ&#039;s &amp;quot;area&amp;quot; measurement (as shown above)&lt;br /&gt;
  * pixel_width, pixel_height and scale are per experiement values that can be defined via Experiment-&amp;gt;Edit experiment&lt;br /&gt;
&lt;br /&gt;
===== 5. Other (misc) commmands =====&lt;br /&gt;
&lt;br /&gt;
==== 5.1. Deleting (truncating) ROIs ====&lt;br /&gt;
&amp;quot;Trunc (after)&amp;quot; is a rarely used option for deleting the ROIs for (after) a selected frame.   &lt;br /&gt;
Warning: deleted ROIs cannot be recovered and you&#039;ll have to detect them again.&lt;br /&gt;
&lt;br /&gt;
==== 5.2. Collapse/Expand all ====&lt;br /&gt;
These commands are used to collapse or expand all nodes in the Frame/cell tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.3. Edit event ====&lt;br /&gt;
Using &amp;quot;Edit event&amp;quot; one can assign an arbitrary event at a certain frame (for instance, if the experiment conditions have changed, you may want to write that in the database).&lt;br /&gt;
The following dialog is shown:   &lt;br /&gt;
[[File:Event.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Abbreviation is used to display the event in the tree, and the full desc is displayed in the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
If you want to delete the event, just edit it, and leave everything blank and the event will be deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.4. Change cell state ====&lt;br /&gt;
With &amp;quot;Change bact state&amp;quot; command you can assign certain state (e.g. &amp;quot;Ignore&amp;quot;, &amp;quot;Death&amp;quot;) to the cell from some frame onward.   &lt;br /&gt;
[[File:Bstate.png|200px]]&lt;br /&gt;
New state is annotated in the tree and on the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
To delete the assigned state, just set the empty state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.5. Toggle ignore frame ====&lt;br /&gt;
With this command you can ignore (or un-ignore) the selected frame.&lt;br /&gt;
This is typically done when the frame if of a low quality (e.g. out of focus, unusable), but you want to keep it to keep the accurate timeline.&lt;br /&gt;
Cells on the ignored frame are not measured nor does the frame appear in the CSV dump.&lt;br /&gt;
When detecting cells on the frame F, the previous frame is considered to be the frame having maximal frame number f &amp;lt; F, such that it is not ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6. Analyis and Visualization =====&lt;br /&gt;
&lt;br /&gt;
==== 6.1. Lineage tree visualization ====&lt;br /&gt;
&lt;br /&gt;
BactImAs features the innovative lineage tree visualization that can map two, user selected, parameters to the cell division tree.&lt;br /&gt;
When you&#039;re done with measurements, choose Reports-&amp;gt;BTree from the main menu.   &lt;br /&gt;
The following dialog appears:  &lt;br /&gt;
&lt;br /&gt;
[[File:Btree_dialog.png|400px]]&lt;br /&gt;
&lt;br /&gt;
It is possible to assign any of the measured (and derived - built in) variables to the two visualization properties: branch width and color.&lt;br /&gt;
Dialog shows the area of the cell mapped to the branch width, and green_ctcf mapped to the branch color.   &lt;br /&gt;
Other than that, it is possible to assigne the following parameters:&lt;br /&gt;
  * seconds per frame - used for the time scale on the right, where t(frame_no) = (frame_no-1) * seconds_per_frame&lt;br /&gt;
  * min/max stroke width - min/max parameters on the branch color are scaled to min/max stroke width&lt;br /&gt;
  * font size&lt;br /&gt;
  * draw labels - whether to draw the cell labels &lt;br /&gt;
  * convert to hours - whether to convert time in seconds to format: HH:MM:SS&lt;br /&gt;
&lt;br /&gt;
BactImAs will draw a separate visualization for every cell present on the firt (non-igored) frame.&lt;br /&gt;
The following image shows a sample visualization from the demo database:&lt;br /&gt;
&lt;br /&gt;
[[File:Btree.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is our intention to include in the new version of BactImAs additional out-of-the-box statistics and visualization.&lt;br /&gt;
However, acknowledging that it will never be possible to cover all potential requirements, we&#039;ve enabled the following option:&lt;br /&gt;
&lt;br /&gt;
==== 6.2. Export data as CSV file ====&lt;br /&gt;
&lt;br /&gt;
With Reports-&amp;gt;Dump CSV one can export the experiment&#039;s data into a CSV file and proceed to analyze it in one&#039;s favorite data analysis tool.&lt;br /&gt;
&lt;br /&gt;
After you assign the file name, the following dialog appears:&lt;br /&gt;
&lt;br /&gt;
[[File:Dumpcsv.png|400px]]&lt;br /&gt;
&lt;br /&gt;
with all the available measurements for the experiment.&lt;br /&gt;
&lt;br /&gt;
==== 6.3. SQL Pane ====&lt;br /&gt;
&lt;br /&gt;
BactImAs stores all the data (except images) in the SqLite database.   &lt;br /&gt;
Database can be accessed using any of the SqLite client tools - there are many such tools freely available on the Internet.&lt;br /&gt;
It is also possible to access it using the simple built-in SQL Pane editor, which allows for arbitrary SQL statements (queries) to be executed and displayed in a table, and even exported as CSV.   &lt;br /&gt;
The following figure shows the SQL pane:   &lt;br /&gt;
&lt;br /&gt;
[[File:Sqlpane.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Of course, to use SQL pane one has to know the SQL programming language.&lt;br /&gt;
It is our intention, for the future releases of BactImAs, to build a library of predefined SQL queries, with adjoining descriptions in natural language, so that &lt;br /&gt;
a user that has no knowledge of SQL language can pick from the set the available predefined queries and retrieve results for his or hers experiment.&lt;br /&gt;
&lt;br /&gt;
===== 7. Backup, upgrade and data exchange =====&lt;br /&gt;
&lt;br /&gt;
==== 7.1. Backup ====&lt;br /&gt;
&lt;br /&gt;
To backup the data one should simply copy the &amp;quot;data&amp;quot; directory to a safe place, every once in a while.&lt;br /&gt;
&lt;br /&gt;
==== 7.2. Upgrade ====&lt;br /&gt;
&lt;br /&gt;
When upgrading BactImAs, it is best to:   &lt;br /&gt;
(a) extract new BactImAs version into a new folder   &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 7.3. Data exchange ====&lt;br /&gt;
&lt;br /&gt;
(see also the BactImAs structure in the User-&amp;gt;Installation)&lt;br /&gt;
To exchange data, it is necessary to exchange database and images folder (best zipped).&lt;br /&gt;
&lt;br /&gt;
[[File:Exchange.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Should person A want to send experiment data to person B, these are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
  * Person A sends the images folder (best zipped) to person B. Person B saves (extracts) them to person B&#039;s images folder. One could use cloud storage for this steps (eg Dropbox, GDrive) as images are too big for email.&lt;br /&gt;
  * Person A sends the BactImAs.s3db file (database) from dbs folder to person B. Person B potentially renames it (to avoid clashing with person B&#039;s database), saves it to the dbs folder, and adjust the URL in the conf/db.properties to point to this new database (see User-&amp;gt;Installation)  &lt;br /&gt;
&lt;br /&gt;
The second step can be repeated if there are new data measured in the database, while the first step needs to be done only once.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=35</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=35"/>
		<updated>2023-07-18T10:55:23Z</updated>

		<summary type="html">&lt;p&gt;Igor: /* 6.2. Export data as CSV file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== BactImAs User Manual ======&lt;br /&gt;
&lt;br /&gt;
===== 1. BactImAs GUI =====                                                                                                                                          &lt;br /&gt;
Image below shows the BactImAs GUI. &lt;br /&gt;
&lt;br /&gt;
GUI consists of three main parts: &lt;br /&gt;
  * R/G/B channel images, scrollable image panes showing every second frame of the experiment&lt;br /&gt;
  * Frame/cell tree on the right showing all frames and cells/ROIs&lt;br /&gt;
  * Status window showing messages from the program (can be minified)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Bactrack_gui.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you chose (click) on a frame(on the tree or on the R/G/B channel image) a new image stack will appear showing that frame&#039;s images in all combinations: R, G, B, R+G, R+B, B+G, RGB, with annotated ROIs (you can turn off annotations using Roi Manager):  &lt;br /&gt;
&lt;br /&gt;
[[File:Frame.png|300px]]&lt;br /&gt;
&lt;br /&gt;
One can scroll to any of these and use it (typically) to assign ROIs using ImageJ polygon selection tool.&lt;br /&gt;
&lt;br /&gt;
Every GUI command/option is described in detail below (also, note the table of contents on the upper right side).&lt;br /&gt;
&lt;br /&gt;
===== 2. Experiment =====                                                                                                                                          &lt;br /&gt;
 &lt;br /&gt;
//**Note: please read the installation instructions first, especially the &amp;quot;BactImAs structure&amp;quot; part.**//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.1. Setup new experiment ====&lt;br /&gt;
                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
You must prepare, beforehand, three folders: red, green and blue (each containing image sequence of the appropriate channel).                                &lt;br /&gt;
Images must be 8-bit PNGs, and must be named unanimously (having the same name, and increasing number at the end), e.g.:                                                                                                                                                                                             &lt;br /&gt;
  *         phase_image_0000.png                                                                                                           &lt;br /&gt;
  *         phase_image_0001.png                                                                                                           &lt;br /&gt;
  *         phase_image_0002.png                                                                                                           &lt;br /&gt;
  *         ...         &lt;br /&gt;
                                                                                                                                           &lt;br /&gt;
Don&#039;t worry, ImageJ will do this for you (by deafault), if you say File-&amp;gt;Save As-&amp;gt;Image sequence.&lt;br /&gt;
Also, note that once you&#039;ve processed the movie (i.e. performed cell segmentations) you can measure on a whole different set of images (typically original TIFFs), as long as the ROIs (cell selections) hit the same spot.                                                           &lt;br /&gt;
These folders should not be moved afterwards (in this version) - the program will expect images to be at the same place when you (later) load the experiment.&lt;br /&gt;
Should you move them, you&#039;ll have to edit the experiment properties and set the new file locations.&lt;br /&gt;
In other words, images WILL NOT be saved to database, only the calculated/defined ROIs, measurements etc.                                                  &lt;br /&gt;
&lt;br /&gt;
Once the folders are prepared (note that these can be stored anywhere (local hardrive, external server... but it is highly recommended to keep them in the default location under data/images folder). Start BactImAs.jar and select Experiment-&amp;gt;New experiment.  &lt;br /&gt;
You will be asked to choose folders for each channel (“Red”, “Green” and “Blue”.  (the location you define in this step will be saved but can be changed later  if you decide to move the folders). Then you must give an unique name to your experiment. Next to this name, BactImAs  automatically assigns exp. id (e.g. id 1076) that can be later used in SQL queries. BactImAs will then load images in a few sec and you are ready to start the time-lapse movie processing. &lt;br /&gt;
&lt;br /&gt;
Optional: This is a good time to also define here some important experimental settings such as pixel size. However, you can also do it at any other time. &lt;br /&gt;
                                                                                                                                                               &lt;br /&gt;
==== 2.2. Load experiment ====&lt;br /&gt;
Use Experiment-&amp;gt;Load ( Alt+2) to load an experiment.&lt;br /&gt;
Pick an existing experiment and wait for the experiment to load.&lt;br /&gt;
If you don&#039;t see the images on the R/G/B channels, that probably means that you haven&#039;t set up the folders right (see above), or you received a database from someone else and need to point the R/G/B folders to new locations.&lt;br /&gt;
Either way:&lt;br /&gt;
==== 2.3. Edit experiment (settings) ====&lt;br /&gt;
Once you&#039;ve loaded the experiment you can change it&#039;s settings via Experiment-&amp;gt;Edit current experiment (Alt+4).   &lt;br /&gt;
You&#039;ll get a dialog like this one:&lt;br /&gt;
&lt;br /&gt;
[[File:Editexperiment.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The most common use case for changing the experiment settings is when someone sends you his or hers database and adjoining image files.   &lt;br /&gt;
Since they&#039;ve probably stored the in the different folder (than you), you&#039;ll have to change this folder paths in order for the images to load.&lt;br /&gt;
&lt;br /&gt;
==== 2.4. Delete experiment ====&lt;br /&gt;
To delete the experiment chose Experiment-&amp;gt;delete (Alt+3).  &lt;br /&gt;
This will not delete the image files on your disk, just the records in the database pertaining to that experiment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 3. Segmentation =====  &lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set up your experiment, given it a name, and set the images folders, you may proceed to actual cell segmentation.&lt;br /&gt;
&lt;br /&gt;
==== 3.1. Detecting translations (registering) ====&lt;br /&gt;
&lt;br /&gt;
It is common for have slight translations from one frame to another (eg due to sligt camera movements).  &lt;br /&gt;
It is very important to align or &amp;quot;register&amp;quot; such images, since the default built-in &amp;quot;Copy-and-Adjust&amp;quot; algorithm is very sensitive to such defects.  &lt;br /&gt;
You can use an external program to align/register images beforehand, all the better (e.g. http://bigwww.epfl.ch/thevenaz/stackreg/).&lt;br /&gt;
However, there is also a built-in algorithm for detection of translations, and if you haven&#039;t aligned the images externally, this is the first thing you must do in the segmentation process. &lt;br /&gt;
The built-in algorithm is suitable only for translations, so if you have rotations or some other kind of transformations, you&#039;ll have to adjust such images externally.&lt;br /&gt;
=== Built-in algorith ===&lt;br /&gt;
Select the first frame and then click &amp;quot;Detect trans&amp;quot; button below the cell tree on the right.&lt;br /&gt;
The program will ask you for a range (default = 20), this number specifies  the number of pixels the program will &#039;slide&#039; one image over the other (in every direction) in an attempt to align them. &lt;br /&gt;
Start with default = 20 (bigger number = slower), you can later detect translation for just one problematic frame if you need to (with the higher value than 20).&lt;br /&gt;
Translations will be saved to database and you will not have to do this again.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.2. Define initial cells =====&lt;br /&gt;
The built-in C&amp;amp;A algorithm tracks cells with regars to their position on the previous frame.   &lt;br /&gt;
This implies that you have to define the initial cells on the first frame, and start tracking from the second frame.   &lt;br /&gt;
To achieve that:&lt;br /&gt;
  * Open the first frame, and define bacteria. You click on the frame tree (right) and issue &amp;quot;Add&amp;quot; command to generate bacteria, &lt;br /&gt;
       and then you click on the bacterium and &amp;quot;Add&amp;quot; human ROIs (Regions Of Interest, i.e. selections) &lt;br /&gt;
Then you repeat the following (for each bacterium):&lt;br /&gt;
  * define ROI with ImageJ&#039;s polygon selection tool &lt;br /&gt;
  * click on the appropriate Human ROI node in the frame tree and issue &#039;Set Roi&#039; command.&lt;br /&gt;
    &lt;br /&gt;
==== 3.3. Segmentation and Tracking Algorithm ====&lt;br /&gt;
&lt;br /&gt;
Before describing the tracking via built-in algorithm, a quick note on the BactTrack modular structure.   &lt;br /&gt;
BactImAs is designed to be a &amp;quot;platform for the cell segmentation and tracking&amp;quot; and should, ideally, be able to handle any such task.&lt;br /&gt;
We recognize that there is no single algorithm suitable for all kinds of tracking tasks and have therefore enabled for various algorithms to be included in the BactImAs Platform and used for cell segmentation.&lt;br /&gt;
While algorithm design is more a task for the developers (please, see Devs documentation), the user, on the other hand, has the option to use any of the available algorithms. &lt;br /&gt;
Not only can different algorithms be used for different experiments, the user can assign different algorithms for different frames of the same experiment!   &lt;br /&gt;
Using the &amp;quot;Set Algorithm&amp;quot; command, a chosen algorithm can be assigned for any frame range.&lt;br /&gt;
If not assigned, the default built-in &amp;quot;Copy And Adjust&amp;quot; algorithm is used.&lt;br /&gt;
There is a &amp;quot;Fast Copy And Adjust&amp;quot; version of the algorithm available (not default) which differs from the default algorithm in the amount of information written to the log.&lt;br /&gt;
The &amp;quot;Fast Copy And Adjust&amp;quot; writes minimal information and is therefore faster, however cell segmentation results are identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.4. Segmentation and Tracking ====&lt;br /&gt;
    &lt;br /&gt;
Click on the frame (e.g. second frame) and issue &#039;Track&#039; command. Enter the number of frames to process (default = 5).   &lt;br /&gt;
Track will attempt to segment the cells on the assigned number of frames starting from the selected frame.  &lt;br /&gt;
Each cell/frame is segmented using that cell&#039;s ROI from the previous frame.   &lt;br /&gt;
Human ROIs always have precedence over computer ROIs, e.g. if there are both human and computer ROIs on the previous frame, the algorithm will use human ROI.   &lt;br /&gt;
&lt;br /&gt;
When you issue the &amp;quot;Track&amp;quot; command you&#039;ll have the option of changing certain algorithm parameters.&lt;br /&gt;
This is useful in situations when algorithm does not perform well.&lt;br /&gt;
&lt;br /&gt;
[[File:Ca_params.png|}}px]]&lt;br /&gt;
Parameters description:&lt;br /&gt;
  * &amp;quot;Ball radius&amp;quot; is a value in pixel that defines the size(radius) of the disk used to &amp;quot;draw&amp;quot; the cell. You may think of it as a radius of the tip of the broad ballpen used to draw the cell. In other words, this radius relates to the width of a cell - and you can measure that width W with ImageJ (or simply by zooming and counting the pixels yourself) and then assign the ball radius to just below the W/2. The default value is 4 which is appropriate for the cells of width 9, 10, 11...&lt;br /&gt;
  * &amp;quot;Channel&amp;quot; is simply the channel used for segmentation, or more precisely - images from the so labelled channels (folders) are used. Note that you can use e.g. blue channel for the first 10 frames, then green channel for the next five, then blue again, etc. In general, you want to use the channel on which the edge detection works best, you can try that for yourself using ImageJ or &amp;quot;Help decide&amp;quot; button below.&lt;br /&gt;
  * &amp;quot;Range&amp;quot; is a value in pixels relating to the possible elongation of the cells on their poles. If the algorithm doesn&#039;t catch up will cell growth on the poles, you may want to increase this number.&lt;br /&gt;
  * &amp;quot;Max ball delta perc&amp;quot; is given in percentages and defines the maximal additional area one disk can contribute when expanding the selection. If you find that the cells are erroneously growing to fast, &amp;quot;bubbling up&amp;quot; on the sides and poles, you may want to decrease this number.&lt;br /&gt;
  * &amp;quot;Threshold method&amp;quot; - the C&amp;amp;A algorithm relies heavily on the edge detection (and subsequent thresholding). If the algorithm performs badly, you may want to try changing the default method, you should choose the method that best outlines the cells (click &#039;Help decide&#039; to see the gallery of methods).&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set the parameters, the program will attempt to track the cells. You&#039;ll be able to see the segmentation as it happens and/or inspect it again using the &amp;quot;Reports&amp;quot; facilities:&lt;br /&gt;
&lt;br /&gt;
==== 3.5. Reports ====&lt;br /&gt;
There are two types of reports (and command buttons): &lt;br /&gt;
  * &amp;quot;Color report&amp;quot; is a report (ImageJ stack) on which every cell is drawn in a different color, while background is drawn in black.    Cell&#039;s offsprings will be drawn in the nuance of the parent-cell color, e.g. all descendant of the red cell will be drawn in nuances of red. Example: [[File:Segmentation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
  * &amp;quot;Report&amp;quot; is a report (ImageJ stack) on which cells ROIs are outlined over original images. There is also a color/BW version of this report (you&#039;re asked to chose on click). BW report uses less memory as each of the stack&#039;s image is BW and, of course, BW use less memory than color images.&lt;br /&gt;
    * BW - human ROIs are outlined with white, and computer ROIs with black&lt;br /&gt;
    * Color - human ROIs are outlined with green and computer ROIs with red, e.g.: [[File:Report_with_color_option.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.6. Cell divisions ====&lt;br /&gt;
&lt;br /&gt;
For the time being cell division recognition is not supported and cell divisions are assigned manually in the following way: &lt;br /&gt;
  - Open the frame where bacteriium (e.g. bacterium &#039;B&#039;) is splitting &lt;br /&gt;
  - Click on the bacterium &#039;B&#039; on the frame tree and issue &amp;quot;Split&amp;quot; command. &lt;br /&gt;
  - Program will replace this bacterium in the current frame with its two offsprings: &#039;BA&#039; and &#039;BB&#039;. They will both have the human ROIs defined (erroneously), you have to overwrite it: &lt;br /&gt;
    * Define ROIs with ImageJ&#039;s polygon selection tool for each offspring (and click &amp;quot;SetRoi&amp;quot; to save). &lt;br /&gt;
&lt;br /&gt;
Split move/delete - If you made an error and defined split on the wrong frame, you can move the split up/down N frames, or even delete it all together.&lt;br /&gt;
To move the split you have to select one of the children in the split frame, and click on the &amp;quot;Move/del split&amp;quot;.  &lt;br /&gt;
E.g. let&#039;s say there is a split on the frame 10: A = AA + AB. QQ&lt;br /&gt;
Click on either AA or AB and then click &#039;Move/del split&#039;.  &lt;br /&gt;
The procedure is also thoroughly explained (in the program) when you click the &amp;quot;Move/del split&amp;quot; (and you have a chance to cancel if you change you mind).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 4. Measuring =====&lt;br /&gt;
&lt;br /&gt;
Once cells are segmented, various measurements are acquired in a fully automated way.  &lt;br /&gt;
BactImAs separates these two processes which has a nice side-effect that, for instance, cell segmentation and tracking can be outsourced or performed by a different person than a person taking measurements.&lt;br /&gt;
Using BactImAs&#039;s (color) reports (described above), it is easy to visually inspect the quality of the segmentation process.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4.1. Background correction ====&lt;br /&gt;
&lt;br /&gt;
Command &amp;quot;Set/msr bg (R+G+B)&amp;quot; is used to measure (store in the database) the background intensities of the red, green and blue channel images. These are used to compute the background corrected values afterwards.&lt;br /&gt;
After you click on this command an ImageJ stack will appear with all the frames of the experiment:   &lt;br /&gt;
[[File:Measure_bg.png|200px]]&lt;br /&gt;
Using this stack, user has to assign the (rectangular) background area (subarea of the whole image), typically the are of the image that never holds any of the cells.&lt;br /&gt;
As with other measures, one can chose whether to measure on the original tif images (recommmended) or the png images used for tracking and segmentation.&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
&lt;br /&gt;
==== 4.2. Cell measurements ====&lt;br /&gt;
Cells are measured using the &amp;quot;Measure&amp;quot; command. User can chose to take any or all available ImageJ measures on the assigned channel (r,g,b).&lt;br /&gt;
If you want to measure the same attribute on the different channels (e.g. mean on red and green channel) you have to measure twice: first on green and then on red channel (or vice versa).&lt;br /&gt;
When saving measurements in the database BactImAs behaves in the following way:  &lt;br /&gt;
(a) if the same measurement on the same channel already exists - it is overwritten   &lt;br /&gt;
(b) otherwise, measurement is saved (added to the already existing measurements)   &lt;br /&gt;
So, in our example, green mean will be saved according to the (b) principle, and red mean also.&lt;br /&gt;
Should you measure the green mean again, the initial green mean would be overwritten in accordance with (a).   &lt;br /&gt;
&lt;br /&gt;
Upon clicking on the &amp;quot;Measure&amp;quot;, a user is presented with following dialog:   &lt;br /&gt;
[[File:Measure.png|200px]]&lt;br /&gt;
&lt;br /&gt;
In the example above, the following will be measured:&lt;br /&gt;
  * Area on the red channel (though channel is irrelevant for area measure)&lt;br /&gt;
  * Mean on the green channel&lt;br /&gt;
  * IntDen on the red channel with **collar** of one pixel. **Collar** is the width of the outer rim belt you want to ignore (e.g. if you want to exclude the cell&#039;s membranes)&lt;br /&gt;
&lt;br /&gt;
Typically, you want to measure area and mean on all channels.&lt;br /&gt;
&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
You can repeat the measuring process arbitrary number of times, or measure (repeat for) just a assigned number of frames, etc.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides a number of additional, derived measures, defined as follows:&lt;br /&gt;
(note that you must first measure area, mean on all channels and background fluorescences on all channels for these measures to be available):&lt;br /&gt;
&lt;br /&gt;
^Name   ^Description    ^Is numerical (= can be mapped to the lin. tree) ^&lt;br /&gt;
|generation                 |Stage of descent from a common ancestor | |&lt;br /&gt;
|parent                     |Ancestor cell of a specific bacteria    | |&lt;br /&gt;
|sibling                    |Sibling cell of a specific bacteria     | |&lt;br /&gt;
|progeny_a                  |Specific progeny of a bacteria          | |&lt;br /&gt;
|progeny_b                  |Specific progeny of the bacteria        | |&lt;br /&gt;
|birth_time                 |Frame proceeding the division event     |yes|&lt;br /&gt;
|division_time              |Frame previous to the division event    |yes|&lt;br /&gt;
|interdivision_time         |=Division_time-Birth_ time              |yes|&lt;br /&gt;
|growth_rate                |=(Area at division_time/Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|growth_velocity            |=(Area at division_time-Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|area_square_microns        |=Measured area* (pixel_width*pixel_height)/scale*scale  |yes|&lt;br /&gt;
|area_square_microns_growth |=(area_square_microns(n)-area_square_microns(n+1))/time |yes|&lt;br /&gt;
|red_mean_bg_cor            |=Red_mean-red_bg       |yes|&lt;br /&gt;
|green_mean_bg_cor          |=Green_mean-green_bg   |yes|&lt;br /&gt;
|blue_mean_bg_cor           |=Blue_mean-blue_bg     |yes|&lt;br /&gt;
|red_ctcf                   |=red_mean_bg_cor*area_square_microns   |yes|&lt;br /&gt;
|green_ctcf                 |=green_mean_bg_cor*area_square_microns |yes|&lt;br /&gt;
|blue_ctcf                  |=blue_mean_bg_cor*area_square_microns  |yes|&lt;br /&gt;
|red_mean_bg_cor_change     |=(red_mean_bg_cor (n)-red_mean_bg_cor (n+1))/time      |yes|&lt;br /&gt;
|green_mean_bg_cor_change   |=(green_mean_bg_cor(n)-green_mean_bg_cor(n+1))/time    |yes|&lt;br /&gt;
|blue_mean_bg_cor_change    |=(blue_mean_bg_cor (n)-blue_mean_bg_cor (n+1))/time)   |yes|&lt;br /&gt;
|red_ctcf_change            |=(red_ctcf(n)-red_ctcf(n+1))/time      |yes|&lt;br /&gt;
|green_ctcf_change          |=(green_ctcf(n)-green_ctcf(n+1)/time   |yes|&lt;br /&gt;
|blue_ctcf_change           |=(blue_ctcf(n)-blue_ctcg(n+1))/time    |yes|&lt;br /&gt;
&lt;br /&gt;
Also, note the **&amp;quot;area_square_microns&amp;quot;** measure above, that stands for cell area in square microns of course.   &lt;br /&gt;
It is defined as: **Measured area * (pixel_width*pixel_height)/scale*scale** where:&lt;br /&gt;
  * Measured area is measured using ImageJ&#039;s &amp;quot;area&amp;quot; measurement (as shown above)&lt;br /&gt;
  * pixel_width, pixel_height and scale are per experiement values that can be defined via Experiment-&amp;gt;Edit experiment&lt;br /&gt;
&lt;br /&gt;
===== 5. Other (misc) commmands =====&lt;br /&gt;
&lt;br /&gt;
==== 5.1. Deleting (truncating) ROIs ====&lt;br /&gt;
&amp;quot;Trunc (after)&amp;quot; is a rarely used option for deleting the ROIs for (after) a selected frame.   &lt;br /&gt;
Warning: deleted ROIs cannot be recovered and you&#039;ll have to detect them again.&lt;br /&gt;
&lt;br /&gt;
==== 5.2. Collapse/Expand all ====&lt;br /&gt;
These commands are used to collapse or expand all nodes in the Frame/cell tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.3. Edit event ====&lt;br /&gt;
Using &amp;quot;Edit event&amp;quot; one can assign an arbitrary event at a certain frame (for instance, if the experiment conditions have changed, you may want to write that in the database).&lt;br /&gt;
The following dialog is shown:   &lt;br /&gt;
[[File:Event.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Abbreviation is used to display the event in the tree, and the full desc is displayed in the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
If you want to delete the event, just edit it, and leave everything blank and the event will be deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.4. Change cell state ====&lt;br /&gt;
With &amp;quot;Change bact state&amp;quot; command you can assign certain state (e.g. &amp;quot;Ignore&amp;quot;, &amp;quot;Death&amp;quot;) to the cell from some frame onward.   &lt;br /&gt;
[[File:Bstate.png|200px]]&lt;br /&gt;
New state is annotated in the tree and on the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
To delete the assigned state, just set the empty state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.5. Toggle ignore frame ====&lt;br /&gt;
With this command you can ignore (or un-ignore) the selected frame.&lt;br /&gt;
This is typically done when the frame if of a low quality (e.g. out of focus, unusable), but you want to keep it to keep the accurate timeline.&lt;br /&gt;
Cells on the ignored frame are not measured nor does the frame appear in the CSV dump.&lt;br /&gt;
When detecting cells on the frame F, the previous frame is considered to be the frame having maximal frame number f &amp;lt; F, such that it is not ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6. Analyis and Visualization =====&lt;br /&gt;
&lt;br /&gt;
==== 6.1. Lineage tree visualization ====&lt;br /&gt;
&lt;br /&gt;
BactImAs features the innovative lineage tree visualization that can map two, user selected, parameters to the cell division tree.&lt;br /&gt;
When you&#039;re done with measurements, choose Reports-&amp;gt;BTree from the main menu.   &lt;br /&gt;
The following dialog appears:  &lt;br /&gt;
&lt;br /&gt;
[[File:Btree_dialog.png|400px]]&lt;br /&gt;
&lt;br /&gt;
It is possible to assign any of the measured (and derived - built in) variables to the two visualization properties: branch width and color.&lt;br /&gt;
Dialog shows the area of the cell mapped to the branch width, and green_ctcf mapped to the branch color.   &lt;br /&gt;
Other than that, it is possible to assigne the following parameters:&lt;br /&gt;
  * seconds per frame - used for the time scale on the right, where t(frame_no) = (frame_no-1) * seconds_per_frame&lt;br /&gt;
  * min/max stroke width - min/max parameters on the branch color are scaled to min/max stroke width&lt;br /&gt;
  * font size&lt;br /&gt;
  * draw labels - whether to draw the cell labels &lt;br /&gt;
  * convert to hours - whether to convert time in seconds to format: HH:MM:SS&lt;br /&gt;
&lt;br /&gt;
BactImAs will draw a separate visualization for every cell present on the firt (non-igored) frame.&lt;br /&gt;
The following image shows a sample visualization from the demo database:&lt;br /&gt;
&lt;br /&gt;
[[File:Btree.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is our intention to include in the new version of BactImAs additional out-of-the-box statistics and visualization.&lt;br /&gt;
However, acknowledging that it will never be possible to cover all potential requirements, we&#039;ve enabled the following option:&lt;br /&gt;
&lt;br /&gt;
==== 6.2. Export data as CSV file ====&lt;br /&gt;
&lt;br /&gt;
With Reports-&amp;gt;Dump CSV one can export the experiment&#039;s data into a CSV file and proceed to analyze it in one&#039;s favorite data analysis tool.&lt;br /&gt;
&lt;br /&gt;
After you assign the file name, the following dialog appears:&lt;br /&gt;
&lt;br /&gt;
[[File:Dumpcsv.png|400px]]&lt;br /&gt;
&lt;br /&gt;
with all the available measurements for the experiment.&lt;br /&gt;
&lt;br /&gt;
==== 6.3. SQL Pane ====&lt;br /&gt;
&lt;br /&gt;
BactImAs stores all the data (except images) in the SqLite database.   &lt;br /&gt;
Database can be accessed using any of the SqLite client tools - there are many such tools freely available on the Internet.&lt;br /&gt;
It is also possible to access it using the simple built-in SQL Pane editor, which allows for arbitrary SQL statements (queries) to be executed and displayed in a table, and even exported as CSV.   &lt;br /&gt;
The following figure shows the SQL pane:   &lt;br /&gt;
&lt;br /&gt;
[[File:Sqlpane.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Of course, to use SQL pane one has to know the SQL programming language.&lt;br /&gt;
It is our intention, for the future releases of BactImAs, to build a library of predefined SQL queries, with adjoining descriptions in natural language, so that &lt;br /&gt;
a user that has no knowledge of SQL language can pick from the set the available predefined queries and retrieve results for his or hers experiment.&lt;br /&gt;
&lt;br /&gt;
===== 7. Backup, upgrade and data exchange =====&lt;br /&gt;
&lt;br /&gt;
==== 7.1. Backup ====&lt;br /&gt;
&lt;br /&gt;
To backup the data one should simply copy the &amp;quot;data&amp;quot; directory to a safe place, every once in a while.&lt;br /&gt;
&lt;br /&gt;
==== 7.2. Upgrade ====&lt;br /&gt;
&lt;br /&gt;
When upgrading BactImAs, it is best to:   &lt;br /&gt;
(a) extract new BactImAs version into a new folder   &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 7.3. Data exchange ====&lt;br /&gt;
&lt;br /&gt;
(see also the BactImAs structure in the User-&amp;gt;Installation)&lt;br /&gt;
To exchange data, it is necessary to exchange database and images folder (best zipped).&lt;br /&gt;
&lt;br /&gt;
[[File:Exchange.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Should person A want to send experiment data to person B, these are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
  * Person A sends the images folder (best zipped) to person B. Person B saves (extracts) them to person B&#039;s images folder. One could use cloud storage for this steps (eg Dropbox, GDrive) as images are too big for email.&lt;br /&gt;
  * Person A sends the BactImAs.s3db file (database) from dbs folder to person B. Person B potentially renames it (to avoid clashing with person B&#039;s database), saves it to the dbs folder, and adjust the URL in the conf/db.properties to point to this new database (see User-&amp;gt;Installation)  &lt;br /&gt;
&lt;br /&gt;
The second step can be repeated if there are new data measured in the database, while the first step needs to be done only once.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=34</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=34"/>
		<updated>2023-07-18T10:55:10Z</updated>

		<summary type="html">&lt;p&gt;Igor: /* 6.1. Lineage tree visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== BactImAs User Manual ======&lt;br /&gt;
&lt;br /&gt;
===== 1. BactImAs GUI =====                                                                                                                                          &lt;br /&gt;
Image below shows the BactImAs GUI. &lt;br /&gt;
&lt;br /&gt;
GUI consists of three main parts: &lt;br /&gt;
  * R/G/B channel images, scrollable image panes showing every second frame of the experiment&lt;br /&gt;
  * Frame/cell tree on the right showing all frames and cells/ROIs&lt;br /&gt;
  * Status window showing messages from the program (can be minified)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Bactrack_gui.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you chose (click) on a frame(on the tree or on the R/G/B channel image) a new image stack will appear showing that frame&#039;s images in all combinations: R, G, B, R+G, R+B, B+G, RGB, with annotated ROIs (you can turn off annotations using Roi Manager):  &lt;br /&gt;
&lt;br /&gt;
[[File:Frame.png|300px]]&lt;br /&gt;
&lt;br /&gt;
One can scroll to any of these and use it (typically) to assign ROIs using ImageJ polygon selection tool.&lt;br /&gt;
&lt;br /&gt;
Every GUI command/option is described in detail below (also, note the table of contents on the upper right side).&lt;br /&gt;
&lt;br /&gt;
===== 2. Experiment =====                                                                                                                                          &lt;br /&gt;
 &lt;br /&gt;
//**Note: please read the installation instructions first, especially the &amp;quot;BactImAs structure&amp;quot; part.**//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.1. Setup new experiment ====&lt;br /&gt;
                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
You must prepare, beforehand, three folders: red, green and blue (each containing image sequence of the appropriate channel).                                &lt;br /&gt;
Images must be 8-bit PNGs, and must be named unanimously (having the same name, and increasing number at the end), e.g.:                                                                                                                                                                                             &lt;br /&gt;
  *         phase_image_0000.png                                                                                                           &lt;br /&gt;
  *         phase_image_0001.png                                                                                                           &lt;br /&gt;
  *         phase_image_0002.png                                                                                                           &lt;br /&gt;
  *         ...         &lt;br /&gt;
                                                                                                                                           &lt;br /&gt;
Don&#039;t worry, ImageJ will do this for you (by deafault), if you say File-&amp;gt;Save As-&amp;gt;Image sequence.&lt;br /&gt;
Also, note that once you&#039;ve processed the movie (i.e. performed cell segmentations) you can measure on a whole different set of images (typically original TIFFs), as long as the ROIs (cell selections) hit the same spot.                                                           &lt;br /&gt;
These folders should not be moved afterwards (in this version) - the program will expect images to be at the same place when you (later) load the experiment.&lt;br /&gt;
Should you move them, you&#039;ll have to edit the experiment properties and set the new file locations.&lt;br /&gt;
In other words, images WILL NOT be saved to database, only the calculated/defined ROIs, measurements etc.                                                  &lt;br /&gt;
&lt;br /&gt;
Once the folders are prepared (note that these can be stored anywhere (local hardrive, external server... but it is highly recommended to keep them in the default location under data/images folder). Start BactImAs.jar and select Experiment-&amp;gt;New experiment.  &lt;br /&gt;
You will be asked to choose folders for each channel (“Red”, “Green” and “Blue”.  (the location you define in this step will be saved but can be changed later  if you decide to move the folders). Then you must give an unique name to your experiment. Next to this name, BactImAs  automatically assigns exp. id (e.g. id 1076) that can be later used in SQL queries. BactImAs will then load images in a few sec and you are ready to start the time-lapse movie processing. &lt;br /&gt;
&lt;br /&gt;
Optional: This is a good time to also define here some important experimental settings such as pixel size. However, you can also do it at any other time. &lt;br /&gt;
                                                                                                                                                               &lt;br /&gt;
==== 2.2. Load experiment ====&lt;br /&gt;
Use Experiment-&amp;gt;Load ( Alt+2) to load an experiment.&lt;br /&gt;
Pick an existing experiment and wait for the experiment to load.&lt;br /&gt;
If you don&#039;t see the images on the R/G/B channels, that probably means that you haven&#039;t set up the folders right (see above), or you received a database from someone else and need to point the R/G/B folders to new locations.&lt;br /&gt;
Either way:&lt;br /&gt;
==== 2.3. Edit experiment (settings) ====&lt;br /&gt;
Once you&#039;ve loaded the experiment you can change it&#039;s settings via Experiment-&amp;gt;Edit current experiment (Alt+4).   &lt;br /&gt;
You&#039;ll get a dialog like this one:&lt;br /&gt;
&lt;br /&gt;
[[File:Editexperiment.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The most common use case for changing the experiment settings is when someone sends you his or hers database and adjoining image files.   &lt;br /&gt;
Since they&#039;ve probably stored the in the different folder (than you), you&#039;ll have to change this folder paths in order for the images to load.&lt;br /&gt;
&lt;br /&gt;
==== 2.4. Delete experiment ====&lt;br /&gt;
To delete the experiment chose Experiment-&amp;gt;delete (Alt+3).  &lt;br /&gt;
This will not delete the image files on your disk, just the records in the database pertaining to that experiment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 3. Segmentation =====  &lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set up your experiment, given it a name, and set the images folders, you may proceed to actual cell segmentation.&lt;br /&gt;
&lt;br /&gt;
==== 3.1. Detecting translations (registering) ====&lt;br /&gt;
&lt;br /&gt;
It is common for have slight translations from one frame to another (eg due to sligt camera movements).  &lt;br /&gt;
It is very important to align or &amp;quot;register&amp;quot; such images, since the default built-in &amp;quot;Copy-and-Adjust&amp;quot; algorithm is very sensitive to such defects.  &lt;br /&gt;
You can use an external program to align/register images beforehand, all the better (e.g. http://bigwww.epfl.ch/thevenaz/stackreg/).&lt;br /&gt;
However, there is also a built-in algorithm for detection of translations, and if you haven&#039;t aligned the images externally, this is the first thing you must do in the segmentation process. &lt;br /&gt;
The built-in algorithm is suitable only for translations, so if you have rotations or some other kind of transformations, you&#039;ll have to adjust such images externally.&lt;br /&gt;
=== Built-in algorith ===&lt;br /&gt;
Select the first frame and then click &amp;quot;Detect trans&amp;quot; button below the cell tree on the right.&lt;br /&gt;
The program will ask you for a range (default = 20), this number specifies  the number of pixels the program will &#039;slide&#039; one image over the other (in every direction) in an attempt to align them. &lt;br /&gt;
Start with default = 20 (bigger number = slower), you can later detect translation for just one problematic frame if you need to (with the higher value than 20).&lt;br /&gt;
Translations will be saved to database and you will not have to do this again.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.2. Define initial cells =====&lt;br /&gt;
The built-in C&amp;amp;A algorithm tracks cells with regars to their position on the previous frame.   &lt;br /&gt;
This implies that you have to define the initial cells on the first frame, and start tracking from the second frame.   &lt;br /&gt;
To achieve that:&lt;br /&gt;
  * Open the first frame, and define bacteria. You click on the frame tree (right) and issue &amp;quot;Add&amp;quot; command to generate bacteria, &lt;br /&gt;
       and then you click on the bacterium and &amp;quot;Add&amp;quot; human ROIs (Regions Of Interest, i.e. selections) &lt;br /&gt;
Then you repeat the following (for each bacterium):&lt;br /&gt;
  * define ROI with ImageJ&#039;s polygon selection tool &lt;br /&gt;
  * click on the appropriate Human ROI node in the frame tree and issue &#039;Set Roi&#039; command.&lt;br /&gt;
    &lt;br /&gt;
==== 3.3. Segmentation and Tracking Algorithm ====&lt;br /&gt;
&lt;br /&gt;
Before describing the tracking via built-in algorithm, a quick note on the BactTrack modular structure.   &lt;br /&gt;
BactImAs is designed to be a &amp;quot;platform for the cell segmentation and tracking&amp;quot; and should, ideally, be able to handle any such task.&lt;br /&gt;
We recognize that there is no single algorithm suitable for all kinds of tracking tasks and have therefore enabled for various algorithms to be included in the BactImAs Platform and used for cell segmentation.&lt;br /&gt;
While algorithm design is more a task for the developers (please, see Devs documentation), the user, on the other hand, has the option to use any of the available algorithms. &lt;br /&gt;
Not only can different algorithms be used for different experiments, the user can assign different algorithms for different frames of the same experiment!   &lt;br /&gt;
Using the &amp;quot;Set Algorithm&amp;quot; command, a chosen algorithm can be assigned for any frame range.&lt;br /&gt;
If not assigned, the default built-in &amp;quot;Copy And Adjust&amp;quot; algorithm is used.&lt;br /&gt;
There is a &amp;quot;Fast Copy And Adjust&amp;quot; version of the algorithm available (not default) which differs from the default algorithm in the amount of information written to the log.&lt;br /&gt;
The &amp;quot;Fast Copy And Adjust&amp;quot; writes minimal information and is therefore faster, however cell segmentation results are identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.4. Segmentation and Tracking ====&lt;br /&gt;
    &lt;br /&gt;
Click on the frame (e.g. second frame) and issue &#039;Track&#039; command. Enter the number of frames to process (default = 5).   &lt;br /&gt;
Track will attempt to segment the cells on the assigned number of frames starting from the selected frame.  &lt;br /&gt;
Each cell/frame is segmented using that cell&#039;s ROI from the previous frame.   &lt;br /&gt;
Human ROIs always have precedence over computer ROIs, e.g. if there are both human and computer ROIs on the previous frame, the algorithm will use human ROI.   &lt;br /&gt;
&lt;br /&gt;
When you issue the &amp;quot;Track&amp;quot; command you&#039;ll have the option of changing certain algorithm parameters.&lt;br /&gt;
This is useful in situations when algorithm does not perform well.&lt;br /&gt;
&lt;br /&gt;
[[File:Ca_params.png|}}px]]&lt;br /&gt;
Parameters description:&lt;br /&gt;
  * &amp;quot;Ball radius&amp;quot; is a value in pixel that defines the size(radius) of the disk used to &amp;quot;draw&amp;quot; the cell. You may think of it as a radius of the tip of the broad ballpen used to draw the cell. In other words, this radius relates to the width of a cell - and you can measure that width W with ImageJ (or simply by zooming and counting the pixels yourself) and then assign the ball radius to just below the W/2. The default value is 4 which is appropriate for the cells of width 9, 10, 11...&lt;br /&gt;
  * &amp;quot;Channel&amp;quot; is simply the channel used for segmentation, or more precisely - images from the so labelled channels (folders) are used. Note that you can use e.g. blue channel for the first 10 frames, then green channel for the next five, then blue again, etc. In general, you want to use the channel on which the edge detection works best, you can try that for yourself using ImageJ or &amp;quot;Help decide&amp;quot; button below.&lt;br /&gt;
  * &amp;quot;Range&amp;quot; is a value in pixels relating to the possible elongation of the cells on their poles. If the algorithm doesn&#039;t catch up will cell growth on the poles, you may want to increase this number.&lt;br /&gt;
  * &amp;quot;Max ball delta perc&amp;quot; is given in percentages and defines the maximal additional area one disk can contribute when expanding the selection. If you find that the cells are erroneously growing to fast, &amp;quot;bubbling up&amp;quot; on the sides and poles, you may want to decrease this number.&lt;br /&gt;
  * &amp;quot;Threshold method&amp;quot; - the C&amp;amp;A algorithm relies heavily on the edge detection (and subsequent thresholding). If the algorithm performs badly, you may want to try changing the default method, you should choose the method that best outlines the cells (click &#039;Help decide&#039; to see the gallery of methods).&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set the parameters, the program will attempt to track the cells. You&#039;ll be able to see the segmentation as it happens and/or inspect it again using the &amp;quot;Reports&amp;quot; facilities:&lt;br /&gt;
&lt;br /&gt;
==== 3.5. Reports ====&lt;br /&gt;
There are two types of reports (and command buttons): &lt;br /&gt;
  * &amp;quot;Color report&amp;quot; is a report (ImageJ stack) on which every cell is drawn in a different color, while background is drawn in black.    Cell&#039;s offsprings will be drawn in the nuance of the parent-cell color, e.g. all descendant of the red cell will be drawn in nuances of red. Example: [[File:Segmentation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
  * &amp;quot;Report&amp;quot; is a report (ImageJ stack) on which cells ROIs are outlined over original images. There is also a color/BW version of this report (you&#039;re asked to chose on click). BW report uses less memory as each of the stack&#039;s image is BW and, of course, BW use less memory than color images.&lt;br /&gt;
    * BW - human ROIs are outlined with white, and computer ROIs with black&lt;br /&gt;
    * Color - human ROIs are outlined with green and computer ROIs with red, e.g.: [[File:Report_with_color_option.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.6. Cell divisions ====&lt;br /&gt;
&lt;br /&gt;
For the time being cell division recognition is not supported and cell divisions are assigned manually in the following way: &lt;br /&gt;
  - Open the frame where bacteriium (e.g. bacterium &#039;B&#039;) is splitting &lt;br /&gt;
  - Click on the bacterium &#039;B&#039; on the frame tree and issue &amp;quot;Split&amp;quot; command. &lt;br /&gt;
  - Program will replace this bacterium in the current frame with its two offsprings: &#039;BA&#039; and &#039;BB&#039;. They will both have the human ROIs defined (erroneously), you have to overwrite it: &lt;br /&gt;
    * Define ROIs with ImageJ&#039;s polygon selection tool for each offspring (and click &amp;quot;SetRoi&amp;quot; to save). &lt;br /&gt;
&lt;br /&gt;
Split move/delete - If you made an error and defined split on the wrong frame, you can move the split up/down N frames, or even delete it all together.&lt;br /&gt;
To move the split you have to select one of the children in the split frame, and click on the &amp;quot;Move/del split&amp;quot;.  &lt;br /&gt;
E.g. let&#039;s say there is a split on the frame 10: A = AA + AB. QQ&lt;br /&gt;
Click on either AA or AB and then click &#039;Move/del split&#039;.  &lt;br /&gt;
The procedure is also thoroughly explained (in the program) when you click the &amp;quot;Move/del split&amp;quot; (and you have a chance to cancel if you change you mind).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 4. Measuring =====&lt;br /&gt;
&lt;br /&gt;
Once cells are segmented, various measurements are acquired in a fully automated way.  &lt;br /&gt;
BactImAs separates these two processes which has a nice side-effect that, for instance, cell segmentation and tracking can be outsourced or performed by a different person than a person taking measurements.&lt;br /&gt;
Using BactImAs&#039;s (color) reports (described above), it is easy to visually inspect the quality of the segmentation process.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4.1. Background correction ====&lt;br /&gt;
&lt;br /&gt;
Command &amp;quot;Set/msr bg (R+G+B)&amp;quot; is used to measure (store in the database) the background intensities of the red, green and blue channel images. These are used to compute the background corrected values afterwards.&lt;br /&gt;
After you click on this command an ImageJ stack will appear with all the frames of the experiment:   &lt;br /&gt;
[[File:Measure_bg.png|200px]]&lt;br /&gt;
Using this stack, user has to assign the (rectangular) background area (subarea of the whole image), typically the are of the image that never holds any of the cells.&lt;br /&gt;
As with other measures, one can chose whether to measure on the original tif images (recommmended) or the png images used for tracking and segmentation.&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
&lt;br /&gt;
==== 4.2. Cell measurements ====&lt;br /&gt;
Cells are measured using the &amp;quot;Measure&amp;quot; command. User can chose to take any or all available ImageJ measures on the assigned channel (r,g,b).&lt;br /&gt;
If you want to measure the same attribute on the different channels (e.g. mean on red and green channel) you have to measure twice: first on green and then on red channel (or vice versa).&lt;br /&gt;
When saving measurements in the database BactImAs behaves in the following way:  &lt;br /&gt;
(a) if the same measurement on the same channel already exists - it is overwritten   &lt;br /&gt;
(b) otherwise, measurement is saved (added to the already existing measurements)   &lt;br /&gt;
So, in our example, green mean will be saved according to the (b) principle, and red mean also.&lt;br /&gt;
Should you measure the green mean again, the initial green mean would be overwritten in accordance with (a).   &lt;br /&gt;
&lt;br /&gt;
Upon clicking on the &amp;quot;Measure&amp;quot;, a user is presented with following dialog:   &lt;br /&gt;
[[File:Measure.png|200px]]&lt;br /&gt;
&lt;br /&gt;
In the example above, the following will be measured:&lt;br /&gt;
  * Area on the red channel (though channel is irrelevant for area measure)&lt;br /&gt;
  * Mean on the green channel&lt;br /&gt;
  * IntDen on the red channel with **collar** of one pixel. **Collar** is the width of the outer rim belt you want to ignore (e.g. if you want to exclude the cell&#039;s membranes)&lt;br /&gt;
&lt;br /&gt;
Typically, you want to measure area and mean on all channels.&lt;br /&gt;
&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
You can repeat the measuring process arbitrary number of times, or measure (repeat for) just a assigned number of frames, etc.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides a number of additional, derived measures, defined as follows:&lt;br /&gt;
(note that you must first measure area, mean on all channels and background fluorescences on all channels for these measures to be available):&lt;br /&gt;
&lt;br /&gt;
^Name   ^Description    ^Is numerical (= can be mapped to the lin. tree) ^&lt;br /&gt;
|generation                 |Stage of descent from a common ancestor | |&lt;br /&gt;
|parent                     |Ancestor cell of a specific bacteria    | |&lt;br /&gt;
|sibling                    |Sibling cell of a specific bacteria     | |&lt;br /&gt;
|progeny_a                  |Specific progeny of a bacteria          | |&lt;br /&gt;
|progeny_b                  |Specific progeny of the bacteria        | |&lt;br /&gt;
|birth_time                 |Frame proceeding the division event     |yes|&lt;br /&gt;
|division_time              |Frame previous to the division event    |yes|&lt;br /&gt;
|interdivision_time         |=Division_time-Birth_ time              |yes|&lt;br /&gt;
|growth_rate                |=(Area at division_time/Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|growth_velocity            |=(Area at division_time-Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|area_square_microns        |=Measured area* (pixel_width*pixel_height)/scale*scale  |yes|&lt;br /&gt;
|area_square_microns_growth |=(area_square_microns(n)-area_square_microns(n+1))/time |yes|&lt;br /&gt;
|red_mean_bg_cor            |=Red_mean-red_bg       |yes|&lt;br /&gt;
|green_mean_bg_cor          |=Green_mean-green_bg   |yes|&lt;br /&gt;
|blue_mean_bg_cor           |=Blue_mean-blue_bg     |yes|&lt;br /&gt;
|red_ctcf                   |=red_mean_bg_cor*area_square_microns   |yes|&lt;br /&gt;
|green_ctcf                 |=green_mean_bg_cor*area_square_microns |yes|&lt;br /&gt;
|blue_ctcf                  |=blue_mean_bg_cor*area_square_microns  |yes|&lt;br /&gt;
|red_mean_bg_cor_change     |=(red_mean_bg_cor (n)-red_mean_bg_cor (n+1))/time      |yes|&lt;br /&gt;
|green_mean_bg_cor_change   |=(green_mean_bg_cor(n)-green_mean_bg_cor(n+1))/time    |yes|&lt;br /&gt;
|blue_mean_bg_cor_change    |=(blue_mean_bg_cor (n)-blue_mean_bg_cor (n+1))/time)   |yes|&lt;br /&gt;
|red_ctcf_change            |=(red_ctcf(n)-red_ctcf(n+1))/time      |yes|&lt;br /&gt;
|green_ctcf_change          |=(green_ctcf(n)-green_ctcf(n+1)/time   |yes|&lt;br /&gt;
|blue_ctcf_change           |=(blue_ctcf(n)-blue_ctcg(n+1))/time    |yes|&lt;br /&gt;
&lt;br /&gt;
Also, note the **&amp;quot;area_square_microns&amp;quot;** measure above, that stands for cell area in square microns of course.   &lt;br /&gt;
It is defined as: **Measured area * (pixel_width*pixel_height)/scale*scale** where:&lt;br /&gt;
  * Measured area is measured using ImageJ&#039;s &amp;quot;area&amp;quot; measurement (as shown above)&lt;br /&gt;
  * pixel_width, pixel_height and scale are per experiement values that can be defined via Experiment-&amp;gt;Edit experiment&lt;br /&gt;
&lt;br /&gt;
===== 5. Other (misc) commmands =====&lt;br /&gt;
&lt;br /&gt;
==== 5.1. Deleting (truncating) ROIs ====&lt;br /&gt;
&amp;quot;Trunc (after)&amp;quot; is a rarely used option for deleting the ROIs for (after) a selected frame.   &lt;br /&gt;
Warning: deleted ROIs cannot be recovered and you&#039;ll have to detect them again.&lt;br /&gt;
&lt;br /&gt;
==== 5.2. Collapse/Expand all ====&lt;br /&gt;
These commands are used to collapse or expand all nodes in the Frame/cell tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.3. Edit event ====&lt;br /&gt;
Using &amp;quot;Edit event&amp;quot; one can assign an arbitrary event at a certain frame (for instance, if the experiment conditions have changed, you may want to write that in the database).&lt;br /&gt;
The following dialog is shown:   &lt;br /&gt;
[[File:Event.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Abbreviation is used to display the event in the tree, and the full desc is displayed in the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
If you want to delete the event, just edit it, and leave everything blank and the event will be deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.4. Change cell state ====&lt;br /&gt;
With &amp;quot;Change bact state&amp;quot; command you can assign certain state (e.g. &amp;quot;Ignore&amp;quot;, &amp;quot;Death&amp;quot;) to the cell from some frame onward.   &lt;br /&gt;
[[File:Bstate.png|200px]]&lt;br /&gt;
New state is annotated in the tree and on the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
To delete the assigned state, just set the empty state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.5. Toggle ignore frame ====&lt;br /&gt;
With this command you can ignore (or un-ignore) the selected frame.&lt;br /&gt;
This is typically done when the frame if of a low quality (e.g. out of focus, unusable), but you want to keep it to keep the accurate timeline.&lt;br /&gt;
Cells on the ignored frame are not measured nor does the frame appear in the CSV dump.&lt;br /&gt;
When detecting cells on the frame F, the previous frame is considered to be the frame having maximal frame number f &amp;lt; F, such that it is not ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6. Analyis and Visualization =====&lt;br /&gt;
&lt;br /&gt;
==== 6.1. Lineage tree visualization ====&lt;br /&gt;
&lt;br /&gt;
BactImAs features the innovative lineage tree visualization that can map two, user selected, parameters to the cell division tree.&lt;br /&gt;
When you&#039;re done with measurements, choose Reports-&amp;gt;BTree from the main menu.   &lt;br /&gt;
The following dialog appears:  &lt;br /&gt;
&lt;br /&gt;
[[File:Btree_dialog.png|400px]]&lt;br /&gt;
&lt;br /&gt;
It is possible to assign any of the measured (and derived - built in) variables to the two visualization properties: branch width and color.&lt;br /&gt;
Dialog shows the area of the cell mapped to the branch width, and green_ctcf mapped to the branch color.   &lt;br /&gt;
Other than that, it is possible to assigne the following parameters:&lt;br /&gt;
  * seconds per frame - used for the time scale on the right, where t(frame_no) = (frame_no-1) * seconds_per_frame&lt;br /&gt;
  * min/max stroke width - min/max parameters on the branch color are scaled to min/max stroke width&lt;br /&gt;
  * font size&lt;br /&gt;
  * draw labels - whether to draw the cell labels &lt;br /&gt;
  * convert to hours - whether to convert time in seconds to format: HH:MM:SS&lt;br /&gt;
&lt;br /&gt;
BactImAs will draw a separate visualization for every cell present on the firt (non-igored) frame.&lt;br /&gt;
The following image shows a sample visualization from the demo database:&lt;br /&gt;
&lt;br /&gt;
[[File:Btree.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is our intention to include in the new version of BactImAs additional out-of-the-box statistics and visualization.&lt;br /&gt;
However, acknowledging that it will never be possible to cover all potential requirements, we&#039;ve enabled the following option:&lt;br /&gt;
&lt;br /&gt;
==== 6.2. Export data as CSV file ====&lt;br /&gt;
&lt;br /&gt;
With Reports-&amp;gt;Dump CSV one can export the experiment&#039;s data into a CSV file and proceed to analyze it in one&#039;s favorite data analysis tool.&lt;br /&gt;
&lt;br /&gt;
After you assign the file name, the following dialog appears:&lt;br /&gt;
&lt;br /&gt;
[[File:Dumpcsv.png|200px]]&lt;br /&gt;
&lt;br /&gt;
with all the available measurements for the experiment.&lt;br /&gt;
&lt;br /&gt;
==== 6.3. SQL Pane ====&lt;br /&gt;
&lt;br /&gt;
BactImAs stores all the data (except images) in the SqLite database.   &lt;br /&gt;
Database can be accessed using any of the SqLite client tools - there are many such tools freely available on the Internet.&lt;br /&gt;
It is also possible to access it using the simple built-in SQL Pane editor, which allows for arbitrary SQL statements (queries) to be executed and displayed in a table, and even exported as CSV.   &lt;br /&gt;
The following figure shows the SQL pane:   &lt;br /&gt;
&lt;br /&gt;
[[File:Sqlpane.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Of course, to use SQL pane one has to know the SQL programming language.&lt;br /&gt;
It is our intention, for the future releases of BactImAs, to build a library of predefined SQL queries, with adjoining descriptions in natural language, so that &lt;br /&gt;
a user that has no knowledge of SQL language can pick from the set the available predefined queries and retrieve results for his or hers experiment.&lt;br /&gt;
&lt;br /&gt;
===== 7. Backup, upgrade and data exchange =====&lt;br /&gt;
&lt;br /&gt;
==== 7.1. Backup ====&lt;br /&gt;
&lt;br /&gt;
To backup the data one should simply copy the &amp;quot;data&amp;quot; directory to a safe place, every once in a while.&lt;br /&gt;
&lt;br /&gt;
==== 7.2. Upgrade ====&lt;br /&gt;
&lt;br /&gt;
When upgrading BactImAs, it is best to:   &lt;br /&gt;
(a) extract new BactImAs version into a new folder   &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 7.3. Data exchange ====&lt;br /&gt;
&lt;br /&gt;
(see also the BactImAs structure in the User-&amp;gt;Installation)&lt;br /&gt;
To exchange data, it is necessary to exchange database and images folder (best zipped).&lt;br /&gt;
&lt;br /&gt;
[[File:Exchange.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Should person A want to send experiment data to person B, these are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
  * Person A sends the images folder (best zipped) to person B. Person B saves (extracts) them to person B&#039;s images folder. One could use cloud storage for this steps (eg Dropbox, GDrive) as images are too big for email.&lt;br /&gt;
  * Person A sends the BactImAs.s3db file (database) from dbs folder to person B. Person B potentially renames it (to avoid clashing with person B&#039;s database), saves it to the dbs folder, and adjust the URL in the conf/db.properties to point to this new database (see User-&amp;gt;Installation)  &lt;br /&gt;
&lt;br /&gt;
The second step can be repeated if there are new data measured in the database, while the first step needs to be done only once.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=33</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=User_manual&amp;diff=33"/>
		<updated>2023-07-18T10:54:08Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;====== BactImAs User Manual ======  ===== 1. BactImAs GUI =====                                                                                                                                           Image below shows the BactImAs GUI.   GUI consists of three main parts:    * R/G/B channel images, scrollable image panes showing every second frame of the experiment   * Frame/cell tree on the right showing all frames and cells/ROIs   * Status window showing messages from...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== BactImAs User Manual ======&lt;br /&gt;
&lt;br /&gt;
===== 1. BactImAs GUI =====                                                                                                                                          &lt;br /&gt;
Image below shows the BactImAs GUI. &lt;br /&gt;
&lt;br /&gt;
GUI consists of three main parts: &lt;br /&gt;
  * R/G/B channel images, scrollable image panes showing every second frame of the experiment&lt;br /&gt;
  * Frame/cell tree on the right showing all frames and cells/ROIs&lt;br /&gt;
  * Status window showing messages from the program (can be minified)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Bactrack_gui.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you chose (click) on a frame(on the tree or on the R/G/B channel image) a new image stack will appear showing that frame&#039;s images in all combinations: R, G, B, R+G, R+B, B+G, RGB, with annotated ROIs (you can turn off annotations using Roi Manager):  &lt;br /&gt;
&lt;br /&gt;
[[File:Frame.png|300px]]&lt;br /&gt;
&lt;br /&gt;
One can scroll to any of these and use it (typically) to assign ROIs using ImageJ polygon selection tool.&lt;br /&gt;
&lt;br /&gt;
Every GUI command/option is described in detail below (also, note the table of contents on the upper right side).&lt;br /&gt;
&lt;br /&gt;
===== 2. Experiment =====                                                                                                                                          &lt;br /&gt;
 &lt;br /&gt;
//**Note: please read the installation instructions first, especially the &amp;quot;BactImAs structure&amp;quot; part.**//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.1. Setup new experiment ====&lt;br /&gt;
                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
You must prepare, beforehand, three folders: red, green and blue (each containing image sequence of the appropriate channel).                                &lt;br /&gt;
Images must be 8-bit PNGs, and must be named unanimously (having the same name, and increasing number at the end), e.g.:                                                                                                                                                                                             &lt;br /&gt;
  *         phase_image_0000.png                                                                                                           &lt;br /&gt;
  *         phase_image_0001.png                                                                                                           &lt;br /&gt;
  *         phase_image_0002.png                                                                                                           &lt;br /&gt;
  *         ...         &lt;br /&gt;
                                                                                                                                           &lt;br /&gt;
Don&#039;t worry, ImageJ will do this for you (by deafault), if you say File-&amp;gt;Save As-&amp;gt;Image sequence.&lt;br /&gt;
Also, note that once you&#039;ve processed the movie (i.e. performed cell segmentations) you can measure on a whole different set of images (typically original TIFFs), as long as the ROIs (cell selections) hit the same spot.                                                           &lt;br /&gt;
These folders should not be moved afterwards (in this version) - the program will expect images to be at the same place when you (later) load the experiment.&lt;br /&gt;
Should you move them, you&#039;ll have to edit the experiment properties and set the new file locations.&lt;br /&gt;
In other words, images WILL NOT be saved to database, only the calculated/defined ROIs, measurements etc.                                                  &lt;br /&gt;
&lt;br /&gt;
Once the folders are prepared (note that these can be stored anywhere (local hardrive, external server... but it is highly recommended to keep them in the default location under data/images folder). Start BactImAs.jar and select Experiment-&amp;gt;New experiment.  &lt;br /&gt;
You will be asked to choose folders for each channel (“Red”, “Green” and “Blue”.  (the location you define in this step will be saved but can be changed later  if you decide to move the folders). Then you must give an unique name to your experiment. Next to this name, BactImAs  automatically assigns exp. id (e.g. id 1076) that can be later used in SQL queries. BactImAs will then load images in a few sec and you are ready to start the time-lapse movie processing. &lt;br /&gt;
&lt;br /&gt;
Optional: This is a good time to also define here some important experimental settings such as pixel size. However, you can also do it at any other time. &lt;br /&gt;
                                                                                                                                                               &lt;br /&gt;
==== 2.2. Load experiment ====&lt;br /&gt;
Use Experiment-&amp;gt;Load ( Alt+2) to load an experiment.&lt;br /&gt;
Pick an existing experiment and wait for the experiment to load.&lt;br /&gt;
If you don&#039;t see the images on the R/G/B channels, that probably means that you haven&#039;t set up the folders right (see above), or you received a database from someone else and need to point the R/G/B folders to new locations.&lt;br /&gt;
Either way:&lt;br /&gt;
==== 2.3. Edit experiment (settings) ====&lt;br /&gt;
Once you&#039;ve loaded the experiment you can change it&#039;s settings via Experiment-&amp;gt;Edit current experiment (Alt+4).   &lt;br /&gt;
You&#039;ll get a dialog like this one:&lt;br /&gt;
&lt;br /&gt;
[[File:Editexperiment.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The most common use case for changing the experiment settings is when someone sends you his or hers database and adjoining image files.   &lt;br /&gt;
Since they&#039;ve probably stored the in the different folder (than you), you&#039;ll have to change this folder paths in order for the images to load.&lt;br /&gt;
&lt;br /&gt;
==== 2.4. Delete experiment ====&lt;br /&gt;
To delete the experiment chose Experiment-&amp;gt;delete (Alt+3).  &lt;br /&gt;
This will not delete the image files on your disk, just the records in the database pertaining to that experiment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 3. Segmentation =====  &lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set up your experiment, given it a name, and set the images folders, you may proceed to actual cell segmentation.&lt;br /&gt;
&lt;br /&gt;
==== 3.1. Detecting translations (registering) ====&lt;br /&gt;
&lt;br /&gt;
It is common for have slight translations from one frame to another (eg due to sligt camera movements).  &lt;br /&gt;
It is very important to align or &amp;quot;register&amp;quot; such images, since the default built-in &amp;quot;Copy-and-Adjust&amp;quot; algorithm is very sensitive to such defects.  &lt;br /&gt;
You can use an external program to align/register images beforehand, all the better (e.g. http://bigwww.epfl.ch/thevenaz/stackreg/).&lt;br /&gt;
However, there is also a built-in algorithm for detection of translations, and if you haven&#039;t aligned the images externally, this is the first thing you must do in the segmentation process. &lt;br /&gt;
The built-in algorithm is suitable only for translations, so if you have rotations or some other kind of transformations, you&#039;ll have to adjust such images externally.&lt;br /&gt;
=== Built-in algorith ===&lt;br /&gt;
Select the first frame and then click &amp;quot;Detect trans&amp;quot; button below the cell tree on the right.&lt;br /&gt;
The program will ask you for a range (default = 20), this number specifies  the number of pixels the program will &#039;slide&#039; one image over the other (in every direction) in an attempt to align them. &lt;br /&gt;
Start with default = 20 (bigger number = slower), you can later detect translation for just one problematic frame if you need to (with the higher value than 20).&lt;br /&gt;
Translations will be saved to database and you will not have to do this again.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.2. Define initial cells =====&lt;br /&gt;
The built-in C&amp;amp;A algorithm tracks cells with regars to their position on the previous frame.   &lt;br /&gt;
This implies that you have to define the initial cells on the first frame, and start tracking from the second frame.   &lt;br /&gt;
To achieve that:&lt;br /&gt;
  * Open the first frame, and define bacteria. You click on the frame tree (right) and issue &amp;quot;Add&amp;quot; command to generate bacteria, &lt;br /&gt;
       and then you click on the bacterium and &amp;quot;Add&amp;quot; human ROIs (Regions Of Interest, i.e. selections) &lt;br /&gt;
Then you repeat the following (for each bacterium):&lt;br /&gt;
  * define ROI with ImageJ&#039;s polygon selection tool &lt;br /&gt;
  * click on the appropriate Human ROI node in the frame tree and issue &#039;Set Roi&#039; command.&lt;br /&gt;
    &lt;br /&gt;
==== 3.3. Segmentation and Tracking Algorithm ====&lt;br /&gt;
&lt;br /&gt;
Before describing the tracking via built-in algorithm, a quick note on the BactTrack modular structure.   &lt;br /&gt;
BactImAs is designed to be a &amp;quot;platform for the cell segmentation and tracking&amp;quot; and should, ideally, be able to handle any such task.&lt;br /&gt;
We recognize that there is no single algorithm suitable for all kinds of tracking tasks and have therefore enabled for various algorithms to be included in the BactImAs Platform and used for cell segmentation.&lt;br /&gt;
While algorithm design is more a task for the developers (please, see Devs documentation), the user, on the other hand, has the option to use any of the available algorithms. &lt;br /&gt;
Not only can different algorithms be used for different experiments, the user can assign different algorithms for different frames of the same experiment!   &lt;br /&gt;
Using the &amp;quot;Set Algorithm&amp;quot; command, a chosen algorithm can be assigned for any frame range.&lt;br /&gt;
If not assigned, the default built-in &amp;quot;Copy And Adjust&amp;quot; algorithm is used.&lt;br /&gt;
There is a &amp;quot;Fast Copy And Adjust&amp;quot; version of the algorithm available (not default) which differs from the default algorithm in the amount of information written to the log.&lt;br /&gt;
The &amp;quot;Fast Copy And Adjust&amp;quot; writes minimal information and is therefore faster, however cell segmentation results are identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.4. Segmentation and Tracking ====&lt;br /&gt;
    &lt;br /&gt;
Click on the frame (e.g. second frame) and issue &#039;Track&#039; command. Enter the number of frames to process (default = 5).   &lt;br /&gt;
Track will attempt to segment the cells on the assigned number of frames starting from the selected frame.  &lt;br /&gt;
Each cell/frame is segmented using that cell&#039;s ROI from the previous frame.   &lt;br /&gt;
Human ROIs always have precedence over computer ROIs, e.g. if there are both human and computer ROIs on the previous frame, the algorithm will use human ROI.   &lt;br /&gt;
&lt;br /&gt;
When you issue the &amp;quot;Track&amp;quot; command you&#039;ll have the option of changing certain algorithm parameters.&lt;br /&gt;
This is useful in situations when algorithm does not perform well.&lt;br /&gt;
&lt;br /&gt;
[[File:Ca_params.png|}}px]]&lt;br /&gt;
Parameters description:&lt;br /&gt;
  * &amp;quot;Ball radius&amp;quot; is a value in pixel that defines the size(radius) of the disk used to &amp;quot;draw&amp;quot; the cell. You may think of it as a radius of the tip of the broad ballpen used to draw the cell. In other words, this radius relates to the width of a cell - and you can measure that width W with ImageJ (or simply by zooming and counting the pixels yourself) and then assign the ball radius to just below the W/2. The default value is 4 which is appropriate for the cells of width 9, 10, 11...&lt;br /&gt;
  * &amp;quot;Channel&amp;quot; is simply the channel used for segmentation, or more precisely - images from the so labelled channels (folders) are used. Note that you can use e.g. blue channel for the first 10 frames, then green channel for the next five, then blue again, etc. In general, you want to use the channel on which the edge detection works best, you can try that for yourself using ImageJ or &amp;quot;Help decide&amp;quot; button below.&lt;br /&gt;
  * &amp;quot;Range&amp;quot; is a value in pixels relating to the possible elongation of the cells on their poles. If the algorithm doesn&#039;t catch up will cell growth on the poles, you may want to increase this number.&lt;br /&gt;
  * &amp;quot;Max ball delta perc&amp;quot; is given in percentages and defines the maximal additional area one disk can contribute when expanding the selection. If you find that the cells are erroneously growing to fast, &amp;quot;bubbling up&amp;quot; on the sides and poles, you may want to decrease this number.&lt;br /&gt;
  * &amp;quot;Threshold method&amp;quot; - the C&amp;amp;A algorithm relies heavily on the edge detection (and subsequent thresholding). If the algorithm performs badly, you may want to try changing the default method, you should choose the method that best outlines the cells (click &#039;Help decide&#039; to see the gallery of methods).&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set the parameters, the program will attempt to track the cells. You&#039;ll be able to see the segmentation as it happens and/or inspect it again using the &amp;quot;Reports&amp;quot; facilities:&lt;br /&gt;
&lt;br /&gt;
==== 3.5. Reports ====&lt;br /&gt;
There are two types of reports (and command buttons): &lt;br /&gt;
  * &amp;quot;Color report&amp;quot; is a report (ImageJ stack) on which every cell is drawn in a different color, while background is drawn in black.    Cell&#039;s offsprings will be drawn in the nuance of the parent-cell color, e.g. all descendant of the red cell will be drawn in nuances of red. Example: [[File:Segmentation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
  * &amp;quot;Report&amp;quot; is a report (ImageJ stack) on which cells ROIs are outlined over original images. There is also a color/BW version of this report (you&#039;re asked to chose on click). BW report uses less memory as each of the stack&#039;s image is BW and, of course, BW use less memory than color images.&lt;br /&gt;
    * BW - human ROIs are outlined with white, and computer ROIs with black&lt;br /&gt;
    * Color - human ROIs are outlined with green and computer ROIs with red, e.g.: [[File:Report_with_color_option.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.6. Cell divisions ====&lt;br /&gt;
&lt;br /&gt;
For the time being cell division recognition is not supported and cell divisions are assigned manually in the following way: &lt;br /&gt;
  - Open the frame where bacteriium (e.g. bacterium &#039;B&#039;) is splitting &lt;br /&gt;
  - Click on the bacterium &#039;B&#039; on the frame tree and issue &amp;quot;Split&amp;quot; command. &lt;br /&gt;
  - Program will replace this bacterium in the current frame with its two offsprings: &#039;BA&#039; and &#039;BB&#039;. They will both have the human ROIs defined (erroneously), you have to overwrite it: &lt;br /&gt;
    * Define ROIs with ImageJ&#039;s polygon selection tool for each offspring (and click &amp;quot;SetRoi&amp;quot; to save). &lt;br /&gt;
&lt;br /&gt;
Split move/delete - If you made an error and defined split on the wrong frame, you can move the split up/down N frames, or even delete it all together.&lt;br /&gt;
To move the split you have to select one of the children in the split frame, and click on the &amp;quot;Move/del split&amp;quot;.  &lt;br /&gt;
E.g. let&#039;s say there is a split on the frame 10: A = AA + AB. QQ&lt;br /&gt;
Click on either AA or AB and then click &#039;Move/del split&#039;.  &lt;br /&gt;
The procedure is also thoroughly explained (in the program) when you click the &amp;quot;Move/del split&amp;quot; (and you have a chance to cancel if you change you mind).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 4. Measuring =====&lt;br /&gt;
&lt;br /&gt;
Once cells are segmented, various measurements are acquired in a fully automated way.  &lt;br /&gt;
BactImAs separates these two processes which has a nice side-effect that, for instance, cell segmentation and tracking can be outsourced or performed by a different person than a person taking measurements.&lt;br /&gt;
Using BactImAs&#039;s (color) reports (described above), it is easy to visually inspect the quality of the segmentation process.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4.1. Background correction ====&lt;br /&gt;
&lt;br /&gt;
Command &amp;quot;Set/msr bg (R+G+B)&amp;quot; is used to measure (store in the database) the background intensities of the red, green and blue channel images. These are used to compute the background corrected values afterwards.&lt;br /&gt;
After you click on this command an ImageJ stack will appear with all the frames of the experiment:   &lt;br /&gt;
[[File:Measure_bg.png|200px]]&lt;br /&gt;
Using this stack, user has to assign the (rectangular) background area (subarea of the whole image), typically the are of the image that never holds any of the cells.&lt;br /&gt;
As with other measures, one can chose whether to measure on the original tif images (recommmended) or the png images used for tracking and segmentation.&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
&lt;br /&gt;
==== 4.2. Cell measurements ====&lt;br /&gt;
Cells are measured using the &amp;quot;Measure&amp;quot; command. User can chose to take any or all available ImageJ measures on the assigned channel (r,g,b).&lt;br /&gt;
If you want to measure the same attribute on the different channels (e.g. mean on red and green channel) you have to measure twice: first on green and then on red channel (or vice versa).&lt;br /&gt;
When saving measurements in the database BactImAs behaves in the following way:  &lt;br /&gt;
(a) if the same measurement on the same channel already exists - it is overwritten   &lt;br /&gt;
(b) otherwise, measurement is saved (added to the already existing measurements)   &lt;br /&gt;
So, in our example, green mean will be saved according to the (b) principle, and red mean also.&lt;br /&gt;
Should you measure the green mean again, the initial green mean would be overwritten in accordance with (a).   &lt;br /&gt;
&lt;br /&gt;
Upon clicking on the &amp;quot;Measure&amp;quot;, a user is presented with following dialog:   &lt;br /&gt;
[[File:Measure.png|200px]]&lt;br /&gt;
&lt;br /&gt;
In the example above, the following will be measured:&lt;br /&gt;
  * Area on the red channel (though channel is irrelevant for area measure)&lt;br /&gt;
  * Mean on the green channel&lt;br /&gt;
  * IntDen on the red channel with **collar** of one pixel. **Collar** is the width of the outer rim belt you want to ignore (e.g. if you want to exclude the cell&#039;s membranes)&lt;br /&gt;
&lt;br /&gt;
Typically, you want to measure area and mean on all channels.&lt;br /&gt;
&lt;br /&gt;
Status window displays the progress and acquired measures.&lt;br /&gt;
You can repeat the measuring process arbitrary number of times, or measure (repeat for) just a assigned number of frames, etc.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides a number of additional, derived measures, defined as follows:&lt;br /&gt;
(note that you must first measure area, mean on all channels and background fluorescences on all channels for these measures to be available):&lt;br /&gt;
&lt;br /&gt;
^Name   ^Description    ^Is numerical (= can be mapped to the lin. tree) ^&lt;br /&gt;
|generation                 |Stage of descent from a common ancestor | |&lt;br /&gt;
|parent                     |Ancestor cell of a specific bacteria    | |&lt;br /&gt;
|sibling                    |Sibling cell of a specific bacteria     | |&lt;br /&gt;
|progeny_a                  |Specific progeny of a bacteria          | |&lt;br /&gt;
|progeny_b                  |Specific progeny of the bacteria        | |&lt;br /&gt;
|birth_time                 |Frame proceeding the division event     |yes|&lt;br /&gt;
|division_time              |Frame previous to the division event    |yes|&lt;br /&gt;
|interdivision_time         |=Division_time-Birth_ time              |yes|&lt;br /&gt;
|growth_rate                |=(Area at division_time/Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|growth_velocity            |=(Area at division_time-Area at birth_time)/interdivision time |yes|&lt;br /&gt;
|area_square_microns        |=Measured area* (pixel_width*pixel_height)/scale*scale  |yes|&lt;br /&gt;
|area_square_microns_growth |=(area_square_microns(n)-area_square_microns(n+1))/time |yes|&lt;br /&gt;
|red_mean_bg_cor            |=Red_mean-red_bg       |yes|&lt;br /&gt;
|green_mean_bg_cor          |=Green_mean-green_bg   |yes|&lt;br /&gt;
|blue_mean_bg_cor           |=Blue_mean-blue_bg     |yes|&lt;br /&gt;
|red_ctcf                   |=red_mean_bg_cor*area_square_microns   |yes|&lt;br /&gt;
|green_ctcf                 |=green_mean_bg_cor*area_square_microns |yes|&lt;br /&gt;
|blue_ctcf                  |=blue_mean_bg_cor*area_square_microns  |yes|&lt;br /&gt;
|red_mean_bg_cor_change     |=(red_mean_bg_cor (n)-red_mean_bg_cor (n+1))/time      |yes|&lt;br /&gt;
|green_mean_bg_cor_change   |=(green_mean_bg_cor(n)-green_mean_bg_cor(n+1))/time    |yes|&lt;br /&gt;
|blue_mean_bg_cor_change    |=(blue_mean_bg_cor (n)-blue_mean_bg_cor (n+1))/time)   |yes|&lt;br /&gt;
|red_ctcf_change            |=(red_ctcf(n)-red_ctcf(n+1))/time      |yes|&lt;br /&gt;
|green_ctcf_change          |=(green_ctcf(n)-green_ctcf(n+1)/time   |yes|&lt;br /&gt;
|blue_ctcf_change           |=(blue_ctcf(n)-blue_ctcg(n+1))/time    |yes|&lt;br /&gt;
&lt;br /&gt;
Also, note the **&amp;quot;area_square_microns&amp;quot;** measure above, that stands for cell area in square microns of course.   &lt;br /&gt;
It is defined as: **Measured area * (pixel_width*pixel_height)/scale*scale** where:&lt;br /&gt;
  * Measured area is measured using ImageJ&#039;s &amp;quot;area&amp;quot; measurement (as shown above)&lt;br /&gt;
  * pixel_width, pixel_height and scale are per experiement values that can be defined via Experiment-&amp;gt;Edit experiment&lt;br /&gt;
&lt;br /&gt;
===== 5. Other (misc) commmands =====&lt;br /&gt;
&lt;br /&gt;
==== 5.1. Deleting (truncating) ROIs ====&lt;br /&gt;
&amp;quot;Trunc (after)&amp;quot; is a rarely used option for deleting the ROIs for (after) a selected frame.   &lt;br /&gt;
Warning: deleted ROIs cannot be recovered and you&#039;ll have to detect them again.&lt;br /&gt;
&lt;br /&gt;
==== 5.2. Collapse/Expand all ====&lt;br /&gt;
These commands are used to collapse or expand all nodes in the Frame/cell tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.3. Edit event ====&lt;br /&gt;
Using &amp;quot;Edit event&amp;quot; one can assign an arbitrary event at a certain frame (for instance, if the experiment conditions have changed, you may want to write that in the database).&lt;br /&gt;
The following dialog is shown:   &lt;br /&gt;
[[File:Event.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Abbreviation is used to display the event in the tree, and the full desc is displayed in the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
If you want to delete the event, just edit it, and leave everything blank and the event will be deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.4. Change cell state ====&lt;br /&gt;
With &amp;quot;Change bact state&amp;quot; command you can assign certain state (e.g. &amp;quot;Ignore&amp;quot;, &amp;quot;Death&amp;quot;) to the cell from some frame onward.   &lt;br /&gt;
[[File:Bstate.png|200px]]&lt;br /&gt;
New state is annotated in the tree and on the lineage tree visualization.&lt;br /&gt;
&lt;br /&gt;
To delete the assigned state, just set the empty state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5.5. Toggle ignore frame ====&lt;br /&gt;
With this command you can ignore (or un-ignore) the selected frame.&lt;br /&gt;
This is typically done when the frame if of a low quality (e.g. out of focus, unusable), but you want to keep it to keep the accurate timeline.&lt;br /&gt;
Cells on the ignored frame are not measured nor does the frame appear in the CSV dump.&lt;br /&gt;
When detecting cells on the frame F, the previous frame is considered to be the frame having maximal frame number f &amp;lt; F, such that it is not ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6. Analyis and Visualization =====&lt;br /&gt;
&lt;br /&gt;
==== 6.1. Lineage tree visualization ====&lt;br /&gt;
&lt;br /&gt;
BactImAs features the innovative lineage tree visualization that can map two, user selected, parameters to the cell division tree.&lt;br /&gt;
When you&#039;re done with measurements, choose Reports-&amp;gt;BTree from the main menu.   &lt;br /&gt;
The following dialog appears:  &lt;br /&gt;
&lt;br /&gt;
[[File:Btree_dialog.png|200px]]&lt;br /&gt;
&lt;br /&gt;
It is possible to assign any of the measured (and derived - built in) variables to the two visualization properties: branch width and color.&lt;br /&gt;
Dialog shows the area of the cell mapped to the branch width, and green_ctcf mapped to the branch color.   &lt;br /&gt;
Other than that, it is possible to assigne the following parameters:&lt;br /&gt;
  * seconds per frame - used for the time scale on the right, where t(frame_no) = (frame_no-1) * seconds_per_frame&lt;br /&gt;
  * min/max stroke width - min/max parameters on the branch color are scaled to min/max stroke width&lt;br /&gt;
  * font size&lt;br /&gt;
  * draw labels - whether to draw the cell labels &lt;br /&gt;
  * convert to hours - whether to convert time in seconds to format: HH:MM:SS&lt;br /&gt;
&lt;br /&gt;
BactImAs will draw a separate visualization for every cell present on the firt (non-igored) frame.&lt;br /&gt;
The following image shows a sample visualization from the demo database:&lt;br /&gt;
&lt;br /&gt;
[[File:Btree.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is our intention to include in the new version of BactImAs additional out-of-the-box statistics and visualization.&lt;br /&gt;
However, acknowledging that it will never be possible to cover all potential requirements, we&#039;ve enabled the following option:&lt;br /&gt;
&lt;br /&gt;
==== 6.2. Export data as CSV file ====&lt;br /&gt;
&lt;br /&gt;
With Reports-&amp;gt;Dump CSV one can export the experiment&#039;s data into a CSV file and proceed to analyze it in one&#039;s favorite data analysis tool.&lt;br /&gt;
&lt;br /&gt;
After you assign the file name, the following dialog appears:&lt;br /&gt;
&lt;br /&gt;
[[File:Dumpcsv.png|200px]]&lt;br /&gt;
&lt;br /&gt;
with all the available measurements for the experiment.&lt;br /&gt;
&lt;br /&gt;
==== 6.3. SQL Pane ====&lt;br /&gt;
&lt;br /&gt;
BactImAs stores all the data (except images) in the SqLite database.   &lt;br /&gt;
Database can be accessed using any of the SqLite client tools - there are many such tools freely available on the Internet.&lt;br /&gt;
It is also possible to access it using the simple built-in SQL Pane editor, which allows for arbitrary SQL statements (queries) to be executed and displayed in a table, and even exported as CSV.   &lt;br /&gt;
The following figure shows the SQL pane:   &lt;br /&gt;
&lt;br /&gt;
[[File:Sqlpane.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Of course, to use SQL pane one has to know the SQL programming language.&lt;br /&gt;
It is our intention, for the future releases of BactImAs, to build a library of predefined SQL queries, with adjoining descriptions in natural language, so that &lt;br /&gt;
a user that has no knowledge of SQL language can pick from the set the available predefined queries and retrieve results for his or hers experiment.&lt;br /&gt;
&lt;br /&gt;
===== 7. Backup, upgrade and data exchange =====&lt;br /&gt;
&lt;br /&gt;
==== 7.1. Backup ====&lt;br /&gt;
&lt;br /&gt;
To backup the data one should simply copy the &amp;quot;data&amp;quot; directory to a safe place, every once in a while.&lt;br /&gt;
&lt;br /&gt;
==== 7.2. Upgrade ====&lt;br /&gt;
&lt;br /&gt;
When upgrading BactImAs, it is best to:   &lt;br /&gt;
(a) extract new BactImAs version into a new folder   &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 7.3. Data exchange ====&lt;br /&gt;
&lt;br /&gt;
(see also the BactImAs structure in the User-&amp;gt;Installation)&lt;br /&gt;
To exchange data, it is necessary to exchange database and images folder (best zipped).&lt;br /&gt;
&lt;br /&gt;
[[File:Exchange.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Should person A want to send experiment data to person B, these are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
  * Person A sends the images folder (best zipped) to person B. Person B saves (extracts) them to person B&#039;s images folder. One could use cloud storage for this steps (eg Dropbox, GDrive) as images are too big for email.&lt;br /&gt;
  * Person A sends the BactImAs.s3db file (database) from dbs folder to person B. Person B potentially renames it (to avoid clashing with person B&#039;s database), saves it to the dbs folder, and adjust the URL in the conf/db.properties to point to this new database (see User-&amp;gt;Installation)  &lt;br /&gt;
&lt;br /&gt;
The second step can be repeated if there are new data measured in the database, while the first step needs to be done only once.&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=32</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=32"/>
		<updated>2023-07-18T10:52:01Z</updated>

		<summary type="html">&lt;p&gt;Igor: /* Release 0.7.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== BactImAs Installation Guide =====&lt;br /&gt;
&lt;br /&gt;
==== 1. BactImAs releases (download) ====&lt;br /&gt;
&lt;br /&gt;
=== Release 0.7.1 ===&lt;br /&gt;
&lt;br /&gt;
  * Binaries (ready to run) &lt;br /&gt;
    * [https://homer.zpr.fer.hr/BactImAs_releases/071/BactImAs071.zip BactImAs(6 MB)] &lt;br /&gt;
  * Source code (for the developers)&lt;br /&gt;
    * Hosted at Github: [https://github.com/mekterovic/bactimas https://github.com/mekterovic/bactimas]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Installation ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is a multi-platform application written in Java which uses sqlite database.&lt;br /&gt;
It can run (at least) on:&lt;br /&gt;
  * Mac&lt;br /&gt;
  * Linux&lt;br /&gt;
  * Ms Windows&lt;br /&gt;
&lt;br /&gt;
However, you should first install (if you don&#039;t already have it):&lt;br /&gt;
  * Java (1.7+) [[http://docs.oracle.com/javase/7/docs/webnotes/install/|Download]]&lt;br /&gt;
  * SqLite [[http://www.sqlite.org/download.html|Download]], [[http://www.tutorialspoint.com/sqlite/sqlite_installation.htm|Install guide]]&lt;br /&gt;
both of them being easy to install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BactImAs is distributed in two ways:&lt;br /&gt;
  - as an [[http://icy.bioimageanalysis.org/|Icy]] **plugin**&lt;br /&gt;
  - **stand-alone** version&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using the plugin, then you can easily install BactImAs via the Icy plugin infrastructure (and Icy will make sure you always have an up-to-date version).&lt;br /&gt;
&lt;br /&gt;
If you want the standalone version, then the installation boils down to downloading and extracting a zip file.&lt;br /&gt;
Once you&#039;ve extracted BactImAs.zip into a folder of your choice, you start the app by:&lt;br /&gt;
&lt;br /&gt;
(a) double clicking on the bactimas.jar &lt;br /&gt;
or, from console,using the following statement (from the BactImAs folder):&lt;br /&gt;
  (b) java -jar bactimas.jar &lt;br /&gt;
  or&lt;br /&gt;
  (c) java -jar -Xmx500m bactimas.jar                        (to give it e.g. 500MB of memory, depends on your configuration) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In both cases, upon start, BactImAs will detect that you don&#039;t have the data and conf folders and will offer to set them up.&lt;br /&gt;
You should agree and subsequently choose whether you want to download the demo database (~180MB).&lt;br /&gt;
You can also download the demo database later, either through the same process or manually.&lt;br /&gt;
&lt;br /&gt;
==== 3. BactImAs structure ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is structured as follows:&lt;br /&gt;
&lt;br /&gt;
  (bactimas folder)&lt;br /&gt;
  |&lt;br /&gt;
  |- bactimas.jar      (main file, double click it to run BactImAs, or start it from the console with: java -jar BactImAs.jar)&lt;br /&gt;
  |- IJ_Prefs.txt      (IJ prefs file) - only in standalone version&lt;br /&gt;
  |- ImageJ.cfg        (IJ config file - used on Windows OS to control and save how much memory will ImageJ get, open it with any text editor and check) - only in standalone version&lt;br /&gt;
  |- logs              (logs folder, used for troubleshooting)&lt;br /&gt;
  |- lib               (folder with additional library files)&lt;br /&gt;
  |- conf              (folder with configuration files, here you specify the database and additional algorithms)&lt;br /&gt;
  |- data              (IMPORTANT: folder holding your data: database and image files. &lt;br /&gt;
      |- images                    You should backup this folder periodically. )&lt;br /&gt;
      |- dbs&lt;br /&gt;
&lt;br /&gt;
==== 4. Architecture ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is designed to run in a single-user mode, meaning that the program is self-sufficient and does not require internet connection to work.&lt;br /&gt;
This is achieved by keeping the program and data (database and images) locally:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This doesn&#039;t mean that you cannot share your data with someone else. It is possible to have multiple databases on your machine (but work with only one at the time), e.g.:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Merging databases is not yet supported, but it will probably be supported in the future.&lt;br /&gt;
&lt;br /&gt;
BactImAs could also be configured to run in an Intranet environment, where all users would save the data into the same database (but then it would be better to swap SQLite for some other database, e.g. MySql, PostgreSQL, etc.) maintained by the DB Administrator, e.g.:&lt;br /&gt;
&lt;br /&gt;
[[File:Arch3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5. Version upgrade ====&lt;br /&gt;
To upgrade, download the latest version and: &lt;br /&gt;
(a) extract new BactImAs version into a new folder &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder. &lt;br /&gt;
&lt;br /&gt;
==== 6. Troubleshooting: ====&lt;br /&gt;
&lt;br /&gt;
=== BactImAs will not start ===&lt;br /&gt;
Check which version of Java you have installed because BactImAs runs on Java 7 or higher. &lt;br /&gt;
  * In Mac OS: Go to system preferences. In the folder “Other” doubleclick on Java icon and a new window will appear where you can click “About” to check which Java version you have installed.&lt;br /&gt;
  * In Windows, Linux, Mac:  start the console (win_key+R, then type &amp;quot;cmd&amp;quot;) and type &amp;quot;java -version&amp;quot; in the console to find your java version&lt;br /&gt;
&lt;br /&gt;
=== There are no available experiments to load ===&lt;br /&gt;
If you haven&#039;t installed the empty version (in which case this is fine) then it is probably a path issue.&lt;br /&gt;
Check whether the URL in the conf/db.properties points to the existing file.&lt;br /&gt;
Make sure the database path is correct and you used the correct delimiter (there can be differences between OS: slash vs backslash).&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=31</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=31"/>
		<updated>2023-07-18T10:51:34Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== BactImAs Installation Guide =====&lt;br /&gt;
&lt;br /&gt;
==== 1. BactImAs releases (download) ====&lt;br /&gt;
&lt;br /&gt;
=== Release 0.7.1 ===&lt;br /&gt;
&lt;br /&gt;
  * Binaries (ready to run) &lt;br /&gt;
    * [https://homer.zpr.fer.hr/BactImAs_releases/071/BactImAs071.zip BactImAs(6 MB)] &lt;br /&gt;
  * Source code (for the developers)&lt;br /&gt;
    * Hosted at Github: [https://github.com/mekterovic/bactimas|https://github.com/mekterovic/bactimas]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Installation ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is a multi-platform application written in Java which uses sqlite database.&lt;br /&gt;
It can run (at least) on:&lt;br /&gt;
  * Mac&lt;br /&gt;
  * Linux&lt;br /&gt;
  * Ms Windows&lt;br /&gt;
&lt;br /&gt;
However, you should first install (if you don&#039;t already have it):&lt;br /&gt;
  * Java (1.7+) [[http://docs.oracle.com/javase/7/docs/webnotes/install/|Download]]&lt;br /&gt;
  * SqLite [[http://www.sqlite.org/download.html|Download]], [[http://www.tutorialspoint.com/sqlite/sqlite_installation.htm|Install guide]]&lt;br /&gt;
both of them being easy to install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BactImAs is distributed in two ways:&lt;br /&gt;
  - as an [[http://icy.bioimageanalysis.org/|Icy]] **plugin**&lt;br /&gt;
  - **stand-alone** version&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using the plugin, then you can easily install BactImAs via the Icy plugin infrastructure (and Icy will make sure you always have an up-to-date version).&lt;br /&gt;
&lt;br /&gt;
If you want the standalone version, then the installation boils down to downloading and extracting a zip file.&lt;br /&gt;
Once you&#039;ve extracted BactImAs.zip into a folder of your choice, you start the app by:&lt;br /&gt;
&lt;br /&gt;
(a) double clicking on the bactimas.jar &lt;br /&gt;
or, from console,using the following statement (from the BactImAs folder):&lt;br /&gt;
  (b) java -jar bactimas.jar &lt;br /&gt;
  or&lt;br /&gt;
  (c) java -jar -Xmx500m bactimas.jar                        (to give it e.g. 500MB of memory, depends on your configuration) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In both cases, upon start, BactImAs will detect that you don&#039;t have the data and conf folders and will offer to set them up.&lt;br /&gt;
You should agree and subsequently choose whether you want to download the demo database (~180MB).&lt;br /&gt;
You can also download the demo database later, either through the same process or manually.&lt;br /&gt;
&lt;br /&gt;
==== 3. BactImAs structure ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is structured as follows:&lt;br /&gt;
&lt;br /&gt;
  (bactimas folder)&lt;br /&gt;
  |&lt;br /&gt;
  |- bactimas.jar      (main file, double click it to run BactImAs, or start it from the console with: java -jar BactImAs.jar)&lt;br /&gt;
  |- IJ_Prefs.txt      (IJ prefs file) - only in standalone version&lt;br /&gt;
  |- ImageJ.cfg        (IJ config file - used on Windows OS to control and save how much memory will ImageJ get, open it with any text editor and check) - only in standalone version&lt;br /&gt;
  |- logs              (logs folder, used for troubleshooting)&lt;br /&gt;
  |- lib               (folder with additional library files)&lt;br /&gt;
  |- conf              (folder with configuration files, here you specify the database and additional algorithms)&lt;br /&gt;
  |- data              (IMPORTANT: folder holding your data: database and image files. &lt;br /&gt;
      |- images                    You should backup this folder periodically. )&lt;br /&gt;
      |- dbs&lt;br /&gt;
&lt;br /&gt;
==== 4. Architecture ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is designed to run in a single-user mode, meaning that the program is self-sufficient and does not require internet connection to work.&lt;br /&gt;
This is achieved by keeping the program and data (database and images) locally:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This doesn&#039;t mean that you cannot share your data with someone else. It is possible to have multiple databases on your machine (but work with only one at the time), e.g.:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Merging databases is not yet supported, but it will probably be supported in the future.&lt;br /&gt;
&lt;br /&gt;
BactImAs could also be configured to run in an Intranet environment, where all users would save the data into the same database (but then it would be better to swap SQLite for some other database, e.g. MySql, PostgreSQL, etc.) maintained by the DB Administrator, e.g.:&lt;br /&gt;
&lt;br /&gt;
[[File:Arch3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5. Version upgrade ====&lt;br /&gt;
To upgrade, download the latest version and: &lt;br /&gt;
(a) extract new BactImAs version into a new folder &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder. &lt;br /&gt;
&lt;br /&gt;
==== 6. Troubleshooting: ====&lt;br /&gt;
&lt;br /&gt;
=== BactImAs will not start ===&lt;br /&gt;
Check which version of Java you have installed because BactImAs runs on Java 7 or higher. &lt;br /&gt;
  * In Mac OS: Go to system preferences. In the folder “Other” doubleclick on Java icon and a new window will appear where you can click “About” to check which Java version you have installed.&lt;br /&gt;
  * In Windows, Linux, Mac:  start the console (win_key+R, then type &amp;quot;cmd&amp;quot;) and type &amp;quot;java -version&amp;quot; in the console to find your java version&lt;br /&gt;
&lt;br /&gt;
=== There are no available experiments to load ===&lt;br /&gt;
If you haven&#039;t installed the empty version (in which case this is fine) then it is probably a path issue.&lt;br /&gt;
Check whether the URL in the conf/db.properties points to the existing file.&lt;br /&gt;
Make sure the database path is correct and you used the correct delimiter (there can be differences between OS: slash vs backslash).&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=30</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Installation&amp;diff=30"/>
		<updated>2023-07-18T10:50:47Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot;===== BactImAs Installation Guide =====  ==== 1. BactImAs releases (download) ====  === Release 0.7.1 ===    * Binaries (ready to run)      * BactImAs(6 MB)    * Source code (for the developers)     * Hosted at Github: https://github.com/mekterovic/bactimas   ==== 2. Installation ====  BactImAs is a multi-platform application written in Java which uses sqlite dat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== BactImAs Installation Guide =====&lt;br /&gt;
&lt;br /&gt;
==== 1. BactImAs releases (download) ====&lt;br /&gt;
&lt;br /&gt;
=== Release 0.7.1 ===&lt;br /&gt;
&lt;br /&gt;
  * Binaries (ready to run) &lt;br /&gt;
    * [[https://homer.zpr.fer.hr/BactImAs_releases/071/BactImAs071.zip|BactImAs(6 MB)]] &lt;br /&gt;
  * Source code (for the developers)&lt;br /&gt;
    * Hosted at Github: [[https://github.com/mekterovic/bactimas|https://github.com/mekterovic/bactimas]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Installation ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is a multi-platform application written in Java which uses sqlite database.&lt;br /&gt;
It can run (at least) on:&lt;br /&gt;
  * Mac&lt;br /&gt;
  * Linux&lt;br /&gt;
  * Ms Windows&lt;br /&gt;
&lt;br /&gt;
However, you should first install (if you don&#039;t already have it):&lt;br /&gt;
  * Java (1.7+) [[http://docs.oracle.com/javase/7/docs/webnotes/install/|Download]]&lt;br /&gt;
  * SqLite [[http://www.sqlite.org/download.html|Download]], [[http://www.tutorialspoint.com/sqlite/sqlite_installation.htm|Install guide]]&lt;br /&gt;
both of them being easy to install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BactImAs is distributed in two ways:&lt;br /&gt;
  - as an [[http://icy.bioimageanalysis.org/|Icy]] **plugin**&lt;br /&gt;
  - **stand-alone** version&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using the plugin, then you can easily install BactImAs via the Icy plugin infrastructure (and Icy will make sure you always have an up-to-date version).&lt;br /&gt;
&lt;br /&gt;
If you want the standalone version, then the installation boils down to downloading and extracting a zip file.&lt;br /&gt;
Once you&#039;ve extracted BactImAs.zip into a folder of your choice, you start the app by:&lt;br /&gt;
&lt;br /&gt;
(a) double clicking on the bactimas.jar &lt;br /&gt;
or, from console,using the following statement (from the BactImAs folder):&lt;br /&gt;
  (b) java -jar bactimas.jar &lt;br /&gt;
  or&lt;br /&gt;
  (c) java -jar -Xmx500m bactimas.jar                        (to give it e.g. 500MB of memory, depends on your configuration) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In both cases, upon start, BactImAs will detect that you don&#039;t have the data and conf folders and will offer to set them up.&lt;br /&gt;
You should agree and subsequently choose whether you want to download the demo database (~180MB).&lt;br /&gt;
You can also download the demo database later, either through the same process or manually.&lt;br /&gt;
&lt;br /&gt;
==== 3. BactImAs structure ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is structured as follows:&lt;br /&gt;
&lt;br /&gt;
  (bactimas folder)&lt;br /&gt;
  |&lt;br /&gt;
  |- bactimas.jar      (main file, double click it to run BactImAs, or start it from the console with: java -jar BactImAs.jar)&lt;br /&gt;
  |- IJ_Prefs.txt      (IJ prefs file) - only in standalone version&lt;br /&gt;
  |- ImageJ.cfg        (IJ config file - used on Windows OS to control and save how much memory will ImageJ get, open it with any text editor and check) - only in standalone version&lt;br /&gt;
  |- logs              (logs folder, used for troubleshooting)&lt;br /&gt;
  |- lib               (folder with additional library files)&lt;br /&gt;
  |- conf              (folder with configuration files, here you specify the database and additional algorithms)&lt;br /&gt;
  |- data              (IMPORTANT: folder holding your data: database and image files. &lt;br /&gt;
      |- images                    You should backup this folder periodically. )&lt;br /&gt;
      |- dbs&lt;br /&gt;
&lt;br /&gt;
==== 4. Architecture ====&lt;br /&gt;
&lt;br /&gt;
BactImAs is designed to run in a single-user mode, meaning that the program is self-sufficient and does not require internet connection to work.&lt;br /&gt;
This is achieved by keeping the program and data (database and images) locally:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This doesn&#039;t mean that you cannot share your data with someone else. It is possible to have multiple databases on your machine (but work with only one at the time), e.g.:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Arch2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Merging databases is not yet supported, but it will probably be supported in the future.&lt;br /&gt;
&lt;br /&gt;
BactImAs could also be configured to run in an Intranet environment, where all users would save the data into the same database (but then it would be better to swap SQLite for some other database, e.g. MySql, PostgreSQL, etc.) maintained by the DB Administrator, e.g.:&lt;br /&gt;
&lt;br /&gt;
[[File:Arch3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 5. Version upgrade ====&lt;br /&gt;
To upgrade, download the latest version and: &lt;br /&gt;
(a) extract new BactImAs version into a new folder &lt;br /&gt;
(b) copy the old version&#039;s data folder over(write) the new version&#039;s data folder. &lt;br /&gt;
&lt;br /&gt;
==== 6. Troubleshooting: ====&lt;br /&gt;
&lt;br /&gt;
=== BactImAs will not start ===&lt;br /&gt;
Check which version of Java you have installed because BactImAs runs on Java 7 or higher. &lt;br /&gt;
  * In Mac OS: Go to system preferences. In the folder “Other” doubleclick on Java icon and a new window will appear where you can click “About” to check which Java version you have installed.&lt;br /&gt;
  * In Windows, Linux, Mac:  start the console (win_key+R, then type &amp;quot;cmd&amp;quot;) and type &amp;quot;java -version&amp;quot; in the console to find your java version&lt;br /&gt;
&lt;br /&gt;
=== There are no available experiments to load ===&lt;br /&gt;
If you haven&#039;t installed the empty version (in which case this is fine) then it is probably a path issue.&lt;br /&gt;
Check whether the URL in the conf/db.properties points to the existing file.&lt;br /&gt;
Make sure the database path is correct and you used the correct delimiter (there can be differences between OS: slash vs backslash).&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=29</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=29"/>
		<updated>2023-07-18T10:48:50Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
* Users&lt;br /&gt;
** Installation|Installation&lt;br /&gt;
** User manual|User manual&lt;br /&gt;
** Video tutorial|Video tutorial&lt;br /&gt;
* Developers&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=28</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=28"/>
		<updated>2023-07-18T10:48:01Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Users|Users&lt;br /&gt;
*** Installation|Installation&lt;br /&gt;
*** User manual|User manual&lt;br /&gt;
*** Video tutorial|Video tutorial&lt;br /&gt;
** Developers&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=27</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=MediaWiki:Sidebar&amp;diff=27"/>
		<updated>2023-07-18T10:47:33Z</updated>

		<summary type="html">&lt;p&gt;Igor: Created page with &amp;quot; * navigation ** mainpage|mainpage-description ** Users *** Installation|Installation *** User manual|User manual *** Video tutorial|Video tutorial ** Developers&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Users&lt;br /&gt;
*** Installation|Installation&lt;br /&gt;
*** User manual|User manual&lt;br /&gt;
*** Video tutorial|Video tutorial&lt;br /&gt;
** Developers&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=26</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=26"/>
		<updated>2023-07-18T10:42:10Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to BactImAs Wiki pages ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BactImAs is an open-source multi platform java application&#039;&#039;&#039; intended to assist the researcher in tracking various organisms in sequences of images and obtaining and visualizing their quantitative data.  &lt;br /&gt;
&lt;br /&gt;
Bactimas paper is published here: [[http://dx.doi.org/10.1186/1471-2105-15-251|DOI:10.1186/1471-2105-15-251]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motivation:&#039;&#039;&#039;&lt;br /&gt;
A common task in today’s synthetic and systems biology studies is the analysis of various features of organisms using movies obtained through time-lapse microscopy. \\&lt;br /&gt;
This process consists of identifying organisms on a large number of images and measuring their features whilst keeping track of their lineage which is **a very cumbersome and error prone task** for the researcher.  &lt;br /&gt;
To facilitate the analysis, various mostly automated tools and algorithms were developed in recent years but all of them targeting rather specific organisms and/or laboratory setups, since a general purpose automated solution to this detection problem is extremely hard if not impossible. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039;&lt;br /&gt;
We&#039;ve designed BactImAs as a &amp;quot;platform&amp;quot;, that is as a collection of somewhat independent well defined modules working together. Such setup facilitates maintenance, customization and upgrades.&lt;br /&gt;
This property is particularly useful for the tracking algorithms - in BactImAs it is possible to include &#039;&#039;&#039;multiple tracking algorithms&#039;&#039;&#039; (&amp;quot;best-of-breed approach&amp;quot;) and thus use the best fitted algoritm for the problem at hand.  \\&lt;br /&gt;
It is even possible to mix-and-match algorithms in a way to segment one part of the movie with algorithm A and the other part with algorithm B.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
BactImAs uses a semi-automated approach: it relies on the user to define the initial cells and all cell divisions. Other than that, the application tracks cells using a our newly developed algorithm. At any point, the user can intervene and correct any unsatisfactory cell detections.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides the following features:&lt;br /&gt;
&lt;br /&gt;
  * Easy to use GUI interface &lt;br /&gt;
  * Frame anlignment algorithm &lt;br /&gt;
  * Novel mycobacteria segmentation algorithm&lt;br /&gt;
  * Novel configurable lineage tree visualization&lt;br /&gt;
  * Automated acquisition of quantitative date&lt;br /&gt;
  * Relational database storage, SQL interface to data&lt;br /&gt;
  * Data export (CSV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bactrack_main.png|400px]]&lt;br /&gt;
[[File:btree.png|400px]]&lt;br /&gt;
[[File:frame.png|400px]]&lt;br /&gt;
[[File:segmentation.png|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Example reports produced by BactImAs: ===&lt;br /&gt;
&lt;br /&gt;
* BW Report video generated from the program (black outline - computer, white - human&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;xSpLbs5pe_Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Color report video generated from the program (green outline - human, red - human) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GKMdunbu6CM&amp;lt;/youtube&amp;gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=25</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=25"/>
		<updated>2023-07-18T10:35:42Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to BactImAs Wiki pages ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BactImAs is an open-source multi platform java application&#039;&#039;&#039; intended to assist the researcher in tracking various organisms in sequences of images and obtaining and visualizing their quantitative data.  &lt;br /&gt;
&lt;br /&gt;
Bactimas paper is published here: [[http://dx.doi.org/10.1186/1471-2105-15-251|DOI:10.1186/1471-2105-15-251]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motivation:&#039;&#039;&#039;&lt;br /&gt;
A common task in today’s synthetic and systems biology studies is the analysis of various features of organisms using movies obtained through time-lapse microscopy. \\&lt;br /&gt;
This process consists of identifying organisms on a large number of images and measuring their features whilst keeping track of their lineage which is **a very cumbersome and error prone task** for the researcher.  &lt;br /&gt;
To facilitate the analysis, various mostly automated tools and algorithms were developed in recent years but all of them targeting rather specific organisms and/or laboratory setups, since a general purpose automated solution to this detection problem is extremely hard if not impossible. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039;&lt;br /&gt;
We&#039;ve designed BactImAs as a &amp;quot;platform&amp;quot;, that is as a collection of somewhat independent well defined modules working together. Such setup facilitates maintenance, customization and upgrades.&lt;br /&gt;
This property is particularly useful for the tracking algorithms - in BactImAs it is possible to include &#039;&#039;&#039;multiple tracking algorithms&#039;&#039;&#039; (&amp;quot;best-of-breed approach&amp;quot;) and thus use the best fitted algoritm for the problem at hand.  \\&lt;br /&gt;
It is even possible to mix-and-match algorithms in a way to segment one part of the movie with algorithm A and the other part with algorithm B.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
BactImAs uses a semi-automated approach: it relies on the user to define the initial cells and all cell divisions. Other than that, the application tracks cells using a our newly developed algorithm. At any point, the user can intervene and correct any unsatisfactory cell detections.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides the following features:&lt;br /&gt;
&lt;br /&gt;
  * Easy to use GUI interface &lt;br /&gt;
  * Frame anlignment algorithm &lt;br /&gt;
  * Novel mycobacteria segmentation algorithm&lt;br /&gt;
  * Novel configurable lineage tree visualization&lt;br /&gt;
  * Automated acquisition of quantitative date&lt;br /&gt;
  * Relational database storage, SQL interface to data&lt;br /&gt;
  * Data export (CSV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bactrack_main.png|400px]]&lt;br /&gt;
[[File:btree.png|400px]]&lt;br /&gt;
[[File:frame.png|400px]]&lt;br /&gt;
[[File:segmentation.png|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Example reports produced by BactImAs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;https://www.youtube.com/watch?v=xSpLbs5pe_Y&amp;lt;/embedvideo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{youtube&amp;gt;xSpLbs5pe_Y?medium|BW Report video generated from the program (black outline - computer, white - human) }} &lt;br /&gt;
{{youtube&amp;gt;GKMdunbu6CM?medium|Color report video generated from the program (green outline - human, red - human) }}&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Sqlpane.png&amp;diff=24</id>
		<title>File:Sqlpane.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Sqlpane.png&amp;diff=24"/>
		<updated>2023-07-18T10:33:15Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Segmentation.png&amp;diff=23</id>
		<title>File:Segmentation.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Segmentation.png&amp;diff=23"/>
		<updated>2023-07-18T10:33:02Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Report_with_color_option.png&amp;diff=22</id>
		<title>File:Report with color option.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Report_with_color_option.png&amp;diff=22"/>
		<updated>2023-07-18T10:32:53Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Phases.png&amp;diff=21</id>
		<title>File:Phases.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Phases.png&amp;diff=21"/>
		<updated>2023-07-18T10:32:41Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Measure_bg.png&amp;diff=20</id>
		<title>File:Measure bg.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Measure_bg.png&amp;diff=20"/>
		<updated>2023-07-18T10:32:30Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Measure.png&amp;diff=19</id>
		<title>File:Measure.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Measure.png&amp;diff=19"/>
		<updated>2023-07-18T10:32:20Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Frame.png&amp;diff=18</id>
		<title>File:Frame.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Frame.png&amp;diff=18"/>
		<updated>2023-07-18T10:32:10Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Exchange.png&amp;diff=17</id>
		<title>File:Exchange.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Exchange.png&amp;diff=17"/>
		<updated>2023-07-18T10:32:02Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Event.png&amp;diff=16</id>
		<title>File:Event.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Event.png&amp;diff=16"/>
		<updated>2023-07-18T10:31:50Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Editexperiment.png&amp;diff=15</id>
		<title>File:Editexperiment.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Editexperiment.png&amp;diff=15"/>
		<updated>2023-07-18T10:31:39Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Edge_det_algs.png&amp;diff=14</id>
		<title>File:Edge det algs.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Edge_det_algs.png&amp;diff=14"/>
		<updated>2023-07-18T10:31:29Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Dumpcsv.png&amp;diff=13</id>
		<title>File:Dumpcsv.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Dumpcsv.png&amp;diff=13"/>
		<updated>2023-07-18T10:31:18Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Db.png&amp;diff=12</id>
		<title>File:Db.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Db.png&amp;diff=12"/>
		<updated>2023-07-18T10:31:09Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Ca_params.png&amp;diff=11</id>
		<title>File:Ca params.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Ca_params.png&amp;diff=11"/>
		<updated>2023-07-18T10:31:01Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Btree_dialog.png&amp;diff=10</id>
		<title>File:Btree dialog.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Btree_dialog.png&amp;diff=10"/>
		<updated>2023-07-18T10:30:51Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Btree.png&amp;diff=9</id>
		<title>File:Btree.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Btree.png&amp;diff=9"/>
		<updated>2023-07-18T10:30:41Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bstate.png&amp;diff=8</id>
		<title>File:Bstate.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bstate.png&amp;diff=8"/>
		<updated>2023-07-18T10:30:23Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bactrack_main.png&amp;diff=7</id>
		<title>File:Bactrack main.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bactrack_main.png&amp;diff=7"/>
		<updated>2023-07-18T10:30:13Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bactrack_gui.png&amp;diff=6</id>
		<title>File:Bactrack gui.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Bactrack_gui.png&amp;diff=6"/>
		<updated>2023-07-18T10:30:00Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch3.png&amp;diff=5</id>
		<title>File:Arch3.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch3.png&amp;diff=5"/>
		<updated>2023-07-18T10:29:51Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch2.png&amp;diff=4</id>
		<title>File:Arch2.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch2.png&amp;diff=4"/>
		<updated>2023-07-18T10:29:41Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch1.png&amp;diff=3</id>
		<title>File:Arch1.png</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=File:Arch1.png&amp;diff=3"/>
		<updated>2023-07-18T10:29:30Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
	<entry>
		<id>https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=2</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://homer.zpr.fer.hr/bactimas/index.php?title=Main_Page&amp;diff=2"/>
		<updated>2023-07-18T10:28:29Z</updated>

		<summary type="html">&lt;p&gt;Igor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to BactImAs Wiki pages ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BactImAs is an open-source multi platform java application&#039;&#039;&#039; intended to assist the researcher in tracking various organisms in sequences of images and obtaining and visualizing their quantitative data.  &lt;br /&gt;
&lt;br /&gt;
Bactimas paper is published here: [[http://dx.doi.org/10.1186/1471-2105-15-251|DOI:10.1186/1471-2105-15-251]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motivation:&#039;&#039;&#039;&lt;br /&gt;
A common task in today’s synthetic and systems biology studies is the analysis of various features of organisms using movies obtained through time-lapse microscopy. \\&lt;br /&gt;
This process consists of identifying organisms on a large number of images and measuring their features whilst keeping track of their lineage which is **a very cumbersome and error prone task** for the researcher.  &lt;br /&gt;
To facilitate the analysis, various mostly automated tools and algorithms were developed in recent years but all of them targeting rather specific organisms and/or laboratory setups, since a general purpose automated solution to this detection problem is extremely hard if not impossible. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039;&lt;br /&gt;
We&#039;ve designed BactImAs as a &amp;quot;platform&amp;quot;, that is as a collection of somewhat independent well defined modules working together. Such setup facilitates maintenance, customization and upgrades.&lt;br /&gt;
This property is particularly useful for the tracking algorithms - in BactImAs it is possible to include &#039;&#039;&#039;multiple tracking algorithms&#039;&#039;&#039; (&amp;quot;best-of-breed approach&amp;quot;) and thus use the best fitted algoritm for the problem at hand.  \\&lt;br /&gt;
It is even possible to mix-and-match algorithms in a way to segment one part of the movie with algorithm A and the other part with algorithm B.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
BactImAs uses a semi-automated approach: it relies on the user to define the initial cells and all cell divisions. Other than that, the application tracks cells using a our newly developed algorithm. At any point, the user can intervene and correct any unsatisfactory cell detections.&lt;br /&gt;
&lt;br /&gt;
BactImAs provides the following features:&lt;br /&gt;
&lt;br /&gt;
  * Easy to use GUI interface &lt;br /&gt;
  * Frame anlignment algorithm &lt;br /&gt;
  * Novel mycobacteria segmentation algorithm&lt;br /&gt;
  * Novel configurable lineage tree visualization&lt;br /&gt;
  * Automated acquisition of quantitative date&lt;br /&gt;
  * Relational database storage, SQL interface to data&lt;br /&gt;
  * Data export (CSV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:bactrack_main.png?400|}}&lt;br /&gt;
{{:btree.png?400|}}&lt;br /&gt;
{{:frame.png?400|}}&lt;br /&gt;
{{:segmentation.png?400|}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Example reports produced by BactImAs:&lt;br /&gt;
&lt;br /&gt;
{{youtube&amp;gt;xSpLbs5pe_Y?medium|BW Report video generated from the program (black outline - computer, white - human) }} &lt;br /&gt;
{{youtube&amp;gt;GKMdunbu6CM?medium|Color report video generated from the program (green outline - human, red - human) }}&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
	</entry>
</feed>