README.md

Mon, 20 Apr 2020 12:21:39 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 20 Apr 2020 12:21:39 -0500
changeset 14
adf8eb3a1df9
parent 13
f237f22e36d4
child 17
c4c2ab568324
permissions
-rw-r--r--

Link ImageTools

11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1
13
f237f22e36d4 Change README title
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
2 # AlgTools
11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 Author: Tuomo Valkonen <tuomov@iki.fi>
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
5
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
6 This repository contains some general utility routines and tools for doing
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7 iterative algorithms in Julia:
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 * Tools to facilitate working with `Channel`s
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 * Linked lists and writing them to log files.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 * Structs: iteration, field replacement
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 * Calculation of norms, dot products, projections
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13 * Conditional thread execution macros
12
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
14 * Template for conveniently writing iterative algorithms using `do`-block anonymous functions as algorithm steps, with visualisation/verbosity implemented generally in iterator.
11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15
14
adf8eb3a1df9 Link ImageTools
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
16 The code is used by [ImageTools][] and both, for example, by <http://dx.doi.org/10.5281/zenodo.3659180>.
11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17
12
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
18 ## Installation
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
19
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
20 To install this package, first clone the repository with [Mercurial](https://www.mercurial-scm.org/):
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
21
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
22 ```console
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
23 $ hg clone https://tuomov.iki.fi/repos/AlgTools/
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
24 ```
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
25
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
26 (Canonical public repository URL indicated here.)
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
27 Then add the repository to Julia with `Pkg.develop`:
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
28
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
29 ```console
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
30 julia>] develop LOCATION_OF/AlgTools/
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
31 ```
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
32
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
33 Here replace `LOCATION_OF/AlgTools` with path where you cloned AlgTools. (If you did not change directory after cloning, simply use `AlgTools`.)
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
34 Afterwards, you may use the package with:
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
35
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
36 ```console
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
37 julia> using AlgTools
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
38 ```
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
39
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
40 This package is not and is not planned to be available via `Pkg.add` as it is based on the worst and must unusable version control system ever invented: Git.
0a72b8aec56a Installation instructions
Tuomo Valkonen <tuomov@iki.fi>
parents: 11
diff changeset
41
11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
42 ## Iterative algorithms example
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
43
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
44 The package includes `simple_iterate` which helps separating the computational step of iterative algorithms for visualisation routines. It is merely intended to serve as a template, as different applications require different visualisation routines to be implemented in a replacement of `simple_iterate`. The computational step is implemented as a `do`-block anonymous function that gets passed another function is a parameter for doing the verbosity on request. Example:
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
45
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
46 ```julia
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
47 using AlgTools.Iterate
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
48
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
49 params = (verbose_iter = 10, maxiter = 100,)
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
50
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
51 begin
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
52 local x = 1
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
53 simple_iterate(params) do verbose
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
54 # This is our computational step, as an anonymous
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
55 # `do`-block function. It has one parameter: `verbose`,
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
56 # itself a function.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
57 x = x + √x
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
58 verbose() do
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
59 # This is another anonymous function that will
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
60 # only get called when decided by `verbose`.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
61 # If we do get called, return current value
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
62 return x, nothing
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
63 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
64 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
65 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
66 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
67 This will output
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
68 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
69 10/100 J=31.051164
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
70 20/100 J=108.493699
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
71 30/100 J=234.690039
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
72 40/100 J=410.056327
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
73 50/100 J=634.799262
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
74 60/100 J=909.042928
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
75 70/100 J=1232.870172
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
76 80/100 J=1606.340254
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
77 90/100 J=2029.497673
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
78 100/100 J=2502.377071
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
79 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
80
14
adf8eb3a1df9 Link ImageTools
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
81 [ImageTools]: https://tuomov.iki.fi/software/ImageTools/

mercurial