From 95cc8134de1b282b6a32f656caa4fd000fa42393 Mon Sep 17 00:00:00 2001
From: "Michael K. Borregaard"
Date: Wed, 28 Sep 2016 14:08:41 +0200
Subject: [PATCH] clean up after name changel
---
.gitignore | 4 -
.travis.yml | 2 +-
LICENSE.md | 2 +-
REQUIRE | 3 +-
appveyor.yml | 4 +-
...g SpatialEcology plotting-checkpoint.ipynb | 424 +++
doc/Testing SpatialEcology plotting.ipynb | 2550 +----------------
mamob.jld | Bin 0 -> 12183070 bytes
scratch.jl | 2 +-
src/SpatialEcology.jl | 12 +-
test/runtests.jl | 4 +-
11 files changed, 549 insertions(+), 2458 deletions(-)
create mode 100644 doc/.ipynb_checkpoints/Testing SpatialEcology plotting-checkpoint.ipynb
create mode 100644 mamob.jld
diff --git a/.gitignore b/.gitignore
index ed02b30..1face5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,4 @@
*.jl.cov
*.jl.*.cov
*.jl.mem
-*.DS_Store
-.DS_Store
-.DS_Store
-
.DS_Store
diff --git a/.travis.yml b/.travis.yml
index 42c6332..566776d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,4 +11,4 @@ notifications:
# uncomment the following lines to override the default test script
#script:
# - if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
-# - julia -e 'Pkg.clone(pwd()); Pkg.build("MacroEcology"); Pkg.test("MacroEcology"; coverage=true)'
+# - julia -e 'Pkg.clone(pwd()); Pkg.build("SpatialEcology"); Pkg.test("SpatialEcology"; coverage=true)'
diff --git a/LICENSE.md b/LICENSE.md
index 4ed9e80..d2c10da 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,4 +1,4 @@
-The MacroEcology.jl package is licensed under the MIT "Expat" License:
+The SpatialEcology.jl package is licensed under the MIT "Expat" License:
> Copyright (c) 2016: Michael K. Borregaard.
>
diff --git a/REQUIRE b/REQUIRE
index aa74eac..16f8249 100644
--- a/REQUIRE
+++ b/REQUIRE
@@ -4,4 +4,5 @@ RecipesBase
NamedArrays
Shapefile
DataFrames
-Bio
+Reexport
+#Bio
diff --git a/appveyor.yml b/appveyor.yml
index f802535..8dbe879 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -28,7 +28,7 @@ build_script:
# Need to convert from shallow to complete for Pkg.clone to work
- IF EXIST .git\shallow (git fetch --unshallow)
- C:\projects\julia\bin\julia -e "versioninfo();
- Pkg.clone(pwd(), \"MacroEcology\"); Pkg.build(\"MacroEcology\")"
+ Pkg.clone(pwd(), \"SpatialEcology\"); Pkg.build(\"SpatialEcology\")"
test_script:
- - C:\projects\julia\bin\julia --check-bounds=yes -e "Pkg.test(\"MacroEcology\")"
+ - C:\projects\julia\bin\julia --check-bounds=yes -e "Pkg.test(\"SpatialEcology\")"
diff --git a/doc/.ipynb_checkpoints/Testing SpatialEcology plotting-checkpoint.ipynb b/doc/.ipynb_checkpoints/Testing SpatialEcology plotting-checkpoint.ipynb
new file mode 100644
index 0000000..ee02c12
--- /dev/null
+++ b/doc/.ipynb_checkpoints/Testing SpatialEcology plotting-checkpoint.ipynb
@@ -0,0 +1,424 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": []
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "using SpatialEcology\n",
+ "using JLD\n",
+ "mam = load(\"/Users/michael/.julia/v0.5/SpatialEcology/mamob.jld\", \"mam\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Assemblage with 981872 records of 5162 species in 17535 sites\n",
+ "\n",
+ "Species names:\n",
+ "Abditomys_latidens, Abeomelomys_sevia, Abrawayaomys_ruschii...Zyzomys_pedunculatus, Zyzomys_woodwardi\n",
+ "\n",
+ "Site names:\n",
+ "1, 2, 3...17534, 17535\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Plots.PlotlyJSBackend()"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "using Plots; plotlyjs()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: Method definition convert_to_image(AbstractArray{T<:Any, 1}, SpatialEcology.Assemblage{#G<:Any, #T<:Any}) in module Main at In[28]:3 overwritten at In[33]:3.\n",
+ "WARNING: Method definition convert_to_image(AbstractArray{T<:Any, 1}, Any) in module Main at In[28]:6 overwritten at In[33]:6.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "convert_to_image (generic function with 2 methods)"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Make this a type recipe\n",
+ "\n",
+ "convert_to_image{G <: Any, T <: Any}(var::AbstractVector, asm::Assemblage{G, T}) = convert_to_image(var, asm.site)\n",
+ "\n",
+ "function convert_to_image(var::AbstractVector, grd)\n",
+ " x = Matrix{Float64}(reverse(cells(grd))...)\n",
+ " fill!(x, NaN)\n",
+ " xind, yind = grd.indices[:,1], grd.indices[:,2] #since matrices are probably drawn from upper left corner\n",
+ " [x[yind[i], xind[i]] = val for (i, val) in enumerate(var)]\n",
+ " x\n",
+ "end \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "x = convert_to_image(richness(mam), mam.site)\n",
+ "col = cgrad(reverse(cgrad(:heat).colors))\n",
+ "heatmap(x, aspect_ratio = :equal, grid = false, color = col) #so far only works in plotlyjs()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Plots.GLVisualizeBackend()"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "glvisualize()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: get_screens not defined\nwhile loading In[48], in expression starting on line 1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: get_screens not defined\nwhile loading In[48], in expression starting on line 1",
+ "",
+ " in _create_backend_figure(::Plots.Plot{Plots.GLVisualizeBackend}) at /Users/michael/.julia/v0.5/Plots/src/backends/glvisualize.jl:130",
+ " in _plot_setup(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Array{Dict{Symbol,Any},1}) at /Users/michael/.julia/v0.5/Plots/src/pipeline.jl:216",
+ " in _plot!(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Tuple{Array{Float64,2}}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:184",
+ " in (::Plots.#kw##plot)(::Array{Any,1}, ::Plots.#plot, ::Array{Float64,2}) at ./:0",
+ " in #heatmap#346(::Array{Any,1}, ::Function, ::Array{Float64,2}, ::Vararg{Array{Float64,2},N}) at /Users/michael/.julia/v0.5/Plots/src/Plots.jl:152",
+ " in heatmap(::Array{Float64,2}, ::Vararg{Array{Float64,2},N}) at /Users/michael/.julia/v0.5/Plots/src/Plots.jl:152"
+ ]
+ }
+ ],
+ "source": [
+ "heatmap(x) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "using Plots"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: get_screens not defined\nwhile loading In[49], in expression starting on line 1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: get_screens not defined\nwhile loading In[49], in expression starting on line 1",
+ "",
+ " in _create_backend_figure(::Plots.Plot{Plots.GLVisualizeBackend}) at /Users/michael/.julia/v0.5/Plots/src/backends/glvisualize.jl:130",
+ " in _plot_setup(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Array{Dict{Symbol,Any},1}) at /Users/michael/.julia/v0.5/Plots/src/pipeline.jl:216",
+ " in _plot!(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Tuple{UnitRange{Int64},Array{Float64,1}}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:184",
+ " in #plot#244(::Array{Any,1}, ::Function, ::UnitRange{Int64}, ::Vararg{Any,N}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:52",
+ " in plot(::UnitRange{Int64}, ::Array{Float64,1}, ::Vararg{Array{Float64,1},N}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:46"
+ ]
+ }
+ ],
+ "source": [
+ "plot(1:10, rand(10))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "using DataFrames\n",
+ "mam = readtable(\"/Users/michael/Google Drev/Mountain project/New Polygons/Species grid distributions/mammals_PA_matrix.csv\")\n",
+ "mam[3] = map(x->\"$x\", mam[3])\n",
+ "\n",
+ "\n",
+ "mama = SpatialEcology.Assemblage(mam)\n",
+ "## Problems with saving"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "using JLD\n",
+ "\n",
+ "jldopen(\"/Users/michael/.julia/v0.5/SpatialEcology/mamob.jld\", \"w\") do file\n",
+ " addrequire(file, SpatialEcology)\n",
+ " write(file, \"mam\", mama)\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "SpatialEcology.Assemblage{SpatialEcology.GridData,Bool}"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "typeof(mama)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "anaconda-cloud": {},
+ "kernelspec": {
+ "display_name": "Julia 0.5.0",
+ "language": "julia",
+ "name": "julia-0.5"
+ },
+ "language_info": {
+ "file_extension": ".jl",
+ "mimetype": "application/julia",
+ "name": "julia",
+ "version": "0.5.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/doc/Testing SpatialEcology plotting.ipynb b/doc/Testing SpatialEcology plotting.ipynb
index 1fa77fc..ee02c12 100644
--- a/doc/Testing SpatialEcology plotting.ipynb
+++ b/doc/Testing SpatialEcology plotting.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 31,
"metadata": {
"collapsed": false
},
@@ -11,170 +11,24 @@
"data": {
"text/plain": []
},
- "execution_count": 1,
+ "execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "using MacroEcology\n",
+ "using SpatialEcology\n",
"using JLD\n",
- "mam = load(\"/Users/michael/.julia/v0.5/MacroEcology.jl/mamobj.jld\", \"mam\")"
+ "mam = load(\"/Users/michael/.julia/v0.5/SpatialEcology/mamob.jld\", \"mam\")"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- " \n",
- " Plotly javascript loaded.
\n",
- " To load again call
init_notebook(true)
\n",
- " "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
{
"name": "stdout",
"output_type": "stream",
@@ -188,20 +42,13 @@
"1, 2, 3...17534, 17535\n"
]
},
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "WARNING: Method definition require(Symbol) in module Base at loading.jl:345 overwritten in module Plots at /Users/michael/.julia/v0.5/Requires/src/require.jl:12.\n"
- ]
- },
{
"data": {
"text/plain": [
"Plots.PlotlyJSBackend()"
]
},
- "execution_count": 2,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
@@ -212,18 +59,26 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: Method definition convert_to_image(AbstractArray{T<:Any, 1}, SpatialEcology.Assemblage{#G<:Any, #T<:Any}) in module Main at In[28]:3 overwritten at In[33]:3.\n",
+ "WARNING: Method definition convert_to_image(AbstractArray{T<:Any, 1}, Any) in module Main at In[28]:6 overwritten at In[33]:6.\n"
+ ]
+ },
{
"data": {
"text/plain": [
"convert_to_image (generic function with 2 methods)"
]
},
- "execution_count": 3,
+ "execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
@@ -244,7 +99,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 34,
"metadata": {
"collapsed": false
},
@@ -257,12 +112,12 @@
" \n",
"\n",
"\n",
- " \n",
+ " \n",
"\n",
"\n",
@@ -271,7 +126,7 @@
"\n"
]
},
- "execution_count": 6,
+ "execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
@@ -286,181 +141,96 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
+ "collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 47,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Plots.GLVisualizeBackend()"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "glvisualize()"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 48,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: get_screens not defined\nwhile loading In[48], in expression starting on line 1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: get_screens not defined\nwhile loading In[48], in expression starting on line 1",
+ "",
+ " in _create_backend_figure(::Plots.Plot{Plots.GLVisualizeBackend}) at /Users/michael/.julia/v0.5/Plots/src/backends/glvisualize.jl:130",
+ " in _plot_setup(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Array{Dict{Symbol,Any},1}) at /Users/michael/.julia/v0.5/Plots/src/pipeline.jl:216",
+ " in _plot!(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Tuple{Array{Float64,2}}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:184",
+ " in (::Plots.#kw##plot)(::Array{Any,1}, ::Plots.#plot, ::Array{Float64,2}) at ./:0",
+ " in #heatmap#346(::Array{Any,1}, ::Function, ::Array{Float64,2}, ::Vararg{Array{Float64,2},N}) at /Users/michael/.julia/v0.5/Plots/src/Plots.jl:152",
+ " in heatmap(::Array{Float64,2}, ::Vararg{Array{Float64,2},N}) at /Users/michael/.julia/v0.5/Plots/src/Plots.jl:152"
+ ]
+ }
+ ],
+ "source": [
+ "heatmap(x) "
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 46,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
"outputs": [],
- "source": []
+ "source": [
+ "using Plots"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 49,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: get_screens not defined\nwhile loading In[49], in expression starting on line 1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: get_screens not defined\nwhile loading In[49], in expression starting on line 1",
+ "",
+ " in _create_backend_figure(::Plots.Plot{Plots.GLVisualizeBackend}) at /Users/michael/.julia/v0.5/Plots/src/backends/glvisualize.jl:130",
+ " in _plot_setup(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Array{Dict{Symbol,Any},1}) at /Users/michael/.julia/v0.5/Plots/src/pipeline.jl:216",
+ " in _plot!(::Plots.Plot{Plots.GLVisualizeBackend}, ::Dict{Symbol,Any}, ::Tuple{UnitRange{Int64},Array{Float64,1}}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:184",
+ " in #plot#244(::Array{Any,1}, ::Function, ::UnitRange{Int64}, ::Vararg{Any,N}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:52",
+ " in plot(::UnitRange{Int64}, ::Array{Float64,1}, ::Vararg{Array{Float64,1},N}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:46"
+ ]
+ }
+ ],
+ "source": [
+ "plot(1:10, rand(10))"
+ ]
},
{
"cell_type": "code",
@@ -577,2152 +347,52 @@
"collapsed": true
},
"outputs": [],
- "source": []
+ "source": [
+ "using DataFrames\n",
+ "mam = readtable(\"/Users/michael/Google Drev/Mountain project/New Polygons/Species grid distributions/mammals_PA_matrix.csv\")\n",
+ "mam[3] = map(x->\"$x\", mam[3])\n",
+ "\n",
+ "\n",
+ "mama = SpatialEcology.Assemblage(mam)\n",
+ "## Problems with saving"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 30,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
"outputs": [],
- "source": []
+ "source": [
+ "using JLD\n",
+ "\n",
+ "jldopen(\"/Users/michael/.julia/v0.5/SpatialEcology/mamob.jld\", \"w\") do file\n",
+ " addrequire(file, SpatialEcology)\n",
+ " write(file, \"mam\", mama)\n",
+ "end"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 20,
"metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "INFO: Precompiling module Grid.\n"
- ]
- }
- ],
- "source": [
- "using Grid"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "17535×2 Named Array{Float64,2}\n",
- "A ╲ B │ Long Lat\n",
- "──────┼─────────────\n",
- "52310 │ -70.5 -55.5\n",
- "52311 │ -69.5 -55.5\n",
- "52312 │ -68.5 -55.5\n",
- "52313 │ -67.5 -55.5\n",
- "51948 │ -72.5 -54.5\n",
- "51949 │ -71.5 -54.5\n",
- "51950 │ -70.5 -54.5\n",
- "51951 │ -69.5 -54.5\n",
- "51952 │ -68.5 -54.5\n",
- "51953 │ -67.5 -54.5\n",
- "51954 │ -66.5 -54.5\n",
- "51955 │ -65.5 -54.5\n",
- "â‹® â‹® â‹®\n",
- "2304 │ -36.5 83.5\n",
- "2305 │ -35.5 83.5\n",
- "2306 │ -34.5 83.5\n",
- "2307 │ -33.5 83.5\n",
- "2308 │ -32.5 83.5\n",
- "2309 │ -31.5 83.5\n",
- "2310 │ -30.5 83.5\n",
- "2311 │ -29.5 83.5\n",
- "2312 │ -28.5 83.5\n",
- "2313 │ -27.5 83.5\n",
- "2314 │ -26.5 83.5\n",
- "2315 │ -25.5 83.5"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "cd = MacroEcology.coords(mam)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "17535-element Grid.InterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear}:\n",
- " -55.5\n",
- " -55.5\n",
- " -55.5\n",
- " -55.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " -54.5\n",
- " â‹® \n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5\n",
- " 83.5"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "testlong = InterpGrid(Vector(cd[:,\"Long\"]),BCnil, InterpLinear)\n",
- "testlat = InterpGrid(Vector(cd[:,\"Lat\"]),BCnil, InterpLinear)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "
"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "scatter(cd[:,\"Long\"], testlong)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "LoadError",
- "evalue": "LoadError: DimensionMismatch(\"Coordinate lengths do not match grid size.\")\nwhile loading In[41], in expression starting on line 2",
- "output_type": "error",
- "traceback": [
- "LoadError: DimensionMismatch(\"Coordinate lengths do not match grid size.\")\nwhile loading In[41], in expression starting on line 2",
- "",
- " in Grid.CoordInterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear,Tuple{FloatRange{Float64}}}(::Tuple{FloatRange{Float64}}, ::Grid.InterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear}) at /Users/michael/.julia/v0.5/Grid/src/coord.jl:7",
- " in Grid.CoordInterpGrid{T<:AbstractFloat,N,BC<:Grid.BoundaryCondition,IT<:Grid.InterpType,R}(::Tuple{FloatRange{Float64}}, ::Grid.InterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear}) at /Users/michael/.julia/v0.5/Grid/src/coord.jl:13",
- " in Grid.CoordInterpGrid{T<:AbstractFloat,N,BC<:Grid.BoundaryCondition,IT<:Grid.InterpType,R}(::FloatRange{Float64}, ::Array{Float64,1}, ::Type{T}, ::Type{T}) at /Users/michael/.julia/v0.5/Grid/src/coord.jl:24"
- ]
- }
- ],
- "source": [
- "a = sample(Vector(cd[:,\"Long\"]), 100)\n",
- "testlong = CoordInterpGrid(minimum(a):1:maximum(a),a,BCnil, InterpLinear)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "100-element Grid.InterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear}:\n",
- " -176.5\n",
- " -174.5\n",
- " -168.5\n",
- " -166.5\n",
- " -163.5\n",
- " -163.5\n",
- " -161.5\n",
- " -159.5\n",
- " -154.5\n",
- " -143.5\n",
- " -140.5\n",
- " -140.5\n",
- " -137.5\n",
- " â‹® \n",
- " 133.5\n",
- " 138.5\n",
- " 143.5\n",
- " 155.5\n",
- " 156.5\n",
- " 159.5\n",
- " 163.5\n",
- " 164.5\n",
- " 170.5\n",
- " 171.5\n",
- " 172.5\n",
- " 173.5"
- ]
- },
- "execution_count": 46,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "a = sort(unique(cd[:,\"Long\"]))\n",
- "b = sort(sample(a, 100))\n",
- "\n",
- "testa = InterpGrid(a, BCnil, InterpLinear)\n",
- "testb = InterpGrid(b, BCnil, InterpLinear)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "LoadError",
- "evalue": "LoadError: Invalid location\nwhile loading In[33], in expression starting on line 1",
- "output_type": "error",
- "traceback": [
- "LoadError: Invalid location\nwhile loading In[33], in expression starting on line 1",
- "",
- " in set_position(::Grid.InterpGridCoefs{Float64,Grid.InterpLinear}, ::Type{Grid.BCnil}, ::Bool, ::Bool, ::Array{Float64,1}) at /Users/michael/.julia/v0.5/Grid/src/interp.jl:403",
- " in _getindex at /Users/michael/.julia/v0.5/Grid/src/interp.jl:143 [inlined]",
- " in getindex(::Grid.InterpGrid{Float64,1,Grid.BCnil,Grid.InterpLinear}, ::Int64) at /Users/michael/.julia/v0.5/Grid/src/interp.jl:146"
- ]
- }
- ],
- "source": [
- "testlong[20]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "21×17 Array{Float64,2}:\n",
- " 0.841471 0.997495 0.909297 … 0.989358 0.798487 0.412118 \n",
- " 0.891207 0.999574 0.863209 0.96989 0.734397 0.319098 \n",
- " 0.932039 0.991665 0.808496 0.940731 0.662969 0.22289 \n",
- " 0.963558 0.973848 0.745705 0.902172 0.584917 0.124454 \n",
- " 0.98545 0.9463 0.675463 0.854599 0.501021 0.0247754\n",
- " 0.997495 0.909297 0.598472 … 0.798487 0.412118 -0.0751511\n",
- " 0.999574 0.863209 0.515501 0.734397 0.319098 -0.174327 \n",
- " 0.991665 0.808496 0.42738 0.662969 0.22289 -0.271761 \n",
- " 0.973848 0.745705 0.334988 0.584917 0.124454 -0.366479 \n",
- " 0.9463 0.675463 0.239249 0.501021 0.0247754 -0.457536 \n",
- " 0.909297 0.598472 0.14112 … 0.412118 -0.0751511 -0.544021 \n",
- " 0.863209 0.515501 0.0415807 0.319098 -0.174327 -0.625071 \n",
- " 0.808496 0.42738 -0.0583741 0.22289 -0.271761 -0.699875 \n",
- " 0.745705 0.334988 -0.157746 0.124454 -0.366479 -0.767686 \n",
- " 0.675463 0.239249 -0.255541 0.0247754 -0.457536 -0.827826 \n",
- " 0.598472 0.14112 -0.350783 … -0.0751511 -0.544021 -0.879696 \n",
- " 0.515501 0.0415807 -0.44252 -0.174327 -0.625071 -0.922775 \n",
- " 0.42738 -0.0583741 -0.529836 -0.271761 -0.699875 -0.956635 \n",
- " 0.334988 -0.157746 -0.611858 -0.366479 -0.767686 -0.980936 \n",
- " 0.239249 -0.255541 -0.687766 -0.457536 -0.827826 -0.995436 \n",
- " 0.14112 -0.350783 -0.756802 … -0.544021 -0.879696 -0.99999 "
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "x = -1.0:0.1:1.0\n",
- "y = 2.0:0.5:10.0\n",
- "z_2d = Float64[sin(i+j) for i in x, j in y]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10×10 DataArrays.DataArray{Float64,2}:\n",
- " 0.139577 0.202049 0.30136 … 0.027901 0.658254 0.0338257\n",
- " 0.226843 0.035261 0.42243 0.575682 0.451655 0.4322 \n",
- " 0.280519 0.607437 0.494239 0.138621 0.142638 0.225242 \n",
- " 0.0573405 0.50035 0.0212006 0.947107 0.0873271 0.636359 \n",
- " 0.172637 0.935429 0.39757 0.0519984 0.137552 0.0157806\n",
- " 0.279653 0.295228 0.616726 … 0.84535 0.294659 0.0736814\n",
- " 0.359487 0.024395 0.791468 0.159427 0.932021 0.647971 \n",
- " 0.29889 0.426172 0.569196 0.674834 0.473036 0.865966 \n",
- " 0.835205 0.262597 0.781618 0.543226 0.186344 0.638209 \n",
- " 0.61118 0.191013 0.456609 0.769856 0.675425 0.110935 "
- ]
- },
- "execution_count": 77,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "z = rand(10,10)\n",
- "data(z)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "PyCall.PyError",
- "evalue": "PyError (:PyObject_Call) \nAttributeError(\"'list' object has no attribute 'shape'\",)\n File \"/Users/michael/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py\", line 5089, in pcolormesh\n X, Y, C = self._pcolorargs('pcolormesh', *args, allmatch=allmatch)\n File \"/Users/michael/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py\", line 4692, in _pcolorargs\n numRows, numCols = C.shape\n",
- "output_type": "error",
- "traceback": [
- "PyError (:PyObject_Call) \nAttributeError(\"'list' object has no attribute 'shape'\",)\n File \"/Users/michael/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py\", line 5089, in pcolormesh\n X, Y, C = self._pcolorargs('pcolormesh', *args, allmatch=allmatch)\n File \"/Users/michael/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py\", line 4692, in _pcolorargs\n numRows, numCols = C.shape\n",
- "",
- " in pyerr_check at /Users/michael/.julia/v0.5/PyCall/src/exception.jl:56 [inlined]",
- " in pyerr_check at /Users/michael/.julia/v0.5/PyCall/src/exception.jl:61 [inlined]",
- " in macro expansion at /Users/michael/.julia/v0.5/PyCall/src/exception.jl:81 [inlined]",
- " in #_pycall#62(::Array{Any,1}, ::Function, ::PyCall.PyObject, ::Array{Float64,1}, ::Vararg{Any,N}) at /Users/michael/.julia/v0.5/PyCall/src/PyCall.jl:551",
- " in (::PyCall.#kw##_pycall)(::Array{Any,1}, ::PyCall.#_pycall, ::PyCall.PyObject, ::Array{Float64,1}, ::Vararg{Any,N}) at ./:0",
- " in #pycall#66(::Array{Any,1}, ::Function, ::PyCall.PyObject, ::Type{PyCall.PyAny}, ::Array{Float64,1}, ::Vararg{Any,N}) at /Users/michael/.julia/v0.5/PyCall/src/PyCall.jl:568",
- " in (::PyCall.#kw##pycall)(::Array{Any,1}, ::PyCall.#pycall, ::PyCall.PyObject, ::Type{PyCall.PyAny}, ::Array{Float64,1}, ::Vararg{Any,N}) at ./:0",
- " in #call#67(::Array{Any,1}, ::PyCall.PyObject, ::Array{Float64,1}, ::Vararg{Any,N}) at /Users/michael/.julia/v0.5/PyCall/src/PyCall.jl:571",
- " in (::PyCall.#kw#PyObject)(::Array{Any,1}, ::PyCall.PyObject, ::Array{Float64,1}, ::Vararg{Any,N}) at ./:0",
- " in py_add_series(::Plots.Plot{Plots.PyPlotBackend}, ::Plots.Series) at /Users/michael/.julia/v0.5/Plots/src/backends/pyplot.jl:738",
- " in _before_layout_calcs(::Plots.Plot{Plots.PyPlotBackend}) at /Users/michael/.julia/v0.5/Plots/src/backends/pyplot.jl:958",
- " in prepare_output(::Plots.Plot{Plots.PyPlotBackend}) at /Users/michael/.julia/v0.5/Plots/src/plot.jl:232",
- " in show(::Base64EncodePipe, ::MIME{Symbol(\"image/png\")}, ::Plots.Plot{Plots.PyPlotBackend}) at /Users/michael/.julia/v0.5/Plots/src/output.jl:170",
- " in base64encode(::Function, ::MIME{Symbol(\"image/png\")}, ::Vararg{Any,N}) at ./base64.jl:160",
- " in show(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::MIME{Symbol(\"text/html\")}, ::Plots.Plot{Plots.PyPlotBackend}) at /Users/michael/.julia/v0.5/Plots/src/output.jl:148",
- " in show(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::String, ::Plots.Plot{Plots.PyPlotBackend}) at ./multimedia.jl:33",
- " in #sprint#304(::Void, ::Function, ::Int64, ::Function, ::String, ::Vararg{Any,N}) at ./strings/io.jl:37",
- " in display_dict(::Plots.Plot{Plots.PyPlotBackend}) at /Users/michael/.julia/v0.5/Plots/src/output.jl:238",
- " in execute_request(::ZMQ.Socket, ::IJulia.Msg) at /Users/michael/.julia/v0.5/IJulia/src/execute_request.jl:200",
- " in eventloop(::ZMQ.Socket) at /Users/michael/.julia/v0.5/IJulia/src/eventloop.jl:8",
- " in (::IJulia.##9#15)() at ./task.jl:360"
- ]
- }
- ],
- "source": [
- "heatmap(data(z))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "ErrorException",
- "evalue": "Invalid location",
- "output_type": "error",
- "traceback": [
- "Invalid location",
- "",
- " in set_position(::Grid.InterpGridCoefs{Float64,Grid.InterpQuadratic}, ::Type{Grid.BCnil}, ::Bool, ::Bool, ::Array{Float64,1}) at /Users/michael/.julia/v0.5/Grid/src/interp.jl:403",
- " in _getindex at /Users/michael/.julia/v0.5/Grid/src/interp.jl:143 [inlined]",
- " in getindex at /Users/michael/.julia/v0.5/Grid/src/interp.jl:154 [inlined]",
- " in getindex(::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::Int64, ::Int64) at /Users/michael/.julia/v0.5/Grid/src/coord.jl:39",
- " in isassigned(::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::Int64, ::Int64, ::Vararg{Int64,N}) at ./abstractarray.jl:186",
- " in alignment(::IOContext{Base.AbstractIOBuffer{Array{UInt8,1}}}, ::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Int64, ::Int64) at ./show.jl:1277",
- " in print_matrix(::IOContext{Base.AbstractIOBuffer{Array{UInt8,1}}}, ::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::String, ::String, ::String, ::String, ::String, ::String, ::Int64, ::Int64) at ./show.jl:1407",
- " in print_matrix(::IOContext{Base.AbstractIOBuffer{Array{UInt8,1}}}, ::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::String, ::String, ::String) at ./show.jl:1379",
- " in #showarray#330(::Bool, ::Function, ::IOContext{Base.AbstractIOBuffer{Array{UInt8,1}}}, ::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}, ::Bool) at ./show.jl:1618",
- " in limitstringmime(::MIME{Symbol(\"text/plain\")}, ::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}) at /Users/michael/.julia/v0.5/IJulia/src/execute_request.jl:31",
- " in display_dict(::Grid.CoordInterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic,Tuple{FloatRange{Float64},FloatRange{Float64}}}) at /Users/michael/.julia/v0.5/IJulia/src/execute_request.jl:46",
- " in execute_request(::ZMQ.Socket, ::IJulia.Msg) at /Users/michael/.julia/v0.5/IJulia/src/execute_request.jl:200",
- " in eventloop(::ZMQ.Socket) at /Users/michael/.julia/v0.5/IJulia/src/eventloop.jl:8",
- " in (::IJulia.##9#15)() at ./task.jl:360"
- ]
- }
- ],
- "source": [
- "z_2di = CoordInterpGrid((x,y), z_2d, BCnil, InterpQuadratic)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "21×17 Grid.InterpGrid{Float64,2,Grid.BCnil,Grid.InterpQuadratic}:\n",
- " 0.841471 0.997495 0.909297 … 0.989358 0.798487 0.412118 \n",
- " 0.891207 0.999574 0.863209 0.96989 0.734397 0.319098 \n",
- " 0.932039 0.991665 0.808496 0.940731 0.662969 0.22289 \n",
- " 0.963558 0.973848 0.745705 0.902172 0.584917 0.124454 \n",
- " 0.98545 0.9463 0.675463 0.854599 0.501021 0.0247754\n",
- " 0.997495 0.909297 0.598472 … 0.798487 0.412118 -0.0751511\n",
- " 0.999574 0.863209 0.515501 0.734397 0.319098 -0.174327 \n",
- " 0.991665 0.808496 0.42738 0.662969 0.22289 -0.271761 \n",
- " 0.973848 0.745705 0.334988 0.584917 0.124454 -0.366479 \n",
- " 0.9463 0.675463 0.239249 0.501021 0.0247754 -0.457536 \n",
- " 0.909297 0.598472 0.14112 … 0.412118 -0.0751511 -0.544021 \n",
- " 0.863209 0.515501 0.0415807 0.319098 -0.174327 -0.625071 \n",
- " 0.808496 0.42738 -0.0583741 0.22289 -0.271761 -0.699875 \n",
- " 0.745705 0.334988 -0.157746 0.124454 -0.366479 -0.767686 \n",
- " 0.675463 0.239249 -0.255541 0.0247754 -0.457536 -0.827826 \n",
- " 0.598472 0.14112 -0.350783 … -0.0751511 -0.544021 -0.879696 \n",
- " 0.515501 0.0415807 -0.44252 -0.174327 -0.625071 -0.922775 \n",
- " 0.42738 -0.0583741 -0.529836 -0.271761 -0.699875 -0.956635 \n",
- " 0.334988 -0.157746 -0.611858 -0.366479 -0.767686 -0.980936 \n",
- " 0.239249 -0.255541 -0.687766 -0.457536 -0.827826 -0.995436 \n",
- " 0.14112 -0.350783 -0.756802 … -0.544021 -0.879696 -0.99999 "
- ]
- },
- "execution_count": 37,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "z_2di = InterpGrid(z_2d, BCnil, InterpQuadratic)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "search: Matrix BitMatrix ComMatrix DenseMatrix SharedMatrix SparseMatrixCSC\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/markdown": [
- "No documentation found.\n",
- "\n",
- "`Base.Matrix` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ],
- "text/plain": [
- "No documentation found.\n",
- "\n",
- "`Base.Matrix` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "?Matrix"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "search: Array SubArray BitArray DenseArray StridedArray pointer_to_array\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/markdown": [
- "```\n",
- "Array(dims)\n",
- "```\n",
- "\n",
- "`Array{T}(dims)` constructs an uninitialized dense array with element type `T`. `dims` may be a tuple or a series of integer arguments. The syntax `Array(T, dims)` is also available, but deprecated.\n"
- ],
- "text/plain": [
- "```\n",
- "Array(dims)\n",
- "```\n",
- "\n",
- "`Array{T}(dims)` constructs an uninitialized dense array with element type `T`. `dims` may be a tuple or a series of integer arguments. The syntax `Array(T, dims)` is also available, but deprecated.\n"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "?Array"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "search: StridedArray StridedMatrix\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/markdown": [
- "No documentation found.\n",
- "\n",
- "`Base.StridedArray` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ],
- "text/plain": [
- "No documentation found.\n",
- "\n",
- "`Base.StridedArray` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "?StridedArray"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "LoadError",
- "evalue": "LoadError: MethodError: no method matching sparse(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Float64,1}, ::Int64)\nClosest candidates are:\n sparse{Tv,Ti<:Integer}(::AbstractArray{Ti<:Integer,1}, ::AbstractArray{Ti<:Integer,1}, ::AbstractArray{Tv,1}, ::Integer, !Matched::Integer, !Matched::Any) at sparse/sparsematrix.jl:382\n sparse(::Any, ::Any, ::AbstractArray{T,1}, ::Any, !Matched::Any) at sparse/sparsematrix.jl:593\n sparse(::Any, ::Any, !Matched::AbstractArray{Bool,1}, ::Any, !Matched::Any) at sparse/sparsematrix.jl:595\n ...\nwhile loading In[57], in expression starting on line 5",
- "output_type": "error",
- "traceback": [
- "LoadError: MethodError: no method matching sparse(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Float64,1}, ::Int64)\nClosest candidates are:\n sparse{Tv,Ti<:Integer}(::AbstractArray{Ti<:Integer,1}, ::AbstractArray{Ti<:Integer,1}, ::AbstractArray{Tv,1}, ::Integer, !Matched::Integer, !Matched::Any) at sparse/sparsematrix.jl:382\n sparse(::Any, ::Any, ::AbstractArray{T,1}, ::Any, !Matched::Any) at sparse/sparsematrix.jl:593\n sparse(::Any, ::Any, !Matched::AbstractArray{Bool,1}, ::Any, !Matched::Any) at sparse/sparsematrix.jl:595\n ...\nwhile loading In[57], in expression starting on line 5",
- ""
- ]
- }
- ],
- "source": [
- "x = sample(1:4, 9, replace = true)\n",
- "y = sample(1:4, 9, replace = true)\n",
- "z = rand(9)\n",
- "using DataArrays\n",
- "Matrix(sparse(x,y,z, 9))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "search: sparse sparsevec SparseVector SparseArrays SparseMatrixCSC issparse\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/markdown": [
- "```\n",
- "sparse(A)\n",
- "```\n",
- "\n",
- "Convert an AbstractMatrix `A` into a sparse matrix.\n",
- "\n",
- "```\n",
- "sparse(I, J, V,[ m, n, combine])\n",
- "```\n",
- "\n",
- "Create a sparse matrix `S` of dimensions `m x n` such that `S[I[k], J[k]] = V[k]`. The `combine` function is used to combine duplicates. If `m` and `n` are not specified, they are set to `maximum(I)` and `maximum(J)` respectively. If the `combine` function is not supplied, `combine` defaults to `+` unless the elements of `V` are Booleans in which case `combine` defaults to `|`. All elements of `I` must satisfy `1 <= I[k] <= m`, and all elements of `J` must satisfy `1 <= J[k] <= n`. Numerical zeros in (`I`, `J`, `V`) are retained as structural nonzeros; to drop numerical zeros, use [`dropzeros!`](:func:`dropzeros!`).\n",
- "\n",
- "For additional documentation and an expert driver, see `Base.SparseArrays.sparse!`.\n",
- "\n",
- "sparse(g) is the adjacency_matrix of g\n"
- ],
- "text/plain": [
- "```\n",
- "sparse(A)\n",
- "```\n",
- "\n",
- "Convert an AbstractMatrix `A` into a sparse matrix.\n",
- "\n",
- "```\n",
- "sparse(I, J, V,[ m, n, combine])\n",
- "```\n",
- "\n",
- "Create a sparse matrix `S` of dimensions `m x n` such that `S[I[k], J[k]] = V[k]`. The `combine` function is used to combine duplicates. If `m` and `n` are not specified, they are set to `maximum(I)` and `maximum(J)` respectively. If the `combine` function is not supplied, `combine` defaults to `+` unless the elements of `V` are Booleans in which case `combine` defaults to `|`. All elements of `I` must satisfy `1 <= I[k] <= m`, and all elements of `J` must satisfy `1 <= J[k] <= n`. Numerical zeros in (`I`, `J`, `V`) are retained as structural nonzeros; to drop numerical zeros, use [`dropzeros!`](:func:`dropzeros!`).\n",
- "\n",
- "For additional documentation and an expert driver, see `Base.SparseArrays.sparse!`.\n",
- "\n",
- "sparse(g) is the adjacency_matrix of g\n"
- ]
- },
- "execution_count": 58,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "?sparse"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "search: DenseMatrix DenseVecOrMat\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/markdown": [
- "No documentation found.\n",
- "\n",
- "`Base.DenseMatrix` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ],
- "text/plain": [
- "No documentation found.\n",
- "\n",
- "`Base.DenseMatrix` is of type `TypeConstructor`.\n",
- "\n",
- "**Summary:**\n",
- "\n",
- "```\n",
- "immutable TypeConstructor <: Type{T}\n",
- "```\n",
- "\n",
- "**Fields:**\n",
- "\n",
- "```\n",
- "parameters :: SimpleVector\n",
- "body :: Any\n",
- "```\n"
- ]
- },
- "execution_count": 61,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "?DenseMatrix"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 80,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Summary Stats:\n",
- "Mean: 0.495942\n",
- "Minimum: 0.013205\n",
- "1st Quartile: 0.283798\n",
- "Median: 0.505712\n",
- "3rd Quartile: 0.758443\n",
- "Maximum: 0.979823\n"
- ]
- },
- "execution_count": 80,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "a = summarystats(rand(100))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "ename": "LoadError",
- "evalue": "LoadError: MethodError: Cannot `convert` an object of type StatsBase.SummaryStats{Float64} to an object of type DataFrames.DataFrame\nThis may have arisen from a call to the constructor DataFrames.DataFrame(...),\nsince type constructors fall back to convert methods.\nwhile loading In[83], in expression starting on line 2",
- "output_type": "error",
- "traceback": [
- "LoadError: MethodError: Cannot `convert` an object of type StatsBase.SummaryStats{Float64} to an object of type DataFrames.DataFrame\nThis may have arisen from a call to the constructor DataFrames.DataFrame(...),\nsince type constructors fall back to convert methods.\nwhile loading In[83], in expression starting on line 2",
- "",
- " in DataFrames.DataFrame(::StatsBase.SummaryStats{Float64}) at ./sysimg.jl:53"
- ]
- }
- ],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "4-element DataArrays.DataArray{Int64,1}:\n",
- " NA\n",
- " 1 \n",
- " 2 \n",
- " 4 "
- ]
- },
- "execution_count": 84,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "a = @data([NA, 1, 2, 4])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "4-element DataArrays.DataArray{Float64,1}:\n",
- " NA\n",
- " 0.5\n",
- " 1.0\n",
- " 2.0"
- ]
- },
- "execution_count": 85,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "a/2"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Inf"
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "2/0\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "INFO: Recompiling stale cache file /Users/michael/.julia/lib/v0.5/StatPlots.ji for module StatPlots.\n"
- ]
- }
- ],
- "source": [
- "using StatPlots"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 88,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " @animate 0 bytes Plots.#@animate\n",
- " @colorant_str 0 bytes Colors.#@colorant_str\n",
- " @gif 0 bytes Plots.#@gif\n",
- " @layout 0 bytes Plots.#@layout\n",
- " @recipe 0 bytes RecipesBase.#@recipe\n",
- " @series 0 bytes RecipesBase.#@series\n",
- " @shorthands 0 bytes Plots.#@shorthands\n",
- " @userplot 0 bytes Plots.#@userplot\n",
- " ABGR 236 bytes DataType\n",
- " ADIN99 204 bytes DataType\n",
- " ADIN99d 204 bytes DataType\n",
- " ADIN99o 204 bytes DataType\n",
- " AGray 212 bytes DataType\n",
- " AGray32 112 bytes DataType\n",
- " AHSI 204 bytes DataType\n",
- " AHSL 204 bytes DataType\n",
- " AHSV 204 bytes DataType\n",
- " ALCHab 204 bytes DataType\n",
- " ALCHuv 204 bytes DataType\n",
- " ALMS 204 bytes DataType\n",
- " ALab 204 bytes DataType\n",
- " ALuv 204 bytes DataType\n",
- " AMat 80 bytes TypeConstructor\n",
- " ARGB 236 bytes DataType\n",
- " ARGB32 112 bytes DataType\n",
- " AVec 80 bytes TypeConstructor\n",
- " AXYZ 204 bytes DataType\n",
- " AYCbCr 204 bytes DataType\n",
- " AYIQ 204 bytes DataType\n",
- " AbstractLayout 92 bytes DataType\n",
- " AbstractPlot 148 bytes DataType\n",
- " AbstractRGB 148 bytes DataType\n",
- " AlphaColor 228 bytes DataType\n",
- " Animation 124 bytes DataType\n",
- " Axis 124 bytes DataType\n",
- " AxyY 204 bytes DataType\n",
- " BBox 140 bytes DataType\n",
- " BGR 224 bytes DataType\n",
- " BGRA 236 bytes DataType\n",
- " BezierCurve 168 bytes DataType\n",
- " BoundingBox 284 bytes DataType\n",
- " CIE1931JV_CMF 92 bytes DataType\n",
- " CIE1931J_CMF 92 bytes DataType\n",
- " CIE1931_CMF 92 bytes DataType\n",
- " CIE1964_CMF 92 bytes DataType\n",
- " Color 188 bytes DataType\n",
- " ColorAlpha 228 bytes DataType\n",
- " ColorGradient 124 bytes DataType\n",
- " ColorTypes 9375 KB Module\n",
- " Colorant 188 bytes DataType\n",
- " Colors 9322 KB Module\n",
- " DE_2000 136 bytes DataType\n",
- " DE_94 136 bytes DataType\n",
- " DE_AB 92 bytes DataType\n",
- " DE_BFD 136 bytes DataType\n",
- " DE_CMC 124 bytes DataType\n",
- " DE_DIN99 92 bytes DataType\n",
- " DE_DIN99d 92 bytes DataType\n",
- " DE_DIN99o 92 bytes DataType\n",
- " DE_JPC79 92 bytes DataType\n",
- " DIN99 192 bytes DataType\n",
- " DIN99A 204 bytes DataType\n",
- " DIN99d 192 bytes DataType\n",
- " DIN99dA 204 bytes DataType\n",
- " DIN99o 192 bytes DataType\n",
- " DIN99oA 204 bytes DataType\n",
- " EmptyLayout 136 bytes DataType\n",
- " Formatted 180 bytes DataType\n",
- " Fractional 32 bytes Union\n",
- " Gray 208 bytes DataType\n",
- " Gray24 112 bytes DataType\n",
- " GrayA 212 bytes DataType\n",
- " GridLayout 184 bytes DataType\n",
- " HSB 192 bytes DataType\n",
- " HSI 192 bytes DataType\n",
- " HSIA 204 bytes DataType\n",
- " HSL 192 bytes DataType\n",
- " HSLA 204 bytes DataType\n",
- " HSV 192 bytes DataType\n",
- " HSVA 204 bytes DataType\n",
- " KW 212 bytes DataType\n",
- " LCHab 192 bytes DataType\n",
- " LCHabA 204 bytes DataType\n",
- " LCHuv 192 bytes DataType\n",
- " LCHuvA 204 bytes DataType\n",
- " LMS 192 bytes DataType\n",
- " LMSA 204 bytes DataType\n",
- " Lab 192 bytes DataType\n",
- " LabA 204 bytes DataType\n",
- " Luv 192 bytes DataType\n",
- " LuvA 204 bytes DataType\n",
- " MSC 0 bytes Colors.#MSC\n",
- " OHLC 204 bytes DataType\n",
- " P2 136 bytes DataType\n",
- " P3 136 bytes DataType\n",
- " Plot 288 bytes DataType\n",
- " PlotUtils 9135 KB Module\n",
- " Plots 13091 KB Module\n",
- " RGB 224 bytes DataType\n",
- " RGB1 236 bytes DataType\n",
- " RGB24 112 bytes DataType\n",
- " RGB4 236 bytes DataType\n",
- " RGBA 236 bytes DataType\n",
- " RecipeData 124 bytes DataType\n",
- " RecipesBase 9059 KB Module\n",
- " Segments 168 bytes DataType\n",
- " Shape 124 bytes DataType\n",
- " StatPlots 50 KB Module\n",
- " Subplot 240 bytes DataType\n",
- " Surface 232 bytes DataType\n",
- " TransparentColor 228 bytes DataType\n",
- " U16 136 bytes DataType\n",
- " U8 136 bytes DataType\n",
- " XYZ 192 bytes DataType\n",
- " XYZA 204 bytes DataType\n",
- " YCbCr 192 bytes DataType\n",
- " YCbCrA 204 bytes DataType\n",
- " YIQ 192 bytes DataType\n",
- " YIQA 204 bytes DataType\n",
- " add_backend 0 bytes Plots.#add_backend\n",
- " add_theme 0 bytes Plots.#add_theme\n",
- " aliases 0 bytes Plots.#aliases\n",
- " alpha 0 bytes ColorTypes.#alpha\n",
- " alphacolor 0 bytes ColorTypes.#alphacolor\n",
- " annotate! 0 bytes Plots.#annotate!\n",
- " argb32 0 bytes Colors.#argb32\n",
- " arrow 0 bytes Plots.#arrow\n",
- " backend 0 bytes Plots.#backend\n",
- " backend_name 0 bytes Plots.#backend_name\n",
- " backend_object 0 bytes Plots.#backend_object\n",
- " backends 0 bytes Plots.#backends\n",
- " bar 0 bytes Plots.#bar\n",
- " bar! 0 bytes Plots.#bar!\n",
- " barh 0 bytes Plots.#barh\n",
- " barh! 0 bytes Plots.#barh!\n",
- " base_color_type 0 bytes ColorTypes.#base_color_type\n",
- " base_colorant_type 0 bytes ColorTypes.#base_colorant_type\n",
- " bbox 0 bytes Plots.#bbox\n",
- " blue 0 bytes ColorTypes.#blue\n",
- " boxplot 0 bytes Plots.#boxplot\n",
- " boxplot! 0 bytes Plots.#boxplot!\n",
- " brush 0 bytes Plots.#brush\n",
- " ccolor 0 bytes ColorTypes.#ccolor\n",
- " center 0 bytes Plots.#center\n",
- " cgrad 0 bytes PlotUtils.#cgrad\n",
- " cie_color_match 0 bytes Colors.#cie_color_match\n",
- " cm 8 bytes Measures.Length{:mm,Float64}\n",
- " color 0 bytes ColorTypes.#color\n",
- " color_type 0 bytes ColorTypes.#color_type\n",
- " coloralpha 0 bytes ColorTypes.#coloralpha\n",
- " colordiff 0 bytes Colors.#colordiff\n",
- " colormap 0 bytes Colors.#colormap\n",
- " colormatch 0 bytes Colors.#colormatch\n",
- " comp1 0 bytes ColorTypes.#comp1\n",
- " comp2 0 bytes ColorTypes.#comp2\n",
- " comp3 0 bytes ColorTypes.#comp3\n",
- " contour 0 bytes Plots.#contour\n",
- " contour! 0 bytes Plots.#contour!\n",
- " contour3d 0 bytes Plots.#contour3d\n",
- " contour3d! 0 bytes Plots.#contour3d!\n",
- " contourf 0 bytes Plots.#contourf\n",
- " contourf! 0 bytes Plots.#contourf!\n",
- " coords 0 bytes Plots.#coords\n",
- " cornerplot 0 bytes StatPlots.#cornerplot\n",
- " cornerplot! 0 bytes StatPlots.#cornerplot!\n",
- " corrplot 0 bytes StatPlots.#corrplot\n",
- " corrplot! 0 bytes StatPlots.#corrplot!\n",
- " current 0 bytes Plots.#current\n",
- " curve_points 0 bytes Plots.#curve_points\n",
- " curves 0 bytes Plots.#curves\n",
- " curves! 0 bytes Plots.#curves!\n",
- " cvec 0 bytes PlotUtils.#cvec\n",
- " default 0 bytes Plots.#default\n",
- " density 0 bytes Plots.#density\n",
- " density! 0 bytes Plots.#density!\n",
- " deuteranopic 0 bytes Colors.#deuteranopic\n",
- " din99a 0 bytes Colors.#din99a\n",
- " din99da 0 bytes Colors.#din99da\n",
- " din99oa 0 bytes Colors.#din99oa\n",
- " directed_curve 0 bytes Plots.#directed_curve\n",
- " distinguishable_colors 0 bytes Colors.#distinguishable_colors\n",
- " diverging_palette 0 bytes Colors.#diverging_palette\n",
- " font 0 bytes Plots.#font\n",
- " frame 0 bytes Plots.#frame\n",
- " get_color_palette 0 bytes PlotUtils.#get_color_palette\n",
- " gif 0 bytes Plots.#gif\n",
- " glvisualize 0 bytes Plots.#glvisualize\n",
- " gr 0 bytes Plots.#gr\n",
- " gray 0 bytes ColorTypes.#gray\n",
- " green 0 bytes ColorTypes.#green\n",
- " grid 0 bytes Plots.#grid\n",
- " gui 0 bytes Plots.#gui\n",
- " h 8 bytes Measures.Length{:h,Float64}\n",
- " heatmap 0 bytes Plots.#heatmap\n",
- " heatmap! 0 bytes Plots.#heatmap!\n",
- " hex 0 bytes Base.#hex\n",
- " hexbin 0 bytes Plots.#hexbin\n",
- " hexbin! 0 bytes Plots.#hexbin!\n",
- " histogram 0 bytes Plots.#histogram\n",
- " histogram! 0 bytes Plots.#histogram!\n",
- " histogram2d 0 bytes Plots.#histogram2d\n",
- " histogram2d! 0 bytes Plots.#histogram2d!\n",
- " hline 0 bytes Plots.#hline\n",
- " hline! 0 bytes Plots.#hline!\n",
- " hsla 0 bytes Colors.#hsla\n",
- " hsva 0 bytes Colors.#hsva\n",
- " inch 8 bytes Measures.Length{:mm,Float64}\n",
- " isdark 0 bytes PlotUtils.#isdark\n",
- " iter_segments 0 bytes Plots.#iter_segments\n",
- " laba 0 bytes Colors.#laba\n",
- " lchaba 0 bytes Colors.#lchaba\n",
- " lchuva 0 bytes Colors.#lchuva\n",
- " lmsa 0 bytes Colors.#lmsa\n",
- " luva 0 bytes Colors.#luva\n",
- " marginalhist 0 bytes StatPlots.#marginalhist\n",
- " marginalhist! 0 bytes StatPlots.#marginalhist!\n",
- " mm 8 bytes Measures.Length{:mm,Float64}\n",
- " ohlc 0 bytes Plots.#ohlc\n",
- " ohlc! 0 bytes Plots.#ohlc!\n",
- " optimize_ticks 0 bytes PlotUtils.#optimize_ticks\n",
- " path3d 0 bytes Plots.#path3d\n",
- " path3d! 0 bytes Plots.#path3d!\n",
- " pct 8 bytes Measures.Length{:pct,Float64}\n",
- " pgfplots 0 bytes Plots.#pgfplots\n",
- " pie 0 bytes Plots.#pie\n",
- " pie! 0 bytes Plots.#pie!\n",
- " plot 0 bytes Plots.#plot\n",
- " plot! 0 bytes Plots.#plot!\n",
- " plot3d 0 bytes Plots.#plot3d\n",
- " plot3d! 0 bytes Plots.#plot3d!\n",
- " plot_color 0 bytes PlotUtils.#plot_color\n",
- " plotarea 0 bytes Plots.#plotarea\n",
- " plotly 0 bytes Plots.#plotly\n",
- " plotlyjs 0 bytes Plots.#plotlyjs\n",
- " png 0 bytes Plots.#png\n",
- " protanopic 0 bytes Colors.#protanopic\n",
- " pt 8 bytes Measures.Length{:mm,Float64}\n",
- " px 8 bytes Measures.Length{:mm,Float64}\n",
- " pyplot 0 bytes Plots.#pyplot\n",
- " quiver 0 bytes Plots.#quiver\n",
- " quiver! 0 bytes Plots.#quiver!\n",
- " red 0 bytes ColorTypes.#red\n",
- " rgb_string 0 bytes PlotUtils.#rgb_string\n",
- " rgba 0 bytes Colors.#rgba\n",
- " rgba_string 0 bytes PlotUtils.#rgba_string\n",
- " rotate 0 bytes Plots.#rotate\n",
- " rotate! 0 bytes Plots.#rotate!\n",
- " savefig 0 bytes Plots.#savefig\n",
- " scatter 0 bytes Plots.#scatter\n",
- " scatter! 0 bytes Plots.#scatter!\n",
- " scatter3d 0 bytes Plots.#scatter3d\n",
- " scatter3d! 0 bytes Plots.#scatter3d!\n",
- " sequential_palette 0 bytes Colors.#sequential_palette\n",
- " set_theme 0 bytes Plots.#set_theme\n",
- " spy 0 bytes Plots.#spy\n",
- " sticks 0 bytes Plots.#sticks\n",
- " sticks! 0 bytes Plots.#sticks!\n",
- " stroke 0 bytes Plots.#stroke\n",
- " surface 0 bytes Plots.#surface\n",
- " surface! 0 bytes Plots.#surface!\n",
- " test_examples 0 bytes Plots.#test_examples\n",
- " text 0 bytes Plots.#text\n",
- " title! 0 bytes Plots.#title!\n",
- " translate 0 bytes Plots.#translate\n",
- " translate! 0 bytes Plots.#translate!\n",
- " tritanopic 0 bytes Colors.#tritanopic\n",
- " twinx 0 bytes Plots.#twinx\n",
- " unicodeplots 0 bytes Plots.#unicodeplots\n",
- " update! 0 bytes Plots.#update!\n",
- " violin 0 bytes Plots.#violin\n",
- " violin! 0 bytes Plots.#violin!\n",
- " vline 0 bytes Plots.#vline\n",
- " vline! 0 bytes Plots.#vline!\n",
- " w 8 bytes Measures.Length{:w,Float64}\n",
- " weighted_color_mean 0 bytes Colors.#weighted_color_mean\n",
- " whitebalance 0 bytes Colors.#whitebalance\n",
- " wireframe 0 bytes Plots.#wireframe\n",
- " wireframe! 0 bytes Plots.#wireframe!\n",
- " with 0 bytes Plots.#with\n",
- " wrap 0 bytes Plots.#wrap\n",
- " xaxis! 0 bytes Plots.#xaxis!\n",
- " xflip! 0 bytes Plots.#xflip!\n",
- " xlabel! 0 bytes Plots.#xlabel!\n",
- " xlims 0 bytes Plots.#xlims\n",
- " xlims! 0 bytes Plots.#xlims!\n",
- " xticks! 0 bytes Plots.#xticks!\n",
- " xyY 192 bytes DataType\n",
- " xyYA 204 bytes DataType\n",
- " xyYa 0 bytes Colors.#xyYa\n",
- " xyza 0 bytes Colors.#xyza\n",
- " yaxis! 0 bytes Plots.#yaxis!\n",
- " yflip! 0 bytes Plots.#yflip!\n",
- " ylabel! 0 bytes Plots.#ylabel!\n",
- " ylims 0 bytes Plots.#ylims\n",
- " ylims! 0 bytes Plots.#ylims!\n",
- " yticks! 0 bytes Plots.#yticks!\n",
- " zlims 0 bytes Plots.#zlims\n",
- " zlims! 0 bytes Plots.#zlims!\n"
- ]
- }
- ],
- "source": [
- "whos(StatPlots)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 89,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "7-element Array{Symbol,1}:\n",
- " :parent \n",
- " :minpad \n",
- " :bbox \n",
- " :grid \n",
- " :widths \n",
- " :heights\n",
- " :attr "
- ]
- },
- "execution_count": 89,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "fieldnames(StatPlots.GridLayout)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "INFO: Checking out Plots master...\n",
- "INFO: Pulling Plots latest master...\n",
- "INFO: No packages to install, update or remove\n",
- "INFO: Building Plots\n"
- ]
- }
- ],
- "source": [
- "Pkg.checkout(\"Plots\")\n",
- "Pkg.build(\"Plots\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "using StatsBase, Plots\n",
- "z = Matrix{Float64}(4,5)\n",
- "fill!(z, NaN)\n",
- "x = sample(1:4, 9, replace = true)\n",
- "y = sample(1:4, 9, replace = true)\n",
- "ll = rand(9)\n",
- "for i in 1:length(x)\n",
- " z[x[i],y[i]] = ll[i]\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "gr()\n",
- "heatmap(z, grid = false)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- " \n",
- "\n",
- "\n",
- " \n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ]
- },
- "execution_count": 37,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plotlyjs()\n",
- "heatmap(z, grid = false)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {
- "collapsed": false
+ "collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
- "Plots.PlotlyJSBackend()"
+ "SpatialEcology.Assemblage{SpatialEcology.GridData,Bool}"
]
},
- "execution_count": 18,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "plotlyjs()\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "INFO: Freeing GR\n",
- "INFO: No packages to install, update or remove\n"
- ]
- }
- ],
- "source": [
- "Pkg.free(\"GR\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "INFO: Building GR\n"
- ]
- }
- ],
- "source": [
- "Pkg.build(\"GR\")"
+ "typeof(mama)"
]
},
{
diff --git a/mamob.jld b/mamob.jld
new file mode 100644
index 0000000000000000000000000000000000000000..e4af2e8cdd19eb9724beba7b7f727b15de3d9250
GIT binary patch
literal 12183070
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ɲSD;H&r=zK(C;oA?&Kjql*Q_#VEGAK-`h5q^xH;HUT*
zevV(@m-rQajo;w6_#J+aKj4q}6aI|9;IH@_{*Hg(pZG8QH~xhK1S0?AfH)8ijDz5y
zI2aC&L*S4&6b_BU;IKFx4v!g2&;I_COZjU?Qj<^%_!vHpPvDdI6h4j5;IsG-{3kw#&*KaDBEEz#
z<16?ozJ{;k8~7%^g>U0K_%6PO@8bvfA%27(<0tqjeukgp7x*Q9gxN<36}A?uYy10eB!Dga_jxcqkr*
zhvN}=Bp!uF<1u(F9*4){33wu&geT)Ecq*QTr{fuTCZ2_7<2iUPo`>h-1$ZG|gcsu_
zcqv|nm*W+9C0>PB<286KUWeD?4R|Bogg4_Ycq`t9x8ognC*Fm3<2`sU-iP<&1Nb05
zgb(8*_$WSxkK+^gBtC^t<1_dy{saGs&*Ag<0=|eZ;mi06zKXBm>-Yw~iErWC_zu2{
z@8SFS0e*-d;m7z1eu|&r=lBJFiC^K@_zixG-{JT81OA9V;m`OB{))fh@AwD)iT}cX
z<6ron$^ZYF|BnOWKsYcCf`j5OX5`8_#8fuFW`ɲ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