I have many plates I want to analyse through cellprofiler and CPA. The problem is that I constantly need to go into the properties file and do some manual changes there, such as writing the plate_id, well_id etc. E.g:
plate_id = Image_MetaData_Plate
So, I got the advice that I should stick to the same properties file and instead add a prefixname to the table name under ExporttoDatabase module (under Tableprefix), and then only need to do one change in the properties file where I write the following:
image_table = prefixname_per_image
object_table = Prefixname_per_object
I did as above. The CPA opens when I click on the properties file. But then I get the following error message when I want to click on PlateViewer:
An error occurred in the program:
DBException: ERROR: Database query failed for connection "MainThread"
SELECT Image_Metadata_Plate FROM exp2_per_image GROUP BY Image_Metadata_Plate
(1146, “Table ‘images.exp2_per_image’ doesn’t exist”)
Traceback (most recent call last):
File “cpa.py”, line 175, in launch_plate_map_browser
File “PlateMapBrowser.pyc”, line 123, in init
File “DBConnect.pyc”, line 702, in GetPlateNames
File “DBConnect.pyc”, line 395, in execute
Did I neglect something here?
Should do something additional that I overlooked?
Grateful for help! This is my properties file:
#Tue Jun 22 11:06:46 2010
CellProfiler Analyst 2.0 properties file
==== Database Info ====
db_type = mysql
db_port = 3306
db_host = localhost
db_name = Images
db_user = root
db_passwd = remote
==== Database Tables ====
image_table = exp2_per_image
object_table = exp2_per_object
==== Database Columns ====
Specify the database column names that contain unique IDs for images and
objects (and optionally tables).
table_id (OPTIONAL): This field lets Classifier handle multiple tables if
you merge them into one and add a table_number column as a foreign
key to your per-image and per-object tables.
image_id: must be a foreign key column between your per-image and per-object
object_id: the object key column from your per-object table
image_id = ImageNumber
object_id = ObjectNumber
plate_id = Image_Metadata_Plate
well_id = Image_Metadata_Well
Also specify the column names that contain X and Y coordinates for each
object within an image.
cell_x_loc = plaques_Location_Center_X
cell_y_loc = plaques_Location_Center_Y
==== Image Path and File Name Columns ====
Classifier needs to know where to find the images from your experiment.
Specify the column names from your per-image table that contain the image
paths and file names here.
Individual image files are expected to be monochromatic and represent a single
channel. However, any number of images may be combined by adding a new channel
path and filename column to the per-image table of your database and then
adding those column names here.
NOTE: These lists must have equal length!
image_channel_paths = Image_PathName_ghostcells,Image_PathName_PrimaryOutlines
image_channel_files = Image_FileName_ghostcells,Image_FileName_PrimaryOutlines
CPA will now read image thumbnails directly from the database.
Give short names for each of the channels (respectively)…
image_names = ghostcells,PrimaryOutlines
Specify a default color for each of the channels (respectively)
Valid colors are: [red, green, blue, magenta, cyan, yellow, gray, none]
image_channel_colors = red, green, blue, cyan, magenta, yellow, gray, none, none, none, none, no
==== Image Accesss Info ====
==== Dynamic Groups ====
Here you can define groupings to choose from when classifier scores your experiment. (eg: per-well)
This is OPTIONAL, you may leave "groups = ".
group_XXX = MySQL select statement that returns image-keys and group-keys. This will be associated with the group name “XXX” from above.
groups = Well, Gene, Well+Gene,
group_SQL_Well = SELECT Per_Image_Table.TableNumber, Per_Image_Table.ImageNumber, Per_Image_Table.well FROM Per_Image_Table
group_SQL_Gene = SELECT Per_Image_Table.TableNumber, Per_Image_Table.ImageNumber, Well_ID_Table.gene FROM Per_Image_Table, Well_ID_Table WHERE Per_Image_Table.well=Well_ID_Table.well
group_SQL_Well+Gene = SELECT Per_Image_Table.TableNumber, Per_Image_Table.ImageNumber, Well_ID_Table.well, Well_ID_Table.gene FROM Per_Image_Table, Well_ID_Table WHERE Per_Image_Table.well=Well_ID_Table.well
==== Image Filters ====
Here you can define image filters to let you select objects from a subset of your experiment when training the classifier.
This is OPTIONAL, you may leave "filters = ".
filter_SQL_XXX = MySQL select statement that returns image keys you wish to filter out. This will be associated with the filter name “XXX” from above.
filters = EMPTY, CDKs,
filter_SQL_EMPTY = SELECT TableNumber, ImageNumber FROM CPA_per_image, Well_ID_Table WHERE CPA_per_image.well=Well_ID_Table.well AND Well_ID_Table.Gene=“EMPTY”
filter_SQL_CDKs = SELECT TableNumber, ImageNumber FROM CPA_per_image, Well_ID_Table WHERE CPA_per_image.well=Well_ID_Table.well AND Well_ID_Table.Gene REGEXP ‘CDK.*’
==== Meta data ====
What are your objects called?
object_name = singular object name, plural object name,
object_name = cell, cells,
What size plates were used? 384 or 96? This is for use in the PlateViewer
plate_type = 96
==== Excluded Columns ====
Classifier uses columns in your per_object table to find rules. It will
automatically ignore ID columns defined in table_id, image_id, and object_id
as well as any columns that contain non-numeric data.
Here you may list other columns in your per_object table that you wish the
classifier to ignore when finding rules.
You may also use regular expressions here to match more general column names.
Example: classifier_ignore_columns = WellID, Meta_., ._Position
This will ignore any column named “WellID”, any columns that start with
“Meta_”, and any columns that end in “_Position”.
A more restrictive example:
classifier_ignore_columns = ImageNumber, ObjectNumber, .Parent., .Children., .Location_Center.,.Metadata.
classifier_ignore_columns = table_number_key_column, image_number_key_column, object_number_key_column
==== Other ====
Specify the approximate diameter of your objects in pixels here.
image_tile_size = 50
======== Auto Load Training Set ========
You may enter the full path to a training set that you would like Classifier
to automatically load when started.
======== Area Based Scoring ========
You may specify a column in your per-object table which will be summed and
reported in place of object-counts when scoring. The typical use for this
is to report the areas of objects on a per-image or per-group basis.
======== Output Per-Object Classes ========
Here you can specify a MySQL table in your Database where you would like
Classifier to write out class information for each object in the
======== Check Tables ========
[yes/no] You can ask classifier to check your tables for anomalies such
as orphaned objects or missing column indices. Default is on.
This check is run when Classifier starts and may take up to a minute if
your object_table is extremely large.
check_tables = yes