Hello,
I have been working on running a workflow programmatically on my local galaxy instance using library datasets.
It took me a few hours to figure out the problem I was having so I thought I would document it here in case it helps anyone. Also, I have a question regarding 'ldda' IDs (see below).
1) get the dataset ID's from the library
Collection Members
------------------
#1: /api/libraries/ebfb8f50c6abde6d/contents/c6ca0ddb55be603a016bf252082cbf1f
name: /
type: folder
id: c6ca0ddb55be603a016bf252082cbf1f
#2: /api/libraries/ebfb8f50c6abde6d/contents/a0e1686ccf7a028a
type: file
id: a0e1686ccf7a028a
#3: /api/libraries/ebfb8f50c6abde6d/contents/98a64dc1a6526c8e
type: file
id: 98a64dc1a6526c8e
#4: /api/libraries/ebfb8f50c6abde6d/contents/2764e29c8c7b7454
type: file
id: 2764e29c8c7b7454
2) get input IDs for the workflow
Member Information
------------------
url: /api/workflows/f2db41e1fa331b3e
inputs: {'102': {'value': '', 'label': 'Illumina2'}, '104': {'value': '', 'label': 'ReferenceAnnotation'}, '96': {'value': '', 'label': 'Illumina1'}}
id: f2db41e1fa331b3e
Then I ran:
python /opt/galaxy_server/galaxy-dist/scripts/api/workflow_execute.py <api_key>
http://localhost:8080/api/workflows f2db41e1fa331b3e 'Test API' '102=ldda=a0e1686ccf7a028a' '104=ldda=2764e29c8c7b7454' '96=ldda=98a64dc1a6526c8e'
This gives the following error at the end of the stack trace for HTTP Error 500: ValueError: invalid literal for int() with base 10: 'file.37'
After looking through the code for a while I saw that when the "src id type" is given as "ld" then the decoded name is split and the number is used to retrieve the ldda or "library_dataset_dataset_association"
So instead I ran the above command with: '102=ld=a0e1686ccf7a028a' '104=ld=2764e29c8c7b7454' '96=ld=98a64dc1a6526c8e'
And everything worked, woo!
This brings me to my question: Where can I find ldda ID's ? I imagine I could find them in my database and there looks like some functions in lib/galaxy/web/api/workflows.py for handling them but I am having trouble locating them via an API script or on the library management interface.
Note: I am assuming that the ID's returned by display.py are in fact "ld" ID's since this is the ID type I used to avoid the error listed above.
Thanks,
Andrew