adaptive sampling for CBDM
Project description
raytraverse (1.3.4)
raytraverse is a complete workflow for climate based daylight modelling, simulation, and evaluation of architectural spaces. Built around a wavelet guided adaptive sampling strategy, raytraverse can fully explore the daylight conditions throughout a space with efficient use of processing power and storage space.
Free software: Mozilla Public License 2.0 (MPL 2.0)
Documentation: https://raytraverse.readthedocs.io/en/latest/.
Installation
The easiest way to install raytraverse is with pip:
pip install --upgrade pip setuptools wheel pip install raytraverse
or if you have cloned this repository:
cd path/to/this/file pip install .
Windows
Currently raytraverse is only compatible with macOS and linux operating systems. One way to use raytraverse on a Windows machine is with Docker. In adddition to the Docker installation, this process will require about 1.5 GB of disk space.
Install Docker from: https://www.docker.com/products/docker-desktop/ (click on “Windows”) and then follow the installation instructions.
Open the newly installed Docker Desktop application (you do not need to sign in or create an account)
Create a new local folder and with a file named Dockerfile:
# syntax=docker/dockerfile:1 FROM python:3.9 WORKDIR /working SHELL ["/bin/bash", "-c"] RUN pip3 install raytraverse CMD raytraverse --help
in a command prompt navigate to this folder and:
docker build . --tag raytraverse
To use raytraverse, navigate to a local folder that contains all necessary files (radiance scene files, sky data, etc.).
Now, in this folder:
docker run -it --name rayt --mount type=bind,source="$(pwd)",target=/working raytraverse /bin/bash
You now have a linux/bash command prompt in an environment with raytraverse installed. The currrent directory will be named “working” within the linux environment and is a shared resource with the host (changes on the host side are immediately seen in the container and vice versa). When you are finished, exit the linux shell (“exit”), then in the (now) windows command prompt:
docker rm rayt
for ease of use, you can put these to lines in a .bat file somewhere in your execution PATH, just make sure that docker desktop is running before calling:
docker run -it --name rayt --mount type=bind,source="$(pwd)",target=/working raytraverse /bin/bash docker rm rayt
to update raytraverse, just repeat step 4 in a directory with the Dockerfile in step 3.
see the Docker settings for information about resource allocation to the docker container
Usage
raytraverse includes a complete command line interface with all commands nested under the raytraverse parent command enter:
raytraverse --help
raytraverse also exposes an object oriented API written primarily in python. calls to Radiance are made through Renderer objects that wrap the radiance c source code in c++ classes, which are made available in python with pybind11. see craytraverse (https://pypi.org/project/craytraverse/).
For complete documentation of the API and the command line interface either use the Documentation link included above or:
pip install -r docs/requirements.txt make docs
to generate local documentation.
History
1.3.4
do not use srcview for local light sources, include atleast 1 level of clean-up
make sure kd tree is rebuilt when lucky squirrel
ambient file handling in rtrace
better memory management in reflection_search (still a problem?)
new example config with proper settings
with minsamp > 0 make sure from_pdf returns something so sampling can complete
1.3.3
static light source sampler, directly samples electric lights at appropriate level, will use lots of extra samples with very long thin fixtures
color support in lightPointKD and samplers, but for now only works with imagesampler and sourcesampler because need to update skydata to work with color (and handle mixed data)
use scene detail in sampler (in this case image reconstruction works better WITHOUT scene detail, new interpolation keywords fastc and highc for context interpolation)
consolidated integrator/zonalintegrator and special methods dv/ds into one class
changed zonal sunplane query algorithm: filter suns, penalize, query instead of filter suns, sort, filter points
removed ptfilter keyword for zonal evaluation (new process does not use)
sunplane normalization based on level 0 distance of sampled suns and level 0 distance of areas for level 0 sampled suns
SensorIntegrator to process sensorplane results
manage stranded open OS file descriptors
wait to calculate omega on demand in lightplaneKD
removed img2lf in imagetools, creates circular reference, need to add to different module
allow None vector argument for lightplane initialization (cconstructs filename)
zero pad hour labels in lightresult for proper file name sorting
calc_omega method now passes “QJ” to qhull which seems to reliable return regions for all points in case of failure, distributed area among points sharing region (moved from integrator.helpers to translate) so LightPointKD can share
fixed mistakes in GSS implementation and recalibrated
1.3.2 (2022-04-28)
force ‘fork’ for multiprocessing to ensure radiance state is copied to processes
restructure radiancerrenderers - not singleton, just a stateful class, pickleable with get/set state
dummy skydatamask class useful for intializing with lightresult axes to handle fill
value_array method added to ResultAxis for easier syntax
settable sigma_c method in hvsgsm
make integrator.helpers public for overrides
supress warnings from radiance during reflection search
implement ZonalIntegratorDV
1.3.1 (2022-04-19)
moved craytraverse to separate repository, now a requirement
implemented glare sensation model, not yet available from CLI
1.3.0 (2022-04-01)
first version compatible on linux systems
changed skyres specification to int (defining side) for consistency with other resolution parameters
1.2.8 (2022-03-15)
include radius around sun and reflections when resampling view. for 3comp, -ss should be 0 for skyengine
handle stray hits when resampling radius around sun
new simtype: 1compdv / integratordv
1.2.7 (2022-03-01)
parametric search radius for specguide in sunsamplerpt
integratorDS checks whether it is more memory efficient to apply skyvectors before adding points
fixed double printing of 360 direct_views
exposd lowlight and threshold parameter access to cli (both imgmetric and evaluate)
changed to general precision formatting for lightresult printing
fixed -skyfilter in pull, needs a skydata file to correctly index, otherwise based on array size
new sampling metric normalizations, can now control logging and pbars with scene parameter
1.2.6 (2022-02-19)
add hours when available to skydata
proper masking of 360 images
integratorDS handles stray roughness from direct patch
planmapper, z set to median instead of max, added autorotation/alignment
bugs/features/consistency in LightResult, need better usage documentation
directviews from cli (only works with sky)
1.2.5 (2022-02-15)
integrated zonal calcs in cli
fall back to regular light result when possible (but keep area)
fixed bugs in LightResult, ZonalLightResult
added physically based point spread calculation that ~matches gregs gblur script, but using acutal lorentzian from reference
added blur psf to sources in image evaluation
1.2.4 (2021-12-03) (not posted until 2022-02-10)
organized command line code
use process pool for sun sampler when raytracing is fast (such as -ab 0 runs with dcomp)
propogate plotp to child sampler if sampling one level
separated utility command line to own entry point. fixed ambiguity in coordinate handedness of some functions (changed kwarg defaults)
1.2.3 (2021-09-03)
fixed rcontrib to work with Radiance/HEAD, radiance version string includes commit
daylightplane - add indirect to -ab 0 sun run (daysim/5-phase style)
lightpointkd - handle adding points with same sample rays
sampler - add repeat function to follow an existing sampling scheme
lightresult - added print function
scene - remove logging from scene class
- cli.py
new command imgmetric, extract rays from image and use same metricfuncs
mew command pull, filter and output 2d data frames from lightresult
add printdata option to suns, to see candidates or border
make TStqdm progress bar class public
- include PositionIndex calculation in BaseMetricSet
new metrics: loggcr and position weighted luminance/gcr
skymapper: filter candidates by positive dirnorm when initialized with epw/wea
- imagetools: parallel process image metrics, also normalize peak with some
assumptions
lightresult: accept slices for findices argument
- sunsamplerpt: at second and thrid sampling levels supplement sampling with
spec_guide at 1/100 the threshold. helps with imterior spaces to find smaller patches of sun
positionindex: fix bug transcribed from evalglare with the positionindex below horizon
1.2.0/2 (2021-05-24)
command line interface development
1.1.2 (2021-02-19)
improved documentation
1.1.0/1 (2021-02-10)
refactor code to operate on a single point at a time
1.0.4 (2020-11-18)
create and manage log file (attribute of Scene) for run directories
possible fix for bug in interpolate_kd resulting in index range errors
protect imports in cli.py so documentation can be built without installing
1.0.3 (2020-11-10)
new module for calculating position based on retinal features
view specifications for directview plotting
options for samples/weight visibility on directview plotting
0.2.0 (2020-09-25)
Build now includes all radiance dependencies to setup multi-platform testing
In the absence of craytraverse, sampler falls back to SPRenderer
install process streamlined for developer mode
travis ci deploys linux and mac wheels directly to pypi
- release.sh should be run after updating this file, tests past locally and
docs build.
0.1.0 (2020-05-19)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for raytraverse-1.3.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 596a6a7b19c490bb58bda900856569dc9ea2de9f85abfd169968ac88ac9983c8 |
|
MD5 | f36ef993fac33ecdf2c35114590c5d83 |
|
BLAKE2b-256 | c9a87db0b1c99e4bdd53b07ea96a8e5b315fccdc43ba076e6042bfda5c795aae |