A .NET microscopy imaging application based on Bio. Supports various microscopes by using imported libraries & GUI automation. Supported libraries include Prior® & Zeiss® & all devices supported by latest Micromanager 2.0 and python-microscope. If your microscope is not supported check your manufacturer's SDK to implement "Microscope.cs" or use GUI Automation functions. Works with or without hardware through microscope simulation. Allows for tiled & depth stack imaging & supports XInput game controllers to move stage, take images, run ImageJ macros on images or Bio C# scripts. Also check out the wiki for library usage. or check out the documentation.
//If the GUI Recording for setting folder is set, we can set the microscope storage folder.
Microscope.SetFolder("F:/Images/5x/");
Microscope.Objectives.SetPosition(0);
Microscope.TakeImage();
Microscope.MoveFieldLeft();
//We can take an image stack based on properties set in the GUI
Microscope.TakeImageStack();
// or by specifying them in script.
Microscope.TakeImageStack(25000,25050,10)
Microscope.MoveFieldDown();
Microscope.TakeTiles(4,4);
Microscope.Objectives.SetPosition(1);
Microscope.SetFolder("F:/Images/10x/");
Microscope.TakeTiles(4,4);
-
C# scripting with sample tool-script and other sample scripts in "/Scripts/" folder. See samples
-
Cell Imager tool allows for performing imaging routines on individual cells based on blob detection.
-
Supports running ImageJ macro commands on images open in Bio. New Console to run ImageJ macro commands and Bio C# functions.
-
Multiple view modes like Emission, and Filtered. ROI's shown for each channel can be configured in ROI Manager.
-
Supports drawing shapes & colors onto 16 bit & 48 bit images, unlike System.Drawing.Graphics.
-
Convenient viewing of image stacks with scroll wheel moving Z-plane and mouse side buttons scrolling C-planes.
-
Editing & saving ROI's in images to OME format image stacks.
-
Copy & Paste to quickly annotate images and name them easily by right click.
-
Select multiple points by holding down control key, for delete & move tools.
-
Exporting ROI's from each OME image in a folder of images to CSV.
-
Easy freeform annotation with magic select tool which selects based on blob detection.
-
Use AForge filters by opening filters tool window and right click to apply. Currently supports only some AForge filters as many of them do not support 16bit and 48bit images. Convert to 8bit image to make use of more filters. Applyed filters can be easily recorded and used in scripts. Bio impliments some filters like crop for 16 & 48 bit images.
- Install dependency OpenSlide be sure to add the /bin path of opeslide binaries to your Environmental Variable PATH. By editing your PATH variable.
- For Micro-Manager 2.0 install the nightly build from here then install pycromanager by running
pip install pycromanager
- For detailed Setup instructions see setup.
- For Zeiss® set the MTB® Api library path to version of MTB® you are using, found in program files.
- For Prior® download Prior® SDK and set path to Prior® SDK PriorScientificSDK.dll
- Set Functions to controller buttons by double clicking labels. Functions include all microscope functions & ImageJ & Bio C# scripts.
Star this project on Github to help spread the word about Bio!
- Bio GPL3
- AForge LGPL
- BioFormats.Net GPL3
- IKVM
- LibTiff.Net BSD
- Cs-script MIT
- Prior® Scientific EULA v1.0 Prior® SDK
- MTB SDK© 2019 by Carl Zeiss Microscopy
- Save scripts into "StartupPath/Scripts" with ".cs" ending.
- Open script editor and recorder from menu.
- Double click on script name in Script runner to run script.
- Scripts saved in Scripts folder will be loaded into script runner.
- Program installer include sample script "Sample.cs" which gets & sets pixels and saves resulting image.
- Use Script recorder to record program function calls and script runner to turn recorder text into working scripts. (See sample) scripts
- Save plugin DLL's into "StartupPath/Plugins"
- See example plugin to create your own plugins.
//css_reference Bio.dll;
using System;
using System.Windows.Forms;
using System.Drawing;
using Bio;
using System.Threading;
public class Loader
{
//Point ROI Tool Example
public string Load()
{
int ind = 1;
do
{
Bio.Scripting.State s = Bio.Scripting.GetState();
if (s != null)
{
if (!s.processed)
{
if (s.type == Bio.Scripting.Event.Down && s.buts == MouseButtons.Left)
{
ZCT cord = Bio.App.viewer.GetCoordinate();
Bio.Scripting.LogLine(cord.ToString() + " Coordinate");
Bio.ROI an = Bio.ROI.CreatePoint(cord, s.p.X, s.p.Y);
Bio.ImageView.SelectedImage.Annotations.Add(an);
Bio.Scripting.LogLine(cord.ToString() + " Coordinate");
an.Text = "Point" + ind;
ind++;
Bio.Scripting.LogLine(s.ToString() + " Point");
//ImageView.viewer.UpdateOverlay();
}
else
if (s.type == Bio.Scripting.Event.Up)
{
Bio.Scripting.LogLine(s.ToString());
}
else
if (s.type == Bio.Scripting.Event.Move)
{
Bio.Scripting.LogLine(s.ToString());
}
s.processed = true;
}
}
} while (true);
return "OK";
}
}