|
| 1 | +""" |
| 2 | +Supercharged Java access from Python, built on JPype and jgo. |
| 3 | +
|
| 4 | +Use Java classes from Python: |
| 5 | +
|
| 6 | + >>> from scyjava import jimport |
| 7 | + >>> System = jimport('java.lang.System') |
| 8 | + >>> System.getProperty('java.version') |
| 9 | + '1.8.0_252' |
| 10 | +
|
| 11 | +Use Maven artifacts from remote repositories: |
| 12 | +
|
| 13 | + >>> from scyjava import config, jimport |
| 14 | + >>> config.add_option('-Djava.awt.headless=true') |
| 15 | + >>> config.add_repositories({ |
| 16 | + ... 'scijava.public': 'https://maven.scijava.org/content/groups/public', |
| 17 | + ... }) |
| 18 | + >>> config.endpoints.append('net.imagej:imagej:2.1.0') |
| 19 | + >>> ImageJ = jimport('net.imagej.ImageJ') |
| 20 | + >>> ij = ImageJ() |
| 21 | + >>> formula = "10 * (Math.cos(0.3*p[0]) + Math.sin(0.3*p[1]))" |
| 22 | + >>> ArrayImgs = jimport('net.imglib2.img.array.ArrayImgs') |
| 23 | + >>> blank = ArrayImgs.floats(64, 16) |
| 24 | + >>> sinusoid = ij.op().image().equation(blank, formula) |
| 25 | + >>> print(ij.op().image().ascii(sinusoid)) |
| 26 | + ,,,--+oo******oo+--,,,,,--+oo******o++--,,,,,--+oo******o++--,,, |
| 27 | + ...,--+ooo**oo++--,....,,--+ooo**oo++-,,....,,--+ooo**oo++-,,... |
| 28 | + ...,--++oooo++--,... ...,--++oooo++--,... ...,--++oooo++-,,... |
| 29 | + ..,--++++++--,.. ..,--++o+++--,.. .,,--++o+++--,.. |
| 30 | + ..,,-++++++-,,. ..,,-++++++-,,. ..,--++++++-,,. |
| 31 | + .,,--++++--,,. .,,--++++--,,. .,,--++++--,.. |
| 32 | + .,,--++++--,,. .,,-+++++--,,. .,,-+++++--,,. |
| 33 | + ..,--++++++--,.. ..,--++++++--,.. ..,--++++++-,,.. |
| 34 | + ..,,-++oooo++-,,.. ..,,-++oooo++-,,.. ..,,-++ooo+++-,,.. |
| 35 | + ...,,-++oooooo++-,,.....,,-++oooooo++-,,.....,,-++oooooo+--,,... |
| 36 | + .,,,-++oo****oo++-,,,.,,,-++oo****oo+--,,,.,,,-++oo****oo+--,,,. |
| 37 | + ,,--++o***OO**oo++-,,,,--++o***OO**oo+--,,,,--++o***OO**oo+--,,, |
| 38 | + ---++o**OOOOOO**o++-----++o**OOOOOO*oo++-----++o**OOOOOO*oo++--- |
| 39 | + --++oo*OO####OO*oo++---++oo*OO####OO*oo++---++o**OO####OO*oo++-- |
| 40 | + +++oo*OO######O**oo+++++oo*OO######O**oo+++++oo*OO######O**oo+++ |
| 41 | + +++oo*OO######OO*oo+++++oo*OO######OO*oo+++++oo*OO######OO*oo+++ |
| 42 | +
|
| 43 | +Convert Java collections to Python: |
| 44 | +
|
| 45 | + >>> from scyjava import jimport |
| 46 | + >>> HashSet = jimport('java.util.HashSet') |
| 47 | + >>> moves = set(('jump', 'duck', 'dodge')) |
| 48 | + >>> fish = set(('walleye', 'pike', 'trout')) |
| 49 | + >>> jbirds = HashSet() |
| 50 | + >>> for bird in ('duck', 'goose', 'swan'): jbirds.add(bird) |
| 51 | + >>> from scyjava import to_python as j2p |
| 52 | + >>> j2p(jbirds).isdisjoint(moves) |
| 53 | + False |
| 54 | + >>> j2p(jbirds).isdisjoint(fish) |
| 55 | + True |
| 56 | +
|
| 57 | +Convert Python collections to Java: |
| 58 | +
|
| 59 | + >>> from scyjava import jimport |
| 60 | + >>> HashSet = jimport('java.util.HashSet') |
| 61 | + >>> jset = HashSet() |
| 62 | + >>> pset = set((1, 2, 3)) |
| 63 | + >>> from scyjava import to_java as p2j |
| 64 | + >>> jset.addAll(p2j(pset)) |
| 65 | + True |
| 66 | + >>> jset.toString() |
| 67 | + '[1, 2, 3]' |
| 68 | +""" |
1 | 69 | import logging |
2 | 70 | from functools import lru_cache |
3 | 71 | from typing import Any, Callable, Dict |
|
0 commit comments