Source code for scipy ndimage _convolve1d












0















I did a Gaussian smoothing on each slice of a 528 x 528 x 128 image stack (so 128 slices) and it went amazingly fast (it was with a small filter kernel, size 3 x 3). I did not really bother to time it but it was less than 2 seconds.
I am very interested in how this function works "under the hood", because I am trying to write some sort of fast neighbor counter that looks a bit like a convolution. I use all my fancy magic in this function of my own, like stride_tricks and np.einsum, but still, it is horribly slow, about 5 minutes for the same image stack, again with a 3x3 kernel. For this reason I want to have a look at the filter implementation that is used in skimage.



I tried to find the source code on Github for the skimage.filters.gaussian. This one sends me all over the place, because the gaussian function uses gaussian_filter from scipy.ndimage.filters, and this function again uses another function and so on.
The closest I got to the real source, is scipy.ndimage.filters.correlate1d. This function returns a function called _nd_image.correlate1d, but I cannot find the source for this one anywhere!



If you know where the source is located, many thanks for sharing!
Also if you know why this filter is so fast, i.e. what special tricks it uses, I would be happy to hear about that.










share|improve this question




















  • 2





    The underlying function is written in C: github.com/scipy/scipy/blob/…

    – Warren Weckesser
    Nov 14 '18 at 22:17
















0















I did a Gaussian smoothing on each slice of a 528 x 528 x 128 image stack (so 128 slices) and it went amazingly fast (it was with a small filter kernel, size 3 x 3). I did not really bother to time it but it was less than 2 seconds.
I am very interested in how this function works "under the hood", because I am trying to write some sort of fast neighbor counter that looks a bit like a convolution. I use all my fancy magic in this function of my own, like stride_tricks and np.einsum, but still, it is horribly slow, about 5 minutes for the same image stack, again with a 3x3 kernel. For this reason I want to have a look at the filter implementation that is used in skimage.



I tried to find the source code on Github for the skimage.filters.gaussian. This one sends me all over the place, because the gaussian function uses gaussian_filter from scipy.ndimage.filters, and this function again uses another function and so on.
The closest I got to the real source, is scipy.ndimage.filters.correlate1d. This function returns a function called _nd_image.correlate1d, but I cannot find the source for this one anywhere!



If you know where the source is located, many thanks for sharing!
Also if you know why this filter is so fast, i.e. what special tricks it uses, I would be happy to hear about that.










share|improve this question




















  • 2





    The underlying function is written in C: github.com/scipy/scipy/blob/…

    – Warren Weckesser
    Nov 14 '18 at 22:17














0












0








0








I did a Gaussian smoothing on each slice of a 528 x 528 x 128 image stack (so 128 slices) and it went amazingly fast (it was with a small filter kernel, size 3 x 3). I did not really bother to time it but it was less than 2 seconds.
I am very interested in how this function works "under the hood", because I am trying to write some sort of fast neighbor counter that looks a bit like a convolution. I use all my fancy magic in this function of my own, like stride_tricks and np.einsum, but still, it is horribly slow, about 5 minutes for the same image stack, again with a 3x3 kernel. For this reason I want to have a look at the filter implementation that is used in skimage.



I tried to find the source code on Github for the skimage.filters.gaussian. This one sends me all over the place, because the gaussian function uses gaussian_filter from scipy.ndimage.filters, and this function again uses another function and so on.
The closest I got to the real source, is scipy.ndimage.filters.correlate1d. This function returns a function called _nd_image.correlate1d, but I cannot find the source for this one anywhere!



If you know where the source is located, many thanks for sharing!
Also if you know why this filter is so fast, i.e. what special tricks it uses, I would be happy to hear about that.










share|improve this question
















I did a Gaussian smoothing on each slice of a 528 x 528 x 128 image stack (so 128 slices) and it went amazingly fast (it was with a small filter kernel, size 3 x 3). I did not really bother to time it but it was less than 2 seconds.
I am very interested in how this function works "under the hood", because I am trying to write some sort of fast neighbor counter that looks a bit like a convolution. I use all my fancy magic in this function of my own, like stride_tricks and np.einsum, but still, it is horribly slow, about 5 minutes for the same image stack, again with a 3x3 kernel. For this reason I want to have a look at the filter implementation that is used in skimage.



I tried to find the source code on Github for the skimage.filters.gaussian. This one sends me all over the place, because the gaussian function uses gaussian_filter from scipy.ndimage.filters, and this function again uses another function and so on.
The closest I got to the real source, is scipy.ndimage.filters.correlate1d. This function returns a function called _nd_image.correlate1d, but I cannot find the source for this one anywhere!



If you know where the source is located, many thanks for sharing!
Also if you know why this filter is so fast, i.e. what special tricks it uses, I would be happy to hear about that.







python scipy convolution ndimage






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 22:16







Gnub

















asked Nov 14 '18 at 22:01









GnubGnub

11




11








  • 2





    The underlying function is written in C: github.com/scipy/scipy/blob/…

    – Warren Weckesser
    Nov 14 '18 at 22:17














  • 2





    The underlying function is written in C: github.com/scipy/scipy/blob/…

    – Warren Weckesser
    Nov 14 '18 at 22:17








2




2





The underlying function is written in C: github.com/scipy/scipy/blob/…

– Warren Weckesser
Nov 14 '18 at 22:17





The underlying function is written in C: github.com/scipy/scipy/blob/…

– Warren Weckesser
Nov 14 '18 at 22:17












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53309387%2fsource-code-for-scipy-ndimage-convolve1d%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53309387%2fsource-code-for-scipy-ndimage-convolve1d%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Bressuire

Vorschmack

Quarantine