I don't have IntelliJ at my disposal, but I'll check the code for tab usage.

Regarding the concept key issue: the frontend only passes the concept paths to the backend for those concepts that have been selected by the user when starting an advanced analysis. I think this holds for all analyses not only for acgh or rnaseq. Maybe this is not the right approach and instead concept keys should have been passed, but currently this is not the case. I don't know if and where in the frontend these concept keys are stored and how to pass them to the backend. Furthermore, I think this should then be a refactoring effort, so it's done in the same manner for all analyses. This would also imply refactoring of the backend, because I think that parts of the backend (e.g. clinical data export) also rely on concept paths being passed, not concept keys.
As you can guess, I'm hesitant to create a different solution for passing concept information from the frontend to the backend for acgh or rnaseq analyses only.

I'm not completely sure what you mean:
>> The condition is also strange. Are there conceptKeys sent that don't start with \ followed by different characters.

The assumption was that concept paths look like one or more repeating groups of \ followed by at least one non-\ character and ends with a \ ==> ^(\\[^\\]+)+\\$
Maybe it's better to change the matcher to '^\\[^\\]+' to ensure it doesn't match a concept path starting with 2 backslashes.