MétaCan
Menu
Back to cohort
Record W6948506309 · doi:10.5281/zenodo.10037326

holoviz/param: Version 2.0.0

2023· other· en· W6948506309 on OpenAlexaff

Bibliographic record

VenueZenodo (CERN European Organization for Nuclear Research) · 2023
Typeother
Languageen
FieldEarth and Planetary Sciences
TopicSubterranean biodiversity and taxonomy
Canadian institutionsUniversity of Toronto
Fundersnot available
KeywordsParameterized complexityBackward compatibilityPython (programming language)Compatibility (geochemistry)Subclass

Abstract

fetched live from OpenAlex

20 years after its creation, Param has reached version 2.0! Can you guess when Param 3.0 will be released? Param 2.0 is a major new release available for Python 3.8 and above, significantly streamlining, simplifying, and improving the Param API. Many long-supported but also long-obsolete functions, methods, and usages will now warn loudly so that you can make sure your code is only using the fully supported and safe current approaches. Because upgrading to Param 2 is likely to reveal compatibility issues with older codebases, new releases in the 1.x series are expected to continue for some time, focused on compatibility with the ecosystem rather than adding new features. Thus you can keep using Param 1.x with your older code, but Param 2 is the future! We would like to thank @minimav for their first contribution, and @droumis, @Hoxbro, @jbednar, @maximlt, @philippjfr and @sdrobert for their contributions. We would also like to thank @ceball, who made the first plans for Param 2.0 quite a few years ago, and we are glad to be delivering on them at last! Major enhancements and features Parameter slot values are now all inherited correctly across a hierarchy of Parameterized classes, making their behavior much clearer and more consistent. Let's say we have class B being a subclass of A, itself being a subclass of param.Parameterized. If A defines x = Number(1, bounds=(0, 10)) and B defines x = Number(2), B.param['x'].bounds is now going to be inherited from A and equal to (0, 10) as you would expect. Parameterized classes have always supported inheritance, but the previous mechanism was based on using None to indicate which values should be inherited, which was highly problematic because None was also a valid value for many slots. All Parameter slot signatures now default to the new Undefined sentinel, finally allowing None to be inherited where appropriate. (#605, #771, #791, #874) The objects slot of a Selector was previously highly confusing, because it accepted either a dictionary or a list for initialization but then was accessible only as a list, making it difficult to watch or update the objects. There is now a ListProxy wrapper around Selector.objects (with forward and backward compatibility) to easily update objects and watch objects updates (#598, #825) Parameterized classes and instances now have a rich HTML representation that is displayed automatically in a Jupyter/IPython notebook. For a class or instance p, just return p.param in a notebook cell to see a table of all the Parameters of the class/instance, their state, type, and range, plus the docstring on hover. It is likely we will improve the content and design of this repr based on feedback, so please let us know what you think! (#425, #781, #821, #831) Parameters have all gained the allow_refs and nested_refs attributes, bringing an exceptionally useful feature that was available in Panel since version 1.2 to Param. Declaring a Parameter with allow_refs=True (False by default) allows setting this Parameter value with a reference to automatically mirror the value of the reference. Supported references include class/instance Parameter objects, functions/methods decorated with param.depends, reactive functions and expressions, asynchronous generators and custom objects transformed into a valid reference with a hook registered with param.parameterized.register_reference_transform. nested_refs indicate whether references should be resolved even when they are nested inside a container (#843, #845, #849, #865, #862, #876) Experimental new rx reactive expressions: Param is widely used for building web apps in the HoloViz ecosystem, where packages have added various mechanisms for dynamic updates (e.g. pn.bind and pn.depends in Panel, and .interactive in hvPlot). These mechanisms were already built on Param and can be used far more widely than just in those packages, so that functionality has now been generalized, streamlined, and moved into Param. Nearly any Python expression can now be made reactive with param.rx(), at which point it will collect and be able to replay any operations (e.g. method calls) performed on them. This reactive programming approach lets you take just about any existing Python workflow and replace attributes with widgets or other reactive values, creating an app with fine-grained user control without having to design callbacks, event handlers, or any other complex logic! rx support is still experimental while we get feedback about the API, packaging, and documentation, but it's fully ready to try out and give us suggestions! (#460, #842, #841, #844, #846, #847, #850, #851, #856, #860, #854, #859, #858, #873) Enhancements Parameter slot values that are set to mutable containers (e.g. Selector(objects=a_list)) will now be shallow-copied on instantiation, so that the container is no longer confusingly shared between the class and its subclasses and instances (#826) To further clean up the Parameterized namespace (first started in version 1.7.0), the remaining private attributes haven been collected under two private namespaces _param__private and _param__parameters (#766, #790) You can now use .param.update as a context manager for applying temporary updates (#779) The name Parameter has always had special behavior dating to its use in labeling objects in a GUI context, but this behavior is now able to be overriden at the class and instance level (#740) Improved Parameter signatures for static and dynamic code analysis (#742) Removed inferred Parameterized docstring signature and add basic __signature__ support (#802) For speed, only generate the Parameter docstring in an IPython context (#774) Improve Parameter validation error messages (#808) Support for deserialization of file types into Array and DataFrame (#482) Integer now accepts numpy.integer values (#735) Range now does stricter validation of the slot values (#725, #824) Path now has check_exists attribute, leading it to raise an error if path is not found on parameter instantiation (#800) Add top-level __all__ and move Parameter classes to parameters.py (#853) Bug fixes Allow type change for DateRange and Date (#733) Ensure class watchers are not inherited by instance parameter (#833) Fix multi-level indirection in Parameters access (#840) Ensure non-function types are not resolved as empty function declarations (#753) Fix watchers support when the Parameterized instance is falsy (#769) Fix depending on the method of a sub-parameter object (#765) Raise an error on bad non-watched references (#777) Ensure that the root dependency can be resolved, and error otherwise (#813) Fix basic pickling (#783, #792) Validate that self is present in the __init__ signature of a Parameterized class (#786) No longer force instantiate to True when constant is True (#776) Instantiate default Parameter values based on all the Parameters available (#798) Array: fix param.pprint (#795) Array: don't hard-code allow_None to True (#726) Boolean: validate the default type (#722) FileSelector: made more consistent with Selector by defaulting to the first globbed path (#801) FileSelector: ensure path separators are consistent on Windows (#805) Path: raise a ValueError if set to None while not allowed (#799) Selector: populate objects when check_on_set is False and default is not in objects (#794, #817) File/MultiFileSelector: updating path updates objects (#814) Documentation Build the site with sphinx directly and refactor the API reference (#810) Update to the latest version of pydata-sphinx-theme (#752) Update to Google Analytics 4 (#758) Fix minor errors in the Getting Started (#787) Add OpenCollective sponsor link on the repository page (#811) Infrastructure Increase the test suite coverage (#716, #717, #719, #720, #739, #775, #778) Turn warnings into exceptions in the test suite (#738) Add notebook smoke tests (#750) Upgrades to leverage hatch, pyproject.toml and pre-commit (#749, #772) Add basic benchmark suite using asv (#788) Reduce the number of tested Python versions (#732) Run the tests with Python 3.12 (#863) Compatibility Drop support for Python 2.7, 3.6, and 3.7 and upgrade the code base accordingly (#741, #784) Breaking changes While it's a major improvement to the definition of Parameters, properly inheriting Parameter slots can result in some Parameter slot values being different in Param 2, because Param 1 was sometimes silently not inheriting slot values. User-defined Parameter classes should be updated to use Undefined as the formal default for any new slots, with the actual default defined on the new _slot_defaults dictionary. Otherwise, any new slot will fail to support inheritance, even if it was set to None, which would previously support inheritance. Parameterized methods that were deprecated since Param 1.7.0 have finally been removed. These are now mostly available on the .param namespace (#592) No longer supports setting non-Parameter class attributes during initialization, and no longer warns when setting non-Parameter class attributes directly (#729) instance.param.watchers no longer returns the transient dict of watchers but instead returns the instance watchers, as the now deprecated instance._param_watchers (#797) Removed deprecated Parameterized.pprint, Parameterized._pprint, Parameterized.script_repr, ParameterizedFunction.script_repr (#767) Removed Time.next method needed only for Param 2, and moved Parameterized.state_pop and Parameterized.state_push to the .param namespace (#767) Some removals were considered harmless and thus implemented immediately without a deprecation period: Removed unused bounds slot from Boolean and Event (#744, #755) Removed private Parameter _internal_name slot (#796) Deprecations This section lists functionality that is expected to be removed sometime in the next couple of 2.x releases, so if you use Param 2, please take care of these warni

Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.

How this classification was reachedexpand

Full frame machine prediction

Teacher imitation

Not calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.

metaresearch head score (Codex)0.004
metaresearch head score (Gemma)0.017
Version: metacan-v3-hybrid-931329e0061cValidation status: machine_predicted_unvalidated
Candidate categoriesnone
Consensus categoriesnone
DomainCandidate signal: none · Consensus signal: none
Study designCandidate signal: Not applicable · Consensus signal: Not applicable
GenreCandidate signal: Software · Consensus signal: Software
Teacher disagreement score0.201
Threshold uncertainty score0.672

Distilled classifier scores by category (both heads)

CategoryCodexGemma
Metaresearch0.0040.017
Meta-epidemiology (narrow)0.0030.003
Meta-epidemiology (broad)0.0010.003
Bibliometrics0.0030.002
Science and technology studies0.0010.001
Scholarly communication0.0060.009
Open science0.0050.007
Research integrity0.0020.006
Insufficient payload (model declined to judge)0.2010.319

Machine scores (provisional)

The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.

Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.

Opus teacher head0.061
GPT teacher head0.207
Teacher spread0.145 · how far apart the two teachers sit on this one work
Validation statusscore_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from it

Classification

machine, unvalidated

Machine predicted; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.

The models applied no category: nothing in the taxonomy fit this work.
Study designNot applicable
Domainnot available
GenreSoftware

How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".

Quick stats

Citations0
Published2023
Admission routes1
Has abstractyes

Explore more

Same venueZenodo (CERN European Organization for Nuclear Research)Same topicSubterranean biodiversity and taxonomyFrench-language works237,207