Dear list, just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line... Cheers, Matthias -- ------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
Hi Matthias, check this one out: https://github.com/erasche/argparse2tool Cheers, Bjoern Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
Cool :) Thanks. Matthias On 28.05.2018 09:52, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
-- ------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
Hey Matthias, And let me know if you have any questions or bugs! There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings Cheers, Helena (@erasche) On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
Hi Helena, got it running, but I struggling with subparsers (the tools that I try to wrap basically only uses subparsers .. a lot of them). I adapted the example.py in your repo to include a subparser which seems to be excluded from the xml. I call `python example.py --generate_galaxy_xml` since `python example.py sub --generate_galaxy_xml` seems not to work. Any suggestions? Best, Matthias On 28.05.2018 10:02, H. Rasche wrote:
Hey Matthias,
And let me know if you have any questions or bugs!
There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings
Cheers, Helena (@erasche)
On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
-- ------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
Hi Matthias, On 2018-05-28, Matthias Bernt wrote:
Hi Helena,
got it running, but I struggling with subparsers (the tools that I try to wrap basically only uses subparsers .. a lot of them). I adapted the example.py in your repo to include a subparser which seems to be excluded from the xml.
I call `python example.py --generate_galaxy_xml`
since `python example.py sub --generate_galaxy_xml` seems not to work.
Yeah, I never implemented support for subparsers. What sort of XML would you expect that to output? I think, to me, it feels like it should output multiple tool XMLs, one for each subparser.
Any suggestions?
Best, Matthias
On 28.05.2018 10:02, H. Rasche wrote:
Hey Matthias,
And let me know if you have any questions or bugs!
There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings
Cheers, Helena (@erasche)
On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
--
------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de
Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
# /usr/bin/python3 import argparse
parser = argparse.ArgumentParser(description='Process some integers.', prefix_chars='-+', epilog="here's some epilog text", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('keyword', metavar='Q', type=str, nargs=1, help='action keyword')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', '-s', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
parser.add_argument('--foo', nargs='?', help='foo help') parser.add_argument('--bar', nargs='*', default=[1, 2, 3], help='BAR!') parser.add_argument('--true', action='store_true', help='Store a true') parser.add_argument('--false', action='store_false', help='Store a false') parser.add_argument('--append', action='append', help='Append a value')
parser.add_argument('--nargs2', nargs=2, help='nargs2')
parser.add_argument('--mode', choices=['rock', 'paper', 'scissors'], default='scissors')
parser.add_argument('--version', action='version', version='2.0')
subparsers = parser.add_subparsers() subparser = subparsers.add_parser('sub', help='test subparser') subparser.add_argument('keyword', type=str) subparser.add_argument('--subtrue', action='store_true', help='Store a true')
args = parser.parse_args()
Hi Helena, yep, separate xml files would be fine. I was first thinking about a single xml file having a select in the begin that allows to choose which of the functionalities to use (eg one option per subparser). But I guess the xml file might become quite large and unhandy. Cheers, Matthias On 28.05.2018 11:12, H. Rasche wrote:
Hi Matthias,
On 2018-05-28, Matthias Bernt wrote:
Hi Helena,
got it running, but I struggling with subparsers (the tools that I try to wrap basically only uses subparsers .. a lot of them). I adapted the example.py in your repo to include a subparser which seems to be excluded from the xml.
I call `python example.py --generate_galaxy_xml`
since `python example.py sub --generate_galaxy_xml` seems not to work.
Yeah, I never implemented support for subparsers. What sort of XML would you expect that to output? I think, to me, it feels like it should output multiple tool XMLs, one for each subparser.
Any suggestions?
Best, Matthias
On 28.05.2018 10:02, H. Rasche wrote:
Hey Matthias,
And let me know if you have any questions or bugs!
There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings
Cheers, Helena (@erasche)
On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
--
------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de
Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
# /usr/bin/python3 import argparse
parser = argparse.ArgumentParser(description='Process some integers.', prefix_chars='-+', epilog="here's some epilog text", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('keyword', metavar='Q', type=str, nargs=1, help='action keyword')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', '-s', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
parser.add_argument('--foo', nargs='?', help='foo help') parser.add_argument('--bar', nargs='*', default=[1, 2, 3], help='BAR!') parser.add_argument('--true', action='store_true', help='Store a true') parser.add_argument('--false', action='store_false', help='Store a false') parser.add_argument('--append', action='append', help='Append a value')
parser.add_argument('--nargs2', nargs=2, help='nargs2')
parser.add_argument('--mode', choices=['rock', 'paper', 'scissors'], default='scissors')
parser.add_argument('--version', action='version', version='2.0')
subparsers = parser.add_subparsers() subparser = subparsers.add_parser('sub', help='test subparser') subparser.add_argument('keyword', type=str) subparser.add_argument('--subtrue', action='store_true', help='Store a true')
args = parser.parse_args()
-- ------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
I've published version 0.4.4 which should fix that. Please upgrade and let me know. For now all of the output will be in a single (invalid, no single root element) XML file that will have multiple tools concatenated together. Cheers, Helena On 2018-05-28, Matthias Bernt wrote:
Hi Helena,
got it running, but I struggling with subparsers (the tools that I try to wrap basically only uses subparsers .. a lot of them). I adapted the example.py in your repo to include a subparser which seems to be excluded from the xml.
I call `python example.py --generate_galaxy_xml`
since `python example.py sub --generate_galaxy_xml` seems not to work.
Any suggestions?
Best, Matthias
On 28.05.2018 10:02, H. Rasche wrote:
Hey Matthias,
And let me know if you have any questions or bugs!
There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings
Cheers, Helena (@erasche)
On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
--
------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de
Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
# /usr/bin/python3 import argparse
parser = argparse.ArgumentParser(description='Process some integers.', prefix_chars='-+', epilog="here's some epilog text", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('keyword', metavar='Q', type=str, nargs=1, help='action keyword')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', '-s', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
parser.add_argument('--foo', nargs='?', help='foo help') parser.add_argument('--bar', nargs='*', default=[1, 2, 3], help='BAR!') parser.add_argument('--true', action='store_true', help='Store a true') parser.add_argument('--false', action='store_false', help='Store a false') parser.add_argument('--append', action='append', help='Append a value')
parser.add_argument('--nargs2', nargs=2, help='nargs2')
parser.add_argument('--mode', choices=['rock', 'paper', 'scissors'], default='scissors')
parser.add_argument('--version', action='version', version='2.0')
subparsers = parser.add_subparsers() subparser = subparsers.add_parser('sub', help='test subparser') subparser.add_argument('keyword', type=str) subparser.add_argument('--subtrue', action='store_true', help='Store a true')
args = parser.parse_args()
Hi Helena, Thanks for your efforts. Seems to work (somehow it worked only after resetting my venv). I also tested it for the tool I want to wrap :) Just an idea: making `python examples/example-sub.py foo --generate_galaxy_xml` `python examples/example-sub.py bar --generate_galaxy_xml` ... work, could be handy to create xml files for each subparser. Anyway, thanks a lot. Best, Matthias On 28.05.2018 18:23, H. Rasche wrote:
I've published version 0.4.4 which should fix that. Please upgrade and let me know.
For now all of the output will be in a single (invalid, no single root element) XML file that will have multiple tools concatenated together.
Cheers, Helena
On 2018-05-28, Matthias Bernt wrote:
Hi Helena,
got it running, but I struggling with subparsers (the tools that I try to wrap basically only uses subparsers .. a lot of them). I adapted the example.py in your repo to include a subparser which seems to be excluded from the xml.
I call `python example.py --generate_galaxy_xml`
since `python example.py sub --generate_galaxy_xml` seems not to work.
Any suggestions?
Best, Matthias
On 28.05.2018 10:02, H. Rasche wrote:
Hey Matthias,
And let me know if you have any questions or bugs!
There are a couple of things it won't do, but if you're looking to get 90% of the way from python script to tool interface, it will do that. It won't get you the last 10% of nice repeat blocks and sections and all of the things that help make galaxy tools more user-friendly. But this can still be a huge time savings
Cheers, Helena (@erasche)
On 2018-05-28, Björn Grüning wrote:
Hi Matthias,
check this one out: https://github.com/erasche/argparse2tool
Cheers, Bjoern
Am 28.05.2018 um 09:43 schrieb Matthias Bernt:
Dear list,
just a question for advice: I plan to wrap a python script (with lots of options) which uses the argparse library. I was wondering if somebody has an idea to generate the tool xml (semi-)automatically? For instance, by subclassing the formatter, parsing the python code, or parsing the command line...
Cheers, Matthias
___________________________________________________________ Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at: http://galaxyproject.org/search/
--
------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de
Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
# /usr/bin/python3 import argparse
parser = argparse.ArgumentParser(description='Process some integers.', prefix_chars='-+', epilog="here's some epilog text", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('keyword', metavar='Q', type=str, nargs=1, help='action keyword')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', '-s', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
parser.add_argument('--foo', nargs='?', help='foo help') parser.add_argument('--bar', nargs='*', default=[1, 2, 3], help='BAR!') parser.add_argument('--true', action='store_true', help='Store a true') parser.add_argument('--false', action='store_false', help='Store a false') parser.add_argument('--append', action='append', help='Append a value')
parser.add_argument('--nargs2', nargs=2, help='nargs2')
parser.add_argument('--mode', choices=['rock', 'paper', 'scissors'], default='scissors')
parser.add_argument('--version', action='version', version='2.0')
subparsers = parser.add_subparsers() subparser = subparsers.add_parser('sub', help='test subparser') subparser.add_argument('keyword', type=str) subparser.add_argument('--subtrue', action='store_true', help='Store a true')
args = parser.parse_args()
-- ------------------------------------------- Matthias Bernt Bioinformatics Service Molekulare Systembiologie (MOLSYB) Helmholtz-Zentrum für Umweltforschung GmbH - UFZ/ Helmholtz Centre for Environmental Research GmbH - UFZ Permoserstraße 15, 04318 Leipzig, Germany Phone +49 341 235 482296, m.bernt@ufz.de, www.ufz.de Sitz der Gesellschaft/Registered Office: Leipzig Registergericht/Registration Office: Amtsgericht Leipzig Handelsregister Nr./Trade Register Nr.: B 4703 Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer/Scientific Managing Director: Prof. Dr. Dr. h.c. Georg Teutsch Administrative Geschäftsführerin/ Administrative Managing Director: Prof. Dr. Heike Graßmann -------------------------------------------
participants (3)
-
Björn Grüning
-
H. Rasche
-
Matthias Bernt