Uploaded image for project: 'Request For Comments'
  1. Request For Comments
  2. RFC-846

Add imagemagick and ffmpeg packages to rubin-extras

    XMLWordPrintable

    Details

    • Type: RFC
    • Status: Implemented
    • Resolution: Done
    • Component/s: DM
    • Labels:
      None

      Description

      Both packages are conda install-able and available via conda-forge so hopefully quite uncontroversial and straight-forward.

      imagemagick's convert is needed to change the stretch on pre-rendered jpgs, and ffmpeg is needed for making animations of jps/pngs.

      The should be added to the base env so that they're available to k8 containers as well as the shared stack and nublado builds.

        Attachments

          Issue Links

            Activity

            Hide
            tjenness Tim Jenness added a comment -

            Add them where? To rubin-env?

            Show
            tjenness Tim Jenness added a comment - Add them where? To rubin-env?
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            Yes, sorry, just clarified the main post.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - Yes, sorry, just clarified the main post.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            From a quick look, new packages brought in for ffmpeg vs the rubin-env-4 dev environment would be:

            ffmpeg
            gnutls
            lame
            libidn2
            libopus
            libtasn1
            libunistrin
            libvpx
            nettle
            openh264
            x264
            

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - From a quick look, new packages brought in for ffmpeg vs the rubin-env-4 dev environment would be: ffmpeg gnutls lame libidn2 libopus libtasn1 libunistrin libvpx nettle openh264 x264
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            New packages brought in for imagemagick vs the rubin-env-4 dev environment would be:

            ghostscript
            imagemagick
            pkg-config
            xorg-libice
            xorg-libsm
            xorg-libxext
            xorg-libxrender
            xorg-libxt
            xorg-renderproto
            xorg-xextproto
            

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - New packages brought in for imagemagick vs the rubin-env-4 dev environment would be: ghostscript imagemagick pkg-config xorg-libice xorg-libsm xorg-libxext xorg-libxrender xorg-libxt xorg-renderproto xorg-xextproto
            Hide
            tjenness Tim Jenness added a comment -

            Why do science pipelines need to make movies and depend on X11 libraries and ghostscript?

            Show
            tjenness Tim Jenness added a comment - Why do science pipelines need to make movies and depend on X11 libraries and ghostscript?
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            Lots of things are best seen animated. Sadly, I do not define the dependencies of those packages.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - Lots of things are best seen animated. Sadly, I do not define the dependencies of those packages.
            Hide
            Parejkoj John Parejko added a comment -

            Those are quite a few dependencies for both packages. Do we really need imagemagick, or can we just output the jpegs in exactly the way we want them via matplotlib (or whatever plotting library you're using)?

            There was a recent question on community about making animations of cutouts, so there are probably other use cases than just RubinTV.

            Show
            Parejkoj John Parejko added a comment - Those are quite a few dependencies for both packages. Do we really need imagemagick, or can we just output the jpegs in exactly the way we want them via matplotlib (or whatever plotting library you're using)? There was a recent question on community about making animations of cutouts, so there are probably other use cases than just RubinTV.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            No, sadly, like I said, I need to change the stretch on some existing jpegs (the particular use case here is for pre-rendered jpegs from the all sky camera, but there are other situations where it's useful/necessary too).

            Are those particularly big and onerous ones that people really have such a problem with adding them? I'd have asked for this ages ago but these tools were already installed manually on lsst-devl so I didn't realise they weren't already part of our distribution until I tried to use them elsewhere.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - No, sadly, like I said, I need to change the stretch on some existing jpegs (the particular use case here is for pre-rendered jpegs from the all sky camera, but there are other situations where it's useful/necessary too). Are those particularly big and onerous ones that people really have such a problem with adding them? I'd have asked for this ages ago but these tools were already installed manually on lsst-devl so I didn't realise they weren't already part of our distribution until I tried to use them elsewhere.
            Hide
            lguy Leanne Guy added a comment -
            Show
            lguy Leanne Guy added a comment - Merlin Fisher-Levine is this request related to this discussion and user request on communtity
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            No, it's totally independent of that, but it would serve them well, and shows that it's not just me that would find this useful!

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - No, it's totally independent of that, but it would serve them well, and shows that it's not just me that would find this useful!
            Hide
            tjenness Tim Jenness added a comment -

            We discussed this at DM-CCB.

            Merlin Fisher-Levine can you please explain in a bit more detail what packages are going to need these packages? Is this SITCOM software? Will you need this to run in batch? Which k8s containers are you needing it to exist in? Nublado adds extra packages that are not in rubin-env.

            Show
            tjenness Tim Jenness added a comment - We discussed this at DM-CCB. Merlin Fisher-Levine can you please explain in a bit more detail what packages are going to need these packages? Is this SITCOM software? Will you need this to run in batch? Which k8s containers are you needing it to exist in? Nublado adds extra packages that are not in rubin-env.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            Sure, let's split it out:

            ffmpeg is, I think, useful to all users: from nublado users, to inside k8 pods to pipeline devs. Lots of things are really best viewed as an animated time series, and I think that CLO post shows just how much this would be useful functionality. So I think that would live well in the base env, given its utility to so many people.

            imagemagick is, I must admit, perhaps somewhat less far-reaching (though I think it's still the go-to tool for making GIFs, which can be useful for the same use-case as above but when you don't want to have to embed an mp4). Given that I've already had it manually added to the k8s pods that I care about, I guess I can live without it, but it still seems like a bit of a shame given that nublado conda envs aren't writable, so nublado users (and anyone else unable to clone the env into a writale place and then install into it) will be unable to use it.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - Sure, let's split it out: ffmpeg is, I think, useful to all users: from nublado users, to inside k8 pods to pipeline devs. Lots of things are really best viewed as an animated time series, and I think that CLO post shows just how much this would be useful functionality. So I think that would live well in the base env, given its utility to so many people. imagemagick is, I must admit, perhaps somewhat less far-reaching (though I think it's still the go-to tool for making GIFs, which can be useful for the same use-case as above but when you don't want to have to embed an mp4). Given that I've already had it manually added to the k8s pods that I care about, I guess I can live without it, but it still seems like a bit of a shame given that nublado conda envs aren't writable, so nublado users (and anyone else unable to clone the env into a writale place and then install into it) will be unable to use it.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            Regarding the where/what questions:

            > Is this SITCOM software?
            Yes, currently, though as I said above, I think it's of general use too.

            > Will you need this to run in batch?
            Potentially I'd like to, though I've not coded that up yet. If I do I can clone my env though, I'm used to it at this point.

            > Which k8s containers are you needing it to exist in?
            The RubinTV production ones (but I also need it on lsst-devl and available via the shared stack, though like I said, I can clone and install myself if I have to).

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - Regarding the where/what questions: > Is this SITCOM software? Yes, currently, though as I said above, I think it's of general use too. > Will you need this to run in batch? Potentially I'd like to, though I've not coded that up yet. If I do I can clone my env though, I'm used to it at this point. > Which k8s containers are you needing it to exist in? The RubinTV production ones (but I also need it on lsst-devl and available via the shared stack, though like I said, I can clone and install myself if I have to).
            Hide
            Parejkoj John Parejko added a comment -

            I'd argue that with the massive compression advantage and clear control over playback speed of mp4 vs. gif, we should discourage using imagemagick for any kind of video making.

            Show
            Parejkoj John Parejko added a comment - I'd argue that with the massive compression advantage and clear control over playback speed of mp4 vs. gif, we should discourage using imagemagick for any kind of video making.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            I'd argue that if people want gifs for a reason, then they should make those gifs, and that we can't know or legistlate every usecase. Clearly mp4s have many advantages over gifs, but sometimes, some people might also need an actual gif.

            But anyway, my particular usecase involves imagemagick as part of the moviemaking pipeline, but it doesn't itself make the movies.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - I'd argue that if people want gifs for a reason, then they should make those gifs, and that we can't know or legistlate every usecase. Clearly mp4s have many advantages over gifs, but sometimes, some people might also need an actual gif. But anyway, my particular usecase involves imagemagick as part of the moviemaking pipeline, but it doesn't itself make the movies.
            Hide
            mfisherlevine Merlin Fisher-Levine added a comment -

            Anyway, I have everything I want already - I know how to, and can and do just clone our conda envs and manually install things for myself, and have had what I needed installed into my k8s pods by hand. I just thought that my usecases were common enough (as evidenced by the CLO post, and knowing that I'm not alone in pipelines/commissioning as a movie-maker) that I'd try to spread the love a little and make things easier for others, but I'm happy to just withdraw this as it's clearly a very unpopular proposition with many people.

            Show
            mfisherlevine Merlin Fisher-Levine added a comment - Anyway, I have everything I want already - I know how to, and can and do just clone our conda envs and manually install things for myself, and have had what I needed installed into my k8s pods by hand. I just thought that my usecases were common enough (as evidenced by the CLO post, and knowing that I'm not alone in pipelines/commissioning as a movie-maker) that I'd try to spread the love a little and make things easier for others, but I'm happy to just withdraw this as it's clearly a very unpopular proposition with many people.
            Hide
            womullan Wil O'Mullane added a comment -

            This will be added to Rubin-extras which will appear with Rubin-env 4.0.

            Show
            womullan Wil O'Mullane added a comment - This will be added to Rubin-extras which will appear with Rubin-env 4.0.
            Hide
            ktl Kian-Tat Lim added a comment -

            Oops. Should have also added an implementation ticket for adding to shared-stack and RSP.

            Show
            ktl Kian-Tat Lim added a comment - Oops. Should have also added an implementation ticket for adding to shared-stack and RSP.

              People

              Assignee:
              mfisherlevine Merlin Fisher-Levine
              Reporter:
              mfisherlevine Merlin Fisher-Levine
              Watchers:
              Colin Slater, John Parejko, Kian-Tat Lim, Leanne Guy, Merlin Fisher-Levine, Tim Jenness, Wil O'Mullane
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Planned End:

                  Jenkins

                  No builds found.