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 <stephar...@free.fr> wrote:
>
>
> Yes I see. I will keep thinking about it.
>
>
> On Wed, 21 Dec 2016 20:58:26 +0100, Tudor Girba <tu...@tudorgirba.com>
> wrote:
>
>> Hi,
>>
>>> On Dec 21, 2016, at 3:05 PM, stepharong <stephar...@free.fr> 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 <alexandre.ber...@me.com>
>>>>> 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 <stephar...@free.fr> 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/
>>
>>
>> --
>> www.tudorgirba.com
>> www.feenk.com
>>
>> “The smaller and more pervasive the hardware becomes, the more physical
>> the software gets."
>>
>
>
> --
> Using Opera's mail client: http://www.opera.com/mail/
> _______________________________________________
> Moose-dev mailing list
> moose-...@list.inf.unibe.ch
> https://www.list.inf.unibe.ch/listinfo/moose-dev



-- 
Serge Stinckwich
UCBN & UMI UMMISCO 209 (IRD/UPMC)
Every DSL ends up being Smalltalk
http://www.doesnotunderstand.org/

Reply via email to