How can I use the same properties file


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
well_id= Image_MetaData_Well

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 “”, 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.

image_thumbnail_cols =

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 ====

image_url_prepend =

==== 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.

training_set =

======== 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.

area_scoring_column =

======== 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


class_table =

======== 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


I think you have an issue with MySQL case sensitivity for table names. You are trying to access a table that does not exist, because your image table’ s name is different. CellProfiler normally creates a “Per_Image” table and then appends whatever prefixes you added, so your table should be “prefixname_Per_Image”. The best way to find this out is conect to your MySQL server, select your database and write:


This will show you the name of your tables so you can use the proper name in your properties file to access the image table.