milaboratory / mixcr

MiXCR is an ultimate software platform for analysis of Next-Generation Sequencing (NGS) data for immune profiling.
https://mixcr.com
Other
332 stars 79 forks source link

informative/progress messages printed to STDERR instead of STDOUT #166

Closed carandraug closed 6 years ago

carandraug commented 8 years ago

While running, mixcr prints some of the messages about progress to STDERR instead of STDOUT. I can submit a patch to fix this, but this seems to be done on purpose although I can't understand why.

dbolotin commented 7 years ago

Hi, sorry for the late response. Originally this was made to allow different kinds of piping (like piping align output directly to assemble action, or something like this). Unfortunately, piping to assemble action is impossible as assemble action reads original vdjca file twice (one for core clonotypes assembly and one for low quality mapping), but still, it is practically possible for example to pipe align action output to exportAlignments.

Like this (this doesn't work, but can easily be implemented):

mixcr align input_R1.fastq input_R2.fastq | mixcr exportAlignments - -

For me it seems like it can be handy in some cases. It would be great to hear your thoughts on this matter.

carandraug commented 7 years ago

I didn't realize that there were plans to make it work with pipes. Indeed, such usage would be very nice and would suit my case perfectly. I would be able to do:

%-clones.txt: %-R1.fastq %-R2.fastq
    mixcr align $^ | mixcr assemble | mixcr exportClones > $@

instead of:

%-clones.txt: %-R1.fastq %-R2.fastq
    mixcr align $^ $*.vdjca > /dev/null
    mixcr assemble $*.vdjca $*.clns  > /dev/null
    mixcr exportClones $*.clns $@  > /dev/null
    $(RM) $*.vdjca $*.clns

On the other hand, I can see how that would be more work for you and I am unsure of how many people would appreciate being able to use pipes.

Whatever way you go, it would be nice to also have options to control that output, either a --progress option (since --verbose is already taken) or a --quiet option.

Something like this two options:

PoslavskySV commented 6 years ago

12