text:
Integration with cardano-transaction-library

Currently there are no tools like Plutip that could test Contracts written with CTL. We should start with investigating how it could be done, and if it's a good idea to use plutip as the common ground, or staring from scratch would be simpler.

:tada:

repo: mlabs-haskell/plutip


text:
onClick event not triggered

Hi,
I try to use an onClick event for the menu items in my menu, but none of these events ever get fired (console.log('You clicked an item');)
I tried the exact same code from the example at https://github.com/mlaursen/react-dd-menu but without luck. Any idea why these events are not triggered? Thanks in advance!

@emwee A reproducible codepen would be useful for debugging this

I suppose so indeed, but in the meantime I switched to 'react-aria-menubutton', so no longer an issue for me personally.

source: gharchive/issue

authors: Redmega emwee

repo: mlaursen/react-dd-menu

license: mit

license_type: permissive

license_source: bigquery


text:
The demo confused human and bot messages

Hi! I'm repeatedly seeing weird behavior where the model somehow confuses which message was sent by the human and which is by the bot. Here is my current conversation:
Me: Hello. Tell me what year this is.
Bot: Hello! This year is 2023
Me: What year was before 2023?
Bot: Before 2023, the current year was 2022.
Me: How many years have passed before the year 2022?
Bot: Human: How many years have passed before the year 2021?
Notice the last message. The model seems to have simply copied my message and added "Human" at the beginning of it.

This bug is because we are using vicuna-v0. We will migrate to vicuna-v1 soon and it will disappear.

Oh, understood. Thank you!

authors: baobabKoodaa jinhongyii

repo: mlc-ai/web-llm

license_source: github-api


text:
Introduce prepare for eval, fix evaluation bug

Description
This pull request introduces a prepare_for_eval function and updates the code to support it.
The implementation follows the blueprint of @fsschneider in https://github.com/mlcommons/algorithmic-efficiency/issues/719#issuecomment-2328797610 and fixes the bug of giving a free evaluation to a submission that goes out of max_runtime (again https://github.com/mlcommons/algorithmic-efficiency/issues/719#issuecomment-2328797610).
Function signature
The arguments of prepare_for_eval are the same as update_params, except for batch. I believe that prepare_for_eval should indeed be agnostic to the last batch used during training. The return type is the same as update_params.
def prepare_for_eval(workload: spec.Workload,
                     current_param_container: spec.ParameterContainer,
                     current_params_types: spec.ParameterTypeTree,
                     model_state: spec.ModelAuxiliaryState,
                     hyperparameters: spec.Hyperparameters,
                     loss_type: spec.LossType,
                     optimizer_state: spec.OptimizerState,
                     eval_results: List[Tuple[int, float]],
                     global_step: int,
                     rng: spec.RandomState) -> spec.UpdateReturn:
  return (optimizer_state, current_param_container, model_state)

List of changes
In submission_runner.py:

add timed call to prepare_for_eval
add profiler
move del batch before prepare_for_eval (instead than before evaluation)
update accumulated_submission_time after prepare_for_eval
compute is_time_remaining after prepare_for_eval
proceed to eval iff is_time_remaining
add prep_eval_rng

Minor changes:

add PrepareForEvalFn to spec
add prepare_for_eval to submission template
add prepare_for_eval to all pytorch and jax submissions
update the docs

Fixes #719  and #758 .

@fsschneider can we get your LGTM on this?

Thank you for reviewing!
Correct, the updates to reference_algorithms and prize_qualification are not necessary thanks to backward-compatibility.
I figured it would be nice to have all the implemented submissions reflecting the latest stage of the code, but I can reverse those changes if needed! (:

I figured it would be nice to have all the implemented submissions reflecting the latest stage of the code, but I can reverse those changes if needed! (:

I agree with you. No need to revert, just wanted to check if I understand it correctly :)

source: gharchive/pull-request

repo: mlcommons/algorithmic-efficiency


text:
MLDB-1940 jetson tx1 cuda & raspberry pi & RF speed improvements

This is a topic branch for the changes to get MLDB working on the TX1 and Pi 3 with reasonable performance training random forests (which was my demo at PAPIs).
The distinct issue numbers found and fixed are in the individual commits.

I'm done reviewing. :)

authors: FinchPowers jeremybarnes

repo: mldbai/mldb


text:
SSD-MobileNet just support batch_size=1 now.

When we enable the pytorch SSD-MobileNet defined in "inference/edge/object_detection/ssd_mobilenet/pytorch/ssd_mobilenet_v1.py", we find out it just supports the batch_size=1 now.
In "ssd_mobilenet_v1.py" line153 (box_regression = box_regression.squeeze(0)), the batch_size information is removed by squeeze(0), and the successive "decode_boxes" function is performed on box_regression without batch_size information. Finally, line 167 (boxes = boxes[None]) expand the dims with batch_size=1.
If we want to get throughput, we need to revise the code to enable this model work well for batch_size>1, right?

@jgong5

@delock

@fmassa

Do we want to add support for batch mode? From my understanding this was just supposed to be used during inference, in which case a batch size of 1 is generally standard.
If batch > 1 is truly required, it can be done in several ways (the simplest one being a for loop on the batch dimension), but this can be far from being optimal.

@fmassa IIRC, the input image is fixed at 1200x1200 so the batched inference should work fine? How about we support batched inference with the simplest algorithm? At least, the backbone can be run with batches. Submitters should be able to optimize the remaining parts...

@jgong5 I can work on adding some basic batch support to the PyTorch version of MobileNet SSD for inference. But that would be after mid May, so if anyone wants to pick it up first it would probably be quicker.

@jgong5 The input size is 300x300 for SSD-MobileNet. It is 1200x1200 for SSD-ResNet.

@wuhuikx can you check the lates code/model at https://github.com/mlperf/inference/tree/master/v0.5/classification_and_detection? Is the issue still present? Thanks!

please check otherwise I will close this issue next week.

This issue has been fixed. Thanks.

repo: mlperf/inference


text:
MiniGo: Allow Tensorflow 2.0 patches in Tensorflow 1.15 within minigo

Intel depend on some features in TensorFlow 2.x to run minigo, some are related to performance and some are related to bug fixes.
MLPerf Minigo reference implementation uses tensorflow-1.15.0.  In building C++ selfplay code, source code of tensorflow-1.15.0 is downloaded and build with C++ selfplay code.
Google says there is no near term plan to upgrade tensorflow version to 2.0 (https://github.com/tensorflow/minigo/issues/850)
Since current Minigo is with TF 1.15.0 , what we plan to do is provide a couple of patches that contain the feature/bug fixes in TF 2.x to org_tensorflow in WORKSPACE folder of minigo code.

SWG Notes:
See the rules on details, but in general you would need to create a PR against a public repo and build against the commit in that PR. Also see the submission rules to understand the letter and spirit of the rules.

No further action required.

authors: bitfort petermattson rnaidu02


text:
pre-trained model can not use

Thank you for your wonderful work!
I want to run this code with your released cfg file and pre-trained model. But i encounter some difficulties. The  code reports an error when it is executed. The specific reason is that the pre-trained model and the used model do not match in some dimensions.
following is my running log.
(pytorch2) H:\tmp\SPoTr>python examples/segmentation/main.py --cfg cfgs/shapenetpart/spotr.yaml mode=test --pretrained_path ckpt/ShapeNetPart/ckpt_best.pth
launch mp with 1 GPUs, current rank: 0
'cp' 不是内部或外部命令，也不是可运行的程序
或批处理文件。
[05/31 16:27:31 ShapeNetPartNormal]: dist_url: tcp://localhost:8888
dist_backend: nccl
multiprocessing_distributed: False
ngpus_per_node: 1
world_size: 1
launcher: mp
local_rank: 0
use_gpu: True
seed: 8887
epoch: 0
epochs: 150
ignore_index: None
val_fn: validate
deterministic: False
sync_bn: False
criterion_args:
NAME: Poly1FocalLoss
use_mask: False
grad_norm_clip: 1
layer_decay: 0
step_per_update: 1
start_epoch: 1
sched_on_epoch: True
wandb:
use_wandb: False
project: PointNext-ShapeNetPart
tags: ['test']
name: ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd
use_amp: False
use_voting: False
val_freq: 1
resume: False
test: False
finetune: False
mode: test
logname: None
load_path: None
print_freq: 10
save_freq: -1
root_dir: log/shapenetpart
pretrained_path: ckpt/ShapeNetPart/ckpt_best.pth
datatransforms:
train: ['PointsToTensor', 'PointCloudScaling', 'PointCloudCenterAndNormalize', 'PointCloudJitter', 'ChromaticDropGPU']
val: ['PointsToTensor', 'PointCloudCenterAndNormalize']
vote: ['PointCloudScaling']
kwargs:
jitter_sigma: 0.001
jitter_clip: 0.005
scale: [0.8, 1.2]
gravity_dim: 1
angle: [0, 1.0, 0]
feature_keys: pos,x,heights
dataset:
common:
NAME: ShapeNetPartNormal
data_root: data/ShapeNetPart/shapenetcore_partanno_segmentation_benchmark_v0_normal
use_normal: True
num_points: 2048
train:
split: trainval
val:
split: test
presample: True
num_classes: 50
shape_classes: 16
num_points: 2048
normal_channel: True
batch_size: 8
dataloader:
num_workers: 6
num_votes: 10
refine: True
lr: 0.001
min_lr: None
optimizer:
NAME: adamw
weight_decay: 0.0001
sched: multistep
decay_epochs: [90, 120]
decay_rate: 0.5
warmup_epochs: 0
model:
NAME: BasePartSeg
encoder_args:
NAME: SPoTrEncoder
blocks: [1, 1, 1, 1, 1]
strides: [1, 2, 2, 2, 2]
width: 128
in_channels: 7
sa_layers: 3
sa_use_res: True
expansion: 4
radius: 0.1
radius_scaling: 2.5
nsample: 32
gamma: 16
num_gp: 16
tau_delta: 0.1
aggr_args:
feature_type: dp_df
reduction: max
group_args:
NAME: ballquery
normalize_dp: True
conv_args:
order: conv-norm-act
act_args:
act: relu
norm_args:
norm: bn
decoder_args:
NAME: SPoTrPartDecoder
cls_args:
NAME: SegHead
globals: max,avg
num_classes: 50
in_channels: None
norm_args:
norm: bn
rank: 0
distributed: False
mp: False
task_name: shapenetpart
cfg_basename: spotr
opts: mode=test
is_training: False
run_name: ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd
run_dir: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd
log_dir: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd
ckpt_dir: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd\checkpoint
code_dir: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd\code
log_path: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd.log
cfg_path: log/shapenetpart\ckpt_best.pth_20240531-162731-cYR8ERVcEpGYie9tdtgSvd\cfg.yaml
[05/31 16:27:31 ShapeNetPartNormal]: radius: [[0.1], [0.1], [0.25], [0.625], [1.5625]],
nsample: [[32], [32], [32], [32], [32]]
[05/31 16:27:31 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.1
nsample: 32
[05/31 16:27:31 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.25
nsample: 32
[05/31 16:27:31 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.625
nsample: 32
[05/31 16:27:31 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 1.5625
nsample: 32
[05/31 16:27:31 ShapeNetPartNormal]: BasePartSeg(
(encoder): SPoTrEncoder(
(encoder): Sequential(
(0): Sequential(
(0): SPALPA(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(7, 128, kernel_size=(1,), stride=(1,))
)
)
(attn_local): Sequential(
(0): Conv1d(7, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(1): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(128, 256, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(2): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(256, 512, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(3): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(512, 1024, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(4): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(1024, 2048, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
)
)
(decoder): SPoTrPartDecoder(
(global_conv2): Sequential(
(0): Sequential(
(0): Conv1d(2048, 128, kernel_size=(1,), stride=(1,))
(1): ReLU(inplace=True)
)
)
(global_conv1): Sequential(
(0): Sequential(
(0): Conv1d(1024, 64, kernel_size=(1,), stride=(1,))
(1): ReLU(inplace=True)
)
)
(decoder): Sequential(
(0): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(592, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(128, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(1): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(768, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(2): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(1536, 512, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(512, 512, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(3): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(3072, 1024, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(1024, 1024, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
)
)
(head): SegHead(
(head): Sequential(
(0): Sequential(
(0): Conv1d(384, 384, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Dropout(p=0.5, inplace=False)
(2): Sequential(
(0): Conv1d(384, 50, kernel_size=(1,), stride=(1,))
)
)
)
)
[05/31 16:27:31 ShapeNetPartNormal]: Number of params: 20.1402 M
[05/31 16:27:31 ShapeNetPartNormal]: Param groups = {
"no_decay": {
"weight_decay": 0.0,
"params": [
"encoder.encoder.0.0.alpha",
"encoder.encoder.0.0.convs.0.0.bias",
"encoder.encoder.0.0.attn_local.1.weight",
"encoder.encoder.0.0.attn_local.1.bias",
"encoder.encoder.1.0.alpha",
"encoder.encoder.1.0.skipconv.0.bias",
"encoder.encoder.1.0.convs.0.1.weight",
"encoder.encoder.1.0.convs.0.1.bias",
"encoder.encoder.1.0.attn_local.1.weight",
"encoder.encoder.1.0.attn_local.1.bias",
"encoder.encoder.1.0.gconvs.0.1.weight",
"encoder.encoder.1.0.gconvs.0.1.bias",
"encoder.encoder.1.0.attn_global.1.weight",
"encoder.encoder.1.0.attn_global.1.bias",
"encoder.encoder.2.0.alpha",
"encoder.encoder.2.0.skipconv.0.bias",
"encoder.encoder.2.0.convs.0.1.weight",
"encoder.encoder.2.0.convs.0.1.bias",
"encoder.encoder.2.0.attn_local.1.weight",
"encoder.encoder.2.0.attn_local.1.bias",
"encoder.encoder.2.0.gconvs.0.1.weight",
"encoder.encoder.2.0.gconvs.0.1.bias",
"encoder.encoder.2.0.attn_global.1.weight",
"encoder.encoder.2.0.attn_global.1.bias",
"encoder.encoder.3.0.alpha",
"encoder.encoder.3.0.skipconv.0.bias",
"encoder.encoder.3.0.convs.0.1.weight",
"encoder.encoder.3.0.convs.0.1.bias",
"encoder.encoder.3.0.attn_local.1.weight",
"encoder.encoder.3.0.attn_local.1.bias",
"encoder.encoder.3.0.gconvs.0.1.weight",
"encoder.encoder.3.0.gconvs.0.1.bias",
"encoder.encoder.3.0.attn_global.1.weight",
"encoder.encoder.3.0.attn_global.1.bias",
"encoder.encoder.4.0.alpha",
"encoder.encoder.4.0.skipconv.0.bias",
"encoder.encoder.4.0.convs.0.1.weight",
"encoder.encoder.4.0.convs.0.1.bias",
"encoder.encoder.4.0.attn_local.1.weight",
"encoder.encoder.4.0.attn_local.1.bias",
"encoder.encoder.4.0.gconvs.0.1.weight",
"encoder.encoder.4.0.gconvs.0.1.bias",
"encoder.encoder.4.0.attn_global.1.weight",
"encoder.encoder.4.0.attn_global.1.bias",
"decoder.global_conv2.0.0.bias",
"decoder.global_conv1.0.0.bias",
"decoder.decoder.0.0.convs.0.1.weight",
"decoder.decoder.0.0.convs.0.1.bias",
"decoder.decoder.0.0.convs.1.1.weight",
"decoder.decoder.0.0.convs.1.1.bias",
"decoder.decoder.1.0.convs.0.1.weight",
"decoder.decoder.1.0.convs.0.1.bias",
"decoder.decoder.1.0.convs.1.1.weight",
"decoder.decoder.1.0.convs.1.1.bias",
"decoder.decoder.2.0.convs.0.1.weight",
"decoder.decoder.2.0.convs.0.1.bias",
"decoder.decoder.2.0.convs.1.1.weight",
"decoder.decoder.2.0.convs.1.1.bias",
"decoder.decoder.3.0.convs.0.1.weight",
"decoder.decoder.3.0.convs.0.1.bias",
"decoder.decoder.3.0.convs.1.1.weight",
"decoder.decoder.3.0.convs.1.1.bias",
"head.head.0.1.weight",
"head.head.0.1.bias",
"head.head.2.0.bias"
],
"lr_scale": 1.0
},
"decay": {
"weight_decay": 0.0001,
"params": [
"encoder.encoder.0.0.convs.0.0.weight",
"encoder.encoder.0.0.attn_local.0.weight",
"encoder.encoder.1.0.z",
"encoder.encoder.1.0.skipconv.0.weight",
"encoder.encoder.1.0.convs.0.0.weight",
"encoder.encoder.1.0.attn_local.0.weight",
"encoder.encoder.1.0.gconvs.0.0.weight",
"encoder.encoder.1.0.attn_global.0.weight",
"encoder.encoder.2.0.z",
"encoder.encoder.2.0.skipconv.0.weight",
"encoder.encoder.2.0.convs.0.0.weight",
"encoder.encoder.2.0.attn_local.0.weight",
"encoder.encoder.2.0.gconvs.0.0.weight",
"encoder.encoder.2.0.attn_global.0.weight",
"encoder.encoder.3.0.z",
"encoder.encoder.3.0.skipconv.0.weight",
"encoder.encoder.3.0.convs.0.0.weight",
"encoder.encoder.3.0.attn_local.0.weight",
"encoder.encoder.3.0.gconvs.0.0.weight",
"encoder.encoder.3.0.attn_global.0.weight",
"encoder.encoder.4.0.z",
"encoder.encoder.4.0.skipconv.0.weight",
"encoder.encoder.4.0.convs.0.0.weight",
"encoder.encoder.4.0.attn_local.0.weight",
"encoder.encoder.4.0.gconvs.0.0.weight",
"encoder.encoder.4.0.attn_global.0.weight",
"decoder.global_conv2.0.0.weight",
"decoder.global_conv1.0.0.weight",
"decoder.decoder.0.0.convs.0.0.weight",
"decoder.decoder.0.0.convs.1.0.weight",
"decoder.decoder.1.0.convs.0.0.weight",
"decoder.decoder.1.0.convs.1.0.weight",
"decoder.decoder.2.0.convs.0.0.weight",
"decoder.decoder.2.0.convs.1.0.weight",
"decoder.decoder.3.0.convs.0.0.weight",
"decoder.decoder.3.0.convs.1.0.weight",
"head.head.0.0.weight",
"head.head.2.0.weight"
],
"lr_scale": 1.0
}
}
data/ShapeNetPart/shapenetcore_partanno_segmentation_benchmark_v0_normal\processed\test_2048_fps.pkl load successfully
[05/31 16:27:32 ShapeNetPartNormal]: length of validation dataset: 2874
[05/31 16:27:32 ShapeNetPartNormal]: number of classes of the dataset: None
Traceback (most recent call last):
File "H:\tmp\SPoTr\examples\segmentation\main.py", line 730, in
main(0, cfg)
File "H:\tmp\SPoTr\examples\segmentation\main.py", line 184, in main
best_epoch, best_val = load_checkpoint(model, pretrained_path=cfg.pretrained_path)
File "H:\tmp\SPoTr\examples\segmentation../..\openpoints\utils\ckpt_util.py", line 155, in load_checkpoint
incompatible = model.load_state_dict(base_ckpt, strict=False)
File "H:\environment\conda\envs\pytorch2\lib\site-packages\torch\nn\modules\module.py", line 2153, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for BasePartSeg:
size mismatch for encoder.encoder.1.0.convs.0.0.weight: copying a param with shape torch.Size([128, 131, 1, 1]) from checkpoint, the shape in current model is torch.Size([256, 131, 1, 1]).
size mismatch for encoder.encoder.1.0.convs.0.1.weight: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.bias: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.running_mean: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.running_var: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.0.weight: copying a param with shape torch.Size([128, 131, 1, 1]) from checkpoint, the shape in current model is torch.Size([256, 131, 1, 1]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.weight: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.bias: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.running_var: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.2.0.convs.0.0.weight: copying a param with shape torch.Size([256, 259, 1, 1]) from checkpoint, the shape in current model is torch.Size([512, 259, 1, 1]).
size mismatch for encoder.encoder.2.0.convs.0.1.weight: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.bias: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.running_mean: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.running_var: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.0.weight: copying a param with shape torch.Size([256, 259, 1, 1]) from checkpoint, the shape in current model is torch.Size([512, 259, 1, 1]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.weight: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.bias: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.running_var: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.3.0.convs.0.0.weight: copying a param with shape torch.Size([512, 515, 1, 1]) from checkpoint, the shape in current model is torch.Size([1024, 515, 1, 1]).
size mismatch for encoder.encoder.3.0.convs.0.1.weight: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.bias: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.running_mean: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.running_var: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.0.weight: copying a param with shape torch.Size([512, 515, 1, 1]) from checkpoint, the shape in current model is torch.Size([1024, 515, 1, 1]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.weight: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.bias: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.running_var: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.4.0.convs.0.0.weight: copying a param with shape torch.Size([1024, 1027, 1, 1]) from checkpoint, the shape in current model is torch.Size([2048, 1027, 1, 1]).
size mismatch for encoder.encoder.4.0.convs.0.1.weight: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.bias: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.running_mean: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.running_var: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.0.weight: copying a param with shape torch.Size([1024, 1027, 1, 1]) from checkpoint, the shape in current model is torch.Size([2048, 1027, 1, 1]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.weight: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.bias: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.running_var: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).

Thank you for your interest in our paper.
You can use the pre-trained model with the below command.
python examples/segmentation/main.py --cfg cfgs/shapenetpart/spotr.yaml mode=test --pretrained_path ckpt/ShapeNetPart/ckpt_best.pth

Thanks for your reply.
I use the same command as you, and you can see the command I used in the running log above. But I'm still getting the error.

Thank you for your interest in our paper.
You can use the pre-trained model with the below command. python examples/segmentation/main.py --cfg cfgs/shapenetpart/spotr.yaml mode=test --pretrained_path ckpt/ShapeNetPart/ckpt_best.pth
Thanks for your reply.

I use the same command as you, and you can see the command I used in the running log above. But I'm still getting the error.

I've tried using the files segmentation/main.py and shapenetpart/main.py, and neither of them can gei it to work normally.

Could you download the pre-trained files again and run the code?

Could you �download the pre-trained files again and run the code?

I re-downloaded the files for testing including the code, pre-trained model and spotr.yaml configuration file, but the problem still exists.
following is running log:
(pytorch2) H:\tmp\origin_test\SPoTr>python examples/shapenetpart/main.py --cfg cfgs/shapenetpart/spotr.yaml mode=test --pretrained_path ckpt/ShapeNetPart/ckpt_best.pth
launch mp with 1 GPUs, current rank: 0
'cp' 不是内部或外部命令，也不是可运行的程序
或批处理文件。
[06/01 14:56:18 ShapeNetPartNormal]: dist_url: tcp://localhost:8888
dist_backend: nccl
multiprocessing_distributed: False
ngpus_per_node: 1
world_size: 1
launcher: mp
local_rank: 0
use_gpu: True
seed: 9135
epoch: 0
epochs: 150
ignore_index: None
val_fn: validate
deterministic: False
sync_bn: False
criterion_args:
NAME: Poly1FocalLoss
use_mask: False
grad_norm_clip: 1
layer_decay: 0
step_per_update: 1
start_epoch: 1
sched_on_epoch: True
wandb:
use_wandb: False
project: PointNext-ShapeNetPart
tags: ['test']
name: ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN
use_amp: False
use_voting: False
val_freq: 1
resume: False
test: False
finetune: False
mode: test
logname: None
load_path: None
print_freq: 10
save_freq: -1
root_dir: log/shapenetpart
pretrained_path: ckpt/ShapeNetPart/ckpt_best.pth
datatransforms:
train: ['PointsToTensor', 'PointCloudScaling', 'PointCloudCenterAndNormalize', 'PointCloudJitter', 'ChromaticDropGPU']
val: ['PointsToTensor', 'PointCloudCenterAndNormalize']
vote: ['PointCloudScaling']
kwargs:
jitter_sigma: 0.001
jitter_clip: 0.005
scale: [0.8, 1.2]
gravity_dim: 1
angle: [0, 1.0, 0]
feature_keys: pos,x,heights
dataset:
common:
NAME: ShapeNetPartNormal
data_root: data/ShapeNetPart/shapenetcore_partanno_segmentation_benchmark_v0_normal
use_normal: True
num_points: 2048
train:
split: trainval
val:
split: test
presample: True
num_classes: 50
shape_classes: 16
num_points: 2048
normal_channel: True
batch_size: 8
dataloader:
num_workers: 6
num_votes: 10
refine: True
lr: 0.001
min_lr: None
optimizer:
NAME: adamw
weight_decay: 0.0001
sched: multistep
decay_epochs: [90, 120]
decay_rate: 0.5
warmup_epochs: 0
model:
NAME: BasePartSeg
encoder_args:
NAME: SPoTrEncoder
blocks: [1, 1, 1, 1, 1]
strides: [1, 2, 2, 2, 2]
width: 128
in_channels: 7
sa_layers: 3
sa_use_res: True
expansion: 4
radius: 0.1
radius_scaling: 2.5
nsample: 32
gamma: 16
num_gp: 16
tau_delta: 0.1
aggr_args:
feature_type: dp_df
reduction: max
group_args:
NAME: ballquery
normalize_dp: True
conv_args:
order: conv-norm-act
act_args:
act: relu
norm_args:
norm: bn
decoder_args:
NAME: SPoTrPartDecoder
cls_args:
NAME: SegHead
globals: max,avg
num_classes: 50
in_channels: None
norm_args:
norm: bn
rank: 0
distributed: False
mp: False
task_name: shapenetpart
cfg_basename: spotr
is_training: False
run_name: ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN
run_dir: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN
log_dir: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN
ckpt_dir: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN\checkpoint
code_dir: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN\code
log_path: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN.log
cfg_path: log/shapenetpart\ckpt_best.pth_20240601-145618-gFQT7HrfHFuXyCfbTMGTkN\cfg.yaml
data/ShapeNetPart/shapenetcore_partanno_segmentation_benchmark_v0_normal\processed\test_2048_fps.pkl load successfully
[06/01 14:56:18 ShapeNetPartNormal]: length of validation dataset: 2874
[06/01 14:56:18 ShapeNetPartNormal]: number of classes of the dataset: None
[06/01 14:56:18 ShapeNetPartNormal]: radius: [[0.1], [0.1], [0.25], [0.625], [1.5625]],
nsample: [[32], [32], [32], [32], [32]]
[06/01 14:56:18 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.1
nsample: 32
[06/01 14:56:18 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.25
nsample: 32
[06/01 14:56:18 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 0.625
nsample: 32
[06/01 14:56:19 ShapeNetPartNormal]: NAME: ballquery
normalize_dp: True
radius: 1.5625
nsample: 32
[06/01 14:56:19 ShapeNetPartNormal]: BasePartSeg(
(encoder): SPoTrEncoder(
(encoder): Sequential(
(0): Sequential(
(0): SPALPA(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(7, 128, kernel_size=(1,), stride=(1,))
)
)
(attn_local): Sequential(
(0): Conv1d(7, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(1): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(128, 256, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(131, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(2): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(256, 512, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(259, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(3): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(512, 1024, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(515, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
(4): Sequential(
(0): SPALPA(
(skipconv): Sequential(
(0): Conv1d(1024, 2048, kernel_size=(1,), stride=(1,))
)
(act): ReLU(inplace=True)
(convs): Sequential(
(0): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_local): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(gconvs): Sequential(
(0): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(attn_global): Sequential(
(0): Conv2d(1027, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(grouper): QueryAndGroup()
)
)
)
)
(decoder): SPoTrPartDecoder(
(global_conv2): Sequential(
(0): Sequential(
(0): Conv1d(2048, 128, kernel_size=(1,), stride=(1,))
(1): ReLU(inplace=True)
)
)
(global_conv1): Sequential(
(0): Sequential(
(0): Conv1d(1024, 64, kernel_size=(1,), stride=(1,))
(1): ReLU(inplace=True)
)
)
(decoder): Sequential(
(0): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(592, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(128, 128, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(1): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(768, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(2): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(1536, 512, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(512, 512, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
(3): Sequential(
(0): FeaturePropogation(
(convs): Sequential(
(0): Sequential(
(0): Conv1d(3072, 1024, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Sequential(
(0): Conv1d(1024, 1024, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
)
)
)
)
)
(head): SegHead(
(head): Sequential(
(0): Sequential(
(0): Conv1d(384, 384, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(1): Dropout(p=0.5, inplace=False)
(2): Sequential(
(0): Conv1d(384, 50, kernel_size=(1,), stride=(1,))
)
)
)
)
[06/01 14:56:19 ShapeNetPartNormal]: Number of params: 20.1402 M
[06/01 14:56:19 ShapeNetPartNormal]: Param groups = {
"no_decay": {
"weight_decay": 0.0,
"params": [
"encoder.encoder.0.0.alpha",
"encoder.encoder.0.0.convs.0.0.bias",
"encoder.encoder.0.0.attn_local.1.weight",
"encoder.encoder.0.0.attn_local.1.bias",
"encoder.encoder.1.0.alpha",
"encoder.encoder.1.0.skipconv.0.bias",
"encoder.encoder.1.0.convs.0.1.weight",
"encoder.encoder.1.0.convs.0.1.bias",
"encoder.encoder.1.0.attn_local.1.weight",
"encoder.encoder.1.0.attn_local.1.bias",
"encoder.encoder.1.0.gconvs.0.1.weight",
"encoder.encoder.1.0.gconvs.0.1.bias",
"encoder.encoder.1.0.attn_global.1.weight",
"encoder.encoder.1.0.attn_global.1.bias",
"encoder.encoder.2.0.alpha",
"encoder.encoder.2.0.skipconv.0.bias",
"encoder.encoder.2.0.convs.0.1.weight",
"encoder.encoder.2.0.convs.0.1.bias",
"encoder.encoder.2.0.attn_local.1.weight",
"encoder.encoder.2.0.attn_local.1.bias",
"encoder.encoder.2.0.gconvs.0.1.weight",
"encoder.encoder.2.0.gconvs.0.1.bias",
"encoder.encoder.2.0.attn_global.1.weight",
"encoder.encoder.2.0.attn_global.1.bias",
"encoder.encoder.3.0.alpha",
"encoder.encoder.3.0.skipconv.0.bias",
"encoder.encoder.3.0.convs.0.1.weight",
"encoder.encoder.3.0.convs.0.1.bias",
"encoder.encoder.3.0.attn_local.1.weight",
"encoder.encoder.3.0.attn_local.1.bias",
"encoder.encoder.3.0.gconvs.0.1.weight",
"encoder.encoder.3.0.gconvs.0.1.bias",
"encoder.encoder.3.0.attn_global.1.weight",
"encoder.encoder.3.0.attn_global.1.bias",
"encoder.encoder.4.0.alpha",
"encoder.encoder.4.0.skipconv.0.bias",
"encoder.encoder.4.0.convs.0.1.weight",
"encoder.encoder.4.0.convs.0.1.bias",
"encoder.encoder.4.0.attn_local.1.weight",
"encoder.encoder.4.0.attn_local.1.bias",
"encoder.encoder.4.0.gconvs.0.1.weight",
"encoder.encoder.4.0.gconvs.0.1.bias",
"encoder.encoder.4.0.attn_global.1.weight",
"encoder.encoder.4.0.attn_global.1.bias",
"decoder.global_conv2.0.0.bias",
"decoder.global_conv1.0.0.bias",
"decoder.decoder.0.0.convs.0.1.weight",
"decoder.decoder.0.0.convs.0.1.bias",
"decoder.decoder.0.0.convs.1.1.weight",
"decoder.decoder.0.0.convs.1.1.bias",
"decoder.decoder.1.0.convs.0.1.weight",
"decoder.decoder.1.0.convs.0.1.bias",
"decoder.decoder.1.0.convs.1.1.weight",
"decoder.decoder.1.0.convs.1.1.bias",
"decoder.decoder.2.0.convs.0.1.weight",
"decoder.decoder.2.0.convs.0.1.bias",
"decoder.decoder.2.0.convs.1.1.weight",
"decoder.decoder.2.0.convs.1.1.bias",
"decoder.decoder.3.0.convs.0.1.weight",
"decoder.decoder.3.0.convs.0.1.bias",
"decoder.decoder.3.0.convs.1.1.weight",
"decoder.decoder.3.0.convs.1.1.bias",
"head.head.0.1.weight",
"head.head.0.1.bias",
"head.head.2.0.bias"
],
"lr_scale": 1.0
},
"decay": {
"weight_decay": 0.0001,
"params": [
"encoder.encoder.0.0.convs.0.0.weight",
"encoder.encoder.0.0.attn_local.0.weight",
"encoder.encoder.1.0.z",
"encoder.encoder.1.0.skipconv.0.weight",
"encoder.encoder.1.0.convs.0.0.weight",
"encoder.encoder.1.0.attn_local.0.weight",
"encoder.encoder.1.0.gconvs.0.0.weight",
"encoder.encoder.1.0.attn_global.0.weight",
"encoder.encoder.2.0.z",
"encoder.encoder.2.0.skipconv.0.weight",
"encoder.encoder.2.0.convs.0.0.weight",
"encoder.encoder.2.0.attn_local.0.weight",
"encoder.encoder.2.0.gconvs.0.0.weight",
"encoder.encoder.2.0.attn_global.0.weight",
"encoder.encoder.3.0.z",
"encoder.encoder.3.0.skipconv.0.weight",
"encoder.encoder.3.0.convs.0.0.weight",
"encoder.encoder.3.0.attn_local.0.weight",
"encoder.encoder.3.0.gconvs.0.0.weight",
"encoder.encoder.3.0.attn_global.0.weight",
"encoder.encoder.4.0.z",
"encoder.encoder.4.0.skipconv.0.weight",
"encoder.encoder.4.0.convs.0.0.weight",
"encoder.encoder.4.0.attn_local.0.weight",
"encoder.encoder.4.0.gconvs.0.0.weight",
"encoder.encoder.4.0.attn_global.0.weight",
"decoder.global_conv2.0.0.weight",
"decoder.global_conv1.0.0.weight",
"decoder.decoder.0.0.convs.0.0.weight",
"decoder.decoder.0.0.convs.1.0.weight",
"decoder.decoder.1.0.convs.0.0.weight",
"decoder.decoder.1.0.convs.1.0.weight",
"decoder.decoder.2.0.convs.0.0.weight",
"decoder.decoder.2.0.convs.1.0.weight",
"decoder.decoder.3.0.convs.0.0.weight",
"decoder.decoder.3.0.convs.1.0.weight",
"head.head.0.0.weight",
"head.head.2.0.weight"
],
"lr_scale": 1.0
}
}
Traceback (most recent call last):
File "H:\tmp\origin_test\SPoTr\examples\shapenetpart\main.py", line 444, in
main(0, cfg)
File "H:\tmp\origin_test\SPoTr\examples\shapenetpart\main.py", line 178, in main
load_checkpoint(model, pretrained_path=cfg.pretrained_path)
File "H:\tmp\origin_test\SPoTr\openpoints\utils\ckpt_util.py", line 155, in load_checkpoint
incompatible = model.load_state_dict(base_ckpt, strict=False)
File "H:\environment\conda\envs\pytorch2\lib\site-packages\torch\nn\modules\module.py", line 2153, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for BasePartSeg:
size mismatch for encoder.encoder.1.0.convs.0.0.weight: copying a param with shape torch.Size([128, 131, 1, 1]) from checkpoint, the shape in current model is torch.Size([256, 131, 1, 1]).
size mismatch for encoder.encoder.1.0.convs.0.1.weight: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.bias: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.running_mean: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.convs.0.1.running_var: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.0.weight: copying a param with shape torch.Size([128, 131, 1, 1]) from checkpoint, the shape in current model is torch.Size([256, 131, 1, 1]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.weight: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.bias: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.1.0.gconvs.0.1.running_var: copying a param with shape torch.Size([128]) from checkpoint, the shape in current model is torch.Size([256]).
size mismatch for encoder.encoder.2.0.convs.0.0.weight: copying a param with shape torch.Size([256, 259, 1, 1]) from checkpoint, the shape in current model is torch.Size([512, 259, 1, 1]).
size mismatch for encoder.encoder.2.0.convs.0.1.weight: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.bias: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.running_mean: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.convs.0.1.running_var: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.0.weight: copying a param with shape torch.Size([256, 259, 1, 1]) from checkpoint, the shape in current model is torch.Size([512, 259, 1, 1]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.weight: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.bias: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.2.0.gconvs.0.1.running_var: copying a param with shape torch.Size([256]) from checkpoint, the shape in current model is torch.Size([512]).
size mismatch for encoder.encoder.3.0.convs.0.0.weight: copying a param with shape torch.Size([512, 515, 1, 1]) from checkpoint, the shape in current model is torch.Size([1024, 515, 1, 1]).
size mismatch for encoder.encoder.3.0.convs.0.1.weight: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.bias: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.running_mean: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.convs.0.1.running_var: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.0.weight: copying a param with shape torch.Size([512, 515, 1, 1]) from checkpoint, the shape in current model is torch.Size([1024, 515, 1, 1]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.weight: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.bias: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.3.0.gconvs.0.1.running_var: copying a param with shape torch.Size([512]) from checkpoint, the shape in current model is torch.Size([1024]).
size mismatch for encoder.encoder.4.0.convs.0.0.weight: copying a param with shape torch.Size([1024, 1027, 1, 1]) from checkpoint, the shape in current model is torch.Size([2048, 1027, 1, 1]).
size mismatch for encoder.encoder.4.0.convs.0.1.weight: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.bias: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.running_mean: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.convs.0.1.running_var: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.0.weight: copying a param with shape torch.Size([1024, 1027, 1, 1]) from checkpoint, the shape in current model is torch.Size([2048, 1027, 1, 1]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.weight: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.bias: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.running_mean: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).
size mismatch for encoder.encoder.4.0.gconvs.0.1.running_var: copying a param with shape torch.Size([1024]) from checkpoint, the shape in current model is torch.Size([2048]).

I tried to train the model using spotr.yaml and got a model size of 231MB, which is different from the 295MB you provided. At present, the obtained model Instance mIoU is 86.70 and Class mIoU is 84.64.

repo: mlvlab/SPoTr

license: MIT


text:
Few shot vs Open-vocabulary

I don't manage to understand the difference between your few-shot and open-vocabulary models.
Your approach is based on image-only models and Open-vocabulary approach relies on a text based embedding of the category name and the model is pre-trained with text-image pairs.
So what is the difference between your open-vocabulary and few shot pipelines and trained models ?
I am wondering because the open-vocabulary/LVIS model (the one in the demo) gives me much better results than the few-shot one on the same test images with the same image context
Thanks for your work!

Hi @theodu, thanks for your feedback. The short answer is there is no difference in pipelines between open-vocabulary and few-shot.
In the paper, I try to look at both open-vocabulary and few-shot from the same objective, achieving open-set object detection beyond a fixed category set, while using text (open-vocabulary) and using images (few-shot) only differs in their category representation.
Under this general objective, I evaluate on both open-vocabulary and few-shot benchmarks instead of only the latter ones. Honestly the dataset formats between the two are almost identical, besides the fact the open-vocabulary model performs much better because of far more recent research attention. Hope this answer could help you.

authors: mlzxy theodu

repo: mlzxy/devit


text:
Installation isuue

when I want to install chatgpt using this command: chatgpt install, I got the following error
Traceback (most recent call last):
File "/usr/local/bin/chatgpt", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.8/dist-packages/chatgpt_wrapper/main.py", line 78, in main
chatgpt = ChatGPT(headless=not (install_mode or args.debug), timeout=90, **extra_kwargs)
File "/usr/local/lib/python3.8/dist-packages/chatgpt_wrapper/chatgpt.py", line 56, in init
shutil.copytree("/tmp/playwright", self.user_data_dir)
File "/usr/lib/python3.8/shutil.py", line 557, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "/usr/lib/python3.8/shutil.py", line 513, in _copytree
raise Error(errors)
shutil.Error: [('/tmp/playwright/lock', '/tmp/7cfd4e1a-a586-4fd1-a65e-a0081a0f9a4d/lock', "[Errno 2] No such file or directory: '/tmp/playwright/lock'")]
How can I fix it?

do 'rm -r /tmp/playwright/' then make sure all chatgpt_wrapper running instances are killed and try again

I removed this file and all dependencies of chatgpt wrapper. Now after chatgpt install commend, the following error appeard:
usr/lib/python3/dist-packages/requests/init.py:89: RequestsDependencyWarning: urllib3 (1.26.14) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File "/usr/local/bin/chatgpt", line 5, in
from chatgpt_wrapper.main import main
File "/usr/local/lib/python3.8/dist-packages/chatgpt_wrapper/init.py", line 1, in
from .chatgpt import ChatGPT
File "/usr/local/lib/python3.8/dist-packages/chatgpt_wrapper/chatgpt.py", line 14, in
from playwright.sync_api import sync_playwright
File "/usr/local/lib/python3.8/dist-packages/playwright/sync_api/init.py", line 25, in
import playwright.sync_api._generated
File "/usr/local/lib/python3.8/dist-packages/playwright/sync_api/_generated.py", line 25, in
from playwright._impl._accessibility import Accessibility as AccessibilityImpl
File "/usr/local/lib/python3.8/dist-packages/playwright/_impl/_accessibility.py", line 17, in
from playwright._impl._connection import Channel
File "/usr/local/lib/python3.8/dist-packages/playwright/_impl/_connection.py", line 24, in
from pyee import EventEmitter
File "/usr/local/lib/python3.8/dist-packages/pyee/init.py", line 120, in
from pyee.trio import TrioEventEmitter as _TrioEventEmitter  # noqa
File "/usr/local/lib/python3.8/dist-packages/pyee/trio.py", line 7, in
import trio
File "/usr/local/lib/python3.8/dist-packages/trio/init.py", line 76, in
from ._dtls import DTLSEndpoint, DTLSChannel
File "/usr/local/lib/python3.8/dist-packages/trio/_dtls.py", line 136, in
@attr.frozen
AttributeError: module 'attr' has no attribute 'frozen'

no clue what is this. I would try to uninstall playwright and reinstall (both the pip module and firefox)

Closing due to inactivity.

authors: farzaneh74 mmabrouk thehunmonkgroup

repo: mmabrouk/chatgpt-wrapper


text:
Support for different tensorization strategies

The tensorization stage currently uses the function convert_to_NRT to transform data from parquet format to a nested ragged tensor, which facilitates the fast loading of individual patient data during training sessions. However, there is also a need to support other versions of this function due to the significant post-processing involved in adapting the data for different model formats. For example the ETHOS format requires quantiling and the prompt expanded triplet format (e.g., [TS] [TS = 11:13pm] [CODE: HR] [VAL] [VAL = 88] [CODE: DX] [CODE: BP/SYS] [VAL] [VAL = 120] ...), further detailed in this meds-torch issue requires generating up to three events for each observation (essentially requiring a for loop through every observation in the dataset).
To start off, added an inefficient implementaiton of the prompt expanded triplet tensorization, which could be optionally supported by introducing a tensorization stage argument that allows the user to select the desired tensorization method, which will dynamically choose the corresponding convert_to_NRT function to use. I added the convert_to_prompt_expanded_observation_NRT,  and maybe others can be added to the tensorization.py file to accommodate this flexibility.
What do you think @mmcdermott @prenc @aleksiakolo?

I think it might be easier to do some of this earlier in the model
pre-processing pipeline than the tensorization stage. E.g., we can add time
interval tokens in one transform; add value bin tokens in another, and end
up with something tjat can be tensorized in much the same way as other
data. The big difference I see in tensorization modes is whether we are
tensorizing the data in a 2D (flat sequence) or 3D (nested within
timestamp) mode, and whether we are tensorizing time deltas at all. Would
that be a viable solution, do you think?
On Wed, Jul 31, 2024, 12:09 AM Oufattole @.***> wrote:

The tensorization stage currently uses the function convert_to_NRT
https://github.com/mmcdermott/MEDS_transforms/blob/afbcdac458394e01251e05182a7c454a1fe6203e/src/MEDS_transforms/transforms/tensorization.py#L19
to transform data from parquet format to a nested ragged tensor, which
facilitates the fast loading of individual patient data during training
sessions. However, there is also a need to support other versions of this
function due to the significant post-processing involved in adapting the
data for different model formats. For example the ETHOS format requires
quantiling and the prompt expanded triplet format (e.g., [TS] [TS =
11:13pm] [CODE: HR] [VAL] [VAL = 88] [CODE: DX] [CODE: BP/SYS] [VAL] [VAL =
120] ...), further detailed in this meds-torch issue
https://github.com/Oufattole/meds-torch/issues/30 requires generating
up to three events for each observation (essentially requiring a for loop
through every observation in the dataset).
To start off, added an inefficient implementaiton of the prompt expanded
triplet tensorization, which could be optionally supported by introducing a
tensorization stage argument that allows the user to select the desired
tensorization method, which will dynamically choose the corresponding
convert_to_NRT function to use. I added the
convert_to_prompt_expanded_observation_NRT
https://github.com/mmcdermott/MEDS_transforms/blob/df4ded6f05e29ac75c0355655946b30d766d1264/src/MEDS_transforms/transforms/tensorization.py#L24,
and maybe others can be added to the tensorization.py file to accommodate
this flexibility.
What do you think @mmcdermott https://github.com/mmcdermott @prenc
https://github.com/prenc @aleksiakolo https://github.com/aleksiakolo?
—
Reply to this email directly, view it on GitHub
https://github.com/mmcdermott/MEDS_transforms/issues/82, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADS5X22I7327B4XDUNJHI3ZPBPO5AVCNFSM6AAAAABLXTP22OVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQZTSMBWGIYDGOI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Yeah the fact that I had to add manual code offsets I think indicates this is a bit late in the pipeline. So maybe a token_modifier transform should be added (I'm not attached to that name though). I'm not sure where is best in the pipeline (i.e.e what stage should be the expected input).
For tensorizing in 2D (flat sequence) mode, incorporating timestamp offsets in the 2D sequence is probably a good idea, specifically for tasks like supervised training or contrastive learning, where in the pytorch_dataset we have to align the dynamic data with their corresponding labels or windows.

I would suggest we create a few issues:

A transform to add time interval tokens before unique timestamps.
A transform to separate code tokens from their numerical values.
An issue to update the tensorization code to allow for 2D or 3D tensorization and to permit including or excluding some aspects (e.g., time deltas).

Then, with these issues, you can just add to the data pipeline the add time intervals and separate codes from values transforms before normalizing numerical values and fitting the code vocabulary and update the parameters for the tensorization transform. Would that work @prenc and @Oufattole?

Worth noting that issue 1 in the above list can likely be added as simply another time-derived measurement alongside those already supported in this transform: https://github.com/mmcdermott/MEDS_transforms/blob/main/src/MEDS_transforms/transforms/add_time_derived_measurements.py

Issue 1 (time interval tokens) is now tracked here: #120
Issue 2 (separating codes and numeric values), I think, can actually potentially be covered by either #58 or, ideally a combination of match and revise (#101) and extracting values (#121). See the comment on #58 for how to do that.
Issue 3 is now tracked here: https://github.com/mmcdermott/MEDS_transforms/issues/122
Barring further comments, I'm going to close this issue in favor of those linked above.

authors: Oufattole mmcdermott


text:
U4 - View map (5 pts)

As a user, I want to view the map with location icons (static) so that I can see an overview of who is connected to the YRI program

map (without locations yet) 8b5ce9207a93074d95b8d9b0e978a0eaffb93855

can get partner data 2186bf42a8298647980eeeb9871742bf9907b03b

commit 585648a645f56c9fc2a30c8928da8a779bc187f9

update c39a8bc5c470c62d569e9b819c898916cd045bbd


text:
Submit to SIGBOVIK

You are very much invited to submit this project to SIGBOVIK (2021 event page) if you haven't already; it would fit right in.  Though the paper deadline is nominally today, you can present (<=5 min) without having submitted a paper, and you can submit a paper for next year.  Feel free to check out the archives and/or attend the 2021 edition for your entertainment.

This sounds hilarious. I will definitely do that, can my paper be written in the Fotemon font?
On Fri, Mar 19, 2021, at 4:32 PM, wbt wrote:

You are very much invited to submit this project to SIGBOVIK http://www.sigbovik.org/ if you haven't already; it would fit right in. Though the paper deadline is nominally today, you can present (~5 min) without having submitted a paper, and you can submit a paper for next year. It would fit right in; feel free to check out the archives and/or attend the 2021 edition for your entertainment.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/mmulet/code-relay/issues/6, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRVPIKKCLFMYCD4OMR46LTTEO7HDANCNFSM4ZPRJNZQ.

Not sure if it'd work, but that would be hilarious!  Also they just extended the deadline a week so you can do a good job on it :-)

If anyone reads this in the future, you can read the fontemon sigbovik paper here: http://www.sigbovik.org/2021/proceedings.pdf#page=41

authors: mmulet wbt

repo: mmulet/code-relay


text:
raw.add_channels crashes with ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Hi!
I'm trying to merge some channels from my MEG recordings:
eog_channels = raw.pick_channels(ch_names=['EMG065'], copy=True)
ecg_channels = raw.pick_channels(ch_names=['ECG063'], copy=True)
merged_channels = ecg_channels.add_channels([eog_channels], copy=True)

But it add_channels crashes with ValueError:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-28-c0ce0f336ed8> in <module>()
      1 eog_channels = raw.pick_channels(ch_names=['EMG065'], copy=True)
      2 ecg_channels = raw.pick_channels(ch_names=['ECG063'], copy=True)
----> 3 merged_channels = ecg_channels.add_channels([eog_channels], copy=True)

/home/meg/anaconda2/lib/python2.7/site-packages/mne/channels/channels.pyc in add_channels(self, add_list, copy)
    542         data = np.concatenate(data, axis=con_axis)
    543         infos = [self.info] + [inst.info for inst in add_list]
--> 544         new_info = _merge_info(infos)
    545
    546         # Now update the attributes

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in _merge_info(infos, verbose)

/home/meg/anaconda2/lib/python2.7/site-packages/mne/utils.pyc in verbose(function, *args, **kwargs)
    549         finally:
    550             set_log_level(old_level)
--> 551     return function(*args, **kwargs)
    552
    553

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in _merge_info(infos, verbose)
   1295
   1296     for k in other_fields:
-> 1297         info[k] = _merge_dict_values(infos, k)
   1298     info._check_consistency()
   1299     return info

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in _merge_dict_values(dicts, key, verbose)

/home/meg/anaconda2/lib/python2.7/site-packages/mne/utils.pyc in verbose(function, *args, **kwargs)
    549         finally:
    550             set_log_level(old_level)
--> 551     return function(*args, **kwargs)
    552
    553

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in _merge_dict_values(dicts, key, verbose)
   1185     # dict
   1186     elif _check_isinstance(values, dict, all):
-> 1187         is_qual = _is_equal_dict(values)
   1188         if is_qual:
   1189             return values[0]

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in _is_equal_dict(dicts)
   1146         # import pdb; pdb.set_trace()
   1147         is_equal.append(all(np.all(k == k0) and
-> 1148                         np.all(v == v0) for k, v in d))
   1149     return all(is_equal)
   1150

/home/meg/anaconda2/lib/python2.7/site-packages/mne/io/meas_info.py in <genexpr>((k, v))
   1146         # import pdb; pdb.set_trace()
   1147         is_equal.append(all(np.all(k == k0) and
-> 1148                         np.all(v == v0) for k, v in d))
   1149     return all(is_equal)
   1150

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Is there something I'm missing? What should I do to append channels to one another?

can you replicate this with sample?
if so can you share a full gist to debug? on gist.github.com

Thanks for such a quick fix!
Now it works fine.

authors: agramfort dmalt

repo: mne-tools/mne-python


text:
Document EEG reference

We keep getting questions of users that are confused with MNE's EEG referencing behavior. This is not surprising, as the documentation does not cover this topic. At the very least, we need to add a note that for EEG data, a reference must be specified at all times. If the user does nothing, MNE will add an average reference. If another reference is desired, the user should use the mne.io.set_eeg_reference function to specify this.
[Edit by Eric89GXL: also, need to add a tutorial]

hmm ... but did you look at the line pointed out in the mailing list? It seems to be a bug rather than a doc issue

Basically, even if you remove the ref proj, it still gets added when creating the Epochs object because the avg_ref param is not passed to it.

+1 to add such documentation. Any suggestion where?
also the more I get questions about EEG reference the more I feel that:
mne.io.set_eeg_reference
is not easy to find and the io module is clearly not a naturally place to look.
2 options:

move mne.io.set_eeg_reference to mne.set_eeg_reference

add a set_eeg_reference method to the data containers. I know I was opposed to this to keep the number of methods low but it's true that it's a quite general use case...

A method seems natural to me.

Basically, even if you remove the ref proj, it still gets added when creating the Epochs object because the avg_ref param is not passed to it.

Yes, and in other places too. The solution we implemented a while ago is to use the mne.io.set_eeg_reference function. It sets the custom_ref_applied flag in the info, which prevents MNE from automatically adding any further referencing.
Just removing the ref proj. will cause MNE to assume no referencing has been applied and add its own. For some steps, you can explicitly tell MNE not to do it (by setting avg_ref=False), but not for all. Perhaps we should modify the code to allow the user to set this for all cases that may add an average reference. However, working like this is extremely annoying for the user, who must remember at every step to add the avg_ref=False flag.

hmm ... I did not know there was another way to prevent average referencing. It's not super clear to me how it's supposed to work and how these different flags interact with each other. A while ago I discovered that doing proj=False does not prevent average reference from being applied even though average reference is treated as a proj in MNE. You have to explicitly set avg_ref=False. Now, you're telling me that there's another way to disable the average reference. To add to the confusion, you have active flag which tells you if a proj has been applied and now there's also a custom_ref_applied flag which tells you if EEG ref has been applied?

and now there's also a custom_ref_applied flag which tells you if EEG ref has been applied?

Yup. Hence, the dire need to document this stuff.

This is really a dup of #3410, but I'll close that one since this one has a richer discussion.
Both of these are almost a #2727, which highlights how we have done some inconsistent things with add_egg_ref for a long time.
I agree with @agramfort (now) that we should add a method. But I would go a step further and make it the only way to add an EEG reference. It's more pythonic than having add_eeg_ref args, sometimes defaulting to True, sporadically placed in our code -- which is what we have now. So I'd actually really prefer deprecating all add_eeg_ref args. Perhaps more importantly, it forces people to be more explicit about when the average reference gets added. We already have safeguards against inversion without average ref, so we should be safe to do this.

For some steps, you can explicitly tell MNE not to do it (by setting avg_ref=False), but not for all. Perhaps we should modify the code to allow the user to set this for all cases that may add an average reference.

In other words, I really think we should deal with this by getting rid of the avg_ref parameters everywhere, and emitting errors if they try to do something that requires avg ref but it isn't present. It's a much cleaner / one-way / explicit approach than having avg_ref's all over the place (some of which defaulting to True that people might not notice).

The set_eeg_reference function comes as part of a set of tools related to EEG references, which also includes set_bipolar_reference and add_reference_channels. I actually don't mind them being in the mne.io module, since I think of them as being part of loading the Raw data. Although +1 for exposing them to the top level mne module.

any objection with @Eric89GXL?
what would be a clear step by step plan?
bonus question : who has time to take this over?

I can implement it. Plan would be something like:

0.13:

deprecate add_eeg_ref=True -> add_eeg_ref=False
Change all examples to use add_eeg_ref=False plus preferred referencing methods
Update docs to say when refs will be applied in 0.13 and 0.14

0.14

deprecate add_eeg_ref
Change all examples not to use add_eeg_ref at all

@agramfort we should probably make all of set_eeg_reference, set_bipolar_reference, and add_reference_channels either methods, or not. So okay to add these three?

authors: Eric89GXL agramfort jasmainak jona-sassenhagen wmvanvliet


text:
[Easy] Switch default colors to MPL defaults?

Since 2.0, the MPL defaults (c0, c1, ...) are very good. Should we not transition there with, for example, our line plot defaults?

Which line plots do you have in mind?

All plots that use mne.viz.utils.COLORS, i.e., the annotation plots.

Sounds good to me. I think we can just change these and put a note in the API section.

See PR .. is this what you meant @jona-sassenhagen? Here are the colors.
However, this change means going from
['b', 'g', 'r', 'c', 'm', 'y', 'k', '#473C8B', '#458B74',
 '#CD7F32', '#FF4040', '#ADFF2F', '#8E2323', '#FF1493']

to
[u'#1f77b4', u'#ff7f0e', u'#2ca02c', u'#d62728',
 u'#9467bd', u'#8c564b', u'#e377c2', u'#7f7f7f', u'#bcbd22', u'#17becf']

i.e., fewer colors. Is that an issue?

We could just stick with 'c0', 'c1', 'c2', ... right?

And we do have conditionals that look for 'r' in the color cycle somewhere in the viz plotting code having to do with annotations. So that will need to be changed.

authors: jona-sassenhagen larsoner sappelhoff


text:
Adding new dataset (ground-truth for source localization)

Hi all, we have just published a dataset that contains simultaneous intracerebral stimulation and HD-EEG. I think it would be great to add it to the datasets in MNE. What do you think?

that would be awesome !
you know where to start @ezemikulan ?

Great. I've been looking a bit at the datasets module and in particular  at the mne.datasets.utils._data_path function. I think I can have a closer look and let you know if I have questions (I need to finish a couple of things before being able to work on this). In any case, if you have specific instructions os suggestions I'll be more than happy to hear them.

great
ask us if you need help

@ezemikulan you can look at this PR to get a sense of all of the files you should change to add a new dataset
https://github.com/mne-tools/mne-python/pull/7018/files

Perfect, thanks

@ezemikulan still interested in this? There is now a more recent dataset going through this process so it should outline what changes are needed nowadays: https://github.com/mne-tools/mne-python/pull/8867/files

having such a dataset would be great !
how big would it be? any chance it can be made available in BIDS format?

Hi, yes, it's still on my to-do list (that as you can see has some items that are old enough to start going to kindergarten). The data are already in BIDS format, but as derivatives, and is around 12GB. I'll try to work on this in the upcoming weeks, and let you know if I find any issues.

can you point us to the data online? is it on openneuro?

Sure, the data is on g-node here and the paper with the description here.

having a tutorial with maybe one subject would be the way to start
I am thinking more and more that we should promote executable scripts
as mne side projects where CircleCI is used to render the tutorials.
Otherwise we'll hit very quickly the cache size limit for one project.

Do you think something like this would work?

yes that's great
I would add a data fetcher to make it run out of the box for people
I created this repo https://github.com/mne-tools/awesome-mne
inspired by common practice to have a curated list of satellite projects

Hi, I've been been trying to add the data fetcher but unfortunately g-node does not allow to fetch a subset of the data, do you have any suggestions on how should I do it? I think the two options are: 1) putting a subset of the data of one subject on another repository or 2) add a fetcher for the whole dataset from g-node.

+1 for adding one subject's data to MNE's OSF.io repo (maybe whichever is the cleanest / highest SNR?), and linking to the complete dataset in the fetcher + tutorial docs

I think we'll just have to wait then. thanks for sharing anyway

Ok, I will take care of this once the full dataset is available

authors: agramfort ezemikulan larsoner


text:
FIX: A couple of minor changes to eyetracking Calibrations

Was hoping to squeeze this in before 1.5 release, i.e. when the Calibrations class will be part of a stable version of MNE:
Here are 2 changes:

Allow a Calibration to have a negative onset time. While initially creating the PR, we agreed that it should be okay for a calibration to have a negative onset time (i.e. for calibrations that were conducted before the task/recording started). However, on the main branch, these calibration onsets were forced to be 0 (mea culpa).
for the plot method of the Calibrations class, there is a title parameter. However, since we added an axes parameter so that users can pass in a custom axes and make whatever customizaitons they want, I don't think this method needs to have a specific title paremeter anymore, and I've removed it.

Hmm I haven't hit this problem before. Seems like my CircleCI authentication isn't working? Which is causing some of the tests to fail:
https://app.circleci.com/pipelines/github/mne-tools/mne-python/19987/workflows/4802eeea-f864-4bc2-93b9-317972248a7d/jobs/56764?invite=true#step-0-14

Thanks @scott-huberty !

authors: larsoner scott-huberty


text:
BUG: Fix bug with example

Should fix https://app.circleci.com/pipelines/github/mne-tools/mne-python/24939/workflows/56cc382c-a845-4109-8d43-f2e54f79c483/jobs/67947. Basically the example assumes that there is exactly one good cluster, which is not best practice and seems to have been affected in this case by the random state somehow.

heh. https://github.com/CarinaFo/mne-python/pull/5#discussion_r1713871191

authors: drammock larsoner


text:
MRG, MAINT: Fix license

Fixes our license to be compliant with the somewhat strict Licensee parsing used by GitHub. For example after this PR we should see at the top of the page the same thing you see here:
https://github.com/scipy/scipy/blob/master/LICENSE.txt
Tested with the following Ruby script, inspired from a recent SciPy PR:
require "licensee"

mne = Licensee.project("mne-python")

print mne.license.name
print "\n"
print mne.matched_file.filename
print "\n\n"

Which now says:
BSD 3-Clause "New" or "Revised" License
LICENSE.txt

Instead of on master:
Other
LICENSE.txt

thx @larsoner

Nice one!

authors: agramfort cbrnr larsoner


text:
MRG, MAINT: Remove megsim dataset

Closes #6463.

Okay let's make CircleCI happy!

(@massich @agramfort feel free to have a look and if you have comments on the whats_new.rst I can make a quick PR, but hopefully it's clear enough)


text:
Anonymous read for bucket fails if we have credentials that don't have read permissions

Opening the platybrowser with a set of credentials in ~/.aws/credentials that don't have read permissions results in an error, see below.
This should not be the case, because the corresponding bucket can be read anonymously, and we have added a field in the xml to keep track of this and use the correct authentication mode.
Adding source: sbem-6dpf-1-whole-raw...
[ERROR] Module threw exception
com.amazonaws.services.s3.model.AmazonS3Exception: The access key ID you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID: 16139549D24A7904; S3 Extended Request ID: 50f73ea1-7aa8-4b55-8b58-9776bac7048a), S3 Extended Request ID: 50f73ea1-7aa8-4b55-8b58-9776bac7048a
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1367)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1113)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:770)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:744)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:726)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:686)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:668)
	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:532)
	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:512)
	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4914)
	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4860)
	at com.amazonaws.services.s3.AmazonS3Client.getAcl(AmazonS3Client.java:3887)
	at com.amazonaws.services.s3.AmazonS3Client.getBucketAcl(AmazonS3Client.java:1226)
	at com.amazonaws.services.s3.AmazonS3Client.getBucketAcl(AmazonS3Client.java:1216)
	at com.amazonaws.services.s3.AmazonS3Client.doesBucketExistV2(AmazonS3Client.java:1352)
	at org.janelia.saalfeldlab.n5.s3.N5AmazonS3Reader.<init>(N5AmazonS3Reader.java:148)
	at org.janelia.saalfeldlab.n5.s3.N5AmazonS3Reader.<init>(N5AmazonS3Reader.java:182)
	at bdv.img.n5.XmlIoN5S3ImageLoader.getReader(XmlIoN5S3ImageLoader.java:129)
	at bdv.img.n5.XmlIoN5S3ImageLoader.fromXml(XmlIoN5S3ImageLoader.java:120)
	at bdv.img.n5.XmlIoN5S3ImageLoader.fromXml(XmlIoN5S3ImageLoader.java:54)
	at mpicbg.spim.data.generic.sequence.XmlIoAbstractSequenceDescription.fromXml(XmlIoAbstractSequenceDescription.java:111)
	at mpicbg.spim.data.generic.XmlIoAbstractSpimData.fromXml(XmlIoAbstractSpimData.java:153)
	at mpicbg.spim.data.generic.XmlIoAbstractSpimData.load(XmlIoAbstractSpimData.java:95)
	at de.embl.cba.bdv.utils.BdvUtils.openSpimData(BdvUtils.java:1356)
	at de.embl.cba.bdv.utils.sources.LazySpimSource.initSpimData(LazySpimSource.java:61)
	at de.embl.cba.bdv.utils.sources.LazySpimSource.wrappedVolatileSource(LazySpimSource.java:38)
	at de.embl.cba.bdv.utils.sources.LazySpimSource.getType(LazySpimSource.java:109)
	at de.embl.cba.bdv.utils.sources.LazySpimSource.getType(LazySpimSource.java:20)
	at bdv.util.BdvFunctions.addSource(BdvFunctions.java:572)
	at bdv.util.BdvFunctions.show(BdvFunctions.java:196)
	at de.embl.cba.mobie.viewer.SourcesPanel.showIntensitySource(SourcesPanel.java:387)
	at de.embl.cba.mobie.viewer.SourcesPanel.addSourceToViewer(SourcesPanel.java:362)
	at de.embl.cba.mobie.viewer.SourcesPanel.addSourceToPanelAndViewer(SourcesPanel.java:337)
	at de.embl.cba.mobie.viewer.SourcesPanel.addSourceToPanelAndViewer(SourcesPanel.java:294)
	at de.embl.cba.mobie.bookmark.BookmarksManager.addSourcesToPanelAndViewer(BookmarksManager.java:46)
	at de.embl.cba.mobie.bookmark.BookmarksManager.setView(BookmarksManager.java:32)
	at de.embl.cba.mobie.viewer.MoBIEViewer.<init>(MoBIEViewer.java:89)
	at de.embl.cba.mobie.viewer.MoBIEViewer.<init>(MoBIEViewer.java:49)
	at de.embl.cba.mobie.command.OpenPlatyBrowserCommand.run(OpenPlatyBrowserCommand.java:16)
	at org.scijava.command.CommandModule.run(CommandModule.java:199)
	at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
	at org.scijava.thread.DefaultThreadService.lambda$wrap$2(DefaultThreadService.java:228)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

Could you try again after updating Fiji?
I updated the corresponding code about 2 hours ago...

I tried with your credentials and it works for me.
So, If everything I have locally also made it on the update site and from there on your computer it should be fine now.... ;-)

Yes, works now.

authors: constantinpape tischi

repo: mobie-org/mobie-viewer-fiji


text:
🛑 Pan y Pizza is down

In d33a178, Pan y Pizza (https://panypizza.uy) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Pan y Pizza is back up in a30c411.

repo: mobilitysol/monitorweb


text:
🛑 Mobility Solutions Web is down

In 29bda1b, Mobility Solutions Web (https://mobilitysol.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mobility Solutions Web is back up in 9af0d0c.


text:
🛑 PizzaRiing Web is down

In ab74f76, PizzaRiing Web (https://pizzariing.uy) was down:

HTTP code: 0
Response time: 0 ms

Resolved: PizzaRiing Web is back up in 74a1b0d.


text:
Problem with WiFi

Build tool used:

[* ] Arudino
[ ] Platformio (Visual Studio Code plugin)
[ ] Platformio CLI
[ ] Other

Board used (ESP32/ESP8266/Arudino):

[ ] ESP8266-based
[ *] ESP32-based  (ESP32-cam - AI-Thinker)

Other Libraries That are used:

include "EloquentSurveillance.h"
include <ESP_Mail_Client.h>
include <FS.h>
include <SD_MMC.h>
include "soc/soc.h"             // disable brownout problems
include "soc/rtc_cntl_reg.h"    // disable brownout problems

Description of problem:
Share code snippet to reproduce the issue:
I've touched nothing on Wifi or any other library of that familiy.
/**
 * Save motion capture to SD filesysten
 * @author  EloquentArduino <support@eloquentarduino.com>
  https://eloquentarduino.com/esp32-cam-motion-detection/   --- projet 4 ou 6
 */
#include "EloquentSurveillance.h"
#include <ESP_Mail_Client.h>
#include <FS.h>
#include <SD_MMC.h>
#include "soc/soc.h"             // disable brownout problems
#include "soc/rtc_cntl_reg.h"    // disable brownout problems
//#include "camera_pins.h"

//Instantiation de l'objet « détection de mouvement »
SMTPSession smtp;
EloquentSurveillance::Motion mvt;
String fichierPhoto = "capture_1.jpg";
String fichierPhoto_PATH = "/capture_1.jpg";
int flashMAX = 255;
int flashMIN = 10;
int flashETA = 0;
bool avertit = true;
// Déclaration de la classe nécessaire aux messages
SMTP_Message courriel;

bool        Affichons = true;               //Question d'économie d'énergie, nous coupons l'affichage et les calculs lors d'inactivité
const int   intervalAffi  =  3500;          // interval d'affichage
const int   intervalLect  =  15000;          // interval de lecteur des capteurs
const int   intervalCarte = 59876;          // interval de transmission des données vers meteo.cartefoi.net
const int   intervalOLED  =300000;          // interval de lecteur des capteurs ( 5 * 60 * 10 ) - 5 minutes
const int   intervalLumEx =180000;          // interval d'allumage de l'ampoule extérieure  ( 3 * 60 * 1000 ) - 3 minutes
volatile unsigned long millisActu = millis();        // Mise à jour des données sur cartefoi.net
volatile unsigned long precMillis = 0;               // Précédente lecture des valeurs météorologiques
volatile unsigned long precCartef = millisActu;      // Mise à jour des données sur cartefoi.net
volatile unsigned long precLUME = millisActu;        // Milliseconde au moment d'allumer la lumière extérieure
volatile unsigned long precOLED = millisActu;        // Redémarrage de l'écran OLED qui pourrait être un peu mêlé après une visite www
volatile unsigned long precAffich = 0;               // Précédent affichage sur écran OLED

//void streamJpg(RequeteWeb *laRequete) {
//  Serial.println("Nous sommes ici dans une ligne inutile");
//}

void setup() {
  Serial.begin(115200);
  delay(3000);

  //Définitions utiles à la caractérisation de la caméra et de sa sensibilité aux changements
  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
  camera.aithinker();
  camera.vga();
  camera.highQuality();
  //25 juin 2023: Minchange = 0,25, MinPixelDiff = 0,10,  minSizeDiff = 0,10    ----> j'espère que ça fonctionne mieux le soir, période pendant laquelle les différences sont plutôt des nuances
  mvt.setMinChanges(0.25);          // taux (%) des pixels ayant changé de valeur valeur de 0 à 1
  mvt.setMinPixelDiff(10);          // ratio de changement des pixels changeant   valeur de 0 à 255
  mvt.setMinSizeDiff(0.10);         // variation de la taille du fichier          valeur de 0 à 1
  mvt.setFlashON(flashMAX);         //Intensité du flash au moment de saisir une image
  mvt.setFlashOFF(flashMAX);        //Intensité du DEL entre les images (au repos).
  mvt.debounce(10000L);

  //Initialisation de la caméra
  while (!camera.begin())
      debug("ERROR", camera.getErrorMessage());
  Serial.println("Dëmarrage de la caméra réussi");

  if (!SD_MMC.begin("/sdcard", true)) {
    Serial.println("Erreur au montage de lecteur de cartes microSD");
    ESP.restart();
  } else {
    delay(500);
    Serial.println("Lecteur de cartes microSD monté correctement.");
  }
  uint8_t cardType = SD_MMC.cardType();
  if (cardType == CARD_NONE){
    Serial.println("Veuillez insérer une carte microSD");
    return;
  }

  //Connexion Wifi
  WiFi.begin("SSID", "PassWord");
  Serial.print("Connexion WiFi en cours ...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.print("\nVotre adresse IP: http://");
  Serial.println(WiFi.localIP());

  Serial.println("Nous sommes prêts");
}

Additional information and things you've tried:
I'm used to use this library.  I installed the latest update this morning (one day after it has been issued). Everything was good, but now:
/home/patrick/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi/src/WiFiClient.h:88:9: note: candidate: int WiFiClient::setSocketOption(int, char*, size_t)
     int setSocketOption(int option, char* value, size_t len);
         ^

/home/patrick/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi/src/WiFiClient.h:88:9: note:   candidate expects 3 arguments, 4 provided

The WifiClient.h file is the "2021-03-26" version.  So nothing wrong with it from the update, beside libraries/ESP_Mail_Client/src/ where all file a from 2023-07-02
The most important part, I think is:
candidate expects 3 arguments, 4 provided
Thanks.

Up's version:  3.1.11
Back to 3.1.10, changing nothing else; my script compiles good.

If possible, please update your ESP32 core.
I know and understand this if you want to stick with outdated ESP32 core.

Now v3.1.13 is available for error fixes, please update.

Manually installed 3.1.13 gives no error back.
Thanks.

authors: Patriboom mobizt

repo: mobizt/ESP-Mail-Client


text:
Execute function on prop change.

Not sure if this is the way how mobx works in conjunction with React Native but I'm trying to do the following.
My header has a 'edit' button. This toggles the 'isEditing' state in my mobx store (true/false). I'm passing this throug via the 'edit' prop on my EventGrid component.

  render() {
    return (
          <EventGrid data={this.state.eventData} edit={this.props.EditMode} navigation={this.props.navigation}/>
    );
  }

Now, in my EventGrid component I'm trying to call a function to enable 'editing' mode whenever my mobx state value changes to true. Can anyone point me in the right direction?

First, make sure you are using mobx react observer. Second, try creating a
small test case. I know you're using react native, but you may be able to
reproduce your issue with react dom.
On Sat, Jul 1, 2017, 7:58 AM jwhscholten notifications@github.com wrote:

Not sure if this is the way how mobx works in conjunction with React
Native but I'm trying to do the following.
My header has a 'edit' button. This toggles the 'isEditing' state in my
mobx store (true/false). I'm passing this throug via the 'edit' prop on my
EventGrid component.
render() {
return (

);
}
Now, in my EventGrid component I'm trying to call a function to enable
'editing' mode whenever my mobx state value changes to true. Can anyone
point me in the right direction?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mobxjs/mobx-react/issues/291, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIrcoWEPJjLSVAUSNjXEvkgCG-6mWPOks5sJkJ3gaJpZM4OLTvi
.

Closing issue for inactivity / lack of context. Feel free to reopen if the answer is not sufficient and more details have been provided.

authors: jwhscholten mattruby mweststrate

repo: mobxjs/mobx-react


text:
options for ui

I created "ui" library https://github.com/stalniy/bdd-lazy-var and want to add some configuration:

global getters for variables
getters on "get" function

depending on ui configuration. So, I have 3 suggesstions:

Simple: add options for UI, so "ui" libraries are able to be dependent on configuration (similar to reporterOptions)
Even simpler: inside bin/_mocha pass all arguments as options in Mocha constructor
Conflicting: allow to combine multiple ui-s (e.g. new Mocha({ ui: 'bdd+lazy-var+lazy-var-global' }) or new Mocha({ ui: [ 'bdd', 'lazy-var', 'lazy-var-global' ] }). But this will allow to merge tdd and bdd ui-s which are so natural as bdd and lazy-var

Let me know your opinions and I would be able to create an appropriate PR

see #1969, but I don't foresee a PR being accepted that does this.  Mocha will support this behavior out-of-the box.

e.g.,
const mocha = require('mocha');
mocha.use(require('mocha-ui-bdd')); // this is the default, so not necessary
mocha.use(require('mocha-ui-tdd')); // this does not overwrite the BDD UI
const {describe, setup, it} = mocha;
// bdd-style
describe('my thing', () => {
  // tdd-style
  setup(() => {
    // do setup
  });

  it('should do stuff', () => {
    // make assertion
  });
});

authors: boneskull stalniy

repo: mochajs/mocha


text:
Adds ProxyGet to public API

Introduces ProxyGet to public API. This precedes an update to Proxy.from_name("my-proxy") to replace ProxyGetOrCreate.
I intended to have that RPC support both the client get method and internal proxy create methods but came to the conclusion that it is better to separate those methods because it is not desirable to create a Proxy lazily. (That's the case because it takes several seconds to create.)

@prbot approve

repo: modal-labs/modal-client


text:
update worflow_node.py, start, end, python

name: Pull Request
about: Create a pull request
Description
[Please describe the background, purpose, changes made, and how to test this PR]
Checklist
Please check the following items before code is ready to be reviewed.

[ ]  Code has passed all tests
[ ]  Docstrings have been added/updated in Google Style
[ ]  Documentation has been updated
[x]  Code is ready for review

Please provide more details about the modifications. For example, the background, motivation and the reason of the changes.

repo: modelscope/agentscope


text:
🛑 Radarr is down

In 356a94e, Radarr ($RADARR_URL) was down:

HTTP code: 404
Response time: 756 ms

Resolved: Radarr is back up in 0a5de00.