Repository: mahout Updated Branches: refs/heads/master 0381deb70 -> 1fca0743a
MAHOUT-1868: purge smile plot code from codebase. closes apache/mahout#238 Project: http://git-wip-us.apache.org/repos/asf/mahout/repo Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/1fca0743 Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/1fca0743 Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/1fca0743 Branch: refs/heads/master Commit: 1fca0743aa7ba9642a1cadfefb149fcba15770ac Parents: 0381deb Author: Andrew Palumbo <[email protected]> Authored: Wed Jun 1 00:22:25 2016 -0400 Committer: Andrew Palumbo <[email protected]> Committed: Wed Jun 1 00:22:25 2016 -0400 ---------------------------------------------------------------------- LICENSE.txt | 220 ------------------- examples/bin/spark-shell-plot.mscala | 123 ----------- .../org/apache/mahout/visualization/MGrid.scala | 63 ------ .../apache/mahout/visualization/MHisto.scala | 64 ------ .../apache/mahout/visualization/MHisto3d.scala | 63 ------ .../apache/mahout/visualization/MPlot2d.scala | 65 ------ .../apache/mahout/visualization/MPlot3d.scala | 63 ------ .../org/apache/mahout/visualization/MSurf.scala | 68 ------ .../mahout/visualization/MahoutPlot.scala | 53 ----- .../apache/mahout/visualization/package.scala | 126 ----------- spark/pom.xml | 5 - spark/src/main/assembly/dependency-reduced.xml | 1 - 12 files changed, 914 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/LICENSE.txt ---------------------------------------------------------------------- diff --git a/LICENSE.txt b/LICENSE.txt index c88e7c0..8ce7fff 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -799,223 +799,3 @@ The following license applies to the H2O package identification within third-party archives. Copyright 2012 0xdata, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -========================================================== -Smile Plot Library -========================================================== -The following applies to the Smile plot library: - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/examples/bin/spark-shell-plot.mscala ---------------------------------------------------------------------- diff --git a/examples/bin/spark-shell-plot.mscala b/examples/bin/spark-shell-plot.mscala deleted file mode 100644 index e7d79db..0000000 --- a/examples/bin/spark-shell-plot.mscala +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - - -// this is the only import needed -import org.apache.mahout.visualization._ - -val mxRnd = Matrices.symmetricUniformView(5000000, 2, 1234) -val drmRand = drmParallelize(mxRnd) - -val drmSin = drmRand.mapBlock() {case (keys, block) => - val blockB = block.like() - for (i <- 0 until block.nrow) { - blockB(i, 0) = block(i, 0) - blockB(i, 1) = Math.sin((block(i, 0) * 8)) - } - keys -> blockB -} -mplot2d(drmRand, samplePercent = .1) -mplot2d(drmSin, samplePercent = .1) - -// 3d scatter -import org.apache.mahout.visualization._ -val mxRnd3d = Matrices.symmetricUniformView(50000, 3, 1234) -val drmRand3d = drmParallelize(mxRnd3d) - -val drmGauss = drmRand3d.mapBlock() {case (keys, block) => - val blockB = block.like() - for (i <- 0 until block.nrow) { - val x: Double = block(i, 0) - val y: Double = block(i, 1) - val z: Double = block(i, 2) - - blockB(i, 0) = x - blockB(i, 1) = y - blockB(i, 2) = Math.exp(-((Math.pow(x, 2)) + (Math.pow(y, 2)))/2) - } - keys -> blockB -} - -mplot3d(drmGauss, samplePercent = 50) - -// 3d Surface needs to be ordered. --not working correctly as is -//import org.apache.mahout.visualization.MSurf` -// msurf(drmGauss, samplePercent = 10) - -// 3d "Matlab peaks" -import org.apache.mahout.visualization._ -val mxRnd3d = Matrices.symmetricUniformView(500000, 3, 1234) -val drmRand3d = drmParallelize(mxRnd3d) - -val drmPeaks = drmRand3d.mapBlock() {case (keys, block) => - val blockB = block.like() - for (i <- 0 until block.nrow) { - val x: Double = block(i, 0) - val y: Double = block(i, 1) - val z: Double = block(i, 2) - - blockB(i, 0) = x * 6 - blockB(i, 1) = y * 6 - blockB(i, 2) = 3 * Math.pow((1 - x), 2) * Math.exp(-Math.pow( (y + 1), 2)) - 10 * (.2 * x -Math.pow(x,3) - Math.pow(y, 5)) * Math.exp(- (Math.pow(x, 2) - Math.pow(y, 2))) - (1/3) * Math.exp(-(Math.pow((x+1),2) - Math.pow(y, 2))) - } - keys -> blockB -} - -mplot3d(drmPeaks, samplePercent = 10) - -// 3d Surface needs to be ordered. --not working correctly as is -import org.apache.mahout.visualization._ -// msurf(drmPeaks, samplePercent = 10) - - - -// 3d grid --not still not rendering -needs fix -//import org.apache.mahout.visualization.MGrid -val mxRnd3d = Matrices.symmetricUniformView(50000, 3, 1234) -val drmRand3d = drmParallelize(mxRnd3d) - -val drmGauss = drmRand3d.mapBlock() {case (keys, block) => - val blockB = block.like() - for (i <- 0 until block.nrow) { - val x: Double = block(i, 0) - val y: Double = block(i, 1) - val z: Double = block(i, 2) - - blockB(i, 0) = x - blockB(i, 1) = y - blockB(i, 2) = Math.exp(-((Math.pow(x, 2)) + (Math.pow(y, 2)))/2) - } - keys -> blockB -} - -// mgrid(drmGauss, samplePercent = 10) - - -// 2 and 3d histograms of gaussian data -import org.apache.mahout.visualization._ -val mxRnd3d = Matrices.gaussianView(50000, 3, 1234) -val drmRand3d = drmParallelize(mxRnd3d) - -// check out frequencies of the first column across 10 bins of original data. -mhisto(drmRand3d, 20, samplePercent = 50) - -// create a 3d-Histogram -val h3d = mhisto3d(drmRand3d, 10, samplePercent = 10) - -// export the canvas to the filesystem -h3d.exportPNG("/tmp/histo3d.png") - http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MGrid.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MGrid.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MGrid.scala deleted file mode 100644 index afd7384..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MGrid.scala +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.BorderLayout -import javax.swing.JFrame - -import org.apache.mahout.math.drm._ -import smile.plot._ - - -/** - * Create a grid plot of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXYZ(::,0), drmXYZ(::,1), drmXYZ(::,2)) - * - * @param drmXYZ an m x 3 Drm drm to plot - * @param samplePercent the percentage the drm to sample - * @tparam K - */ -class MGrid[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot{ - throw new NotImplementedError("This Class is not yet fully implemented.") - - val drmSize = drmXYZ.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXYZ, numSamples, replacement = false) - - // matrix rows - val m = mPlotMatrix.numRows() - - // roll a set of 3d points in an m x 3 drm into a m x m x 3 matrix. - val array3d: Array[Array[Array[Double]]] = mxXYZ2array3d(mPlotMatrix) - - canvas = Grid.plot(array3d) - canvas.setTitle("3d Grid Plot: " + samplePercent + " % sample of " + drmSize + " points") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("Grid Plot") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300, 300) - if (setVisible) { - plotFrame.setVisible(true) - } -} - http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto.scala deleted file mode 100644 index 30138e9..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto.scala +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.BorderLayout -import javax.swing.JFrame - -import org.apache.mahout.math.drm._ -import org.apache.mahout.math.scalabindings.RLikeOps._ -import smile.plot._ - - -/** - * Create a Histogram of bims of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXY(::,0),drmXY(::,1)) - * - * @param drmXY an m x 1 Drm Column, drm to plot - * @param numBins: number of bins - * @param samplePercent the percentage the drm to sample. Default =1 - * @tparam K - */ -class MHisto[K](drmXY: DrmLike[K], numBins: Int, samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot { - val drmSize = drmXY.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXY, numSamples, replacement = false) - val arrays = Array.ofDim[Double](mPlotMatrix.numRows()) - for (i <- 0 until mPlotMatrix.numRows()) { - arrays(i) = mPlotMatrix(i, 0) - } - - // just use bins during development, can define ranges etc later - canvas = Histogram.plot(arrays, numBins) - canvas.setTitle("2d Histogram: " + samplePercent + " % sample of " + drmSize +" points") - canvas.setAxisLabels("x_0", "frequency") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("2d Histogram") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300,300) - if (setVisible) { - plotFrame.setVisible(true) - } - -} http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto3d.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto3d.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto3d.scala deleted file mode 100644 index 952f97e..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MHisto3d.scala +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.BorderLayout -import javax.swing.JFrame - -import org.apache.mahout.math.drm._ -import org.apache.mahout.math.scalabindings.RLikeOps._ -import smile.plot._ - - -/** - * Create 3d Histogram of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXYZ(::,0), drmXYZ(::,1), drmXYZ(::,2)) - * - * @param drmXY an m x 3 Drm drm to plot - * @param numBins num bins to define histogram on - * @param samplePercent the percentage the drm to sample - * @tparam K - */ -class MHisto3d[K](drmXY: DrmLike[K],numBins: Int, samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot { - val drmSize = drmXY.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXY, numSamples, replacement = false) - val arrays: Array[Array[Double]] = Array.ofDim[Double](mPlotMatrix.numRows(), 2) - for (i <- 0 until mPlotMatrix.numRows()) { - arrays(i)(0) = mPlotMatrix(i, 0) - arrays(i)(1) = mPlotMatrix(i, 1) - } - - canvas = Histogram3D.plot(arrays, Palette.jet(256, 1.0f)) - canvas.setTitle("3d Histogram: " + samplePercent + " % sample of " + drmSize + " points") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("3d Histogram") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300, 300) - if (setVisible) { - plotFrame.setVisible(true) - } -} - http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot2d.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot2d.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot2d.scala deleted file mode 100644 index 9810af1..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot2d.scala +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.{BorderLayout, Color} -import javax.swing.JFrame - -import org.apache.mahout.math._ -import scalabindings._ -import RLikeOps._ -import drm._ -import smile.plot._ - - -/** - * Create a scatter plot of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXY(::,0),drmXY(::,1)) - * - * @param drmXY an m x 2 Drm drm to plot - * @param samplePercent the percentage the drm to sample - * @tparam K - */ -class MPlot2d[K](drmXY: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot { - val drmSize = drmXY.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXY, numSamples, replacement = false) - val arrays: Array[Array[Double]] = Array.ofDim[Double](mPlotMatrix.numRows(), 2) - for (i <- 0 until mPlotMatrix.numRows()) { - arrays(i)(0) = mPlotMatrix(i, 0) - arrays(i)(1) = mPlotMatrix(i, 1) - } - - canvas = ScatterPlot.plot(arrays, Color.BLUE) - canvas.setTitle("2d scatter Plot: " + samplePercent + " % sample of " + drmSize +" points") - canvas.setAxisLabels("x_0", "x_1") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("2d scatter Plot") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300,300) - if (setVisible) { - plotFrame.setVisible(true) - } - -} http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot3d.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot3d.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot3d.scala deleted file mode 100644 index ba2ba59..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MPlot3d.scala +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.{BorderLayout, Color} -import javax.swing.JFrame - -import org.apache.mahout.math.drm._ -import org.apache.mahout.math.scalabindings.RLikeOps._ -import smile.plot._ - - -/** - * Create a scatter plot of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXYZ(::,0), drmXYZ(::,1), drmXYZ(::,2)) - * - * @param drmXYZ an m x 3 Drm drm to plot - * @param samplePercent the percentage the drm to sample - * @tparam K - */ -class MPlot3d[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot { - val drmSize = drmXYZ.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXYZ, numSamples, replacement = false) - val arrays: Array[Array[Double]] = Array.ofDim[Double](mPlotMatrix.numRows(), 3) - for (i <- 0 until mPlotMatrix.numRows()) { - arrays(i)(0) = mPlotMatrix(i, 0) - arrays(i)(1) = mPlotMatrix(i, 1) - arrays(i)(2) = mPlotMatrix(i, 2) - } - - canvas = ScatterPlot.plot(arrays, Color.RED) - canvas.setTitle("3d scatter Plot: " + samplePercent + " % sample of " + drmSize + " points") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("3d scatter Plot") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300, 300) - if (setVisible) { - plotFrame.setVisible(true) - } -} - http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MSurf.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MSurf.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MSurf.scala deleted file mode 100644 index 397cb7c..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MSurf.scala +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.mahout.visualization - -import java.awt.BorderLayout -import javax.swing.JFrame - -import org.apache.mahout.math.drm._ -import org.apache.mahout.math.scalabindings.RLikeOps._ -import smile.plot._ - - - -/** - * Create a s surface plot of a DRM by sampling a given percentage - * and plotting corresponding points of (drmXYZ(::,0), drmXYZ(::,1), drmXYZ(::,2)) - * - * @param drmXYZ an m x 3 Drm drm to plot - * @param samplePercent the percentage the drm to sample - * @tparam K - */ -class MSurf[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true) extends MahoutPlot { - throw new NotImplementedError("This Class is not yet fully implemented.") - - - val drmSize = drmXYZ.checkpoint().numRows() - val sampleDec: Double = samplePercent / 100.toDouble - - val numSamples: Int = (drmSize * sampleDec).toInt - - mPlotMatrix = drmSampleKRows(drmXYZ, numSamples, replacement = false) - - val arrays: Array[Array[Double]] = Array.ofDim[Double](mPlotMatrix.numRows(), 3) - for (i <- 0 until mPlotMatrix.numRows()) { - arrays(i)(0) = mPlotMatrix(i, 0) - arrays(i)(1) = mPlotMatrix(i, 1) - arrays(i)(2) = mPlotMatrix(i, 2) - } - - canvas = Surface.plot(arrays, Palette.jet(256, 1.0f)) - canvas.setTitle("Surface Plot: " + samplePercent + " % sample of " + drmSize +" points") - - plotPanel = new PlotPanel(canvas) - - plotFrame = new JFrame("Surface Plot") - plotFrame.setLayout(new BorderLayout()) - plotFrame.add(plotPanel) - plotFrame.setSize(300, 300) - if (setVisible) { - plotFrame.setVisible(true) - } - -} http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/MahoutPlot.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/MahoutPlot.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/MahoutPlot.scala deleted file mode 100644 index 8688a3d..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/MahoutPlot.scala +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package org.apache.mahout.visualization - -import java.awt.Graphics2D -import java.awt.image.BufferedImage -import java.io.File -import javax.imageio.ImageIO -import javax.swing.JFrame - -import org.apache.mahout.math.Matrix -import smile.plot.{PlotCanvas, PlotPanel} - - -trait MahoutPlot { - - var canvas : PlotCanvas = _ - var plotPanel: PlotPanel = _ - var plotFrame: JFrame = _ - var mPlotMatrix: Matrix = _ - def contentPane = canvas - - // export a PNG of the plot to /tmp/test.png - def exportPNG(path: String ="/tmp/test.png") = { - val bi: BufferedImage = - new BufferedImage(contentPane.getWidth, contentPane.getHeight, BufferedImage.TYPE_INT_ARGB) - - val g2d: Graphics2D = bi.createGraphics - - contentPane.printAll(g2d) - - val file: File = new File(path) - - ImageIO.write(bi, "PNG", file) - } - -} http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/math-scala/src/main/scala/org/apache/mahout/visualization/package.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/visualization/package.scala b/math-scala/src/main/scala/org/apache/mahout/visualization/package.scala deleted file mode 100644 index 0c798b7..0000000 --- a/math-scala/src/main/scala/org/apache/mahout/visualization/package.scala +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.mahout - - -import org.apache.mahout.math._ -import org.apache.mahout.math.drm.{DrmLike, _} -import org.apache.mahout.math.scalabindings.RLikeOps._ -import org.apache.mahout.math.scalabindings._ - - -package object visualization { - - /** - * Roll a set of datapoints in a mx3 matrix into a 3D Array()()() - * - * @param mxXYZ Matrix of data points x_0 = mx(i,0), x_1 = mx(i,1), x_2 = mx(i,2) - * @return an Array[Array[Array[Double]]] 3d Array - */ - def mxXYZ2array3d(mxXYZ: Matrix): Array[Array[Array[Double]]] = { - - // number of datapoints - val m = mxXYZ.numRows() - - // 3d array to return - val array3d: Array[Array[Array[Double]]] = Array.ofDim[Double](m, m, 3) - // roll a set of 3d points in an m x 3 matrix into a m x m x 3 Array. - //TODO: FIX this: - for (i <- 0 until m) { - for (j <- 0 until m) { - for (k <- 0 until 3) { - array3d(i)(j)(k) = mxXYZ(i, k) - } - } - } - array3d - } - - /** - * Not enabled in Mahout 0.12.1 Will be finished in Mahout 0.13.0 - * Syntatic sugar for MSurf class - * @param drmXYZ - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - // Disable for Mahout 0.12.1 finish in Mahout 0.13.0 - // def msurf[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - // new MSurf[K](drmXYZ: DrmLike[K], samplePercent, setVisible) - - /** - * Syntatic sugar for MPlot2d class - * @param drmXY - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - def mpot2d[K](drmXY: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - new MPlot2d[K](drmXY: DrmLike[K], samplePercent, setVisible) - - /** - * Syntatic sugar for MPlot3d class - * @param drmXYZ - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - def mplot3d[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - new MPlot3d[K](drmXYZ: DrmLike[K], samplePercent, setVisible) - - /** - * Not enabled in Mahout 0.12.1 Will be finished in Mahout 0.13.0 - * Syntatic sugar for MGrid class - * @param drmXYZ - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - // Disable for Mahout 0.12.1 finish in Mahout 0.13.0 - // def mgrid[K](drmXYZ: DrmLike[K], samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - // new MGrid[K](drmXYZ: DrmLike[K], samplePercent, setVisible) - - /** - * - * @param drmX - * @param numBins - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - def mhisto[K](drmX: DrmLike[K], numBins: Int, samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - new MHisto[K](drmX: DrmLike[K], numBins, samplePercent, setVisible) - - /** - * - * @param drmXY - * @param numBins - * @param samplePercent - * @param setVisible - * @tparam K - * @return - */ - def mhisto3d[K](drmXY: DrmLike[K], numBins: Int, samplePercent: Double = 1, setVisible: Boolean = true): MahoutPlot = - new MHisto3d[K](drmXY: DrmLike[K], numBins, samplePercent, setVisible) - - -} http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/spark/pom.xml ---------------------------------------------------------------------- diff --git a/spark/pom.xml b/spark/pom.xml index c41817d..3dbe496 100644 --- a/spark/pom.xml +++ b/spark/pom.xml @@ -171,11 +171,6 @@ <scope>test</scope> </dependency> - <dependency> - <groupId>com.github.haifengl</groupId> - <artifactId>smile-plot</artifactId> - <version>1.1.0</version> - </dependency> <!-- 3rd-party --> http://git-wip-us.apache.org/repos/asf/mahout/blob/1fca0743/spark/src/main/assembly/dependency-reduced.xml ---------------------------------------------------------------------- diff --git a/spark/src/main/assembly/dependency-reduced.xml b/spark/src/main/assembly/dependency-reduced.xml index 660d031..a3044da 100644 --- a/spark/src/main/assembly/dependency-reduced.xml +++ b/spark/src/main/assembly/dependency-reduced.xml @@ -42,7 +42,6 @@ <include>com.tdunning:t-digest</include> <include>org.apache.commons:commons-math3</include> <include>it.unimi.dsi:fastutil</include> - <include>com.github.haifengl:smile-plot</include> </includes> </dependencySet> </dependencySets>
