covartech / PRT

Pattern Recognition Toolbox for MATLAB
http://covartech.github.io/
MIT License
145 stars 70 forks source link

A possible problem for algorithms dealing with new, complicated datatypes that don't have catFeatures #6

Open peterTorrione opened 12 years ago

peterTorrione commented 12 years ago

Right now, algorithms use "catFeatures" to handle when there are multiple feature sets coming into a new Algorithm:

prtPreProcPca/prtClassPlsda+prtFusion...

It would really happen in the above, where a "/" is followed by a single action.

To make the code simple, we also call catFeatures everywhere instead of trying to figure out when we should call it (it's easy enough to do).

The problem is that for prtClassMultiplInstance, for example, there is no such thing as "catFeatures".

I see a few options.

1) We can re-write the current algo.run code to only use catFeatures when necessary. This will still break for MIL data in the case above, but lets you write straight algorithms. This has to be a temporary fix. I'll do it now.

2) Write catFeatures for dsMIL. There might be other data sets where catFeatures doesn't make any sense. We should either figure out the "right thing" or warn / error nicely...

kennethmorton commented 12 years ago

I think the solution to this is to make a method of datasets (I suppose it is abstract in prtDataSetBase) to combine from a parallel algorithm catParallel perhaps. prtDataSetInMemory can just call catFeatures and MIL can do whatever insanity is required.

peterTorrione commented 12 years ago

Agree - catParallel. Should be on our to-do-list.

That or, this is meaningless and should not be allowed for prtDataSetClassMil, or prtDataSetClassGraph, etc.