<div dir="ltr"><div><div><div><div><div>Good.<br></div>But wasn't the error message about null rows already displayed without calling tracebak()?<br></div>It should have appeared at the end of the messages after the call to nmf().<br>
<br></div>Generally, it is good practice to perform a plain single test run of nmf on the data, before launching bigger estimations.<br></div>e.g., in your case, the following should have given you a quick taste of the error:<br>
<br></div>dummy <- nmf(x, 2, maxIter=20)<br><div><br><br></div><div>Renaud</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/3/18 Gordon Robertson <span dir="ltr"><<a href="mailto:grobertson@bcgsc.ca" target="_blank">grobertson@bcgsc.ca</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Thank you.  traceback() pointed to the problem: </div><div>...</div><div><div>    }("[r=2] -> NMF::nmf - 30/30 fit(s) threw an error.\n# Error(s) thrown:\n  - run #1: NMF::nmf -<font color="#e32400"> Input matrix x contains at least one null row</font>.", </div>
<div>        "[r=3] -> NMF::nmf - 30/30 fit(s) threw an error.\n# Error(s) thrown:\n  - run #1: NMF::nmf - Input matrix x contains at least one null row.", </div><div>        "[r=4] -> NMF::nmf - 30/30 fit(s) threw an error.\n# Error(s) thrown:\n  - run #1: NMF::nmf - Input matrix x contains at least one null row.", </div>
<div>        "[r=5] -> NMF::nmf - 30/30 fit(s) threw an error.\n# Error(s) thrown:\n  - run #1: NMF::nmf - Input matrix x contains at least one null row.", </div><div>        "[r=6] -> NMF::nmf - 30/30 fit(s) threw an error.\n# Error(s) thrown:\n  - run #1: NMF::nmf - Input matrix x contains at least one null row.")</div>
<div><br></div><div>Sure enough, there were two miRs (rows) with zero values in all samples. I'd probably seen them in setting up the original run, but was going quickly… </div><div><br></div><div>When I deleted the rows, I was able to run the nmf command on the matrix (35 data rows, 66 samples):</div>
<div class="im"><div>>res <- nmf(x, 2:6, .opt='v9')</div></div><div>...</div><div>…</div><div><div># libPaths:</div><div>   /Library/Frameworks/R.framework/Versions/2.15/Resources/library</div><div>Runs:  1  32 4 5 6 7 8* 11* 13* 10* 16* 12* 14* 15 9* 19 18 21* 24* 20 27 22** 17* 23 26 30 29 28 25* ... DONE</div>
<div># Processing partial results ... OK</div><div>System time:</div><div>   user  system elapsed </div><div> 46.820   1.128   8.759 </div><div>## Cleaning up ... </div><div># Restoring NMF options ... OK</div><div># Restoring foreach backend ... OK</div>
<div># Updating RNG settings ... OK</div><div># RNG kind:  Mersenne-Twister / Inversion </div><div># RNG state: 403L, 2L, ..., 270725601L [84247f48b334857a5b8c4b029d25909b] </div><div># Deleting directory './NMF_20f56511e3f' ... OK</div>
<div>+ measures ... OK</div></div><div>>plot(res)</div><div><br></div><div>How should NMF handle such cases? The docs likely warn against submitting zero-valued rows, and I typically never do, but this was a test case in which I was running with a selected subset of miRs. </div>
<div><br></div><div>Thanks again!</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Gordon</div></font></span><div><div class="h5"><div>
<div style="word-wrap:break-word"><div style="word-wrap:break-word"><br></div></div>
</div>
<br><div><div>On 2013-03-18, at 4:05 AM, Renaud Gaujoux wrote:</div><br><blockquote type="cite"><div dir="ltr"><div><div><div><div><div>Could you please post some reproducible example (commands, output of errors, traceback and sessionInfo)?<br>
</div>This will simplify tracing the issue.<br></div><div>If confidentiality is an issue, email only to me.<br>
<br></div>e.g.:<br><br></div># run NMF<br></div>res <- nmf(x, 2:6, .opt='v9')<br></div>traceback()<br>sessionInfo()<br><div><br></div><div>Thank you.<br></div><div>Renaud<br></div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">2013/3/18 Gordon Robertson <span dir="ltr"><<a href="mailto:grobertson@bcgsc.ca" target="_blank">grobertson@bcgsc.ca</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word">Renaud,<div><br></div><div>Thanks for clarifying this.</div><div><br></div><div>I asked because I tried to run NMF on a miRNA-seq abundance matrix that had 66 samples (columns) and only a small set of miRs (rows), say 20 miRs. I've used NMF routinely for larger miRNA-seq data matrices for some time (using 200-300 miRs), including on a 300-miR matrix for the same samples, but this time the survey returned only errors. I was able to get results from Matt Wilkerson's Consensus Cluster Plus package. I'll look more carefully at what happens to the NMF runs as I progressively remove miRs. </div>

<div><span><font color="#888888"><br></font></span><div><span><font color="#888888">G</font></span><div><div><br><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">

<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">

<br></div></span></div></span></span>
</div>
<br><div><div>On 2013-03-18, at 12:55 AM, Renaud Gaujoux wrote:</div><br><blockquote type="cite"><div dir="ltr"><div><div><div>Hi,<br><br></div>no, all genes/features are included in each run. What changes is the seed, i.e. starting point, which is different and randomly generated at each run.<br>

<br></div>Standard consensus clustering analysis would use a different set of _samples_ for each run. This is fine for evaluating the accuracy/stability of classification, but makes it difficult to link features to sample groups, since each run (vote) returns a somehow different set of component-specific feature: what set of features or basis components should be used? average? consensus?<br>


</div><div>Would be nice to incorporate a function/option to  easily perform such analysis though.<br></div><div><br></div>There is still some methodology to be developed around this point. A technical issue also arise in term of memory/speed, if one wants to compute complete feature consensus matrices.<br>


<div>I am happy to hear/discuss on this.<br></div><div>My time is currently very limited, although bringing the package back to CRAN is quite high on my todo list.<br><br></div><div>Renaud<br></div><div><br></div></div><div class="gmail_extra">


<br><br><div class="gmail_quote">2013/3/14 Gordon Robertson <span dir="ltr"><<a href="mailto:grobertson@bcgsc.ca" target="_blank">grobertson@bcgsc.ca</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div style="word-wrap:break-word"><div>From what I understand, in each iteration (of, say, 200) in a run, a random subset of genes is used. Is it possible to set the fractional value retained, e.g. 0.90, 0.95? </div><div>


Thanks,</div><div>G</div><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">


<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">


--</div><div style="word-wrap:break-word">Gordon Robertson<br>Michael Smith Genome Sciences Centre</div><div style="word-wrap:break-word">BC Cancer Agency<br>Vancouver BC Canada<br><a href="http://www.bcgsc.ca/" target="_blank">www.bcgsc.ca</a><br>


<br></div></span></div></span></span>
</div>
<br></div><br>_______________________________________________<br>
nmf-user mailing list<br>
<a href="mailto:nmf-user@lists.r-forge.r-project.org" target="_blank">nmf-user@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/nmf-user" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/nmf-user</a><br></blockquote></div><br><br clear="all"><br>-- <br>


<pre cols="72">Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa</pre>
</div>
</blockquote></div><br></div></div></div></div></div></blockquote></div><br><br clear="all"><br>-- <br><pre cols="72">Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa</pre>
</div>
</blockquote></div><br></div></div></div></div></blockquote></div><br><br clear="all"><br>-- <br><pre cols="72">Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa</pre>
</div>