Re: [Pharo-users] [Moose-dev] Re: Design Challenge: metrics missing value...

2017-01-10 Thread Serge Stinckwich
Something interesting about missing values and data-structure to
represent them like shadow matrix:

https://github.com/njtierney/naniar?utm_content=buffer26e7b

Some month ago, I build a Roassal viz in order to see missing values
in CSV file:
https://twitter.com/SergeStinckwich/status/705839378917167104


On Thu, Dec 22, 2016 at 9:34 AM, stepharong  wrote:
>
>
> Yes I see. I will keep thinking about it.
>
>
> On Wed, 21 Dec 2016 20:58:26 +0100, Tudor Girba 
> wrote:
>
>> Hi,
>>
>>> On Dec 21, 2016, at 3:05 PM, stepharong  wrote:
>>>
>>>
>>>
 Hi Alex,

 Following the design proposed by Stef, in your case you would use a
 different collection.
>>>
>>>
>>> Doru I have multiple missingValue so that they embed their own strategy.
>>> Now I do not know for the scenario of alex.
>>
>>
>> Yes, yes. And that is great.
>>
>> It seemed to me that Alex wanted to find from the collection the elements
>> that have a MissingValue, and for that he wants to use collect:. But, your
>> collection collect: ignores the MissingValue. That is why I thought that he
>> can serve his case with another collection type.
>>
>> Cheers,
>> Doru
>>
>>

 Cheers,
 Doru


> On Dec 21, 2016, at 8:13 AM, Alexandre Bergel 
> wrote:
>
> Hi Stef,
>
> You are raising an interesting point to discuss. This MissingValue is
> indeed better than having -1
> Something to keep in mind: it may be that one would like to focus on
> the missing value and not really the value.
>
> Consider:
>
>> testCollect
>>
>> | uarray collected |
>> uarray := UniformOrderedCollection new.
>> uarray add: 10.
>> uarray add: 20.
>> uarray add: (MissingValue discarding).
>> collected := uarray collect: [ :each | each ].
>> self assert: collected size equals: 2.
>
>
> It could well be that I would like to be able to query over the
> MissingValue.
> Can something like possible: uarray collect: #isMissing
> ?
>
> Cheers,
> Alexandre
>
>
>> On Dec 20, 2016, at 10:15 PM, stepharong  wrote:
>>
>> Hi dear great OO designers
>>
>> Here is a little challenges for your brainy souls :)
>>
>> In Moose when we compute metrics it may happen than a tool (often
>> external to pharo) does not compute a metrics
>> and when we request it in moose we check and often we return a not so
>> good -1.
>>
>> I'm trying to brainstorm on a solution
>>
>> - first may be the simplest way is to not invoke a metrics when it is
>> not computed. But it means that we should know it and that we should 
>> have a
>> registration mechanism. After all this is probably the best solution.
>>
>> - Second we were thinking to use exception but when we have multiple
>> entities missing one metrics I have serious doubts.
>>
>> - Second I was thinking about having the following behavior
>>
>> testCollect
>>
>> | uarray collected |
>> uarray := UniformOrderedCollection new.
>> uarray add: 10.
>> uarray add: 20.
>> uarray add: (MissingValue discarding).
>> collected := uarray collect: [ :each | each ].
>> self assert: collected size equals: 2.
>>
>> testDo
>>
>> | res uarray |
>> uarray := UniformOrderedCollection new.
>> uarray add: 10.
>> uarray add: 20.
>> uarray add: (MissingValue discarding).
>> uarray add: 40.
>> res := 0.
>> uarray do: [ :each | res := res + each ].
>> self assert: res equals: 70.
>>
>>
>> testCollectDefaulting
>>
>> | uarray collected |
>> uarray := UniformOrderedCollection new.
>> uarray add: 10.
>> uarray add: 20.
>> uarray add: (MissingValue default: 33).
>> collected := uarray collect: [ :each | each ].
>> self assert: collected size equals: 3.
>> self assert: collected third equals: 33
>>
>>
>> I basically started to implement
>>
>>
>> do: aBlock
>> "Refer to the comment in Collection|do:."
>> 1 to: self size do:
>> [:index | (self at: index) toDo: aBlock on: self]
>>
>>
>>
>> collect: aBlock
>> "Evaluate aBlock with each of the receiver's elements as the
>> argument.
>> Collect the resulting values into a collection like the
>> receiver. Answer
>> the new collection."
>>
>> | newCollection |
>> newCollection := self species new.
>> self
>> do: [ :each | each toCollect: 

Re: [Pharo-users] [Moose-dev] Re: Design Challenge: metrics missing value...

2016-12-21 Thread Alexandre Bergel
> Doru I have multiple missingValue so that they embed their own strategy.
> Now I do not know for the scenario of alex.

For example, obtaining the classes for which metrics cannot be computed (e.g., 
source code is missing).

Alexandre


> 
>> 
>> Cheers,
>> Doru
>> 
>> 
>>> On Dec 21, 2016, at 8:13 AM, Alexandre Bergel  
>>> wrote:
>>> 
>>> Hi Stef,
>>> 
>>> You are raising an interesting point to discuss. This MissingValue is 
>>> indeed better than having -1
>>> Something to keep in mind: it may be that one would like to focus on the 
>>> missing value and not really the value.
>>> 
>>> Consider:
>>> 
 testCollect
 
| uarray collected |
uarray := UniformOrderedCollection new.
uarray add: 10.
uarray add: 20.
uarray add: (MissingValue discarding).
collected := uarray collect: [ :each | each ].  
self assert: collected size equals: 2.
>>> 
>>> It could well be that I would like to be able to query over the 
>>> MissingValue.
>>> Can something like possible: uarray collect: #isMissing
>>> ?
>>> 
>>> Cheers,
>>> Alexandre
>>> 
>>> 
 On Dec 20, 2016, at 10:15 PM, stepharong  wrote:
 
 Hi dear great OO designers
 
 Here is a little challenges for your brainy souls :)
 
 In Moose when we compute metrics it may happen than a tool (often external 
 to pharo) does not compute a metrics
 and when we request it in moose we check and often we return a not so good 
 -1.
 
 I'm trying to brainstorm on a solution
 
 - first may be the simplest way is to not invoke a metrics when it is not 
 computed. But it means that we should know it and that we should have a 
 registration mechanism. After all this is probably the best solution.
 
 - Second we were thinking to use exception but when we have multiple 
 entities missing one metrics I have serious doubts.
 
 - Second I was thinking about having the following behavior
 
 testCollect
 
| uarray collected |
uarray := UniformOrderedCollection new.
uarray add: 10.
uarray add: 20.
uarray add: (MissingValue discarding).
collected := uarray collect: [ :each | each ].  
self assert: collected size equals: 2.
 
 testDo
 
| res uarray |
uarray := UniformOrderedCollection new.
uarray add: 10.
uarray add: 20.
uarray add: (MissingValue discarding).
uarray add: 40.
res := 0.
uarray do: [ :each | res := res + each ].   
self assert: res equals: 70.
 
 
 testCollectDefaulting
 
| uarray collected |
uarray := UniformOrderedCollection new.
uarray add: 10.
uarray add: 20.
uarray add: (MissingValue default: 33).
collected := uarray collect: [ :each | each ].  
self assert: collected size equals: 3.
self assert: collected third equals: 33
 
 
 I basically started to implement
 
 
 do: aBlock
"Refer to the comment in Collection|do:."
1 to: self size do:
[:index | (self at: index) toDo: aBlock on: self]
 
 
 
 collect: aBlock
"Evaluate aBlock with each of the receiver's elements as the argument.
Collect the resulting values into a collection like the receiver. Answer
the new collection."
 
| newCollection |
newCollection := self species new.
self
do: [ :each | each toCollect: aBlock on: newCollection ].
^ newCollection
 
 
 and
 
 DiscardingValue >> toCollect: aBlock on: aCollection
"discard computation"
^ self
 
 
 Object >> toCollect: aBlock on: aCollection
 
^ aCollection add: (aBlock value: self)
 
 
 So I imagine that you see the design and I wanted to get your point of 
 view.
 
 --
 Using Opera a kind of bad mail client but far better than thunderbird
 ___
 Moose-dev mailing list
 moose-...@list.inf.unibe.ch
 https://www.list.inf.unibe.ch/listinfo/moose-dev
>>> 
>>> --
>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>> Alexandre Bergel  http://www.bergel.eu
>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>> 
>>> 
>>> 
>>> ___
>>> Moose-dev mailing list
>>> moose-...@list.inf.unibe.ch
>>> https://www.list.inf.unibe.ch/listinfo/moose-dev
>> 
>> --
>> www.tudorgirba.com
>> www.feenk.com
>> 
>> "If you interrupt the barber while he is cutting your hair,
>> you will end up with a messy haircut."
>> 
>> 
> 
> 
> -- 
> Using Opera's mail client: http://www.opera.com/mail/
> ___
> Moose-dev mailing list
> moose-...@list.inf.unibe.ch
>