{ "cells": [ { "cell_type": "markdown", "id": "942ae4f7-c88f-4040-92f4-871d86856b93", "metadata": {}, "source": [ "# Chron.jl eruption/deposition age estimation\n", "\n", "This Jupyter notebook demonstrates eruption (/deposition) age estimation component of `Chron.jl`, based on the approach of [Keller, Schoene, and Samperton (2018)](https://doi.org/10.7185/geochemlet.1826). For more information on `Chron.jl` and its other capabilities (largely, age-depth modelling), see [github.com/brenhinkeller/Chron.jl](https://github.com/brenhinkeller/Chron.jl) and and [doi.org/10.17605/osf.io/TQX3F](https://doi.org/10.17605/osf.io/TQX3F)\n", "\n", "\"Launch \n", "

If running this notebook as an online Binder notebook and the webpage times out, click the badge at left to relaunch (refreshing will not work). Note that any changes will be lost!

\n", "\n", "Hint: `shift`-`enter` to run a single cell, or from the `Cell` menu select `Run All` to run the whole file. Any code from this notebook can be copied and pasted into the Julia REPL or a `.jl` script.\n", "***\n", "\n", "## Load required Julia packages" ] }, { "cell_type": "code", "execution_count": 1, "id": "14dd2b3a-f7b3-4fbb-88b0-c7d2dc66bf8a", "metadata": {}, "outputs": [], "source": [ "# Load the Chron.jl package\n", "using Chron\n", "using Plots, DelimitedFiles" ] }, { "cell_type": "markdown", "id": "96b21fa2-5b7c-483f-9789-9dce62e69992", "metadata": {}, "source": [ "***\n", "## Enter sample information\n", "First, let's enter some basic information about your samples. How many are there, what are the sample names (needs to be a valid filename, BTW), and what are the stratigraphic heights and uncertainties? Then, we'll enter the ages as .csv files." ] }, { "cell_type": "code", "execution_count": 2, "id": "e09e5f9f-a372-42aa-892a-dc447f463ec8", "metadata": {}, "outputs": [], "source": [ "nSamples = 5 # The number of samples you have data for\n", "smpl = ChronAgeData(nSamples)\n", "smpl.Name = (\"KJ08-157\", \"KJ04-75\", \"KJ09-66\", \"KJ04-72\", \"KJ04-70\",)\n", "smpl.Path = \"MyData/\" # Where are the data files? Must match where you put the csv files below.\n", "smpl.inputSigmaLevel = 2 # i.e., are the data files 1-sigma or 2-sigma. Integer.\n", "\n", "smpl.Age_Unit = \"Ma\" # Unit of measurement for ages and errors in the data files\n", "smpl.Height_Unit = \"cm\"; # Unit of measurement for Height and Height_sigma" ] }, { "cell_type": "markdown", "id": "7f1abd0c-1ba7-4be5-a623-7eccc3a35e58", "metadata": {}, "source": [ "In this case, there is no need to specify sample heights, since we are not doing any age-depth modelling\n", "***\n", "Now let's see what's in our current directory (we'll use `;` to activate Julia's command-line shell mode, followed by a unix command, in this case `ls`" ] }, { "cell_type": "code", "execution_count": 3, "id": "4b53bd18-8439-48c8-8d67-06b758fecbeb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chron1.0Coupled.ipynb\n", "Chron1.0Coupled.jl\n", "Chron1.0CoupledConcordia.ipynb\n", "Chron1.0CoupledConcordia.jl\n", "Chron1.0CoupledSystematic.jl\n", "Chron1.0DistOnly.ipynb\n", "Chron1.0DistOnly.jl\n", "Chron1.0Radiocarbon.ipynb\n", "Chron1.0Radiocarbon.jl\n", "Chron1.0StratOnly.ipynb\n", "Chron1.0StratOnly.jl\n", "ConcordiaExampleData\n", "DenverUPbExampleData\n", "EruptionDepositionAgeDemonstration.ipynb\n", "EruptionDepositionAgeDemonstration.jl\n", "FCT\n", "Manifest.toml\n", "MyData\n", "PlutonEmplacement.ipynb\n", "Project.toml\n", "archive.tar.gz\n", "ffsend\n" ] } ], "source": [ ";ls" ] }, { "cell_type": "markdown", "id": "6a5696f3-9e58-44db-b15b-52e02356bf56", "metadata": {}, "source": [ "Equivalently, we can also run unix commands using the `run()` function, i.e.\n", "```\n", "run(`ls`);\n", "```" ] }, { "cell_type": "markdown", "id": "32588881-b593-4a94-a5b1-c6acd06fd969", "metadata": {}, "source": [ "Now that we know how to access the command line, let's make a new folder for our example data. This can be called whatever you want, just make sure it matches `smpl.Path` above" ] }, { "cell_type": "code", "execution_count": 4, "id": "5d798c45-f7f1-45b4-a7a4-7f5c38b37386", "metadata": {}, "outputs": [], "source": [ ";mkdir -p MyData/" ] }, { "cell_type": "markdown", "id": "03647ce9-60b7-40b4-87fa-218f312997db", "metadata": {}, "source": [ "Now, let's make some files and paste in csv data for each one. For now, I'm pasting in example data from Clyde et al. (2016), [10.1016/j.epsl.2016.07.041](https://doi.org/10.1016/j.epsl.2016.07.041)" ] }, { "cell_type": "code", "execution_count": 5, "id": "3a6b34fa-a1b2-4d92-8267-86301e086b1a", "metadata": {}, "outputs": [], "source": [ "# You can just paste your data in here, in the following two-column format.\n", "# The first column is age and the second column is two-sigma analytical uncertainty.\n", "# You should generally exclude all systematic uncertainties here.\n", "data = [\n", "66.12 0.14\n", "66.115 0.048\n", "66.11 0.1\n", "66.11 0.17\n", "66.096 0.056\n", "66.088 0.081\n", "66.085 0.076\n", "66.073 0.084\n", "66.07 0.11\n", "66.055 0.043\n", "66.05 0.16\n", "65.97 0.12\n", "]\n", "\n", "# Now, let's write this data to a file, delimited by commas (',')\n", "# In this example the filename is KJ08-157.csv, in the folder called MyData\n", "writedlm(\"MyData/KJ08-157.csv\", data, ',')" ] }, { "cell_type": "code", "execution_count": 6, "id": "d8224db4-c804-40df-889f-71bbe89ba992", "metadata": {}, "outputs": [], "source": [ "data = [\n", "66.24 0.25\n", "66.232 0.046\n", "66.112 0.085\n", "66.09 0.1\n", "66.04 0.18\n", "66.03 0.12\n", "66.016 0.08\n", "66.003 0.038\n", "65.982 0.071\n", "65.98 0.19\n", "65.977 0.042\n", "65.975 0.066\n", "65.971 0.082\n", "65.963 0.074\n", "65.92 0.12\n", "65.916 0.088\n", "]\n", "writedlm(\"MyData/KJ04-75.csv\",data,',')" ] }, { "cell_type": "code", "execution_count": 7, "id": "64a1d8ef-cccc-4e86-a906-1e47c0bdcc60", "metadata": {}, "outputs": [], "source": [ "data = [\n", "66.13 0.15\n", "66.066 0.052\n", "65.999 0.045\n", "65.989 0.057\n", "65.98 0.11\n", "65.961 0.057\n", "65.957 0.091\n", "65.951 0.066\n", "65.95 0.11\n", "65.929 0.059\n", "]\n", "writedlm(\"MyData/KJ09-66.csv\",data,',')" ] }, { "cell_type": "code", "execution_count": 8, "id": "adbeed93-e11b-4196-bc3e-3b35a560867b", "metadata": {}, "outputs": [], "source": [ "data = [\n", "66.11 0.2\n", "66.003 0.063\n", "66.003 0.058\n", "65.98 0.06\n", "65.976 0.089\n", "65.973 0.084\n", "65.97 0.15\n", "65.963 0.055\n", "65.959 0.049\n", "65.94 0.18\n", "65.928 0.066\n", "65.92 0.057\n", "65.91 0.14\n", "]\n", "writedlm(\"MyData/KJ04-72.csv\",data,',')" ] }, { "cell_type": "code", "execution_count": 9, "id": "9a4c1508-fb6a-4275-aa69-53c5d5f0d8c1", "metadata": {}, "outputs": [], "source": [ "data = [\n", "66.22 0.27\n", "66.06 0.11\n", "65.933 0.066\n", "65.918 0.087\n", "65.92 0.34\n", "65.916 0.067\n", "65.91 0.18\n", "65.892 0.09\n", "65.89 0.063\n", "65.89 0.15\n", "65.88 0.2\n", "65.812 0.069\n", "65.76 0.15\n", "]\n", "writedlm(\"MyData/KJ04-70.csv\",data,',')" ] }, { "cell_type": "markdown", "id": "4de8db52-6a51-48a8-ad8b-639344f71775", "metadata": {}, "source": [ "Alternatively, you could download .csv files that you have posted somewhere online using the Julia `download()` function, or using the unix command `curl` throught the command-line interface" ] }, { "cell_type": "code", "execution_count": null, "id": "bba3ab1e-5b55-4f9a-9f31-e00dfeb592a7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "d5c49257-fb8d-4137-891d-4b5d46c4a424", "metadata": {}, "source": [ "For each sample in `smpl.Name`, we must have a `.csv` file in `smpl.Path` which contains each individual mineral age and uncertainty.\n", "\n", "***\n", "## Configure and run eruption/deposition age model\n", "To learn more about the eruption/deposition age estimation model, see also [Keller, Schoene, and Sameperton (2018)](https://doi.org/10.7185/geochemlet.1826) and the [BayeZirChron demo notebook](http://brenh.in/BayeZirChron). It is important to note that this model (like most if not all others) has no knowledge of open-system behaviour, so *e.g.*, Pb-loss will lead to erroneous results.\n", "\n", "#### Boostrap relative pre-eruptive (or pre-depositional) mineral age distribution" ] }, { "cell_type": "code", "execution_count": 10, "id": "88da27a0-d208-41a5-b8ac-7cc04f8c03a5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mInterpreting first two columns of KJ08-157.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mInterpreting first two columns of KJ04-75.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mInterpreting first two columns of KJ09-66.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mInterpreting first two columns of KJ04-72.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mInterpreting first two columns of KJ04-70.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Bootstrap a KDE of the pre-eruptive (or pre-deposition) zircon distribution\n", "# shape from individual sample datafiles using a KDE of stacked sample data\n", "BootstrappedDistribution = BootstrapCrystDistributionKDE(smpl)\n", "h = plot(range(0,1,length=length(BootstrappedDistribution)), BootstrappedDistribution,\n", " label=\"Bootstrapped distribution\", xlabel=\"Time (arbitrary units)\", ylabel=\"Probability Density\", \n", " fg_color_legend=:white, framestyle=:box)\n", "savefig(h, joinpath(smpl.Path,\"BootstrappedDistribution.pdf\"))\n", "display(h)" ] }, { "cell_type": "markdown", "id": "c734766d-a58e-4588-a6fb-40162eafcc29", "metadata": {}, "source": [ "#### Run eruption/deposition age model" ] }, { "cell_type": "code", "execution_count": 11, "id": "2e57593c-420e-4b2c-b46c-6567651a8a9d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mEstimating eruption/deposition age distributions...\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39m1: KJ08-157\n", "\u001b[36m\u001b[1mβ”‚ \u001b[22m\u001b[39mInterpreting first two columns of KJ08-157.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39m2: KJ04-75\n", "\u001b[36m\u001b[1mβ”‚ \u001b[22m\u001b[39mInterpreting first two columns of KJ04-75.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39m3: KJ09-66\n", "\u001b[36m\u001b[1mβ”‚ \u001b[22m\u001b[39mInterpreting first two columns of KJ09-66.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39m4: KJ04-72\n", "\u001b[36m\u001b[1mβ”‚ \u001b[22m\u001b[39mInterpreting first two columns of KJ04-72.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n", "\u001b[36m\u001b[1mβ”Œ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39m5: KJ04-70\n", "\u001b[36m\u001b[1mβ”‚ \u001b[22m\u001b[39mInterpreting first two columns of KJ04-70.csv as \n", "\u001b[36m\u001b[1mβ”” \u001b[22m\u001b[39m | Age | Age 2-sigma π‘Žπ‘π‘ π‘œπ‘™π‘’π‘‘π‘’ |\n" ] } ], "source": [ "# Number of steps to run in distribution MCMC\n", "distSteps = 10^6\n", "distBurnin = distStepsΓ·100\n", "\n", "# Choose the form of the prior closure/crystallization distribution to use\n", "dist = BootstrappedDistribution\n", "## You might alternatively consider:\n", "# dist = UniformDistribution # A reasonable default\n", "# dist = MeltsVolcanicZirconDistribution # A single magmatic pulse, truncated by eruption\n", "# dist = ExponentialDistribution # Applicable for survivorship processes, potentially including inheritance/dispersion in Ar-Ar dates\n", "\n", "# Run MCMC to estimate saturation and eruption/deposition age distributions\n", "smpl = tMinDistMetropolis(smpl,distSteps,distBurnin,dist)\n", "results = vcat([\"Sample\" \"Age\" \"2.5% CI\" \"97.5% CI\" \"sigma\"], hcat(collect(smpl.Name),smpl.Age,smpl.Age_025CI,smpl.Age_975CI,smpl.Age_sigma))\n", "writedlm(smpl.Path*\"results.csv\", results, ',');" ] }, { "cell_type": "code", "execution_count": 12, "id": "45e04373-bb79-4b18-a4b3-2b23c8e09798", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AgeDepthModel.pdf\n", "AgeDepthModel.svg\n", "BootstrappedDistribution.pdf\n", "DepositionRateModelCI.pdf\n", "DepositionRateModelCI.svg\n", "KJ04-70.csv\n", "KJ04-70_distribution.pdf\n", "KJ04-70_distribution.svg\n", "KJ04-70_rankorder.pdf\n", "KJ04-70_rankorder.svg\n", "KJ04-72.csv\n", "KJ04-72_distribution.pdf\n", "KJ04-72_distribution.svg\n", "KJ04-72_rankorder.pdf\n", "KJ04-72_rankorder.svg\n", "KJ04-75.csv\n", "KJ04-75_distribution.pdf\n", "KJ04-75_distribution.svg\n", "KJ04-75_rankorder.pdf\n", "KJ04-75_rankorder.svg\n", "KJ08-157.csv\n", "KJ08-157_distribution.pdf\n", "KJ08-157_distribution.svg\n", "KJ08-157_rankorder.pdf\n", "KJ08-157_rankorder.svg\n", "KJ09-66.csv\n", "KJ09-66_distribution.pdf\n", "KJ09-66_distribution.svg\n", "KJ09-66_rankorder.pdf\n", "KJ09-66_rankorder.svg\n", "KR18-01.csv\n", "KR18-01_Concordia.pdf\n", "KR18-01_Concordia.svg\n", "KR18-01_Pbloss.pdf\n", "KR18-01_Pbloss.svg\n", "KR18-01_distribution.pdf\n", "KR18-01_distribution.svg\n", "KR18-04.csv\n", "KR18-04_Concordia.pdf\n", "KR18-04_Concordia.svg\n", "KR18-04_Pbloss.pdf\n", "KR18-04_Pbloss.svg\n", "KR18-04_distribution.pdf\n", "KR18-04_distribution.svg\n", "KR18-05.csv\n", "KR18-05_Concordia.pdf\n", "KR18-05_Concordia.svg\n", "KR18-05_Pbloss.pdf\n", "KR18-05_Pbloss.svg\n", "KR18-05_distribution.pdf\n", "KR18-05_distribution.svg\n", "agedist.csv\n", "distresults.csv\n", "height.csv\n", "lldist.csv\n", "results.csv\n" ] }, { "data": { "text/plain": [ "6Γ—5 Matrix{Any}:\n", " \"Sample\" \"Age\" \"2.5% CI\" \"97.5% CI\" \"sigma\"\n", " \"KJ08-157\" 66.0717 66.038 66.0938 0.0140167\n", " \"KJ04-75\" 65.9319 65.888 65.9693 0.0209099\n", " \"KJ09-66\" 65.9367 65.8943 65.9763 0.0205472\n", " \"KJ04-72\" 65.9565 65.9258 65.9768 0.0128253\n", " \"KJ04-70\" 65.8314 65.7577 65.8938 0.0347877" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's see what that did\n", "run(`ls $(smpl.Path)`); \n", "results = readdlm(smpl.Path*\"results.csv\",',')" ] }, { "cell_type": "markdown", "id": "523580e8-91fc-49b3-a074-b1e375e90393", "metadata": {}, "source": [ "To see what one of these plots looks like, try pasting this into a markdown cell like the one below\n", "```\n", "\n", "```" ] }, { "cell_type": "markdown", "id": "92fe64ed-54d5-4e80-a4c0-5f827c7571ec", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "id": "1bb230e3-e027-4d73-86f1-6a1d42916684", "metadata": {}, "source": [ "For each sample, the eruption/deposition age distribution is inherently asymmetric, because of the one-sided relationship between mineral closure and eruption/deposition. For example \n", "(KJ04-70):\n", "\n", "\n", "\n", "(if no figure appears, double-click to enter this markdown cell and re-evaluate (`shift`-`enter`) after running the model above" ] }, { "cell_type": "markdown", "id": "a7d2ef77-04ef-4b25-bfe1-b87f10af6c6e", "metadata": {}, "source": [ "***\n", "## Getting your data out\n", "As before, we can use the unix command `ls` to see all the files we have written. Actually getting them out of here may be harder though." ] }, { "cell_type": "code", "execution_count": 13, "id": "0e5249f2-d6a2-4ec0-a243-f03fdfd9deb6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AgeDepthModel.pdf\n", "AgeDepthModel.svg\n", "BootstrappedDistribution.pdf\n", "DepositionRateModelCI.pdf\n", "DepositionRateModelCI.svg\n", "KJ04-70.csv\n", "KJ04-70_distribution.pdf\n", "KJ04-70_distribution.svg\n", "KJ04-70_rankorder.pdf\n", "KJ04-70_rankorder.svg\n", "KJ04-72.csv\n", "KJ04-72_distribution.pdf\n", "KJ04-72_distribution.svg\n", "KJ04-72_rankorder.pdf\n", "KJ04-72_rankorder.svg\n", "KJ04-75.csv\n", "KJ04-75_distribution.pdf\n", "KJ04-75_distribution.svg\n", "KJ04-75_rankorder.pdf\n", "KJ04-75_rankorder.svg\n", "KJ08-157.csv\n", "KJ08-157_distribution.pdf\n", "KJ08-157_distribution.svg\n", "KJ08-157_rankorder.pdf\n", "KJ08-157_rankorder.svg\n", "KJ09-66.csv\n", "KJ09-66_distribution.pdf\n", "KJ09-66_distribution.svg\n", "KJ09-66_rankorder.pdf\n", "KJ09-66_rankorder.svg\n", "KR18-01.csv\n", "KR18-01_Concordia.pdf\n", "KR18-01_Concordia.svg\n", "KR18-01_Pbloss.pdf\n", "KR18-01_Pbloss.svg\n", "KR18-01_distribution.pdf\n", "KR18-01_distribution.svg\n", "KR18-04.csv\n", "KR18-04_Concordia.pdf\n", "KR18-04_Concordia.svg\n", "KR18-04_Pbloss.pdf\n", "KR18-04_Pbloss.svg\n", "KR18-04_distribution.pdf\n", "KR18-04_distribution.svg\n", "KR18-05.csv\n", "KR18-05_Concordia.pdf\n", "KR18-05_Concordia.svg\n", "KR18-05_Pbloss.pdf\n", "KR18-05_Pbloss.svg\n", "KR18-05_distribution.pdf\n", "KR18-05_distribution.svg\n", "agedist.csv\n", "distresults.csv\n", "height.csv\n", "lldist.csv\n", "results.csv\n" ] } ], "source": [ ";ls MyData" ] }, { "cell_type": "markdown", "id": "3c7e0f60-94f6-4ae8-9311-acb5922ec651", "metadata": {}, "source": [ "We could use the trick we learned before to view the SVG files in markdown cells, which you should then be able to right click and download as real vector graphics. e.g. pasting something like\n", "```\n", "\n", "```\n", "in a markdown cell such as this one" ] }, { "cell_type": "markdown", "id": "af613eb4-9a13-4f9f-a9bb-62829a0dd043", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "0ca2d257-beac-4f3b-aee4-2ec0bdaf809d", "metadata": {}, "source": [ "Meanwhile, for the csv files we could try something like `; cat agedist.csv`, but agedist is probably too big to print. Let's try using ffsend instead, which should give you a download link. In fact, while we're at it, we might as well archive and zip the entire directory!" ] }, { "cell_type": "code", "execution_count": 14, "id": "52a8511e-cfcb-411b-9ac4-34a963820546", "metadata": {}, "outputs": [], "source": [ "# Make gzipped tar archive of the the whole MyData directory\n", "run(`tar -zcf archive.tar.gz ./MyData`);" ] }, { "cell_type": "code", "execution_count": 15, "id": "19462ac1-77f3-4692-9c18-aa398fef5998", "metadata": {}, "outputs": [], "source": [ "# Download prebuilt ffsend linux binary\n", "isfile(\"ffsend\") || download(\"https://github.com/timvisee/ffsend/releases/download/v0.2.65/ffsend-v0.2.65-linux-x64-static\", \"ffsend\")\n", "\n", "# Make ffsend executable\n", "run(`chmod +x ffsend`);" ] }, { "cell_type": "code", "execution_count": 16, "id": "65c6e47a-3d18-438a-8707-21ec7412cee4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/bin/bash: ./ffsend: cannot execute binary file\n" ] } ], "source": [ "; ./ffsend upload archive.tar.gz" ] }, { "cell_type": "markdown", "id": "78aadc97-1a1a-4f20-a84d-3955821ab199", "metadata": {}, "source": [ "You could alternatively use the ffsend command in this way to transfer individual files" ] }, { "cell_type": "markdown", "id": "fb2a15f9-3978-4cb4-a34d-1d22c0deaa36", "metadata": {}, "source": [ "Keep in mind that any changes you make to this online notebook won't persist after you close the tab (or after it times out) even if you save your changes! You have to either copy-paste or `file`>`Download as` a copy.\n", "***\n" ] }, { "cell_type": "code", "execution_count": null, "id": "1c97aa84-f0a3-4dc7-9613-f36fd86343b3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "84c405d7-d62a-4752-87db-f1c23b93e52f", "metadata": {}, "source": [ "***\n", "[![DOI](https://github.com/brenhinkeller/Chron.jl/raw/main/readme_figures/osf_io_TQX3F.svg?sanitize=true)](https://doi.org/10.17605/osf.io/TQX3F) " ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.9.2", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.2" } }, "nbformat": 4, "nbformat_minor": 5 }