SofieVG / FlowSOM

Using self-organizing maps for visualization and interpretation of cytometry data
61 stars 26 forks source link

ReadInput/AddFlowframe: doc #17

Open SamGG opened 5 years ago

SamGG commented 5 years ago

Hi. To be more precise, when no compensation matrix is given, but compensation is wanted (compensate = TRUE), the spillover matrix is searched in the first flowFrame (or FCS file), and the next flowFrames (or FCS files) will be compensated with this spillover matrix, not their own. To be short, the compensation matrix of the flowSOM object is the one of the first FCS, and all added FCS are compensated with it. https://github.com/SofieVG/FlowSOM/blob/7d1fcfc45c43b6a5b3d43d1d61f7231bacf91f7a/R/1_readInput.R#L10-L13 https://github.com/SofieVG/FlowSOM/blob/7d1fcfc45c43b6a5b3d43d1d61f7231bacf91f7a/R/1_readInput.R#L130-L163 L135 ... and spillover matrix instantiated (?) Thanks for reviewing my comments. Best.

SamGG commented 5 years ago

Hi. I just have noticed that you updated the code https://github.com/SofieVG/FlowSOM/commit/fff3982c068ba1d8d3f31a83c00364a3c5eb66cd. That's fine, but you are the developer and don't have to follow any wish. Thanks. Because of this new behavior of FlowSOM, I was a little bit worried about the mapping of new data. I reviewed the code in that view, and I am pretty sure you already did, but I will appreciate if you could check again the impact of the absence of the spillover in the FlowSOM object when mapping new data to it. I think that the code should check that the spillover argument is a matrix at https://github.com/SofieVG/FlowSOM/blob/fff3982c068ba1d8d3f31a83c00364a3c5eb66cd/R/1_readInput.R#L164-L166 Best.

SofieVG commented 5 years ago

Hi, thank you very much for your input! I thought with the last update to the code, I addressed the issue you specified before: If spillover is NULL en compensate is TRUE, we will always look for the file-specific one, instead of accidentally reusing the first one. Alternatively, if spillover is not NULL, the given value (indeed assumed to be a matrix, I can add the check) will be used. For the NewData function, the spillover argument that is passed to this function call will have precedence: if this contains a matrix, this is used. If it is NULL, I assume the user wants to do the same as in the original FlowSOM call, i.e. using the specified matrix value from that spillover argument, or if it was NULL in the original call as well, we look for the spillover matrix identified in the file.

Could you explain clearer to me what you think is going wrong in the current version of the code? I am not sure if I understand your last remark.

Best, Sofie

SamGG commented 5 years ago

Nothing's wrong with the current code. I checked your first point and agreed. I wanted to be absolutely sure about how NewData will manage flowFrame when compensate is TRUE but spillover is NULL. The 3rd point is an addendum in order to verify that the argument passed to spillover is of class "matrix" in the same way it is done a few lines above and to throw an error if it is not. https://github.com/SofieVG/FlowSOM/blob/fff3982c068ba1d8d3f31a83c00364a3c5eb66cd/R/1_readInput.R#L148 Best.

rogerswt commented 5 years ago

Dear Sophie, Many thanks for FlowSOM! I'm very excited to use it. I am having trouble with the method AddFlowFrame(). Specifically, the function doesn't appear to exist. I've just updated R to the latest stable version, 3.6.0, and installed FlowSOM v1.16.0 using BiocManager::install("FlowSOM"). I have done extensive pre-processing (compensation, transformation, and pre-gating) on my data outside of FlowSOM, and everything is held in a flowSet. I built a FlowSOM object on an aggregated and sampled subset of the data (for efficiency) and now would like to add back all of the original data. It seemed like AddFlowFrame could be used iteratively for each frame of the flowSet. However, it does not appear that the function AddFlowFrame() exists. Could you let me know if I'm doing something wrong or if you have any suggestions? Many thanks again! Wade

SofieVG commented 5 years ago

Dear Wade,

The AddFlowframe function is an internal function (if need be, accessible by FlowSOM::: AddFlowframe), which is used when reading the initial dataset for training. In the case you are describing, you want to use the NewData function instead, which will take the original model and a flowframe as input and map all the cells to the right clusters, compute the updates MFIs etc. If you have many files, this allows you to map every file one by one and only keep track of the counts/percentages per cluster without ever needing to keep all the data in memory at once.

I hope this helps, let me know if you have any other questions.

Kind regards, Sofie

On Mon, 13 May 2019, 22:05 Wade Rogers, notifications@github.com wrote:

Dear Sophie, Many thanks for FlowSOM! I'm very excited to use it. I am having trouble with the method AddFlowFrame(). Specifically, the function doesn't appear to exist. I've just updated R to the latest stable version, 3.6.0, and installed FlowSOM v1.16.0 using BiocManager::install("FlowSOM"). I have done extensive pre-processing (compensation, transformation, and pre-gating) on my data outside of FlowSOM, and everything is held in a flowSet. I built a FlowSOM object on an aggregated and sampled subset of the data (for efficiency) and now would like to add back all of the original data. It seemed like AddFlowFrame could be used iteratively for each frame of the flowSet. However, it does not appear that the function AddFlowFrame() exists. Could you let me know if I'm doing something wrong or if you have any suggestions? Many thanks again! Wade

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/SofieVG/FlowSOM/issues/17?email_source=notifications&email_token=AAOS7223O5GYPTTZY6ZQHDLPVHCYTA5CNFSM4FWJ53YKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVJM5SA#issuecomment-491966152, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOS723DHN5HPW3DZCMHUZDPVHCYTANCNFSM4FWJ53YA .

rogerswt commented 5 years ago

Many thanks Sofie. Will give it a go! Cheers, Wade