Giter VIP home page Giter VIP logo

param's Introduction



HoloViz: High-level tools to simplify visualization in Python

Test suite status Status
Site/Content version Github tag
Docs gh-pages site dev-site
Status Dashboard
Binder Binder
Code of Conduct Based on Contributor Covenant
Fiscal Sponsor Powered by NumFOCUS

What is HoloViz?

HoloViz provides high-level Python tools that are designed to work together to solve the entire problem of visualization, from conducting exploratory data analysis to deploying complex dashboards.

The core HoloViz projects are:

  • Panel: Create interactive dashboards in Jupyter notebooks or standalone apps
  • hvPlot: Quickly and interactively explore data with a familiar API
  • HoloViews: Visualize while you analyze by declaring data properties
  • GeoViews: Extend HoloViews for geographic data
  • Datashader: Render big data images in a browser
  • Lumen: Construct no-code dashboards from simple YAML specifications
  • Colorcet: Plot with perceptually based colormaps
  • Param: Declaratively code in Python
Panel Logo hvPlot Logo HoloViews Logo GeoViews Logo
Datashader Logo Lumen Logo Colorcet Logo Param Logo

All HoloViz projects are freely available for commercial or non-commercial use according to a permissive open-source license as described in each project's website.

HoloViz uses a custom open governance model and is fiscally sponsored by NumFOCUS. Consider making a tax-deductible donation to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.

NumFOCUS donation details

NumFOCUS is a 501(c)(3) non-profit charity in the United States; as such, donations to NumFOCUS are tax-deductible as allowed by law. As with any donation, you should consult with your personal tax adviser or the IRS about your particular tax situation.


What is the purpose of this specific repository?

This repository provides an entry point for the HoloViz ecosystem. The best way to experience this repository is on HoloViz.org.

This website provides:

  1. Introduction to the HoloViz organization and its projects
  2. Guidance for which HoloViz tools to start with given different use cases
  3. Demonstrations of using multiple HoloViz tools in a single workflow
  4. Communication channels and FAQ for HoloViz community members
  5. Governance, roadmap, and contributing guide for HoloViz developers

Getting Started

We recommend starting with holoviz.org/tutorial. If you already have a problem to solve that involves a particular data type, check out holoviz.org/background for guidance on which HoloViz tools to focus on.

param's People

Contributors

ahuang11 avatar alfredocarella avatar ceball avatar droumis avatar hoxbro avatar hugovk avatar ivanov avatar jbampton avatar jbednar avatar jlstevens avatar jonmmease avatar jsignell avatar kebowen730 avatar marcskovmadsen avatar maximlt avatar melver avatar minimav avatar musicinmybrain avatar ossdev07 avatar ovidner avatar philippjfr avatar randomstuff avatar scottwedge avatar sdrobert avatar sultanorazbayev avatar thomasdeneux avatar tonyfast avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

param's Issues

ParamOverrides: create overrides attr?

Converted from SourceForge issue 2888861, submitted by ceball
Submit Date: 2009-10-29 15:43 GMT

set e.g. .overrides on Parameterized instance, and override getattribute to look in .overrides first; would have to set .overrides=None after call. Or something like that.

Unexpected global_params warning?

Converted from SourceForge issue 3440912, submitted by ceball
Submit Date: 2011-11-22 00:25 GMT

Maybe it's obscure, but if in a script I have a global param "someparam" (p.someparam below) and I also make a variable "someparam", I get a warning.

[jupiter1]s0454615: cat anothertest.ty
print "Executing test.ty"

from topo.misc.commandline import global_params as p
import param

p.add(
someparam = param.String(default='1')
)

print p.someparam

someparam = "hello"

[jupiter1]s0454615: ./topographica anothertest.ty
Executing test.ty
1
Time: 000000.00 global_params: Warning: 'someparam=hello' is unused.

Making a value_generator attribute/property accessible from params

As a suggestion, it might be worth offering a different way of accessing a parameters value generator than the current get_value_generator interface.

Instead of using:

imagen.Gaussian(orientation=UniformRandom()).get_value_generator('orientation') 

It would be useful to get the generator using:

imagen.Gaussian(orientation=UniformRandom()).params('orientation').value_generator 

As the params method is probably the most common interface for accessing parameters and their attributes. This suggestion is related to issue #66.

Package installation inside git repo breaks

Installing param (pip install param) into a virtual environment that is inside a git repository fails with

Exception: Cannot find any git version tags of format v_._

This makes it difficult to install param as part of certain Jenkins CI workflows that make use of git + virtualenv.

global_params name checking bug

Converted from SourceForge issue 2896801, submitted by ceball
Submit Date: 2009-11-12 19:33 GMT

ceball@fiver:/working/topographica$ cat test.ty
name=True
ceball@fiver:
/working/topographica$ ./topographica test.ty
Time: 000000.00 global_params: Warning: 'name=True' is unused.
ceball@fiver:~/working/topographica$

ReadOnlyParameter

Converted from SourceForge issue 1829846, submitted by ceball
Submit Date: 2007-11-11 08:34 GMT

To allow declaration of something but not let it be set anywhere else,
even in a ParameterizedObject constructor.

Rename Parameter subclasses' "**params" arguments

Converted from SourceForge issue 2513082, submitted by ceball
Submit Date: 2009-01-16 12:02 GMT

E.g.

class Dynamic(Parameter)
def init(self,**params):
super(Dynamic,self).init(**params)

The name of **params is confusing here. It should be **kw - or in fact anything except **params, which is a name we use specifically for passing parameter values to methods of Parameterized instances.

ClassSelector in global params

Converted from SourceForge issue 2888857, submitted by ceball
Submit Date: 2009-10-29 15:41 GMT

err in defn in globparam.add() - error msg fails because attrname not set

Better representation of Parameters at commandline

Converted from SourceForge issue 3027874, submitted by ceball
Submit Date: 2010-07-10 18:48 GMT

r11145 added repr() for Parameter, so that the documentation of parametertized classes and instances could include type, bounds, default value and so on. Later reverted this change because it results in too much information in the gui (pop-up boxes), and probably too much even in the commandline help. Would be nice to have some compromise, though.

help() function

Converted from SourceForge issue 1374683, submitted by ceball
Submit Date: 2005-12-06 18:11 GMT

When I type help(my_object), I think it should at least
tell me that if there is no documentation here, typing
help(my_object_class) would probably provide what I'm
looking for.

global_params: conflicting parameter names

Converted from SourceForge issue 2545565, submitted by ceball
Submit Date: 2009-01-29 14:18 GMT

e.g.

[goshawk]v1cball: ./topographica -c name=4 -i
Time: 000000.00 global_params: Warning: 'name=4' is unused.

(name is a parameter of param.Parameterized)

Use iterators and generators with Dynamic parameters

Converted from SourceForge issue 1864370, submitted by ceball
Submit Date: 2008-01-05 07:58 GMT

Currently, we can't use python's iterators or generators with Dynamic parameters.

This is because:

(1) we deepcopy parameter values; python currently doesn't handle deepcopy of iterators and generators

(2) we want to be able to pickle simulations; python can't currently pickle iterators and generators (same as reason as 2)

(3) generators and iterators can't have attributes; we need to store _Dynamic_last and _Dynamic_time on the value generators

ParameterizedFunction.instance() should not accept *args

When creating a Parameterized instance, you can pass only **params:

class Parameterized(object):
    ...
    def __init__(self,**params):
        ...

ParameterizedFunction.instance() creates a Parameterized instance, so should have the same signature. Currently it looks like this:

class ParameterizedFunction(Parameterized):
...
    @bothmethod
    def instance(self_or_cls,*args,**params):
        ...

Also, passing *args to Parameterized.new (object.new) is at best pointless.

Getting to the dynamic value generator of a Dynamic parameter

One thing that has frequently aggravates me about param is that there is no way (that I know of) to get at a dynamic value generator e.g a numbergen object. Perhaps there is a proper way to do this, but I have hacked in this method into my copy of param (on the Dynamic class) for the time being:

    def get_generator(self, obj):
        """
        Given a parameterized object, gets the dynamic value generator.
        """
        return super(Dynamic,self).__get__(obj, obj.__class__)

This is still awkward to use, but better than nothing. Say I have an imagen.Gaussian object and I want to fiddle the random number generator used for the orientation. Now I can do:

generator = gaussian.params('orientation').get_generator(gaussian)

Now for instance, I could change the time_fn for this numbergen object.

Any thoughts? Is there already a better way of doing this?

Add global parameters

From Jim:

We also [want] global parameters, with an object in the main namespace that
collects options specified on the commandline. I.e., any commandline option should
have a corresponding parameter, and changing that option should have a direct
mapping to that parameter, so that such parameters can be changed in a .rc file,
from within a script, etc.

From Jean-Luc:

Converted from SourceForge issue 3537800, submitted by jlstevens
Submit Date: 2012-06-25 14:49 GMT

[...] global parameters that are relevant to the whole simulator (eg. OpenMP
settings) would be very useful. [...] global_params should be implemented with the
following properties:

  • At the commandline any option '-x=y' should set global parameter 'x' to value 'y'
  • Global parameters belong to the global namespace so that you can put the line 'x=y'
    in your topographica.rc file to always set global parameter 'x' as 'y' by default. Any
    behaviour set in the rc file is overridden if explicitly set on the commandline.
  • At the IPython prompt, entering 'x=y' should set global parameter 'x' to 'y' for the
    reminder of that session (ie. it should be possible to rebind global parameters at any
    time)

If this were implemented it would be possible to specify options in the topographica.rc
file instead of having to specify these options each time Topographica is invoke. All
the current options should be implemented this way (ie. -i,-v,-d,-l,-g, --pdb, -c, -p, -a)
with the exception of -h/--help.

(collected from #12 and #39)

Why don't we use Python's built-in warnings?

Converted from SourceForge issue 3027504, submitted by ceball
Submit Date: 2010-07-09 18:10 GMT

We have our own warning system. How are e.g. tests supposed to detect our warnings?

Dynamic parameters should support iterator protocol

Dynamic parameters currently accept callable objects which are called to generate new values (e.g. with numbergen). It would make sense (and probably be more Pythonic!) to use the iterator protocol instead, calling the next function (for Python 3 compatibility) to get each value in turn.

It should be relatively easy to update numbergen to support the iterator protocol - it may be possible to deprecate the callable interface without too much trouble.

Simplify declaration that a class is abstract

Converted from SourceForge issue 1829837, submitted by ceball
Submit Date: 2007-11-11 08:16 GMT

Given how private attributes work in Python, it seems like we can just
have a parameter __abstract_class=True for abstract classes, and then
__is_abstract can check to see if there is such an attribute (and that
it is True, just in case).

Update notes in paramtk

  1. Update demo code.
  2. Explain that code is much more complex than necessary, and document plans to wrap it in a simpler interface (with the aim of eventually replacing the original code with something much simpler).

Global params (vs script params)

Converted from SourceForge issue 3537800, submitted by jlstevens
Submit Date: 2012-06-25 14:49 GMT

Topographica has global_params which allow parameters to be specified with the -p flag. This naming is incorrect as global_params only behave properly within .ty scripts and global parameters that are relevant to the whole simulator (eg. OpenMP settings) would be very useful. The existing global_params should therefore be called script_params and global_params should be implemented with the following properties:

- At the commandline any option '-x=y' should set global parameter 'x' to value 'y'

  • Global parameters belong to the global namespace so that you can put the line 'x=y' in your topographica.rc file to always set global parameter 'x' as 'y' by default. Any behaviour set in the rc file is overridden if explicitly set on the commandline.
  • At the IPython prompt, entering 'x=y' should set global parameter 'x' to 'y' for the reminder of that session (ie. it should be possible to rebind global parameters at any time)

If this were implemented it would be possible to specify options in the topographica.rc file instead of having to specify these options each time Topographica is invoke. All the current options should be implemented this way (ie. -i,-v,-d,-l,-g, --pdb, -c, -p, -a) with the exception of -h/--help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.