Hey everyone. I am currently working on automating a SNP pipeline and need some help figuring out how to interface Python with GenomeStudio. I want to be able to pass input from a python script into GenomeStudio so that the entire analysis process can be automated and manual intervention is only required rarely. Does anyone have any experience with this? I've done a few Google searches and haven't come up with anything.
Thanks, Travis Couture
I've been in this scenario before, and if you have the choice of language, I'd recommend utilizing bash shell scripts (Unix/Linux) to create a pipeline workflow for your application. Python is notoriously difficult to use in multi-processing or alternative process applications, both since it has a global interpreter lock for multi-threading and also because Python is not usually the most efficient language for subprocessing.
That being said, here is the module you will have to use if you utilize Python: https://docs.python.org/3/library/subprocess.html
You'll likely also be familiar with the multiprocessing module.
Unfortunately I'm working in a Windows environment for this project. Could the same approach for bash be taken MS-DOS? If so where would I start. If not I will have to read up on the multiprocessing module. I am familiar with he subprocess module.
I called Illumina and they were no help. I am still researching this but I'm hoping someone out there can give me some direction.
Apologies for my vagueness - I don't have experience with your exact situation, but here are my thoughts:
I've used Python for this, but only in combination with other bash scripts on a Unix based OS. Python's subprocess methods work fine, but it's surely easier if you find a way to create and run bash scripts. There are several resources (though I don't have experience with them personally) for emulating bash on Windows if you decide to go that route.
Also, what kind of input does GenomeStudio expect? Theoretically, if the second application in the pipeline can read from
stdin
, simply have Python print the required input (this goes tostdout
) and the downstream application can capture this.Best of luck!