<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 6, 2015 at 9:56 AM, Ben Cipollini <span dir="ltr"><<a href="mailto:bcipolli@ucsd.edu" target="_blank">bcipolli@ucsd.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">How about accepting a dtype parameter, with None meaning using the type determined from load (i.e. current behavior)? This makes it easy to document the 'arbitrary' behavior for the user (in explaining the parameter), to convert to whatever datatype you want (if you know your data or have particular needs like Alex). I also believe this is closer to a numpy semantic, to_float is a new semantic (even if relatively simple).<div><div><br></div></div></div></blockquote><div><br></div><div>+1 for a `dtype` kwarg, rather than `as_float`, with the input being a numpy dtype to which things get cast. That will give Alex the flexibility to choose float32, rather than float64, if he doesn't need all that extra precision. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div></div><div>As for what the default should be (None or float32 or float64)... I would not touch that conversation quite yet :)</div></div></div><div><div><div class="gmail_extra"><br></div></div></div></blockquote><div><br></div><div>I think the default here should be whatever your system does when you allocate an empty/zeros numpy array (that's float64 for me). Seems only slightly less arbitrary than the current behavior (I think). As I understand it, to mask with an array, you need to go to bool anyway, so this could be nice for the masking use-case: </div><div><br></div><div>    data[nib.load('mask.nii.gz').get_data(dtype=bool)]</div><div><br></div><div>If the implementation can avoid going to a memory-consuming dtype along the way, that would have a small advantage relative to a call to `as_type` after loading into memory.</div><div><br></div><div>Cheers, </div><div><br></div><div>Ariel</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 6, 2015 at 9:37 AM, Matthew Brett <span dir="ltr"><<a href="mailto:matthew.brett@gmail.com" target="_blank">matthew.brett@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Mon, Jul 6, 2015 at 5:32 PM, Bertrand Thirion<br>
<<a href="mailto:bertrand.thirion@inria.fr" target="_blank">bertrand.thirion@inria.fr</a>> wrote:<br>
> +1 we (and more importantly, our students)  should rely as much as possible<br>
> on the standard behavior of numpy arrays and make adequate decisions, rather<br>
> than having to figure out the details of the API of neuroimaging libraries.<br>
> So the defaut should be unchanged.<br>
<br>
</span>Your reasoning implies the opposite.   Numpy tries very hard not to<br>
return arrays of unknown or unpredictable data types, and that is the<br>
situation we have here.   The returned datatype from a nibabel image<br>
is essentially arbitrary, in that very few sources of nifti files<br>
place any weight on whether there are non-default scalefactors or not.<br>
At the moment, we do, depend on this, silently, and that is extremely<br>
confusing, and quite contrary to the standard numpy way,<br>
<div><div><br>
Cheers,<br>
<br>
Matthew<br>
_______________________________________________<br>
Neuroimaging mailing list<br>
<a href="mailto:Neuroimaging@python.org" target="_blank">Neuroimaging@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/neuroimaging" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/neuroimaging</a><br>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Neuroimaging mailing list<br>
<a href="mailto:Neuroimaging@python.org" target="_blank">Neuroimaging@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/neuroimaging" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/neuroimaging</a><br>
<br></blockquote></div><br></div></div>