How speed up my pipeline (beginner)? What computer to buy?


#1

Hi everyone,
I’m a new PhD student and a new user of CellProfiler as well.

I’m trying to measure the intensity of the membrane regions of cell. I have set up a pipeline that 1) recognise cells 2) Shrink several pixels 3) Enlarge several pixels. I create a double ring to overlay the membrane, and measure the intensity in those rings. I attach the pipeline together with a test set of 3 pictures.

Right now I am running the same pipeline on 84 pictures and it takes 48min on my computer (2010 baseline MBP, but that for some reason feels sluggish nowadays). On my colleagues MBP (2012 non-retina baseline, upgraded to 16GB ram and SSD) it takes 26 mins.

If anyone could take a look at my pipeline it would be awesome. I’m sure it’s not optimised at all, but it would be great if someone could tell me some specific things that I could change to speed it up.

I am planning a new computer purchase, and faster CellProfiler calculations is one the goals (computer cluster is out of the question for me).
In the Activity Monitor I notice that CellProfiler uses 100% cpu. Is the graphic card and hard drive (would SSD help) also used, or is the cpu the only bottleneck? It “only” uses 100% cpu which also makes me think it only uses one of the cup’s. My cpu is 2.4 GHz Intel Core 2 Duo and my colleagues is 2.5GHz Intel Core i5, is this the only reason why his calculations are half the time of mine? Is there any beta that can utilise more cores that I could happily test??

Thanks so much! Loving this program
Greetings from Sweden
Archive.zip (4.23 MB)


#2

I took a look at the pipeline and made some modifications (attached). Some suggestions:

  • You are not using the nucleus image, which is helpful for identifying the cell.
  • I’m not sure what you are using as the cytoplasmic stain, since only some of the cell bodies seem to be stained and not others.
  • I also suggest looking at this other thread
    , which the user is trying to make a similar measurement. There, I mention that you can use the MeasureObjectIntensity module to obtain the edge intensity without any additional modifcation to the cell objects. Or you can use the object expansion/subtraction approach to define more of the membrane. - Also, you should make your images grayscale, rather than colorizing them, to save on memory.

Do you close the “eyes” for each module, to save time/memory, as per here? viewtopic.php?f=14&t=806#p4490
Re: CPUs - The current release uses only a single core, regardless of the computer type.

Perhaps; see here for a sample discussion of the topic: tomshardware.com/forum/id-24 … e-duo.html

If you like, you can try an alpha version that we have not released (but soon will), available here: github.com/CellProfiler/CellPro … TrunkBuild. Make sure to read the caveats, and then download the 2.1 version. This new version will use multiple cores if available.
-Mark
2013_08_13.cp (9.15 KB)


#3

Hi,

Sorry for the late response. Thank you so much for all this useful informations. After optimise everything, it take about half of the time than it used to be.

As you said, obtain edge intensity is a good idea to do it without additional modification. How many pixels does it measuring? Is it one pixel at the edge of object?


#4

[quote=“mbray”]
If you like, you can try an alpha version that we have not released (but soon will), available here: github.com/CellProfiler/CellPro … TrunkBuild. Make sure to read the caveats, and then download the 2.1 version. This new version will use multiple cores if available.
-Mark[/quote]

btw Mark, I tried this for my pipeline.
if you recall, I have the issue with the alignment that take a lot of processing time because it recalculates every iteration, (the solution did not make into the next build) and the 2.1 indeed makes it run far faster.
can’t wait till you guys send it out.


#5

It’s basically measuring the same pixels as those in the outline of the object that are displayed in IdentifyPrimaryObjects.
-Mark


#6

Hi, re-viving this thread, so CPU speed and RAM are the limiting ones, increasing them should increase the speed of computing, correct?
my current machine is core i7-6600U @2.6GHz, 8GB RAM.

Thanks