Opened 5 years ago

Closed 5 years ago

#1869 closed feature request (done)

Display multiple DataTables in one view

Reported by: mkommend Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.7
Component: Optimization.Views Version: 3.3.7
Keywords: Cc:

Description

It would be beneficial if we had the possibility to compare data tables (e.g., quality linechart) across several runs. Therefore a new view for run collections displaying data tables collected from the contained runs should be created.

Change History (17)

comment:1 Changed 5 years ago by mkommend

  • Status changed from new to accepted

comment:2 Changed 5 years ago by mkommend

r7977: Added methods to handle collection of data rows in DataTableView.

comment:3 Changed 5 years ago by mkommend

r7978: Removed unused references in HL.Analysis.Views.

comment:4 Changed 5 years ago by mkommend

r7979: Corrected introduced bug in DataTableView concerning adding of DataRows.

comment:5 Changed 5 years ago by mkommend

r7980: Added RunCollectionDataTableView.

comment:6 Changed 5 years ago by mkommend

r7981: Forgot to add extension methods ToEnumerable.

comment:7 follow-up: Changed 5 years ago by abeham

I think you should yield return item rather than allocating an array for that. Anyway, what's the purpose of that method?

comment:9 in reply to: ↑ 7 Changed 5 years ago by mkommend

Replying to abeham:

I think you should yield return item rather than allocating an array for that. Anyway, what's the purpose of that method?

I thought about yielding instead of returning an array, but I couldn't think of any advantage. yield allocates an iterator which is at least as expensive as the array allocation. yield is lazy which could lead to multiple evaluations (e.g, using Count and iterating). Therefore I implemented the method by allocating an array.

The purpose of this method is just to have a convenient way to call methods that require an IEnumerable with an object, which is quite handy sometimes and does no harm.

comment:10 Changed 5 years ago by mkommend

r7986: Cleared combo box items if selected data table changes.

comment:11 Changed 5 years ago by gkronber

Actually, I think we should not have the ToEnumerable extension at all. I think we don't need a ToEnumerable method for all classes.

comment:12 Changed 5 years ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from accepted to reviewing

comment:13 Changed 5 years ago by abeham

  • Owner changed from abeham to mkommend

It's a great feature, that I have long been looking forward to! Thanks for implementing this!

I reviewed the changes r7977:7981 and made some small adjustments. I also removed the extension method again. Currently I don't see that we need this, also I'm not sure if this shouldn't rather return an array of that type and be called ToArray() or AsArray() as it was actually a ToArray() disguising as a ToEnumerable().

r8108:

  • Removed ToEnumerable extension method
  • Reset rowNumber to 0 when rebuilding the combined data table
  • Some minor changes (moved ctor below variable/property declaration, replaced some obvious variable types with var)

Please have a look at the changes I made and consult with me again or set to release if you're okay with it.

Anyway, very nice to have this in HL!

comment:14 follow-up: Changed 5 years ago by abeham

Let me just add another suggestion. When viewing "All DataRows" we could ignore the color of the runs and use a different color for each DataRow to better separate which row belongs to which group rather than to which run. But that's just a suggestion.

Another possible feature for the future would be to create a chart similar to the ones known from the financial world where a stock curve is shown as a series of box-whisker items. Or just a simple line with whiskers that would display some kind of confidence interval.

comment:15 Changed 5 years ago by gkronber

I think you mean a candlestick chart. But it is not really applicable to what you are trying to represent here.

comment:16 in reply to: ↑ 14 Changed 5 years ago by mkommend

Replying to abeham:

Let me just add another suggestion. When viewing "All DataRows" we could ignore the color of the runs and use a different color for each DataRow to better separate which row belongs to which group rather than to which run. But that's just a suggestion.

That's an interesting thought which I also had during interpreting. However, it also has it benefits to know which row corresponds to which run, especially if rows of the same runs are somehow correlated. It would suggest we leave it as it is now and track further improvements in separate tickets.

comment:17 Changed 5 years ago by mkommend

  • Status changed from reviewing to readytorelease

r8128: Readded ToEnumerable extension method.

comment:18 Changed 5 years ago by mkommend

  • Resolution set to done
  • Status changed from readytorelease to closed
  • Version changed from 3.3.6 to 3.3.7
Note: See TracTickets for help on using tickets.