greta-dev / greta-dev/greta

in replacement of greta array values fix replacement value being overwritten early

Open
#552 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
607
Forks
67
Avg merge
3d 8h
Merged PRs (30d)
1

Description

First noticed in `check_expr` in `test_extract_replace_combine.R`

```r
x <- randn(10)
check_expr({
x[1:6] <- seq_len(6)
x
})
```

We get the following node list,

```
$node_8fb0f131

Inherits from:
Public:
.value: 1 2 3 4 5 6 0.985587069161365 -1.34378507400201 0.281578 ...
add_argument: function (argument)
add_child: function (node)
add_parent: function (node)
arguments: list
child_names: function ()
children: list
clone: function (deep = FALSE)
define_tf: function (dag)
defined: function (dag)
description: function ()
dim: 10 1
distribution: NULL
get_unique_name: function ()
initialize: function (operation, ..., dim = NULL, operation_args = list(),
list_children: function (dag)
list_parents: function (dag)
operation: tf_replace
operation_args: list
operation_name: replace
parent_names: function (recursive = FALSE)
parents: list
plotting_label: function ()
register: function (dag)
register_family: function (dag)
remove_child: function (node)
remove_parent: function (node)
representations: list
set_distribution: function (distribution)
tf: function (dag)
tf_function_env: environment
unique_name: node_8fb0f131
value: function (new_value = NULL, ...)

$node_54966a45

Inherits from:
Public:
.value: 1 2 3 4 5 6 0.985587069161365 -1.34378507400201 0.281578 ...
add_child: function (node)
add_parent: function (node)
child_names: function ()
children: list
clone: function (deep = FALSE)
define_tf: function (dag)
defined: function (dag)
description: function ()
dim: 10 1
distribution: NULL
get_unique_name: function ()
initialize: function (data)
list_children: function (dag)
list_parents: function (dag)
parent_names: function (recursive = FALSE)
parents: list
plotting_label: function ()
register: function (dag)
register_family: function (dag)
remove_child: function (node)
remove_parent: function (node)
representations: list
set_distribution: function (distribution)
tf: function (dag)
unique_name: node_54966a45
value: function (new_value = NULL, ...)

$node_35f20ab3

Inherits from:
Public:
.value: 1 2 3 4 5 6
add_child: function (node)
add_parent: function (node)
child_names: function ()
children: list
clone: function (deep = FALSE)
define_tf: function (dag)
defined: function (dag)
description: function ()
dim: 6 1
distribution: NULL
get_unique_name: function ()
initialize: function (data)
list_children: function (dag)
list_parents: function (dag)
parent_names: function (recursive = FALSE)
parents: list
plotting_label: function ()
register: function (dag)
register_family: function (dag)
remove_child: function (node)
remove_parent: function (node)
representations: list
set_distribution: function (distribution)
tf: function (dag)
unique_name: node_35f20ab3
value: function (new_value = NULL, ...)
```

The second nodes `.value` is already replaced, which doesn't seem to impact things at the moment but could be problematic down the track.

We can potentially fix this by having a `print_value` and `.value` slot to distinguish between these two?

NOTE: When investigating with this code - we can't seem to replicate this issue, so it could be something that only happens in testing

```r
library(greta)

x <- as_data(runif(10))
x[1:6] <- 1:6
y <- normal(x, 1)
m <- model(y)
m$dag$node_list
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.