galaxyproject / usegalaxy-tools

usegalaxy.* common tools
12 stars 53 forks source link

Installing tools into matching sections #9

Open natefoo opened 5 years ago

natefoo commented 5 years ago

Back in February 2019 when the usegalaxy. team were hacking together for a week we all converted our tool panels to use the same section names*. Unfortunately, it turns out, the tool installation process doesn't exactly work that way.

It looks like tool_panel_section_label in an Ephemeris tool yaml becomes new_tool_panel_section_label in the API request. Through a series of levels ~~it turns out that instead of searching the toolbox by name/label, the label is converted to an ID with .lower().replace(' ', '_') and searches for that ID. If there's no match for that ID, a new section is created.

In #8 I expected that by passing the name of an existing section (ChIP-seq), it would be installed in to the existing section (which happens to have ID chip_seq). Instead, the install code searched for chip-seq and, not finding it, created a new section with the same name/label but with ID chip-seq.

This means that for usegalaxy.* common tools we need to:

  1. use identical section IDs, or
  2. fix Galaxy to find sections by name/label if an ID is not provided

IMO the best fix in the short term is to use identical section IDs, but that's maybe a little less flexible and requires looking in a shed_tool_conf.xml any time a new tool is added, rather than just looking at the tool panel in Galaxy.

ping @galaxyproject/universe-admins

hexylena commented 5 years ago

instead of the obvious thing, it converts it to a weird ID that never existed

Ok cooool. That explains some things. Agreed 2 is the optimal solution, but we can definitely do 1 in the short term.

Toolbox sections (e.g. from cvmfs + local) are going to be grouped on agreement of ID + label right? It would probably make sense to synchronize them then?

natefoo commented 5 years ago

Originally we were only going to sync labels I think? But it looks like we'll have to sync IDs.

Slugger70 commented 5 years ago

Sounds like a great idea. Can we default to something calculated from the labels? As we already have them synced?

On Fri., 7 Jun. 2019, 00:40 Nate Coraor, notifications@github.com wrote:

Originally we were only going to sync labels I think? But it looks like we'll have to sync IDs.

— You are receiving this because you are on a team that was mentioned. Reply to this email directly, view it on GitHub https://github.com/galaxyproject/usegalaxy-tools/issues/9?email_source=notifications&email_token=AANI3XSI5WQHUUB7YVJF5U3PZEOVXA5CNFSM4HT7HHQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXDB6DI#issuecomment-499523341, or mute the thread https://github.com/notifications/unsubscribe-auth/AANI3XWJYZA74QLEUOMQUCLPZEOVXANCNFSM4HT7HHQA .

natefoo commented 5 years ago

My vote is for something like:

>>> import string
>>> label = 'Foo: Bar Baz'
>>> section_id = ''
>>> for c in label:
...     section_id += (c if c in string.ascii_letters + string.digits else '_').lower()
...
>>> section_id
'foo__bar_baz'

Alternatively we can just use Galaxy's current method (label.lower().replace(' ', '_')) but I don't like non-alphanumeric characters in the IDs.

Slugger70 commented 5 years ago

I like your idea. I don't like non-alphas in Ids also. Let's definitely go with that. We should update the list of labels and then create the list of id's so we can start fixing our tool_confs etc again.

natefoo commented 5 years ago

26 half-fixes this, we just need to convert our configs (again) to use the same IDs. Maybe something we can accomplish while together at the GCC.

hexylena commented 5 years ago

Sounds good for doing at GCC

Slugger70 commented 5 years ago

Yep.. :)

On Sat, 22 Jun 2019 at 02:48, Helena Rasche notifications@github.com wrote:

Sounds good for doing at GCC

— You are receiving this because you are on a team that was mentioned. Reply to this email directly, view it on GitHub https://github.com/galaxyproject/usegalaxy-tools/issues/9?email_source=notifications&email_token=AANI3XQYCXQ6OTITPHG3XBLP3UA5ZA5CNFSM4HT7HHQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYI7ONY#issuecomment-504493879, or mute the thread https://github.com/notifications/unsubscribe-auth/AANI3XSWNXYJDXCCEKW6MGLP3UA5ZANCNFSM4HT7HHQA .

--

Simon Gladman | Second Lieutenant

Wyndham Vale Fire Brigade

PO Box 410 Werribee 3030

Mob. 0418 421 077

Email. simon.gladman@unimelb.edu.au simon.gladman@unimelb.edu.au

mvdbeek commented 5 years ago

Through a series of levels ~~it turns out that instead of searching the toolbox by name/label, the label is converted to an ID with .lower().replace(' ', '_') and searches for that ID. If there's no match for that ID, a new section is created.

I think the proper fix would be to actually fix Galaxy and do that. I can give it a shot, this shouldn't be too hard.

hexylena commented 5 years ago

Maybe fixed in https://github.com/galaxyproject/galaxy/pull/8225?

natefoo commented 5 years ago

Maybe fixed in galaxyproject/galaxy#8225?

Indeed it should be! We'll still have to use IDs at least until docker-galaxy-stable is updated to 19.05. Additionally, we should probably update Galaxy so that new sections use the algorithm described above to generate the ID. That should not take long at all, however.

hexylena commented 5 years ago

The docker tag exists, we should test it :)