Problem Reading Into CellProfilerAnalyst

I have processed some test image files in CellProfiler, and created a properties file however when I read this into CellProfilerAnalyst I seem to be getting an problem where the filepath is concatenated onto the filename there is a extra backslash – I think this is providing problems when the file access is attempted.
e.g.
R:\CellProfilerWork\cellProfiler_examples\CirculatingTumourCells\biocept_website\CTC_RobustProstateBreastOvarian.jpg

I would be grateful if you could let me know what is wrong here…

Many thanks!
afolarin

Logging level: DEBUG
Creating filter tables.
PROPERTIES WARNING (channels_per_image): No value(s) specified. CPA will assume 1 channel per image.
PROPERTIES: Using default image_buffer_size=1
PROPERTIES: Using default tile_buffer_size=1
PROPERTIES WARNING (plate_id): Field is required for plate map viewer.
PROPERTIES WARNING (well_id): Field is required for plate map viewer.
PROPERTIES WARNING (plate_type): Field is required for plate map viewer.
Could not import cpfigure, will not display Margin vs. Iteration plot.
Checking database tables…
[MainThread] Connecting to the database…
[MainThread] Connected to database: CTCtest1 as cpadmin@localhost
[MainThread] SHOW INDEX FROM Per_Image
[MainThread] SHOW INDEX FROM Per_Object
TableNumber column was found indexed in your object table but not your image table.
Done checking database tables.
[MainThread] SELECT ImageNumber FROM Per_Image GROUP BY ImageNumber
[MainThread] SELECT Per_Object.ImageNumber, COUNT(Per_Object.ObjectNumber) FROM Per_Object GROUP BY Per_Object.ImageNumber
[MainThread] SELECT Per_Image.ImageNumber FROM Per_Image
[MainThread] SELECT ObjectNumber FROM Per_Object WHERE ImageNumber=2 LIMIT 1,1
[MainThread] SELECT ObjectNumber FROM Per_Object WHERE ImageNumber=2 LIMIT 2,1
[MainThread] SELECT ObjectNumber FROM Per_Object WHERE ImageNumber=1 LIMIT 0,1
[MainThread] SELECT ObjectNumber FROM Per_Object WHERE ImageNumber=2 LIMIT 0,1
[MainThread] SELECT ObjectNumber FROM Per_Object WHERE ImageNumber=2 LIMIT 1,1
[TileLoader_Thread-1] Connecting to the database…
[TileLoader_Thread-1] Connected to database: CTCtest1 as cpadmin@localhost
[TileLoader_Thread-1] SELECT Nuclei_Location_Center_X, Nuclei_Location_Center_Y FROM Per_Object WHERE (ImageNumber=2 AND ObjectNumber=2)
[TileLoader_Thread-1] SELECT Image_PathName_CTC, Image_FileName_CTC FROM Per_Image WHERE ImageNumber IN (2)
Opening image: R:\CellProfilerWork\cellProfiler_examples\CirculatingTumourCells\biocept_website\CTC_image_preview.jpg
Fetched 5 random cells from whole experiment
[TileLoader_Thread-1] SELECT Nuclei_Location_Center_X, Nuclei_Location_Center_Y FROM Per_Object WHERE (ImageNumber=2 AND ObjectNumber=3)
[TileLoader_Thread-1] SELECT Nuclei_Location_Center_X, Nuclei_Location_Center_Y FROM Per_Object WHERE (ImageNumber=1 AND ObjectNumber=1)
[TileLoader_Thread-1] SELECT Image_PathName_CTC, Image_FileName_CTC FROM Per_Image WHERE ImageNumber IN (1)
Opening image: R:\CellProfilerWork\cellProfiler_examples\CirculatingTumourCells\biocept_website\CTC_RobustProstateBreastOvarian.jpg
[TileLoader_Thread-1] SELECT Nuclei_Location_Center_X, Nuclei_Location_Center_Y FROM Per_Object WHERE (ImageNumber=2 AND ObjectNumber=1)
[MainThread] SELECT Image_PathName_CTC, Image_FileName_CTC FROM Per_Image WHERE ImageNumber IN (1)
Opening image: R:\CellProfilerWork\cellProfiler_examples\CirculatingTumourCells\biocept_website\CTC_RobustProstateBreastOvarian.jpg

The Properties file:

#Mon Jul 12 14:55:00 2010

==============================================

CellProfiler Analyst 2.0 properties file

==============================================

==== Database Info ====

db_type = mysql
db_port = 3306
db_host = localhost
db_name = CTCtest1
db_user = cpadmin
db_passwd = a99l3Core

==== Database Tables ====

image_table = Per_Image
object_table = 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

tables

object_id: the object key column from your per-object table

image_id = ImageNumber
object_id = ObjectNumber
#plate_id =
#well_id =

Also specify the column names that contain X and Y coordinates for each

object within an image.

cell_x_loc = Nuclei_Location_Center_X
cell_y_loc = Nuclei_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_path_cols = Image_PathName_CTC
#image_file_cols = Image_FileName_CTC
image_channel_paths = Image_PathName_CTC
image_channel_files = Image_FileName_CTC

CPA will now read image thumbnails directly from the database.

#image_thumbnail_cols =

Give short names for each of the channels (respectively)…

image_channel_names = CTC

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, non

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

FORMAT:

group_XXX = MySQL select statement that returns image-keys and group-keys. This will be associated with the group name “XXX” from above.

EXAMPLE GROUPS:

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

FORMAT:

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.

EXAMPLE FILTERS:

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?

FORMAT:

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 =

==== Excluded Columns ====

OPTIONAL

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

OPTIONAL

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

OPTIONAL

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

OPTIONAL

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

object_table

#class_table =

======== Check Tables ========

OPTIONAL

[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

Can you post what the actual error message is that CPA generates?
-Mark

Hi,
I here are the error messages.

**On reading the properties file:
**

Logging level: DEBUG
Creating filter tables.
PROPERTIES WARNING (channels_per_image): No value(s) specified. CPA will assume 1 channel per image.
PROPERTIES: Using default image_buffer_size=1
PROPERTIES: Using default tile_buffer_size=1
PROPERTIES WARNING (plate_id): Field is required for plate map viewer.
PROPERTIES WARNING (well_id): Field is required for plate map viewer.
PROPERTIES WARNING (plate_type): Field is required for plate map viewer.

**On attempting to view an image in CPA:
**
An error occurred in the program:
IndexError: list index out of range

Traceback (most recent call last):
File “cpa.py”, line 195, in launch_image_viewer
File “ImageViewer.pyc”, line 190, in init
File “ImageViewer.pyc”, line 489, in OnOpenImage
File “ImageViewer.pyc”, line 223, in SetImage
File “ImageViewer.pyc”, line 36, in init
File “ImagePanel.pyc”, line 30, in init
File “ImageTools.pyc”, line 108, in MergeToBitmap
File “ImageTools.pyc”, line 188, in MergeChannels

Similarly in Classifier if a tiled image is attempted to be viewed:

An error occurred in the program:
IndexError: list index out of range

Traceback (most recent call last):
File “ImageTile.pyc”, line 103, in OnSelectFromPopupMenu
File “ImageTools.pyc”, line 57, in ShowImage
File “ImageViewer.pyc”, line 188, in init
File “ImageViewer.pyc”, line 223, in SetImage
File “ImageViewer.pyc”, line 36, in init
File “ImagePanel.pyc”, line 30, in init
File “ImageTools.pyc”, line 108, in MergeToBitmap
File “ImageTools.pyc”, line 188, in MergeChannels

FYI: I’ve moved this post over to the CPA forum since it seems more appropriate there.
-Mark

If you are using RGB images then you need to add the following field to your properties file:

However, not all versions of CPA support RGB images, so if this doesn’t work, let me know what version you are running.

…oh, and don’t worry about the double slash in your file paths, they should be parsed correctly.

[quote=“mbray”]FYI: I’ve moved this post over to the CPA forum since it seems more appropriate there.
-Mark[/quote]

Sorry mark, I didn’t think it was a CPA problem initially.

[quote=“afraser”]If you are using RGB images then you need to add the following field to your properties file:

CODE: SELECT ALL
channels_per_image = 3

[/quote]

this has fixed the problem.