Hi Juan:Thanks for your advice, It's true that ImagePy is quickly hacked together and unprofessional(The main framework is build in 2 months). And that's why I didnot push it on pypi. I will so some clean up in 2018. But some different opinions： 1. about the "promotion" category, I think sometimes it is needed. Especially, I need to got more user, and some of them should be programer, when they use, they help me to do some test. I will test the interactive framework, but I have no time to test every algrithsm and function. 2. ImagePy's concept is borrow and integrate, the key is the interactive ui framework and the plugin system, not algrithsm. I wrote some in ipyalg, that's because something I must wrote: eg: https://github.com/Image-Py/imagepy/blob/master/imagepy/ipyalg/graph/skel2d.... found scikit-image's medial_axis function has some bug:https://github.com/scikit-image/scikit-image/issues/2550the scikit-image's medial_axis make holes when thin. And sometimes we donot need many branch. So I wrote the check you saw. eg:https://github.com/Image-Py/imagepy/blob/master/imagepy/ipyalg/graph/skel2d.... need a skeleton analysis function, thanks for your skan, But I think a faster and a cleaner network is better, so I wrote it. eg: scikit-image's h_minima, h_maxima, watershed function is too slow, and when I process a large image, it would run death.so I wrote some function with numba. That's just temporary, I will replace with scikit-image's function when it's OK. thanks for your advice, I will learn the PEP8 and numpy style. Best----- 原始邮件 ----- 发件人：Juan Nunez-Iglesias firstname.lastname@example.org 收件人：scikit-image email@example.com, firstname.lastname@example.org 主题：Re: [scikit-image] ImagePy 2018 日期：2018年01月26日 08点50分
Good to hear from you again! Responses inline below.
On 22 Jan 2018, 3:43 PM +1100, email@example.com, wrote:
Hi everyone: I wrote ImagePy in the last year. It's a plugin framework, like ImageJ, but based on Python and Numpy.
I wrote a ImageJ style ui at first, but now I wrote a more powerful ui, with a toolbox, many widgets, and a developer sute: macros recorder, python console, command finder... and we can extend the tools, commands, widgets by Python plugins.
I had test it on Windows, Mac, Linux, you can try it here:https://github.com/Image-Py/imagepy. and a snapshot attached! And I had wrote many documents(in Chinese), and have some users in my country. There is some plan in 2018, please give me some advice.
ImagePy is a very cool concept and execution. Actually the amount of work you’ve done so far seems incredible. Congratulations on a great project!
1. I will write more documents, and translate it in English (I need help)
Yes, English-language documentation is a necessity if you want to be “mainstream”.
2. I will try to do some lecture in local college. 3. I am writting a book, introduce some skill in image-processing, not aimed at program, but with many example in biology and material. And show how to do this using ImagePy. 4. I want to publish some paper (many users use ImagePy, and ask me how to quote ImagePy. But I do not know well how to write and where to publish)
These three goals, to me, should be secondary. They fall in the “promotion” category, and need to come after ImagePy has reached a certain level of stability and maturity. I’ve browsed a bit through the code-base, and I think that you should spend some time cleaning up the code and adding tests before pushing ImagePy too hard. For example, here, it looks like you return n < 2 and the rest of the code is ignored:
Additionally, the function should have a name that is less context-dependent. ie instead of “check(n)”, one could do, “pixel_in_skeleton(neighbor_sum)”.
Functions should also be documented in the NumPy style: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
Code should adhere to PEP8: https://www.python.org/dev/peps/pep-0008
Your package should be pip-installable: https://packaging.python.org/tutorials/distributing-packages/
There’s nothing wrong with writing code quickly to get stuff done. As I mentioned, the amount of functionality in ImagePy already is extremely impressive. But, for me, the authority problem for ImagePy is not because it’s not well-known, but because the code looks quickly hacked together and unprofessional. As I said: nothing wrong with that at the start of a project, but before people will place confidence on it, it needs to be polished.
Tests don’t guarantee correctness — we have many bugs in skimage — but they help very much to protect against bugs. Since most of the code in ImagePy is untested (that “check” function for example), it’s likely that there are many bugs hiding in there.
5. Many user say that they like ImagePy, but they worry about the authority. For ImagePy is not as known as ImageJ or ImagePro Plus now. And If they use ImagePy in there paper, they also worry the paper checker did not trust in ImagePy. But Infact, ImageJ is just a plugin framework, and the plugins are wrote by many people, in good/bad quality.-
This is definitely true. But many of the plugins (the most cited) are very well tested and documented. Actually I don’t know whether it’s a requirement to have tests to be included in Fiji by default, but I think it probably is.
But ImagePy are a wrapper for scipy.ndimage, scikit-image, opencv... Scikit-image are in BSD License, So I want to know if I can say, ImagePy has a core of scikit-image, And most algorithm are supported by scikit-image?
The wording and imagery should not suggest that ImagePy is endorsed by scikit-image. However, it is perfectly fine for you to say that ImagePy is built on top of SciPy, scikit-image, opencv. This is just a true statement, and we don’t forbid making true statements. =) If you want to increase confidence in specific functions, if a menu item simply calls a scikit-image function, you could add a little greyed-out “skimage” note next to the menu item.
6. If possible If there is some way to get little economic support? I just wrote it in my spare time, If there is some support, I can devote more time.
Unfortunately this is a very hard unsolved problem in open-source. Currently even skimage itself has no financial support, and is purely volunteer-driven. Even NumPy just got its first ever direct funding last year. So unfortunately we don’t have a good answer for you. You should check whether there are any government granting agencies in China that might support open-source development.
I think ImagePy is an excellent idea and would love to revisit it. I don’t have time right now (I’m not even contributing to the skimage 0.14 release currently!), but keep pinging us as you make progress! Best of luck,
On Fri, Jan 26, 2018 at 3:28 PM, firstname.lastname@example.org wrote:
Thanks for your advice, It's true that ImagePy is quickly hacked together and unprofessional(The main framework is build in 2 months). And that's why I didnot push it on pypi. I will so some clean up in 2018. But some different opinions：
- about the "promotion" category, I think sometimes it is needed.
Especially, I need to got more user, and some of them should be programer, when they use, they help me to do some test. I will test the interactive framework, but I have no time to test every algrithsm and function.
I think you have this backwards. Alpha-level and even pre-alpha software is absolutely fine to put on PyPI (there is even a specific tag for it, see https://pypi.python.org/pypi?%3Aaction=list_classifiers), and imho a better way to promote your software is to make it very easy for people to install it, and then invite them to try it out. Here I think it's critically important to:
a) make the installation easy, standard, and fool-proof. b) manage expectations about the state of the software.
Rather than promise that this is the successor to ImageJ (this is an enormous task), say that it's a *work-in-progress*, pluggable GUI framework *aiming* to make Python-based image processing software accessible without programming expertise.
If you *don't* say these things up-front, your software might get a reputation for over-promising. Then when ImagePy becomes more polished, people will dismiss it because they tried it when it was buggy and it didn't work for them. I've seen several people on the ImageJ list give up after they couldn't get it to run on their machine. I don't think they will be excited to try again to install from source. If you make it pip installable, they might.
Anyway, I agree with you that there is a balance between getting more users and being cautious. But in my opinion you are leaning too far in the promotion side of things. This is just my opinion and again, please don't let this be discouraging --- as I mentioned before, I think it is very impressive already!
2. ImagePy's concept is borrow and integrate, the key is the interactive ui
framework and the plugin system, not algrithsm. I wrote some in ipyalg, that's because something I must wrote:
eg: https://github.com/Image-Py/imagepy/blob/master/ imagepy/ipyalg/graph/skel2d.py I found scikit-image's medial_axis function has some bug: https://github.com/scikit-image/scikit-image/issues/2550 the scikit-image's medial_axis make holes when thin. And sometimes we donot need many branch. So I wrote the check you saw.
eg:https://github.com/Image-Py/imagepy/blob/master/ imagepy/ipyalg/graph/skel2d.py I need a skeleton analysis function, thanks for your skan, But I think a faster and a cleaner network is better, so I wrote it.
eg: scikit-image's h_minima, h_maxima, watershed function is too slow, and when I process a large image, it would run death. so I wrote some function with numba. That's just temporary, I will replace with scikit-image's function when it's OK.
Sure. We would very much welcome pull requests to scikit-image to improve speed! But, as mentioned a couple of times, they would need to be feature-complete implementations, pass all the tests, and have a clean and documented API. These things all take a lot more effort but they are worth it over time, or the project becomes impossible to maintain.
thanks for your advice, I will learn the PEP8 and numpy style.