This is first preview of the Incanter 2.0. This release incorporates the code implemented as part of the GSoC 2014 project "Incanter and core.matrix integration" done by Aleksandr Sorokoumov, aka Gerrrr. (For full list of changes made during GSoC, please look to wiki).
Please, note that this release includes only part of changes planned for Incanter 2.0
- Incanter now uses only core.matrix functions with
:vectorz
as default implementations. You can use another implementation by adding corresponding dependency to your project file & selecting implementation using theset-current-implementation
function. - Incanter's dataset is now based on the Dataset from core.matrix that supports both labeled columns & rows. Dataset is also a matrix now. Matrix functions work on datasets;
- Many functions are now deprecated in favor of corresponding functions from
core.matrix. These functions have
:deprecated
flag in meta-information, for full list please look to wiki.
incanter.core/matrix
called on seq will produce vector object instead of row-matrix;- Matrices are not treated as sequences anymore, so calling
first
,rest
,map
,reduce
,filter
, etc on matrices is not generally supported (although might still work on some implementations, e.g. clatrix). It's recommended to use corresponding functions from core.matrix; - API of the functions
decomp-cholesky
,decomp-svd
,decomp-eigenvalue
,decomp-lu
,decomp-qr
is changed to match core.matrix's implementation. See core.matrix wiki for more details; incanter.core/dataset
API is changed. Now it accepts column names and seq of rows, matrix, map of columns or seq of row maps as arguments;- For datasets, the consecutive integers (.e.g 0, 1, 2, ...) are now used as default column names;
incanter.core/sel
does not support automatic cast between strings and keywords anymore;- 2 arguments version of
incanter.core/col-names
removed. Please useclojure.core.matrix.dataset/select-columns
instead.
- Instead of using scripts to perform task in every subdirectory, you can now use
lein-sub
&lein-modules
plugins to do the same. Just executelein sub test
orlein modules install
to perform testing, or installing of every Incanter's module; - Clojure 1.6.0 is used.
kendalls-tau
now returns correct value.
incanter.stats/sample-wishart
throws error during execution;- For Clatrix-based implementations, it's not always possible to construct matrix from
result of
map
/filter
/...
median
returnsDouble/NaN
when it receives empty list (PR #263);sel
returns dataset when:rows :all
specified, independent on size/structure of the dataset (PR #259);- Fixed calculation of
kurtosis
(PR #260); - Fixed plots legend on
group-by
when repeated rows for the legend column are present (PR #253); - Fix for problems with gamma distribution (Issue #245);
- Fix for
rank-index
function (PR #261, #262).
- New functions in
incanter.charts
to work with series (PR #278):has-series?
- checks, does the chart have the series with given name;remove-series
- removes given series from chart;extend-line
- adds new data to existing series, or creates new series if it doesn't exist.
save-svg
can also accept theOutputStream
, not only the file name (PR #279).
- Fix the repl scripts (issue #215)
- Correctly handle
from-repo
parameter ofget-dataset
function - Correctly scale parameter in
sample-model-params
- Columns are explicitely casted to str in
read-dataset
- Correct different problems found by Eastwood lint tool
- Correctly handle missing values when using
log-axis
(issue #210) - BFGS minimization routine uses
gradient-fn
to estimatef-prime
when it is not provided. This also entailed changing gradient-fn to accept matrices as well as vectors. xy-plot
andtime-series-plot
modified to take into accountgroup-by
names correctly for legend labels (issue #216)draw
foruniform-distribution
uses specified min & max parameters- Correlation coefficient now 0.0 (not NaN) with constant vector
- Fix for linear model adjusted R-squared (issue #194)
- Catch divide by zero exceptions when calculating
rho-k
infmin-bfgs
- Correctly handle
:legend
fortime-series-plot
- Fix for
minus
for a single argument (issue #195) chisq-test
works correctly when:x
is one sample collection
- New functions in
incanter.core
:aggregate
performs the aggregation of data on given fields (issue #223)get-column-id
returns keyword version of column-key if convenient
- New functions in
incanter.stats
:- implementation of
gamma-coefficient
function concordant-pairs
function
- implementation of
read-dataset
now accepts the:comment-char
parameter that specifies the commentary character
- (issue #245) Incanter used the 'rate' as parameter name, although in reality this was a
'scale' parameter (https://en.wikipedia.org/wiki/Gamma_distribution). For
pdf-gamma
,cdf-gamma
&sample-gamma
functions the new parameter:scale
was introduced (equivalent to the old:rate
parameter), and:rate
parameter is now the1/:scale
...
Made an error during deployment of 1.5.3, so 1.5.4 was released to fix this problem. Don't use 1.5.3!
- Issue 183: the
pow
&atan2
functions weren't implemented for matrices & datasets. read-dataset
now converts empty fields tonil
, or user-supplied value (see Issue 182).- Documentation improvements.
- New functions in
incanter.charts
:set-point-size
to control size of points on scatter plots.
- New functions in
incanter.core
:rename-cols
allows to rename columns of datasetreplace-column
replaces data in column of dataset with new valuesadd-column
allows easier to add new column to datasetadd-derived-column
adds a column to a dataset that is a function of existing columnsmelt
implements part of functionality of R'smelt
function fromreshape
package.
- Issue 168: the
view
function wasn't defined forMatrix
class - Issue 161: maximal idx for slider wasn't correctly calculated
- The
sel
function onnil
was implemented, preventing from getting errors when there was no data specified in the$data
variable - Issue 169: metadata wasn't added to
ncol
&nrow
functions - Issue 164:
to-vect
was implemented only forMatrix
class, now it works with any support data type - Issue 165:
sel
returns a dataset even if result has one row, and we're selecting columns.
- Issue 166: You can use logarithmic axes (with different bases) in Incanter charts. See issue for more details
- Issue 157: when
transform-with
was used with Matrix, then source data was modified instead of working on copy of data - Issue 160: when 2-arguments version of
solve
was used, the exception was thrown
- incanter-core's matrix uses native BLAS through jBLAS/Clatrix - this greatly improves performance (on 64-bit Linux see "Known issues" section).
- several interpolation functions were added to incanter-core module (as
incanter.interpolation
namespace). - a new option is added to
heat-map
-:include-zero?
. - the
tail
function was added. - new function
reorder-columns
for a dataset that changes the order of appearance of the datset columns. It does not alter the row order. save
will print data to standard output if"-"
is specified as file name.sel
and other functions ($
,head
,tail
, etc.) can be used with lists (java.util.List
).- the
toeplitz
function was added to generate Toeplitz matrix for given vector. - the
scatter-plot-matrix
function was added toincanter.chart
module. incanter.optimize
was extended withminimize
andmaximise
functions for performing unconstrained nonlinear optimization using the BFGS algorithm.- the new
incanter.svg
module providessave-svg
function to output charts to SVG files. Includeincanter-svg
as dependency to use this functionality.
- for function & parametric plots, line is finished in max-range point.
- permutation matrix is returned in LU decomposition.
linear-model
now correctly calculates t-probs.- fixed division by zero in
linear-model
for some data.
sel
will return dataset when:rows
or:cols
are non-numbers - this changes previous behaviour when list was returned if only one row or col was specified.mult
&mmult
always return matrices, even if it's 1x1 matrix.
-
conj
'ing of matrix & vector doesn't work with new Clatrix - you can either usebind-rows
, or wrap vector into another vector:(def M (matrix [[0 1] [2 3] [4 5]])) (conj M [6 7]) ; => doesn't work (bind-rows M [6 7]) ; => works (conj M [[6 7]]) ; => works
-
decomp-qr
performs only full QR decomposition, and the:type
parameter is ignored. -
On 64-bit Linux you need to install libgfortran3 package. See jblas wiki for more details
- Clatrix: 0.3.0
- Clojure: 1.5.1
- JLine: 2.11
Major changes are:
- The
incanter.sql
module was added to allow load datasets from databases using ClojureQL. - Support for parametric plots in
incanter.chart
module - Bugfixes
Major changes are:
- Switch to Leiningen 2 for development
- Incanter-processing was removed. It's recommended to use Quil instead
- Updated versions of dependencies:
- Clojure: 1.4.0
- Parallelcolt: 0.10.0
math.combinatorics
: 0.0.3- Apache POI (for
incanter.excel
): 3.8 clj-time
: 0.4.4- Congomongo: 0.3.3
incanter.core/get-input-stream
&incanter.core/get-input-reader
are removed in favor ofinput-stream
&reader
fromclojure.java.io
- Many bugfixes -- thank you for all people who sent us pull requests!