AxisError('axis 2 is out of bounds for array of dimension 2')

Hi,
I am trying to use Vollseg in Napari, but I always get this recurrent error (see below):
The image is 1 channel (DAPI) and 2D (YX) .TIF
Stardist is running fine, but would like to try Vollseg...
Could you help please ?
Thanks for Vollseg and sharing !
antho

AxisError                                 Traceback (most recent call last)
File ~\AppData\Local\napari-0.4.16.dev104a\envs\napari-0.4.16.dev104\lib\site-packages\superqt\utils_qthreading.py:616, in create_worker..reraise(e=AxisError('axis 2 is out of bounds for array of dimension 2'))
615 def reraise(e):
--> 616     raise e
e = AxisError('axis 2 is out of bounds for array of dimension 2')
File ~\AppData\Local\napari-0.4.16.dev104a\envs\napari-0.4.16.dev104\lib\site-packages\superqt\utils_qthreading.py:176, in WorkerBase.run(self=<napari._qt.qthreading.FunctionWorker object>)
174     warnings.filterwarnings("always")
175     warnings.showwarning = lambda *w: self.warned.emit(w)
--> 176     result = self.work()
self = <napari._qt.qthreading.FunctionWorker object at 0x000002054C7B9EE0>
177 if isinstance(result, Exception):
178     if isinstance(result, RuntimeError):
179         # The Worker object has likely been deleted.
180         # A deleted wrapped C/C++ object may result in a runtime
181         # error that will cause segfault if we try to do much other
182         # than simply notify the user.
File ~\AppData\Local\napari-0.4.16.dev104a\envs\napari-0.4.16.dev104\lib\site-packages\superqt\utils_qthreading.py:356, in FunctionWorker.work(self=<napari._qt.qthreading.FunctionWorker object>)
355 def work(self) -> _R:
--> 356     return self._func(*self._args, **self._kwargs)
self._func = <function plugin_wrapper_vollseg.._Segment at 0x000002053D6CD3A0>
self = <napari._qt.qthreading.FunctionWorker object at 0x000002054C7B9EE0>
self._args = (StarDist2D(versatile2dcellsallanthoMULIPLEGPUnolargenuclei): YXC → YXC
├─ Directory: \bir-titan\Anthony\software\stardist-master\examples\2D\models\versatile2dcellsallanthoMULIPLEGPUnolargenuclei
└─ Config2D(axes='YXC', backbone='unet', grid=(2, 2), n_channel_in=1, n_channel_out=33, n_classes=None, n_dim=2, n_rays=32, net_conv_after_unet=128, net_input_shape=[None, None, 1], net_mask_shape=[None, None, 1], train_background_reg=0.0001, train_batch_size=8, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_class_weights=[1, 1], train_completion_crop=32, train_dist_loss='mae', train_epochs=400, train_foreground_only=0.9, train_learning_rate=0.0003, train_loss_weights=[1, 0.2], train_n_val_patches=None, train_patch_size=[256, 256], train_reduce_lr={'factor': 0.5, 'patience': 40, 'min_delta': 0}, train_sample_cache=True, train_shape_completion=False, train_steps_per_epoch=100, train_tensorboard=True, unet_activation='relu', unet_batch_norm=False, unet_dropout=0.0, unet_kernel_size=[3, 3], unet_last_activation='relu', unet_n_conv_per_depth=2, unet_n_depth=3, unet_n_filter_base=32, unet_pool=[2, 2], unet_prefix='', use_gpu=False), UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Directory: None
└─ Config(axes='YXC', n_channel_in=1, n_channel_out=1, n_dim=2, probabilistic=False, train_batch_size=1, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_epochs=200, train_learning_rate=1e-06, train_loss='mae', train_reduce_lr={'patience': 5, 'factor': 0.5}, train_steps_per_epoch=400, train_tensorboard=True, unet_input_shape=[None, None, 1], unet_kern_size=3, unet_last_activation='linear', unet_n_depth=5, unet_n_first=64, unet_residual=True), None, <class 'numpy.ndarray'> (1040, 1392) uint16, 'YX', None, [1.0, 1.0])
self._kwargs = {}
File ~\AppData\Roaming\Python\Python38\site-packages\vollseg_napari_dock_widget.py:2121, in plugin_wrapper_vollseg.._Segment(model_star=StarDist2D(versatile2dcellsallanthoMULIPLEGPUnol... unet_pool=[2, 2], unet_prefix='', use_gpu=False), model_unet=UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Director...t_n_depth=5, unet_n_first=64, unet_residual=True), model_roi=None, x=<class 'numpy.ndarray'> (1040, 1392) uint16, axes='YX', noise_model=None, scale_out=[1.0, 1.0])
2117 @thread_worker (connect = {"returned": return_segment } )
2118 def _Segment(model_star, model_unet,  model_roi, x, axes, noise_model, scale_out):
-> 2121     res = VollSeg(
x = <class 'numpy.ndarray'> (1040, 1392) uint16
model_unet = UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Directory: None
└─ Config(axes='YXC', n_channel_in=1, n_channel_out=1, n_dim=2, probabilistic=False, train_batch_size=1, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_epochs=200, train_learning_rate=1e-06, train_loss='mae', train_reduce_lr={'patience': 5, 'factor': 0.5}, train_steps_per_epoch=400, train_tensorboard=True, unet_input_shape=[None, None, 1], unet_kern_size=3, unet_last_activation='linear', unet_n_depth=5, unet_n_first=64, unet_residual=True)
model_star = StarDist2D(versatile2dcellsallanthoMULIPLEGPUnolargenuclei): YXC → YXC
├─ Directory: \bir-titan\Anthony\software\stardist-master\examples\2D\models\versatile2dcellsallanthoMULIPLEGPUnolargenuclei
└─ Config2D(axes='YXC', backbone='unet', grid=(2, 2), n_channel_in=1, n_channel_out=33, n_classes=None, n_dim=2, n_rays=32, net_conv_after_unet=128, net_input_shape=[None, None, 1], net_mask_shape=[None, None, 1], train_background_reg=0.0001, train_batch_size=8, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_class_weights=[1, 1], train_completion_crop=32, train_dist_loss='mae', train_epochs=400, train_foreground_only=0.9, train_learning_rate=0.0003, train_loss_weights=[1, 0.2], train_n_val_patches=None, train_patch_size=[256, 256], train_reduce_lr={'factor': 0.5, 'patience': 40, 'min_delta': 0}, train_sample_cache=True, train_shape_completion=False, train_steps_per_epoch=100, train_tensorboard=True, unet_activation='relu', unet_batch_norm=False, unet_dropout=0.0, unet_kernel_size=[3, 3], unet_last_activation='relu', unet_n_conv_per_depth=2, unet_n_depth=3, unet_n_filter_base=32, unet_pool=[2, 2], unet_prefix='', use_gpu=False)
axes = 'YX'
noise_model = None
model_roi = None
plugin_star_parameters = <FunctionGui plugin_star_parameters(norm_image=True, perc_low=1.0, perc_high=99.8, prob_thresh=0.5, nms_thresh=0.4, set_thresholds=False, n_tiles=(1, 1), star_model_axes='YXC[1]', defaults_star_parameters_button=False)>
plugin_extra_parameters = <FunctionGui plugin_extra_parameters(min_size_mask=1.0, min_size=1.0, max_size=10000000.0, prob_map_watershed=True, dounet=True, isRGB=False, seedpool=True, slicemerge=False, iouthresh=0.5, unet_model_axes='YXC[1]', den_model_axes='', defaults_vollseg_parameters_button=False)>
2122         x,
2123         model_unet,
2124         model_star,
2125         axes=axes,
2126         noise_model=noise_model,
2127         roi_model =  model_roi,
2128
2129         prob_thresh=plugin_star_parameters.prob_thresh.value,
2130         nms_thresh=plugin_star_parameters.nms_thresh.value,
2131         min_size_mask=plugin_extra_parameters.min_size_mask.value,
2132         min_size=plugin_extra_parameters.min_size.value,
2133         seedpool= plugin_extra_parameters.seedpool.value,
2134         max_size=plugin_extra_parameters.max_size.value,
2135         n_tiles=plugin_star_parameters.n_tiles.value,
2136         UseProbability=plugin_extra_parameters.prob_map_watershed.value,
2137         dounet=plugin_extra_parameters.dounet.value,
2138         donormalize=plugin_star_parameters.norm_image.value,
2139         lower_perc=plugin_star_parameters.perc_low.value,
2140         upper_perc=plugin_star_parameters.perc_high.value,
2141         RGB = plugin_extra_parameters.isRGB.value,
2142         slice_merge = plugin_extra_parameters.slicemerge.value,
2143         iou_threshold = plugin_extra_parameters.iouthresh.value
2144         )
2146     pred = res, scale_out
2147     return pred
File ~\AppData\Roaming\Python\Python38\site-packages\vollseg\helpers.py:1060, in VollSeg(image=<class 'numpy.ndarray'> (1040, 1392) uint16, unet_model=UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Director...t_n_depth=5, unet_n_first=64, unet_residual=True), star_model=StarDist2D(versatile2dcellsallanthoMULIPLEGPUnol... unet_pool=[2, 2], unet_prefix='', use_gpu=False), roi_model=None, axes='YX', noise_model=None, prob_thresh=0.5, nms_thresh=0.4, min_size_mask=1.0, min_size=1.0, max_size=10000000.0, n_tiles=(1, 1), UseProbability=True, globalthreshold=0.2, extent=0, donormalize=True, lower_perc=1.0, upper_perc=99.8, dounet=True, seedpool=True, save_dir=None, Name='Result', startZ=0, slice_merge=False, iou_threshold=0.5, RGB=False)
1057 # If stardist model is supplied we use this method
1058 if star_model is not None:
-> 1060     res = VollSeg2D(image, unet_model, star_model, roi_model=roi_model,  noise_model=noise_model, prob_thresh=prob_thresh, nms_thresh=nms_thresh,  donormalize=donormalize, lower_perc=lower_perc, upper_perc=upper_perc, axes=axes, min_size_mask=min_size_mask, min_size=min_size,
star_model = StarDist2D(versatile2dcellsallanthoMULIPLEGPUnolargenuclei): YXC → YXC
├─ Directory: \bir-titan\Anthony\software\stardist-master\examples\2D\models\versatile2dcellsallanthoMULIPLEGPUnolargenuclei
└─ Config2D(axes='YXC', backbone='unet', grid=(2, 2), n_channel_in=1, n_channel_out=33, n_classes=None, n_dim=2, n_rays=32, net_conv_after_unet=128, net_input_shape=[None, None, 1], net_mask_shape=[None, None, 1], train_background_reg=0.0001, train_batch_size=8, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_class_weights=[1, 1], train_completion_crop=32, train_dist_loss='mae', train_epochs=400, train_foreground_only=0.9, train_learning_rate=0.0003, train_loss_weights=[1, 0.2], train_n_val_patches=None, train_patch_size=[256, 256], train_reduce_lr={'factor': 0.5, 'patience': 40, 'min_delta': 0}, train_sample_cache=True, train_shape_completion=False, train_steps_per_epoch=100, train_tensorboard=True, unet_activation='relu', unet_batch_norm=False, unet_dropout=0.0, unet_kernel_size=[3, 3], unet_last_activation='relu', unet_n_conv_per_depth=2, unet_n_depth=3, unet_n_filter_base=32, unet_pool=[2, 2], unet_prefix='', use_gpu=False)
axes = 'YX'
noise_model = None
roi_model = None
unet_model = UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Directory: None
└─ Config(axes='YXC', n_channel_in=1, n_channel_out=1, n_dim=2, probabilistic=False, train_batch_size=1, train_checkpoint='weights_best.h5', train_checkpoint_epoch='weights_now.h5', train_checkpoint_last='weights_last.h5', train_epochs=200, train_learning_rate=1e-06, train_loss='mae', train_reduce_lr={'patience': 5, 'factor': 0.5}, train_steps_per_epoch=400, train_tensorboard=True, unet_input_shape=[None, None, 1], unet_kern_size=3, unet_last_activation='linear', unet_n_depth=5, unet_n_first=64, unet_residual=True)
image = <class 'numpy.ndarray'> (1040, 1392) uint16
prob_thresh = 0.5
nms_thresh = 0.4
donormalize = True
lower_perc = 1.0
upper_perc = 99.8
min_size_mask = 1.0
min_size = 1.0
RGB = False
n_tiles = (1, 1)
max_size = 10000000.0
dounet = True
UseProbability = True
1061                     max_size=max_size, dounet=dounet, n_tiles=n_tiles, UseProbability=UseProbability, RGB=RGB)
1063 # If there is no stardist model we use unet model or denoising model or both to get the semantic segmentation
1064 if star_model is None:
File ~\AppData\Roaming\Python\Python38\site-packages\vollseg\helpers.py:866, in VollSeg2D(image=<class 'numpy.ndarray'> (1040, 1392) uint16, unet_model=UNET(Xenopus Tissue (2D)): YXC → YXC
├─ Director...t_n_depth=5, unet_n_first=64, unet_residual=True), star_model=StarDist2D(versatile2dcellsallanthoMULIPLEGPUnol... unet_pool=[2, 2], unet_prefix='', use_gpu=False), noise_model=None, roi_model=None, prob_thresh=0.5, nms_thresh=0.4, axes='YX', min_size_mask=1.0, min_size=1.0, max_size=10000000.0, dounet=True, n_tiles=(1, 1), donormalize=True, lower_perc=1.0, upper_perc=99.8, UseProbability=True, RGB=False, seedpool=True)
864 print('Stardist segmentation on Image')
865 if donormalize:
--> 866     patch_star = normalize(patch, lower_perc, upper_perc, axis=(0, 1, 2))
patch = <class 'numpy.ndarray'> (1040, 1392) uint16
lower_perc = 1.0
upper_perc = 99.8
867 else:
868     patch_star = patch
File ~\AppData\Roaming\Python\Python38\site-packages\csbdeep\utils\utils.py:54, in normalize(x=<class 'numpy.ndarray'> (1040, 1392) uint16, pmin=1.0, pmax=99.8, axis=(0, 1, 2), clip=False, eps=1e-20, dtype=<class 'numpy.float32'>)
51 def normalize(x, pmin=3, pmax=99.8, axis=None, clip=False, eps=1e-20, dtype=np.float32):
52     """Percentile-based image normalization."""
---> 54     mi = np.percentile(x,pmin,axis=axis,keepdims=True)
np = <module 'numpy' from 'C:\Users\m197816\AppData\Roaming\Python\Python38\site-packages\numpy\init.py'>
x = <class 'numpy.ndarray'> (1040, 1392) uint16
pmin = 1.0
axis = (0, 1, 2)
55     ma = np.percentile(x,pmax,axis=axis,keepdims=True)
56     return normalize_mi_ma(x, mi, ma, clip=clip, eps=eps, dtype=dtype)
File <array_function internals>:5, in percentile(*args=(<class 'numpy.ndarray'> (1040, 1392) uint16, 1.0), **kwargs={'axis': (0, 1, 2), 'keepdims': True})
File ~\AppData\Roaming\Python\Python38\site-packages\numpy\lib\function_base.py:3867, in percentile(a=<class 'numpy.ndarray'> (1040, 1392) uint16, q=<class 'numpy.ndarray'> () float64, axis=(0, 1, 2), out=None, overwrite_input=False, interpolation='linear', keepdims=True)
3865 if not _quantile_is_valid(q):
3866     raise ValueError("Percentiles must be in the range [0, 100]")
-> 3867 return _quantile_unchecked(
q = <class 'numpy.ndarray'> () float64
a = <class 'numpy.ndarray'> (1040, 1392) uint16
axis = (0, 1, 2)
out = None
overwrite_input = False
interpolation = 'linear'
keepdims = True
3868     a, q, axis, out, overwrite_input, interpolation, keepdims)
File ~\AppData\Roaming\Python\Python38\site-packages\numpy\lib\function_base.py:3986, in _quantile_unchecked(a=<class 'numpy.ndarray'> (1040, 1392) uint16, q=<class 'numpy.ndarray'> () float64, axis=(0, 1, 2), out=None, overwrite_input=False, interpolation='linear', keepdims=True)
3983 def _quantile_unchecked(a, q, axis=None, out=None, overwrite_input=False,
3984                         interpolation='linear', keepdims=False):
3985     """Assumes that q is in [0, 1], and is an ndarray"""
-> 3986     r, k = _ureduce(a, func=_quantile_ureduce_func, q=q, axis=axis, out=out,
a = <class 'numpy.ndarray'> (1040, 1392) uint16
q = <class 'numpy.ndarray'> () float64
axis = (0, 1, 2)
out = None
overwrite_input = False
interpolation = 'linear'
3987                     overwrite_input=overwrite_input,
3988                     interpolation=interpolation)
3989     if keepdims:
3990         return r.reshape(q.shape + k)
File ~\AppData\Roaming\Python\Python38\site-packages\numpy\lib\function_base.py:3544, in _ureduce(a=<class 'numpy.ndarray'> (1040, 1392) uint16, func=, **kwargs={'axis': (0, 1, 2), 'interpolation': 'linear', 'out': None, 'overwrite_input': False, 'q': <class 'numpy.ndarray'> () float64})
3542 keepdim = list(a.shape)
3543 nd = a.ndim
-> 3544 axis = _nx.normalize_axis_tuple(axis, nd)
axis = (0, 1, 2)
nd = 2
_nx = <module 'numpy.core.numeric' from 'C:\Users\m197816\AppData\Roaming\Python\Python38\site-packages\numpy\core\numeric.py'>
3546 for ax in axis:
3547     keepdim[ax] = 1
File ~\AppData\Roaming\Python\Python38\site-packages\numpy\core\numeric.py:1385, in normalize_axis_tuple(axis=(0, 1, 2), ndim=2, argname=None, allow_duplicate=False)
1383         pass
1384 # Going via an iterator directly is slower than via list comprehension.
-> 1385 axis = tuple([normalize_axis_index(ax, ndim, argname) for ax in axis])
axis = (0, 1, 2)
argname = None
ndim = 2
1386 if not allow_duplicate and len(set(axis)) != len(axis):
1387     if argname:
File ~\AppData\Roaming\Python\Python38\site-packages\numpy\core\numeric.py:1385, in (.0=<tuple_iterator object>)
1383         pass
1384 # Going via an iterator directly is slower than via list comprehension.
-> 1385 axis = tuple([normalize_axis_index(ax, ndim, argname) for ax in axis])
argname = None
ax = 2
ndim = 2
1386 if not allow_duplicate and len(set(axis)) != len(axis):
1387     if argname:
AxisError: axis 2 is out of bounds for array of dimension 2

Hello,
Thanks for pointing this out, I understand what this error means which is saying that the axis it gets for normalization is (0,1,2) whereas for a 2D image it should be (0,1), I will investigate why this is happening and try to reproduce it and will let you know as soon as I fix this from happening.

Can you send me a screenshot of the vollseg napari plugin with the selection of parameters please, would make it easier to debug.

Hi,
Yes,
find it attached.
I tried many times but could never make it run ...
thank you for the help,
antho

Thanks, I clearly see that the reason it does not work is because the image is 2D and normalization axes is shown as ZYX, I will work on this and see if the latest version of mine still have this issue. Thanks for reporting,
Cheers, Varun.

Thanks,
I noticed that before , so I tried to change it manually to YX but it doesn't work.
thanks
antho

Yes, I was able to reproduce this, I suspect this happened when I changed the code to accommodate RGB images for 2D segmentation, I will fix this tonight and release new VollSeg version which will fix it in the plugin.

Great ! that was fast ! :)
Looking to try it !
Thank you so much,
Antho

Hello, It is fixed in the vollseg version 4.4.0 I just released, please try and let me know if it works for you now, I will continue making more coverage tests to check other modes. Thanks for pointing this out.

Is it the Napari version ?
I cannot see the update yet.
Thanks
antho

No it is the VollSeg version, the napari version is the same.

So you just have to pip install vollseg in the conda env of yours, let me know if you are able to get it working?

I did directly into Napari  console.
It did the installation and I reboot but the problem is not fixed...
Is there another way to make the update ?
Thanks

Maybe do the pip install from the anaconda prompt after closing the current Napari session and then relaunch napari again after the install, make sure that it is vollseg==4.4.0 that you have prior to launching Napari. Try that and let me know if that works.

I think for some reason I the version is still : 4.3.6
pip install --user vollseg
Requirement already satisfied: vollseg in appdata\roaming\python\python38\site-packages (4.3.6)
I cannot install the 4.4.0 using pip install .... ?

I should make this option illegal if that was the case, then you will not see the run button with this setting. Thanks for pointing this out too!

Ok, yes this is exactly what I did ..  !
I am trying to learn all the options, to find the parameters that suit my image best.
Happy to help ! :)
antho

Glad that you are helping, for 2D you can use StarDist + Unet, StarDist + CARE, StarDist + Unet + CARE with the option of getting the semantic segmentation from unet or Care by setting the vollseg parameter, BinaryMask from Unet on/off. Then you have size of mask and cells to play around with. Try some of the pre trained models also and then see if you can find a good setting for your use case :) and of course if you find more bugs am happy to fix them right away.

ah, for some reason the CARE is always RED (denoise carcinoma), so I am not able to use it ...

That is because it is a 3D model so it is good that it is red because 2D image can not be denoised with a 3D model, I did not train any 2D denoising model so for this one you would have to use some other CARE trained 2D model that you can load from the disk using the CustomCARE option.

Ok make sense !
Great, I will train one, then and try, thank for your support !
antho

Hey so I made more unit tests for different model combination, for my the stardist + roi model combination works in 2D in the plugin and also in my tests, what was your setting in 2D that made it fail with the roi model?

Yes I am trying the change that function so it works for 2D also, in this case it will give you the same result as you will get using a Unet. Ok got it, denoise + maskunet was the fail case.

Can you share your 2D denoising model, I could not find a pre-rained model for that.

I dont have a pretrained model 2D for that, but I will later

I am sorry but I don't have a CARE model yet 2D, but later I plan to train one,
So once I get a working model I will be able to share it,

But how did you test the plugin with the 2D denoising model then? I do not need a very well working model just one that has the right class to test the code.

I did not since I don't have a model,
I wanted to try it, so I assumed that a pretrained 2D model was available...
Sorry for the confusion,

Hey Antho, I released new versions of both vollseg and vollseg anapri after testing different model combinations. So you can do
pip install vollseg-napari --ignore-installed and
pip install vollseg --ignore-installed
to get the latest versions and they give the plugin a try witht hte pre trained models and samp^le images that ship with Napari and the vollseg-napari plugin and if you see the run button being available you should be able to get the results without error. If so then feel free to close the issue and thank you so much for testing.
Cheers,
Varun

Hi Varun,
It works as expected, thanks a lot, I will keep in touch if I encounter any further bugs,
Thanks for the support !
antho


non-global dataIdFromObject?

When I write an implementation for dataIdFromObject, it seems like if I have two entities with the same ID that they'll end up at the same place in the store. Is there a way to implement a non-global dataIdFromObject function? Or alternatively have access to the path for the data so that that can be considered when assigning an ID?

dataIdFromObject is specifically to tell apollo client that two objets with different paths are actually the same. If you don't want that, you can just not assign it an id, in which case apollo client will use the path.

@helfer I understand that, but the problem arises when you have two entities that have the same ID, but are different.
For example, if I make a query for a user with ID 1:
user(id: 1) {
  id
  name
}

And then make a query for a message with ID 1:
message(id: 1) {
  id
  from
  to
}

The dataIdFromObject isn't able to distinguish between these two, which are separate entities, but with the same ID.

@kesne ah, I see. In that case you want to make sure to include __typename and use a combination of __typename and id for the globally unique id by providing the dataIdFromObject argument to the ApolloClient constructor: dataIdFromObject: obj => obj.__typename + obj.id or something like that.

@helfer That's pretty unfortunate. It seems less than ideal to require adding __typename to every query to get entity mapping working. It seems like this situation would be a common one based on how most people store their data?

@kesne Right now you can use queryTransformer for that, but we have an open PR that changes it to addTypename, and it will be true by default, so you won't have to add __typename to every query.


Unable to share data between states

Is there a way we can pass data between states?

I have come to conclusion that Redis can do this job perfectly.

yes, you save the data in session and when the user gets to the next state u can get the value from the session.
here is a link to a sample USSD Application developed using this plugin

@harmonizerblinks are you able to share the link the application were data was being shared across states?


NNS topology

Adding a first skeleton to the NNS topology, focusing on:

NNS CR display and it's interfaces
Display green/red border to each interface to represent if the interface is up or down. (if default color appears it means the interface state is unknown)
Opening a details drawer on interface select + fill in details.
Add topology toolbar to toggle between list and graph views
Add filter by node name to see just some of the node.
Adding connecting edges between interfaces.

Enhancements to do/Issues to fix:

When filtering and selecting few nodes, it always put the node in the center which can cause overlapping nodes which is confusing to look at.
Fix single node drag.
Improve interfaces drawer info.

Demo:
https://github.com/user-attachments/assets/64c52987-93b8-4628-8aaa-8d6cae16bbb1

/remove-lgtm

Reviewed. For me it's great thanks aviv

@pcbailey @metalice
PR was merged by accident, please review, leave comments here and will do a follow-up PR


Modernize crate

This is a meta issue for compiling rftrace with recent Rust versions:

[x] https://github.com/tlambertz/rftrace/issues/8

[x] https://github.com/tlambertz/rftrace/pull/13

[ ] https://github.com/tlambertz/rftrace/issues/9

[ ] https://github.com/tlambertz/rftrace/pull/20

[ ] https://github.com/tlambertz/rftrace/issues/17

[ ] https://github.com/tlambertz/rftrace/pull/15

[ ] https://github.com/tlambertz/rftrace/issues/18

All of my changes are already available here: hermit-os/rftrace#next


fix: instrument coverage is stable!

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 88.372%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
38

Relevant Lines:
43

💛  - Coveralls

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Highlighted Runecrafting pouches

Highlighted Runecrafting pouches
https://i.imgur.com/u5TrLbs.png

I feel like the provided image do not matches the issue title at all.


Mean of SRID

Hello,
What is SRID, and does he affect something?
Thanks for reply.

it's a id specifies which coordinate system is being used.
https://stackoverflow.com/questions/373589/geometry-column-stgeomfromtext-and-srid-what-is-an-srid

Thanks fort reply 🥇


install via a bundle, like tailwind

The installation part of castor is a bit intimidating.  The tailwind bundle downloads the file to make it a seamless experience.
https://github.com/SymfonyCasts/tailwind-bundle
I deploy my apps to dokku (a heroku-like server), and often run commands like
dokku run "bin/console app:create-project test"

If I change these to castor, I have to figure out how to install it on the production server, but it if were in a bundle that did the install, perhaps I wouldn't need that step at all.

Hello, Thanks for the proposal, but I think the bundle way if a wrong path.
Not all applications use Symfony.
More over, if we go this path, it means we cannot use castor to install the projet, since vendor are missing!
The Tailwind bundle download the tailwind binary but does more things. It's not really comparable here.
So I'm 👎🏼 for this contribution. Sorry

The installation part of castor is a bit intimidating.

Actually, It's a matter of copying a binary to somewhere in your PATH, and adding the executable flag:
curl "https://github.com/jolicode/castor/releases/latest/download/castor.linux-amd64.phar" -Lfso $HOME/.local/bin/castor && chmod u+x $HOME/.local/bin/castor

I fail to see how we can make it simpler.

Maybe we should create an installer like composer, but it could also be intimidating.
We could also support an APT/YUM repository, of some userland repository like homebrew & co.
But this is extra maintenance for us, and IMHO this does not wort it for now.

we highly NOT recommend to install castor in your SF application. Castor is a tool, and like each tool it should not be embed in the application.
If you do that, it means download again and again castor in every application. This is a waste a disk usage, bandwidth, etc.
It's much better to install it globally, as stated in the documentation.
If you still want to do this, you can, but it's not supported. Sorry.

Downloading the binary means getting my devops involved in the build process, that's what I'm trying to avoid.

But castor is a devops tools. Excluding it from the build processes is a bad idea.
Thanks for the idea, but I'm gonna close this issue.


Removed whitespace on the ends of lines.

There were many lines (mostly in comments) that ended with spaces.  When
using an editor that highlights whitespace on the ends of lines, there
were many lines that were highlighted.
This commit removes all the extraneous whitespace.
(Hint: in github, you can add &w=1 to the end of url showing a diff to get the diff ignoring changes in whitespace.  If you look at the diff of this commit, you can double-check that I only removed whitespace.)

Hi @cdepillabout, in an effort to clear up older issues/PRs we are pinging back to know if you are still tracking this request.
To give a little bit of context, recently a decision was made in the project to make the development more active and the first task is to clear up older PRs like this one to see if the OP is still interested in keep it going.

Closing due to the lack of feedback from the OP. If you want to work in the PR again, feel free to comment here to open up the discussion again.


Chocolatey: Upgrade packaging to 2.4.2.

Thank you for opening a pull request and contributing to AsciidoctorJ!
Please take a bit of time giving some details about your pull request:
Kind of change

[ ] Bug fix
[x] New non-breaking feature
[ ] New breaking feature
[ ] Documentation update
[ ] Build improvement

Description
What is the goal of this pull request?
Upgrade the Chocolatey packaging to 2.4.2.
How does it achieve that?
Update version numbers and SHS256 sum. The new package is currently going through the moderation process at https://chocolatey.org/packages/asciidoctorj/2.4.2.

Thank you!


SOF-1144 Only update Segment from cache if the Segment exists in the cache

Now check if the Segment exists in IngestDataCache before telling to update from the cache.
Removed linting of autogenerated js files that kept complaining about linting issues in MOS-gateway.

Codecov Report

Merging #187 (0d49c4c) into develop (98f8a3a) will decrease coverage by 0.56%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #187      +/-   ##
===========================================
- Coverage    68.18%   67.61%   -0.57%
===========================================
  Files          277       15     -262
  Lines        33911     3014   -30897
  Branches      4538      218    -4320
===========================================
- Hits         23121     2038   -21083
+ Misses       10335      975    -9360
+ Partials       455        1     -454

Impacted Files
Coverage Δ

meteor/server/api/ingest/rundownInput.ts

...teor/lib/collections/RundownBaselineAdLibPieces.ts

meteor/server/security/showStyle.ts

meteor/lib/collections/ShowStyleVariants.ts

...eor/server/migration/deprecatedDatabases/1_32_0.ts

packages/job-worker/src/ingest/__tests__/lib.ts

meteor/server/migration/migrations.ts

packages/job-worker/src/ingest/expectedPackages.ts

packages/job-worker/src/playout/pieces.ts

meteor/lib/mediaObjects.ts

... and 252 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Unable to use Podman as the Container Runtime Engine

Environmental Info:
RHEL Version: 8.6
K3s Version:  v1.24.3+k3s1

k3s version v1.24.3+k3s1 (990ba0e8)
go version go1.18.1
Describe the bug:

I'm trying to use podman container runtime engine instead of the default containerd.
According to the k3s server --container-runtime-endpoint I should be able to use podman instead of containerd so long as I specify the podman socket.
Steps To Reproduce:

Installed Podman 3.2.3
Started and enabled podman.socket
Attempted to install K3s v1.24.3+k3s1 with the following command:

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.24.3+k3s1 INSTALL_K3S_EXEC="server --container-runtime-endpoint unix:///run/podman/podman.sock" sh -

Attempted to start the K3s service with the following two commands:

systemctl daemon-reload
systemctl start k3s

Got error and ran the following command:

journalctl -xe

Expected behavior:

K3s is using podman as the container runtime engine instead of containerd.
Actual behavior:

When I try to install K3s with the container-runtime-endpoint flag it fails to start the service and I cannot start it back up.
Additional context / logs:

When I try the installation method mentioned above this is what the system file looks like:

cat /etc/systemd/system/k3s.service
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=-/etc/default/%N
EnvironmentFile=-/etc/sysconfig/%N
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
    server \
        '--container-runtime-endpoint' \
        'unix:///run/podman/podman.sock' \

Output from journalctl -xe command:

level=fatal msg="kubelet exited: failed to run Kubelet: unable to determine runtime API version: rpc error: code = Unavailable

Podman does not, as far as I know, offer a CRI implementation. It has a restful http API, but it does not expose an actual grpc container runtime service usable by the kubelet. If you have evidence to the contrary, please share more information.


{Packaging} Bump Jinja2 to 3.0.3

Related command

Description

Jinja2 below version 3 is not maintained. In version 3.0.3, it fixed bugs to support python 3.10 and 3.11.
The lastest version is 3.1.2, we cannot use this version because 3.1.x dropped python 3.6 support.
BTW, the version 3.0.3 already been applied in test_ref_doc.sh pipeline in https://github.com/Azure/azure-cli/pull/21798
Version 3.0.3 requires MarkupSafe>=2.0.
MarkupSafe 2.1.x drops python 3.6, so I bump it to version 2.0.1.
I've reviewed the usage of Jinja2 in our repo. It seems no code change required. But we still need to evaluate the impact on packaging pipeline.
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Packaging

Not being able to drop Python 3.6 is really a big problem (https://github.com/Azure/azure-cli/issues/19858). If CentOS 7 doesn't have Python 3.7+ support, we will have to drop CentOS 7 someday.

I find these two packages is not in setup.py, but some scripts use them. Actually they should be moved to requirements.dev.text?
One interesting point is that alias extension rely on this commit. Otherwise its dependency Jinja2-2.11.3 is loaded and cannot import name 'soft_unicode' from 'markupsafe' raises.


impl SIM910

close #171
This PR implements the rules of SIM910.
This rule detects dict.get(key, None).
ref:
https://docs.python.org/3/library/stdtypes.html?highlight=dict#dict.get

We should use BOOL_CONST_TYPES for Python3.7 and earlier compatibility.

Thank you :hugs: I'll release flake8-simplify==0.20.0 with that change today


galaxy j727u PIT download seems to work but WARNING: Empty bulk transfer

Thanks!  So far software looks great, compiled like that from github on gentoo, didn't even have to install anything, just ran it in home directory as root, PATH=$PATH:/home/user/Heimdall/bin bin/heimdall-frontend
Detecting device...
Manufacturer: "SAMSUNG"
Product: "Gadget Serial"
        length: 18
  device class: 2
           S/N: 0
       VID:PID: 04E8:685D
     bcdDevice: 021B

iMan:iProd:iSer: 1:2:0
nb confs: 1
interface[0].altsetting[0]: num endpoints = 1
Class.SubClass.Protocol: 02.02.01
endpoint[0].address: 83
max packet size: 0010
polling interval: 09
interface[1].altsetting[0]: num endpoints = 2
Class.SubClass.Protocol: 0A.00.00
endpoint[0].address: 81
max packet size: 0200
polling interval: 00
endpoint[1].address: 02
max packet size: 0200
polling interval: 00
Claiming interface...
Setting up interface...
Initialising protocol...
Protocol initialisation successful.
Beginning session...
Some devices may take up to 2 minutes to respond.
Please be patient!
Session begun.
Downloading device's PIT file...
WARNING: Empty bulk transfer after receiving packet failed. Continuing anyway...
PIT file download successful.
Ending session...

The same happens on my Core Prime G360G. Had to compile v1.4.2 as the previous in repo (Mint) just gave errors. Downloading PIT seems to work, now just to be able to download the images themselves... :-)


Extend API for persistent ordered map

Add MapOps class with the following signature:
  public class MapOps<K>(compare : (K,K) -> O.Order) {

    public func insert<V>(m : Map<K, V>, key : K, val : V) : Map<K, V>

    public func fromIter<V>(i : I.Iter<(K,V)>) : Map<K, V>

    public func replace<V>(m : Map<K, V>, key : K, val : V) : (Map<K,V>, ?V)

    public func mapFilter<V1, V2>(f : (K, V1) -> ?V2, t : Map<K, V1>) : Map<K, V2>

    public func lookup<V>(x : K, t : Map<K, V>) : ?V

    public func delete<V>(m : Map<K, V>, key : K) : Map<K, V>

  };

The other functionality provided as standalone functions, as they don't require comparator:
  public type Direction = { #fwd; #bwd };

  public func toIter<K, V>(tree : Map<K, V>, direction : Direction) : I.Iter<(K, V)>

  public func keys<K, V>(m : Map<K, V>, direction : Direction) : I.Iter<K>

  public func vals<K, V>(m : Map<K, V>, direction : Direction) : I.Iter<V>

  public func map<K, V1, V2>(f : (K, V1) -> V2, t : Map<K, V1>) : Map<K, V2>

  public func size<K, V>(t : Map<K, V>) : Nat

  public func foldLeft<Key, Value, Accum>(
    step : (Key, Value, Accum) -> Accum,
    empty : Accum,
    map : Map<Key, Value>
  ) : Accum

And foldRight with the same signature as foldLeft

Questions.

We may use Direction to unify foldLeft with foldRight. Should we?
We may ask user for a function of type (K, V, V) -> v to resolve clashes on fromIter.

We may ask user for a function of type (K, V, V) -> v to resolve clashes on fromIter

Yeah, I think it makes sense to clarify the design of it, since the doc doesn't say anything explicitly.

The other functionality provided as standalone functions, as they don't require comparator:

I am not sure that this is a consistent approach. Probably these functions should also be added into MapOps.  However, we can postpone it after we will make measurements of the performance impact of it.

Just for notes, this commit adds new functionality:

map
foldLeft, foldRight, fold

The other functionality provided as standalone functions, as they don't require comparator:

I am not sure that this is a consistent approach. Probably these functions should also be added into MapOps. However, we can postpone it after we will make measurements of the performance impact of it.

Or maybe not, I see that in the old library some functions are methods and some are in the module e.g. size or iter. Let's leave it like we have it now.

About remove option type from tree definition

This option gave me a lot of pain. We wanted to delete it anyway, but when I wrote new functionality it goes to spread all across the API. It appears in map, mapFilter and in both folds. I decided that support it not worth the pain it gives to us.

Yeah, I have no problem with the fact that you did it. It's cool!
I just was surprised by how trivial this change was. It feels like you just removed ? in all places and it's working (Hopefully). I think it's a bit dangerous to make such changes without tests, but I think we can figure this out later.

I've noticed that you also renamed toIter to iter. I have found that the doc says nothing about it and both names is represented in the base library:

iter: RBTree, Trie
toIter: List, Text
So I think it's fine.

I added comments to all the public functions, please, take another look.


Improve Shapes layer performance

Description
This PR implements some small changes to improve the responsiveness of the Shapes layer with a large number of shapes. In particular, based on the profiling we did in #1562 , I aimed to do the following:

Reduce startup time

Delay re-indexing the mesh by z order until all shapes are added
Eliminate a redundant Shapes._update_thumbnail() call

Decrease latency when switching interaction modes and selecting shapes

Eliminate a redundant Shapes._update_thumbnail() call
Do not call Shapes._update_thumbnail() when selecting shapes and there are more than 100 shapes

Decrease latency during dragging

Delay updating the thumbnail until the drag is complete

Profiling
I used the airspeed velocity benchmarks listed below (/napari/benchmarks/benchmarks_shapes_layer.py).

Benchmark
n_shapes
Master [sec.]
PR [sec.]
Change

Shapes2DSuite.time_create_layer
256
1.93
1.25
-35%

ShapesInteractionSuite.time_select_shape
256
0.79
0.01
-99%

ShapesInteractionSuite.time_drag_shape
256
1.23
0.18
-85%

A couple of notes:

ShapesInteractionSuite.time_drag_shape benchmark performs 5 drag events, the time per drag event is ~30 ms
These only include the time for calculations performed on the model (i.e., they don't include the vispy draw time)
The layer creation is likely limited by the creation of each Shape object and the thumbnail generation.

Demo
If you'd like to try it out, you can use the script below to generate a Shapes layer with 1000 shapes and compare between the PR and master. At least on my computer, this seems to be an improvement, but there are definitely more things we can do (e.g., speed up the calculation for selecting shapes with a bounding box)).
Demo script

import numpy as np
import napari
from skimage import data

# make 3D image
blobs = data.binary_blobs(
    length=128, blob_size_fraction=0.05, n_dim=3, volume_fraction=0.1
).astype(float)

def make_square(lower_left_corner, width):
    upper_left_corner = lower_left_corner + [0, width]
    upper_right_corner = lower_left_corner + [width, width]
    lower_right_corner = lower_left_corner + [width, 0]

    return np.vstack((lower_left_corner, upper_left_corner, upper_right_corner, lower_right_corner))

# create random rectangles
n_shapes = 1000
np.random.seed(0)
corners = 100 * np.random.random((n_shapes, 2))
widths = 15 * np.random.random((n_shapes,))
squares = [make_square(llc, w) for llc, w in zip(corners, widths)]

base_cols = ['red', 'green', 'blue', 'white', 'yellow', 'magenta', 'cyan']
colors = np.random.choice(base_cols, size=n_shapes)

with napari.gui_qt():

    viewer = napari.view_image(blobs)

    shapes_layer = viewer.add_shapes(
        squares,
        shape_type='rectangle',
        face_color=colors,
        name='sliced',
    )

Type of change

[x] Bug-fix (non-breaking change which fixes an issue)

References
How has this been tested?

[ ] all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works

Okay, I think this is ready for an initial round of review. I have added some details on what was changed and the profiling results above. I think there are still many things we can do, but I think these are the low hanging fruit and it is a step in the right direction.

Amazing @kevinyamauchi 99% timesavings for dragging - this PR is huge. Thanks for including those benchmark stats!!!
I've left one final comment that we might want to additionally actually cap all thumbnail updates to at most use 100 random shapes if there are more than 100 shapes on that slice (note not 100 overall, but on that slice). For a 32 x 32 pixel thumbnail, I wonder if more than 100 are ever needed. You could also take the top 100 shapes according to z-index. You could also then remove the additional split on if to block thumbnail during the changing of mode, which should probably never need a thumbnail calculation.
Let me know if you want to make those two changes, I think it is very close to merge.

@sofroniewn, I have done the following, which I think addresses your comments.

Made it such that the thumbnail is not updated for any layer mode change
Made it so that the selection events never update the thumbnail. The thumbnail still updates if a shape is moved, modified, or created.
Made it so when the number of shapes in view exceeds a threshold (Shapes._max_shapes_thumbnail), a number of in view shapes are randomly selected to be rasterized. I set the threshold to 100 for now, but we can relax this as we further improve the rasterization code (this yields update times of ~100 ms on my Macbook Air).

I have updated the benchmarks in this comment: https://github.com/napari/napari/pull/1561#issuecomment-678771901

Hi @kevinyamauchi thanks for all those updates. Playing with the new behavior I have one final request which is to not make the selection randomly, but take the top Shapes._max_shapes_thumbnail shapes for the thumbnail, should be a simple one line change, but you should make sure to take the top 100 not the bottom 100.
Reason for this is shown in the gif placed in the inline comment, but right now a small change to the shapes triggers a big change to the thumbnail as the random 100 chosen are different every time which is quite visually distracting if you're moving shapes around.
Otherwise everything looks great, and we can merge after this!

Thanks for the careful review, @sofroniewn ! I agree that taking the "top" (by z order) max_shapes is the way to go so the thumbnail is stable for dense layers. I have made the suggested change.

Looks great to me @kevinyamauchi, I am merging now!!


Fix for Conan 0.29.0

Thanks for making this package :)
On upgrading to Conan 0.29.0 I ran into a bug with the python import
ERROR: Unable to load conanfile in ****/.conan/data/gsl_microsoft/20171020/bincrafters/stable/export/conanfile.py
  File "****/.conan/data/gsl_microsoft/20171020/bincrafters/stable/export/conanfile.py", line 1, in <module>
    from conans import ConanFile, os
ImportError: cannot import name os

This PR fixes that issue, and also upgrades CXX_STANDARD to 14 - which is required for (at least) gcc 7.2 (and documented at https://github.com/Microsoft/GSL)
Cheers

LGTM

@shearer12345 many thanks!


Responsive desigsn

We need to qa the site and make sure that it is responsive across devices.

@kevinahuber has done a great first pass. We should do a second QA pass at the beginning of June.

Missing Set, Map polyfills. Fails to run on Win7 IE9, iPhone 5S Safari. Will edit this comment with more info.

PR #87 closes this issue


Support perplexity

oatmeal --open-ai-token=$(cat ~/.ssh/perplexity-token ) --open-ai-url="https://api.perplexity.ai" --backend=openai
╭Oatmeal───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Hey, it looks like backend openai isn't running, I can't connect to it. You should double check that before we start talking, otherwise I may crash. │                                                           ▲
│                                                                                │                                                           █
│ Error: OpenAI health check failed                                                                                │                                                           █
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                                                           █

Yes, it's very knew to the market. But so far it has greater experience than GPT-4, since you can easily change from one to another LLM Backend.
I'm unaware of such claim, as you mentioned the docs are pretty simplistic.

This is all the documentation I could find. It looks like it is compatible with the OpenAI API, incluiding streaming (I haven't tested it yet)
https://docs.perplexity.ai/reference/post_chat_completions
It looks like it fails because because of two reasons:

The error you are getting is from the healthcheck. Just as OpenAI, there is no healthcheck on the root url. The current code is returning true if url == https://api.openai.com, this is a different url, the healthcheck fails.
If the healthcheck were to pass, the model shouldn't work because the OpenAI backend appends a  /v1/ after the url and before /chat/completions which perplexity does not need.

The draft PR I have open for Github Copilot Chat shares pretty much the same code for OpenAI (and Perplexity by the looks of it) on the get_completions method; just the headers change (which are very important). It could be be appropriate to refactor this code into a single openai_compatible_completions method of sorts and each backend call this with their respective URL, Headers and data.

It could be be appropriate to refactor this code into a single openai_compatible_completions method of sorts and each backend call this with their respective URL, Headers and data.

This is has been my problem as I've looked at more OpenAI proxies and compatible API's.  I'm more open to if they are similar, copy/paste the OpenAI backend infrastructure file, rename functions appropriately, and make the changes to work with the new API.
If you know of anyone at Perplexity who'd be open to providing a free account for a short period of time, I'd be happy to implement this. Otherwise I love PRs! :D

Ohh, I see.
Claiming and doing so, that's common in the industry, hehe.
I'll keep my ears open if I can find anyone from perplexity, but I'll focus on a PR when I get some extra time. Thanks!


Can't get anything but lightning to work, not even the demo

Hey there,
I'm using your library on an Arduino Pro Micro clone, and it seems to be crashing the system so hard that USB/Serial stops working.
Any idea what's going on? Thanks!

My first thought would be it's running out of memory since from what I can tell the Micro comes with relatively little. If it's not that I wouldn't be sure without getting one of the same boards. Is the Micro the only device you've tested on?  Did you try a sketch with only one or two patterns?

Hey brimshot, thanks for the quick response!  I'm a little surprised it would be crashing if it were trying to allocate more memory, aren't there null pointer checks after allocation?
Yeah, I successfully used the lightning pattern, but adding any others like the rainbow pattern whether in addition or solo, would result in a crash.
What do you think?


Problem with tunnelling instructions

I've noticed that other developers are not able to use the ssh commands in some of the manual pages, eg the integration command here https://docs.publishing.service.gov.uk/manual/rabbitmq.html#header
This is because ssh integration doesn't work for them.
In my ssh config I have an integration host defined as
Host integration
  Hostname jumpbox.integration.publishing.service.gov.uk

But this is not in the example config here:
https://github.com/alphagov/govuk-puppet/blob/master/development-vm/ssh_config
We could fix this by changing the example and/or changing the docs. I'm just creating the issue to keep track of this as I don't have time to fix right now. Does anyone have any opinions on how this should work?

Sounds like that file in govuk-puppet needs to be made up to date with https://docs.publishing.service.gov.uk/manual/ssh-config.html#header or the other way around...

Ah I wasn't even aware of that one. The getting started guide links directly to the file in github: https://docs.publishing.service.gov.uk/manual/get-started.html#6-access-remote-environments

Looks like this was fixed in 2018. Closing.


International addresses show the wrong error messages

Context
If validations are triggered on submission of course details form, the error messages for both international and uk form fields is identical. This is incorrect because the field labels are different despite the attributes being the same.
Changes proposed in this pull request

For the international address I've added custom validations to allow different error messaging to be rendered as shown below for both blank and length.

Before:

After:

Guidance to review

Link to Trello card
https://trello.com/c/iqMeSjy0/3571-international-addresses-show-the-wrong-error-messages-if-left-empty-next-sprint-check)
Things to check

[ ] If the code removes any existing feature flags, a data migration has also been added to delete the entry from the database
[ ] This code does not rely on migrations in the same Pull Request
[ ] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[ ] API release notes have been updated if necessary
[ ] Required environment variables have been updated added to the Azure KeyVault

 International addresses show the wrong error messages if left empty (Next sprint & Check )


WIP: Added functionality to install additional mod files (required files)

Downloads zip, extracts it and detects client and server folder and copies all files (except ones in PluginFiles by SIT)
Needs a new entry in MasterList.json for each mod like "OriginalDownloadUrl": "https://github.com/TommySoucy/MoreCheckmarks/releases/download/v1.5.11/MoreCheckmarks-1.5.11-for-3.8.0-29197.zip", or to hub.sp-tarkov.com/file

Button greyed out if OriginalDownloadUrl is missing

[ ] translations (help wanted)
[x] created translation keys for all languages but only filled with english content
Closes: #110

I'm open to feedback, whether the project would be interested in this PR at all and how the translations are done.
Currently I am still fixing some edge-cases:

[ ] client only (No need as you can't remove aki SPT_AKI path once set)
[ ] download from hub.sp-tarkov.com/file once it's fully up again (Post request required to get the link)
[x] explore possibility for dynamic download link based on version (support github and gitea hosted on dev.sp-tarkov.com to dynamically get appropriate release asset)
[x] check if 7z etc also working (made a small addition for extracting 7z, but is rarely used)
[x] basic dependencies (only of listed mods)
[x] cache/save resolution of github and gitea releases, as api rate limits apply
[ ] more testing

Hey, thanks for doing this saves me a job! 😄
I'll have a look through it all properly when you think it's ready.
The issue to link it to is #110 as we basically want to make the required install flag redundant so that installing mods works better rather than add things like the configuration manager as part of the SIT install a toggalable option.
I was thinking it might be an idea to have it look into dealing with dependencies which could be in the master mod list as well due to them needing some kind of porting as well.
You can just leave this PR as handling client only mods dependencies for now, we can do another PR later which works out server mod installing as the manager doesn't do that at all yet.
To answer the question about translations if you're adding new ones then I would put all the same keys and their respective english into all the other localisation files as a minimum.

Hi, yea.
I forgot about the dependencies, will add an early version.
My general plan is to have a working mvp, that helps less tech-savvy people without overcomplicating it. Enought to be a good first iteration.
I'll give you a head's up when I am pleased.
Thanks

Sounds good to me, mod installation was the next big target as it was a cause of a lot of questions.
Some other things I thought of which you might want to bear in mind.

At some point I'll completly change the way the Mods page looks (unless someone beats me to it), so that it looks/feels a lot better and would make more sense showing what's already installed, it's version, what mods are available and what if any potential updates there are etc etc.
Also on top of that will be server mods eventually and fitting that in UI wise so it's the same but also seperate enough that it's clear. Although this will probably come after everything else as getting the client side stuff working is the more important/harder one due to the need for specific porting with certain mods to be compatible.

So tackling the required extra files part is a very useful step! ❤

Just updated your issue text quickly so it linked to the right issue.
I finally got around to doing something for #103, as they're both going to have a lot of changes to the ModService I'll won't merge mine till after this is done so you won't have to deal with the horrific merge conflict that will happen.

will probably finish up tomorrow

Out of curiosity, is there any reason why each mod doesn't define a mod.json file with it's version and the files that need to be copied to the server and client? Using the master list rather than enumerating each mod individually creates a big merge conflict point as well as closing the door for launcher support of third-party ports of mods.

The way we handle mods and subsequently the mods page is changing for 1.11 and as such this PR will no longer be needed. Thank you for starting it though!


BackgroundColor in Code ?

Hi,
first of all very nice work :+1: , but I have a question.
How can I set the BackgroudColor of the Menu (and the Button) in Code ?
I have tried everything and have also seen the sample project, but got no solution.
I have to change the color based on the current image!
-> mFloatingActionMenu.setBackgroundColor(palette.getVibrantColor(0x00000));
This statement gives not the wanted effect

https://www.dropbox.com/s/za13sexhmmynkiw/QuickMemo%2B_2015-04-06-22-26-33.png?dl=0
Need Help

Under "BackgroudColor of the Menu" you mean the background color of the menu labels?

No I mean the button itself. You call the button that contains other buttons, a menu,  that's why I wrote menu.  But thanks for the fast reply.  It would be very nice if you could help me out

Will try to publish an update in a couple of days.

Thanks
👍

Done. See Changelog.


Remove white spaces in c* connection host string

Given comma separated list and if there is space after comma then name resolution fails.

How do I re-trigger this check?

Squashed and merged into b1.3, b1.4 and master. Thanks.


Input Field Number - native stepper is shown next to custom stepper in firefox

What is affected?
Component
Description
When I open the Input Field Number component in Storybook on Firefox, I expect to see the same stepper as in other browsers, instead I see an additional native stepper next to the custom one.
Steps to reproduce

Open Input Field Number component in Storybook on Firefox (open https://b01ler.onrender.com/?path=/story/components-input-field-number--input-field-number on Firefox)
See 2 steppers

Affected version(s)
current develop version
Operating system / Browser / Environment
macOS: 14.4.1 (23E224), Browser: Firefox 125.0.3 (64-bit)
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@thrbnhrtmnn In my current browser version (130.0 64-bit), the issue was no longer present. Nevertheless, I've added something to ensure it doesn't appear in the older version either. Unfortunately, I can't test this because I can't access to the older Firefox version.
We can see if it works after the merge.


crash on start up after editing ore gen on other mods

the error we are getting is :
16:45:05] [Server thread/ERROR] [FML/]: Caught exception from Mekanism
java.lang.NullPointerException
at net.minecraft.item.ItemStack.func_77960_j(ItemStack.java:217) ~[add.class:?]
at mekanism.api.util.StackUtils.equalsWildcard(StackUtils.java:62) ~[StackUtils.class:?]
at mekanism.api.util.StackUtils.equalsWildcardWithNBT(StackUtils.java:67) ~[StackUtils.class:?]
at mekanism.common.recipe.inputs.ItemStackInput.testEquality(ItemStackInput.java:66) ~[ItemStackInput.class:?]
at mekanism.common.recipe.inputs.ItemStackInput.testEquality(ItemStackInput.java:8) ~[ItemStackInput.class:?]
at mekanism.common.recipe.inputs.MachineInput.equals(MachineInput.java:36) ~[MachineInput.class:?]
at java.util.HashMap.putVal(Unknown Source) ~[?:1.8.0_05]
at java.util.HashMap.put(Unknown Source) ~[?:1.8.0_05]
at mekanism.common.recipe.RecipeHandler$Recipe.put(RecipeHandler.java:581) ~[RecipeHandler$Recipe.class:?]
at mekanism.common.Mekanism.serverStarting(Mekanism.java:1048) ~[Mekanism.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?]
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:789) [Loader.class:?]
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:278) [FMLCommonHandler.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:277) [lt.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:387) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685) [li.class:?]
[16:45:05] [Server thread/ERROR] [FML/]: A fatal exception occurred during the server starting event
java.lang.NullPointerException
at net.minecraft.item.ItemStack.func_77960_j(ItemStack.java:217) ~[add.class:?]
at mekanism.api.util.StackUtils.equalsWildcard(StackUtils.java:62) ~[StackUtils.class:?]
at mekanism.api.util.StackUtils.equalsWildcardWithNBT(StackUtils.java:67) ~[StackUtils.class:?]
at mekanism.common.recipe.inputs.ItemStackInput.testEquality(ItemStackInput.java:66) ~[ItemStackInput.class:?]
at mekanism.common.recipe.inputs.ItemStackInput.testEquality(ItemStackInput.java:8) ~[ItemStackInput.class:?]
at mekanism.common.recipe.inputs.MachineInput.equals(MachineInput.java:36) ~[MachineInput.class:?]
at java.util.HashMap.putVal(Unknown Source) ~[?:1.8.0_05]
at java.util.HashMap.put(Unknown Source) ~[?:1.8.0_05]
at mekanism.common.recipe.RecipeHandler$Recipe.put(RecipeHandler.java:581) ~[RecipeHandler$Recipe.class:?]
at mekanism.common.Mekanism.serverStarting(Mekanism.java:1048) ~[Mekanism.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) ~[LoadController.class:?]
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:789) [Loader.class:?]
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:278) [FMLCommonHandler.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:277) [lt.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:387) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685) [li.class:?]
this is with the latest stable build of mekinism (252)
after a lot of searching i found 3 similier bug reports but all are closed so im guessing its an old bug that has returned?
couldnt say which mod caused it (tried to reset each mod one after the other but issue persisted
reset all configs from a back up and the world begins to load again
also tested with a new world, as i thought at first i had a corrupted world but the same issue happened
also tried dev version 255, same issue
It seems that mekenism does not like it if a mod has turned of its ore generation so we now have 5 copper ores 4 or 5 tins lol (it was that or dropping mekenism from the server)
also have you thought about adding the mod to curse? it would make life a lot easier and since they host the files for free you wouldnt need the adfly links :)

What I've done in the past is turn off ores from the config of the mod generating it (in this case, go to Mekanism's config and turn off copper and tin ore generation).
I never learned to use CoFH's worldgen tools properly, but a quick look at FTB Infinity Evolved's default config for Tinkers' Construct shows me that they turned off TC's generic Copper, Tin, and Aluminum ores (bushes and gravel ores are still turned on).  Looking at Immersive Engineering's config, all of those ores are also turned off (vein sizes set to 0).  I couldn't find any oregen config for Thermal Foundation ores, but I'm sure those are embedded in CoFH.
Depending on what mod you are using to alter worldgen, you may have to disable all the copper, tin, etc. ores individually.

that was the issue though, with all the world gen set to default it all works fine (accept i get 5 different coppers etc)
once i turn off ore gen to get down to one copper, one tin etc thats when mekanism crashes.
so i had to make a choice, keep mek and have multiple copper ores or lose mek but have only one copper ore..... i have learnt to embrace the multiple ores :)

What mod are you using to alter world gen?

biomes o plenty :)

I'm getting this issue too, but I'm editing ore gen in the config files...
I looked through the src here, and it looks like it's stemming from the map in the main mod class
roundabouts 1048, as the crash info says

same issue

I get the same problem here.

It seems to stem from the map that it's using. Perhaps an ore registration error in there?
I'm not familiar with that map utility, so I'm not sure where to even look for that.

I am having the same crash. It seems to work on the client but i am unable to play a new generated world. I have Biomes'o'Plenty and RTG disabled for testing but it gives the above crash on the server as well, Even when using all default config from other mods,

Can someone who is still having this issue post a mod list?  I want to see if I can get it to work tonight.  If possible, I would like the list to have CoFH Core, as that's what I'm familiar with when altering world gen.

I'm creating a world now to get you an up-to-date list, but in the config I turned off duplicate ores in galacticraft, mariculture, metallurgy, railcraft, immersive engineering, forestry, and TConstruct.
If it really is a problem with ore registration, perhaps an exception check in the code could fix it?

here's my mod lister output for my current setup: http://pastebin.com/MNnVfMg9

@Stephen789Git Sorry, but that mod list is way longer than my attention span.  How are you editing ore gen?  In my experience, CoFH Core want you to disable ALL other ore gen and pull the ores it needs directly
I'm going to see if I can duplicate this issue with the FTB Infinity pack updated with the most up to date mods and a default set of configs and adding Mekanism to it.

I edited the oregen directly from the configs of the mods. I wasn't aware that CoFH core allowed you to do that, I'll look into it as a fix.

@Stephen789Git Copy your config folder elsewhere, and remove the folder completely from that minecraft instance.  That will generate default configs for all of your mods.  If that fails, then you probably have a mod conflict and it could be any number of mods you have installed causing it.
I'll take a look at any crashlog you feel like posting with default configs, but I can't guarantee I'll be able to spot the issue.  I'm not a programmer, just someone who has banged my head against personal packs a few times.

here's the crash report after I reset the configs:
http://pastebin.com/VPREjACQ

Full log please.
A forge crash log should have a mod list and each mod's activation status.  At the bottom, some mods (like Ender IO) often write up issues they found, like known conflict mods and outdated APIs being loaded.

it's not an actual crash, though, it only kicks back to the title screen. After the paste I sent you it just states that the server was forced to an incorrect state and has the output of mods shutting dimensions down.

Hello @VT-14
trying to provide more information to help addressing this issue:
1st try upgrading from working version <IP_ADDRESS>
on startup:
Missing Blocks/Items:
Mekanism:FrictionBoots
aobd:bottle_lithium
and a full startup log containing the crash: (note forge doesn´t write a crashlog in this case): http://boss2.strict-hosting.com/pack/startup.txt
2nd try: removed the config folder completely / crashed:
http://boss2.strict-hosting.com/pack/startup2.txt
3rd try: generating a new map with fresh config folder / crashed:
http://boss2.strict-hosting.com/pack/startup3.txt
4th try: generating a fresh world without RTG and No Biomes'o'Plenty usage (level-type=NORMAL) / Crashed
http://boss2.strict-hosting.com/pack/startup4.txt
Modlist (jar versions):
http://boss2.strict-hosting.com/pack/jars.txt
please let me know if i can help any further. Thanks
Sharkking

That log has what I was looking for (Forge edits the vanilla crash logs).  The modlist I was looking for previously was generated at [07:59:05] (near the bottom).  It does confirm that Mekanism is the mod that is throwing the fatal error, but that doesn't necessarily mean it's the cause.
Noteworthy events from the 3rd log.

[07:58:32] [Server thread/INFO] [STDOUT]: [eu.thesociety.DragonbornSR.DragonsRadioMod.Handler.Cmsg:writeError:20]: [Dragon's Radio Mod] *** Error caught by Dragon's Radio Mod ***
[07:58:32] [Server thread/INFO] [STDOUT]: [eu.thesociety.DragonbornSR.DragonsRadioMod.Handler.Cmsg:writeError:21]: java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.thesociety.eu/dragonsradiomod/validate.php?port=25565
[07:58:32] [Server thread/INFO] [STDOUT]: [eu.thesociety.DragonbornSR.DragonsRadioMod.Handler.Cmsg:writeError:22]: [Dragon's Radio Mod] *** End of Exception caught by Dragon's Radio Mod ***
[07:58:32] [Server thread/INFO] [STDOUT]: [eu.thesociety.DragonbornSR.DragonsRadioMod.Handler.Cmsg:writeError:23]: [Dragon's Radio Mod] Please Report this error to DragonbornSR<EMAIL_ADDRESS>
Rotarycraft was throwing a lot of errors, but I don't think that was the cause.  Dragon API did as well, and I have no idea how that one compares.
At [07:58:42], dimensions -19, -37, and -39 Could not be registered and should be changed in the configs.  I suspect Galacticraft, but any mod that generates dimensions could be an issue.  You may need to blacklist those from RFTools.
This Mekanism error is thrown 7 times.  I checked and it is indeed in ALL of your logs.

[07:58:51] [Server thread/ERROR] [Mekanism]: [Mekanism] NuclearCraft attempted to addrecipe of type Combiner with an invalid input.
Mess around with NuclearCraft (update, see if there is a config to turn off Mekanism compatibility, remove it, etc.)

The other option, and this applies to anyone having ore-gen issues, is to try disabling the Combiner.
Mekanism config, line 78. try
B:CombinerEnabled=false
I just tried with Mekanism, ReactorCraft, RotaryCraft, and DragonAPI only on a modpack, and it loaded with no issues (no changes to configs by me).
Mekanism: <IP_ADDRESS>8
Reika mods: V10d

thanks so far i will give it a try

I tried this on my pack, but it still crashed to title: http://pastebin.com/NPZsq0bX
(it's only a partial log, but that's because pastebin has a character limit)

I encountered the same. Even removing all Decoration Mods, removing the map to generate a new one and delete the config folder each time did not help. I will try with the setup VT mentioned and add mod by mod to see where it crashes

I'm not a coder, but it looks like something is trying to add a recipe to Mekanism (causing Mekanism to crash).  That suggests cross mod compatibility issues.
Which means the best way to solve this is to mess with your mod list and try different combinations until you narrow down on exactly what combination of mods crash.  I think the typical way is to load half your mod list (and Mekanism and required dependancies of loaded mods) and see if it crashes. then, try the other half.  from the half(s) that is(were) crashing, only load half of those (now quarters) and repeat until you find the mod(s) causing the issue.
A mod author will usually be willing to test a pack with a handful of mods in it.  If not the author themself, a random user (like myself) might try to replicate it and may be able to provide more insight.  The reported test pack should consist of only the mods that are crashing together (and doesn't crash if Mekanism is removed) and their dependancies.  NEI would likely also be an acceptable addition.

After doing a bit of research, I can conclude that this is indeed due to some kind of faulty integration.

Just a short information
After adding mod after mod i finally found out that in our Case ExtraPlanets for Galacticcraft causing the crash

I don't have extraplanets installed. Could it be GalaxySpace causing the crash for me?

So is there a fix for this issue?