Event Handling for AutoPlay not functioning

Description
Autoplay doesn't seem to be triggering an event for an event handler to pickup
Version
Version:L librespot 0.6.0-dev 82076e8 (Built on 2024-12-02, Build ID: WMNNBRja, Profile: release)
How to reproduce
Steps to reproduce the behavior in librespot e.g.

Launch librespot with '-v'
Connect to librespot through spotify
Navigate to settings/Playback within the Spotify (i'm using android)
turn on AutoPlay,
monitoring logs we get the following trace [2024-12-06T12:34:58Z TRACE librespot_connect::spirc] Received attribute mutation for autoplay but key was not found!
we should be seeing something like the following when enabled:
[2024-12-06T12:35:42Z DEBUG librespot::player_event_handler] Running C:\...\git\librespot-eventHandler-C++\out.exe with environment variables: {     "TRACK_ID": "7f9YaN8bcVLFlTMexwSlzb",     "PLAYER_EVENT": "preloading", }

Log
Not Many Logs but here's a snippet from a track playing then toggling autoplay a few times:
 [2024-12-06T12:36:12Z DEBUG librespot::player_event_handler] Running C:\...\git\librespot-eventHandler-C++\out.exe with environment variables:
    {
        "ALBUM": "All Change",
        "URI": "spotify:track:7f9YaN8bcVLFlTMexwSlzb",
        "DURATION_MS": "265066",
        "ITEM_TYPE": "Track",
        "NAME": "History",
        "ALBUM_ARTISTS": "Cast",
        "COVERS": "https://i.scdn.co/image/ab67616d0000b27398d2b5f9e0c3d00e6bc423da\nhttps://i.scdn.co/image/ab67616d00001e0298d2b5f9e0c3d00e6bc423da\nhttps://i.scdn.co/image/ab67616d0000485198d2b5f9e0c3d00e6bc423da",
        "LANGUAGE": "en",
        "TRACK_ID": "7f9YaN8bcVLFlTMexwSlzb",
        "DISC_NUMBER": "1",
        "ARTISTS": "Cast",
        "IS_EXPLICIT": "false",
        "PLAYER_EVENT": "track_changed",
        "POPULARITY": "24",
        "NUMBER": "11",
    }
Playback started: History by Cast
[2024-12-06T12:36:12Z DEBUG librespot::player_event_handler] Running C:\...\librespot-eventHandler-C++\out.exe with environment variables:
    {
        "TRACK_ID": "7f9YaN8bcVLFlTMexwSlzb",
        "PLAYER_EVENT": "playing",
        "POSITION_MS": "0",
    }

[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 1347 kbps
[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 881 kbps[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 1279 kbps
[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 2558 kbps
[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Time to first byte now estimated as:
23 ms
[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 3030 kbps
[2024-12-06T12:36:12Z TRACE librespot_audio::fetch::receive] Time to first byte now estimated as:
18 ms
[2024-12-06T12:36:13Z TRACE librespot_audio::fetch::receive] Throughput now estimated as: 3708 kbps
[2024-12-06T12:36:13Z DEBUG librespot_audio::fetch] Downloading file 36a01bb0620aeb72c2aae526eab60370df174338 complete
[2024-12-06T12:36:29Z TRACE librespot_core::session] Received Ping
[2024-12-06T12:36:29Z TRACE librespot_core::session] keep-alive state: PendingPong, timeout in 60.0
[2024-12-06T12:36:29Z DEBUG librespot_core::session] Session strong=4 weak=7
[2024-12-06T12:37:03Z TRACE librespot_connect::spirc] Received attribute mutation for autoplay but key was not found!
[2024-12-06T12:37:05Z TRACE librespot_connect::spirc] Received attribute mutation for autoplay but key was not found!
[2024-12-06T12:37:06Z TRACE librespot_connect::spirc] Received attribute mutation for autoplay but key was not found!
[2024-12-06T12:37:07Z TRACE librespot_connect::spirc] Received attribute mutation for autoplay but key was not found!

Host (what you are running librespot on):

OS: Windows 10

Edit: missed description, version number and fixed formatting

Can you please try with #1356

It is actually a separate issue, so using the dealer impl doesn't fix the problem. I did run into it myself and wanted to open an issue, but didn't got to it, yet.
Anyways, the issue seems to be that on windows the autoplay flag  isn't send. Neither via the product information (initially), nor via the mutation. Meaning autoplay isn't activated when running on windows currently.
I think if we would acquire the infos via the ucs (i think it was called user customization service) we might be able to fix that, but that needs to be tested tho.

Great ok. I've not looked through your monster PR properly yet (that might end up being after it's merged by the sounds of it) so wasn't sure what was touched outside of dealer, I'd just lumped anything spirc related as possibly in flux!

I did really try hard to only integrate the dealer xD, Yes I added new functionally, but that just because the dealer supports more^^

Great ok. I've not looked through your monster PR properly yet (that might end up being after it's merged by the sounds of it) so wasn't sure what was touched outside of dealer, I'd just lumped anything spirc related as possibly in flux!

Btw. @kingosticks if you want to look over the PR or review it, we could probably still wait merging it.

Anyhow in regards to the ucs endpoint. It seems on linux ucs isn't used (probably because autoplay is still sent via the product information) and I currently don't have access to windows or android snooping to get the information needed (the linked comment provided an incorrect endpoint). So using ucs might be a platform dependent thing in the end.

What you want guys - no pressure. I'm on a family weekend anyway.
@photovoltex Thanks for your e-mail - did you yet see my response? Also no haste, just checking.

@roderickvd yeah, I'm just slow to respond when I have to think more about my responses, will probably answer over the course of the weekend tho


Create a new useInfiniteQuery hook to handle paginated queries independently

Originally posted by @skks1212 in https://github.com/coronasafe/care_fe/pull/7946#discussion_r1629078169
The new useInfiniteQuery hook would work like useQuery, but will contain utils to work with multiple pages.
The new hook should replace queries where we are fetching 1000 records as a hack
cc. @khavinshankar @rithviknishad

we are now using tanstack query


feat: add tutorial to readme

Is your feature request related to a problem? Please describe.
The tutorial should probably replace the overview as it has a better overview in the beginning of the detail, skips over history, goes into more detail, and has more up to date code examples.
Describe the solution you'd like to see
Link to tutorial instead of overview
Describe alternate solutions
Link to overview and then tutorial
Additional information
No response

Feel free to make a PR


Invalid password

Hi ! I can't use your script because I have a single unauthorized char in my password. It's a "é". I added prints in your script, and it seems to be the issue. Is there a workaround ? Thanks a lot

Sorry, I honestly do not know... I have been messing around for the last hour trying to make a password with the "é" work in my script... but I cannot seem to get it to work. I suspect because of issues with UTF-8 and encoding of passwords etc 😞
I'm not very familiar with working with nonASCII passwords, sorry.


The new app's review was not listed in the Ratings & Reviews screen

Describe the bug
The new app's review was not listed in the Ratings & Reviews screen
To Reproduce

Go to Apps, pick an app then install and send a new review
Click on Ratings & Reviews

Current behavior
Did not see the new review.
Expected behavior
The new review should been listed in the Ratings & Reviews
Screenshots

user ID (can we access the user info to validate the bug?):
Can be found in settings => profile
Smartphone + device (please complete the following information):

Device: ip 11 pro
App Version: 1.0.48 (180)
Device version: 2.0.4

This fix and general other fixes related to stuff not being updated in some apps screens after an action but being shown after closing and opening the screen can be fixed by removing the reliance on parameters for app object and instead directly using the app object from provider


As a user, I want to see all the data info as I move my cursor over the graph

Right now, the user must click on a point on the graph in order to see the exact timestamp value of a point on the graph. It would be useful to put the x-axis value in the field list to the right of the graph.

I got a new feed-back: show all the data (the row)(even the non-plotted one) under the cursor

add a div "Current data"
print (all) the row's content under the cursor

Closed via https://github.com/breznak/nupic.visualizations/pull/1


Group lasso

Description
doomsday

Codecov Report

Merging #4 (b8368ce) into main (073b759) will decrease coverage by 1.00%.
The diff coverage is 26.99%.


Live stream has delay between frames and glitches

We are using the library to live stream from a camera.
We started from a FFmpeg cli command that works very well:
ffplay -tune zerolatency -flags low_delay -preset ultrafast -fflags nobuffer rtsp://<IP_ADDRESS>:8554/video.mp4
We mapped this on the following configuration:
MediaSourceConfig configuration = new MediaSourceConfig()
{
    VideoDecoderMode = VideoDecoderMode.Automatic,
};

configuration.FFmpegOptions.Add("tune", "zerolatency");
configuration.FFmpegOptions.Add("flags", "low_delay");
configuration.FFmpegOptions.Add("preset", "ultrafast");
configuration.FFmpegOptions.Add("fflags", "nobuffer");

_decoder = await FFmpegMediaSource.CreateFromUriAsync(RtspUrl, configuration);
_mediaPlaybackItem = _decoder.CreateMediaPlaybackItem();

_mediaPlayer = new MediaPlayer();
_mediaPlayer.Source = _mediaPlaybackItem;
_mediaPlayer.Play();

mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

This streams the video but with a lot of delay so when you move the camera it takes 1 - 2 seconds until you notice.
During the movement a lot of glitches are introduced in the video.
If we run the ffplay command it works like a charm.
What are we doing wrong?

I never really used the lib for live scenarios. But I remember I also saw glitches when doing streaming tests. Not sure where this comes from. Do you see anything specific in the debug output? You need to register a log provider to see ffmpeg logs, check App.Xaml.cs of your MediaPlayerCS sample. Or just open the stream in our sample app, it already shows debug out.
Two things you can try for latency: First, MediaPlayer has a RealTimePlayback property, second, you can get the MediaStreamSource from the MediaPlaybackItem. It has a IsLive property. Not sure how much this helps, but maybe worth a try.

The RealTimePlayback property doesn't do anything.
Log snippet:
[h264 @ 000002447AD67C80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD68C80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447B0BE480] SEI type 5 size 648 truncated at 646
[h264 @ 000002447B0BDC80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447B0BD880] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD66480] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD66080] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD68880] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD69880] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD68480] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD69480] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD69080] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD67080] SEI type 5 size 648 truncated at 646
[rtsp @<PHONE_NUMBER>A5D940] max delay reached. need to consume packet
[rtsp @<PHONE_NUMBER>A5D940] RTP: missed 4 packets
[h264 @ 000002447B0BDC80] error while decoding MB 32 64, bytestream -7
[h264 @ 000002447B0BDC80] concealing 497 DC, 497 AC, 497 MV errors in P frame
[h264 @ 000002447AD68080] SEI type 5 size 648 truncated at 646
[rtsp @<PHONE_NUMBER>A5D940] max delay reached. need to consume packet
[rtsp @<PHONE_NUMBER>A5D940] RTP: missed 28 packets
[h264 @ 000002447AD69080] error while decoding MB 29 41, bytestream -15
[h264 @ 000002447AD69080] concealing 3260 DC, 3260 AC, 3260 MV errors in P frame
[h264 @ 000002447AD66880] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD66C80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD67C80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447AD68C80] SEI type 5 size 648 truncated at 646
[h264 @ 000002447B0BE480] SEI type 5 size 648 truncated at 646
[h264 @ 000002447B0BDC80] SEI type 5 size 648 truncated at 646

Okay this looks bad. I guess this is what is happening: Since you have all those flags (no buffer, zero latency, etc), no or almost no buffering is done inside ffmpeg. But the server keeps sending data at a constant rate. If the MediaPlayer does not query frames fast enough, the buffer will be full and packets are dropped. Then decoding fails of course when next packet is read. At least, that's my theory when looking at the logs.
On the master banch, we have a new read-ahead buffer (Config.ReadAheadBufferEnabled = true). If you build the lib yourself and enable this, we will asynchronously read packets ahead of time, as fast as possible. This should help you get rid of the decoding errors and artifacts. Our samples have a switch to enable ReadAheadBuffer, so you could just open your stream in the sample app, after you toggle the switch.
I am not sure what to do about the latency. Part of the problem could be this: It does take some time to parse the stream and create decoders, then it takes time to create the MediaSource, open it and start playback. When playback starts, we will return the first decoded frame. It has the timestamp from when we first opened the stream, but since then, some time has passed. MediaPlayer will play at a constant rate, so we will probably never pick up to where playback is right now. I guess we could do something about this in the lib, but that would be a difficult task. And I am not sure how much of the latency is in our lib and how much is in the MediaPlayer area. As an experiment, you could try to increase playback speed of the MediaPlayer for a while, to see if you can get it closer to real time position...?

Thanks again for your help.
The Nuget package already has the ReadAheadBufferEnabled flag. I enabled that and increased the playbackRate.
For future reference:
            MediaSourceConfig configuration = new MediaSourceConfig()
            {
                VideoDecoderMode = VideoDecoderMode.Automatic,
                ReadAheadBufferEnabled = true,
            };

            configuration.FFmpegOptions.Add("tune", "zerolatency");
            configuration.FFmpegOptions.Add("flags", "low_delay");
            configuration.FFmpegOptions.Add("preset", "ultrafast");
            configuration.FFmpegOptions.Add("fflags", "nobuffer");

            configuration.FFmpegOptions.Add("reconnect", 1);
            configuration.FFmpegOptions.Add("reconnect_streamed", 1);
            configuration.FFmpegOptions.Add("reconnect_on_network_error", 1);

            _decoder = await FFmpegMediaSource.CreateFromUriAsync(Constant.RtspUrl, configuration);
            _mediaPlaybackItem = _decoder.CreateMediaPlaybackItem();

            _mediaPlayer = new MediaPlayer();
            _mediaPlayer.Source = _mediaPlaybackItem;
            _mediaPlayer.PlaybackSession.PlaybackRate = 2;
            _mediaPlayer.Play();

Now it works perfect and it's very fast.
The time to display the first frame could be improved.  I'm uncertain whether this issue is associated with the mediaPlayer or a configuration setting.

You may want to give frame server mode of MediaPlayer a try, this seems to have somewhat lower latency.


Cluster information should handle dynamic allocation and nodes being removed and added

fixes https://github.com/NVIDIA/spark-rapids-tools/issues/799
The qualification tool cluster information output was just looking at the number of nodes and executors at the end of the application.  This is not correct when dynamic allocation is used or when nodes/executors get removed and re-added.
To fix this I am changing the number of Executors and number of Nodes to be high water marks.  Meaning throughout the lifetime of the application what was the maximum number at any point in time.  This would be the max resource usage.
Note this needs to be documented somewhere still.
The other change in this PR is to fix concurrency problem with the cluster information being stored in Platform.  Initially we only had one instance of this so if multiple applications are processed simultaneously it could corrupt that information. This PR changes it to make a Platform instance per application.
Update README on how to run a single test.
I added a new event log that has dynamic allocation enabled and went through some cycles or executors added and idle time out and then readded, etc...
cluster information json file now looks like below when dynamic allocaiton enabled:
 "clusterInfo" : {
    "vendor" : "onprem",
    "coresPerExecutor" : 4,
    "numExecsPerNode" : -1,
    "numExecutors" : 7,
    "numWorkerNodes" : 5,
    "executorHeapMemory" : 20480,
    "dynamicAllocationEnabled" : true,
    "dynamicAllocationMaxExecutors" : "2147483647",
    "dynamicAllocationMinExecutors" : "0",
    "dynamicAllocationInitialExecutors" : "2",
    "driverHost" : "<IP_ADDRESS>"
  },
  "recommendedClusterInfo" : {
    "vendor" : "onprem",
    "coresPerExecutor" : 4,
    "numWorkerNodes" : -1,
    "numGpus" : 1,
    "numExecutors" : 7,
    "gpuDevice" : "l4",
    "dynamicAllocationEnabled" : true,
    "dynamicAllocationMaxExecutors" : "2147483647",
    "dynamicAllocationMinExecutors" : "0",
    "dynamicAllocationInitialExecutors" : "2",
    "workerNodeType" : "onprem"
  }

csv file:
App ID,App Name,Event Log,Vendor,Driver Host,Cluster Id,Cluster Name,Worker Node Type,Driver Node Type,Num Worker Nodes,Num Executors Per Node,Num Executors,Executor Heap Memory,Dynamic Allocation Enabled,Dynamic Allocation Max Executors,Dynamic Allocation Min Executors,Dynamic Allocation Initial Executors,Cores Per Executor,Recommended Worker Node Type,Recommended Num Executors,Recommended Num Worker Nodes,Recommended Cores Per Executor,Recommended GPU Device,Recommended Num GPUs Per Node,Recommended Vendor,Recommended Dynamic Allocation Enabled,Recommended Dynamic Allocation Max Executors,Recommended Dynamic Allocation Min Executors,Recommended Dynamic Allocation Initial Executors
"application_1707709865217_0493","Spark shell","file:/home/tgraves/workspace/spark-rapids-tools2/user_tools/application_1707709865217_0493.zstd","onprem","<IP_ADDRESS>","","","","","5","-1","7","20480","true","2147483647","0","2","4","onprem","7","-1","4","l4","1","onprem","true","2147483647","0","2"

found an issue with dataproc gpu recommendation working on fixing it

yes any onprem we don't know what the node configuration is, so I don't recommend a number of nodes

At a high level, instead of having platform per app, should we have cluster info per-app? This way the app and its ClusterInfo could be passed to the AutoTuner.

Yes this should be separated out in the future.  We had another issue to to redo how the platform is created and figured we could do it under that one.


Allow to shrink to smaller window size.

I thought the window was needlessly too big but found it it's caused by opening it on a 4k screen,
Still it should allow to be shrunk to a set minimum that's only resolution based.

The current minimum resolution height is about 730px (for a 1366 x 768px screen).
I haven't been able to test on a 4k screen with Windows. Is there a problem?

Left side image is on a 1680x1050 screen, right side is on the 4k
Windows is 1270 high on the 4k.
I found a pattern, that's related to the scaling ratio of my 2nd screen.
Both 4k
Primary is scaled 150% the other 100%
The sparrow windows on the 150% show 15 rows of transactions.
on the 100% it shows 30.
So I tried opening it with 350% scaling,
Cannot make sparrow fits on either screen, both stop at UTXO section on the left.
Opened at 300%, the windows almost fits but the bottom status bar is missing

If the windows doest fit bringing back on the 300% scaling does this

Outstanding Action: Propose closing issue (wallet is usable) or assign task to someone who can test on 4K windows & fix.
Proposed Priority: NA

@Transisto does the advice listed here help at all? https://danantonielli.com/app-scaling-on-high-dpi-displays-fix-2019/

@Transisto does the advice listed here help at all? https://danantonielli.com/app-scaling-on-high-dpi-displays-fix-2019/

Yes that fixed it.
Basically, the app will take a minimum of 2/3 of the screen size.
on a 43 inch 4k monitor it's really big.


Timed out waiting for debuggee to spawn

Environment data

VS Code version: 1.52.1
Extension version (available under the Extensions sidebar): v2020.12.424452561
OS and version: Windows_NT x64 10.016299
Python version (& distribution if applicable, e.g. Anaconda): 3.7.6 64-bit Anaconda
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda
Relevant/affected Python packages and their versions: GeoPandas 0.7.0, NetworkX 2.5, tqdm 4.48.2, Numpy 1.18.1, Pandas 1.0.3, ortools 7.8.7959
Relevant/affected Python-related VS Code extensions and their versions: Python 2020.12.424452561, Pylance 2020.12.2
Value of the python.languageServer setting: Pylance

[NOTE: If you suspect that your issue is related to the Microsoft Python Language Server (python.languageServer: 'Microsoft'), please download our new language server Pylance from the VS Code marketplace to see if that fixes your issue]
Expected behaviour
Code completes execution when running with debugger
Actual behaviour
about 12 seconds into the run I get the an alert box showing "Timed out waiting for debuggee to spawn."
Steps to reproduce:
Unfortunately the code and even more so the data are confidential, so I am unable to share. If there is anything I could run on my end to help debugging the issue I would certainly be glad to help.

Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

Due to the holidays, nearly the entire team is out at the moment, so please be patient in waiting for a response.


Fix logging port

Description

https://jira.mesosphere.com/browse/DOCS-1683
Change port from 8080 to 80

Urgency

[ ] Blocker
[x] High
[ ] Medium

Requirements

Test all commands and procedures.
Build content locally and test for formatting/links.
Add redirects to dcos-website/redirect-files.
Change all affected versions (e.g. 1.7, 1.8, and 1.9).
See the contribution guidelines.

LGTM


Support path and rootPathFromName attributes for vibe.web.web

Currently @path and @rootPathFromName at the class level are only supported by vibe.web.rest. This should be unified with vibe.web.web, possibly moving the responsible code to vibe.web.common.
See http://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/24590/

Depends on #999 .

@path has been implemented in ac618784f26b4d87cb29e29be15a4d9d2e633035


tests: add hostb scenario for leftsubnet tests

There needs to be an agreement on the subnet values, left and right. Otherwise, the connection won't be established and the test will fail.

@ffmancera , pylint failed.


Fix approve for my org to not endorse committed transaction

When a chaincode is approved and committed, it means that it has been accepted and added to the network. However, it is still possible to approve the exact chaincode definition with the same sequence after it has been committed. This can lead to confusing behavior because the transaction is endorsed even though it will never be considered valid.
This commit proposes a fix to prevent the endorsement of transactions that attempt to approve already committed chaincode definitions with the same sequence. By failing endorsement of these transactions, we can provide a better experience for end users. In addition, this will help to ensure that the chaincode approval process is more transparent and predictable for all parties involved.
Signed-off-by: Artem Barger<EMAIL_ADDRESS>

Yes this would be an improvement;  I think it's worth putting into main - and to be vigilant just incase there's edge case that we've fogottne.

and to be vigilant just incase there's edge case that we've fogottne.

I've tried to preserve the expected behavior and added some tests including integration, but yes I think we need to keep an eye on the change.


Throwing TypeRefAccessException

Hi All,
I have just started using Membrane. After I have set up and attempted to execute Membrane, I am getting an exception "TypeRefAccessException" (partially shown below).
Exception in thread "main" com.predic8.soamodel.TypeRefAccessException: Could not find the referenced type 'ArrayOfint' in namespace 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'.
To be honest, I am not sure what I am doing wrong, or maybe I am failing to understand the content of my WSDL.
This is the command I am executing:
wsdldiff "http://www.test.com/MyService/Services/Service.svc?wsdl" "http://www.test.com/MyService2/Services/Service.svc?wsdl" C:\TestFolder

This is not the service-proxy project, but https://github.com/membrane/soa-model/ . The error seems to be related to the schemas you are using. Please provide more details, if possible. Without the schemas, this is difficult to diagnose.


Fix failing tests:

Update samples to use try for clients and update model IDs due to API backend changes

Looking at the tests.
Because we have to cut the UUID short due to automl word limit, going to try to fix that a bit more, but also noticing things aren't getting deleted like they should, which is why there is a model id overlap.


Add an editor actions API

Closes #70
Related to #1444
This PR adds a class that can control the editor from plugins or from the engine itself with a simplified API.
For each interaction in the editor, an entry in the API can be created, and for each execution of this action, user-stored callbacks can be triggered.
As an example, if I wanted to toggle the visibility of a node:

The code that does this is in scene_tree_editor.cpp:

Now if we want to react to the action of pressing the hide button, a good way to do this would be by making editor actions listen to the signal for this function and execute its callbacks and the function itself:

The EditorActions class enables you to bind StringNames to Callables as an "EditorAction". It also allows users to bind methods to be executed before or after each EditorAction using the add_on_action_executing and add_on_action_executed methods respectively. These EditorActions are accessible to both C++ Editor code and scripted tools with access to the EditorInterface.
To illustrate how could someone use the API from a plugin, for example for making a history plugin for activated actions, I have created a project here.

Features:

Ability to add/remove callbacks to new/existing actions.
Ability to add/remove callbacks that execute before or after an existing action.
Ability to access the API both from inside the C++ engine and from the scripting API.
Ability to bind N number of arguments to methods bound to the EditorActions API.

TODOs:

it would be useful to add a description and tag for every action
also we should consider having submitted executing/executed bindings include a priority integer value that defaults to 0. And on update they are sorted by priority.

I have to mention that this was based on the work of @willnationsdev.
Unfortunately I won't have much time due to strict schedule until August of this year, so someone else, if interested, should continue this work. We are currently discussing with @Bhu1-V if he will be able to use this for his command pallette functionality (#1444) but nothing is set in stone, he might not choose this way of implementing.

This has the potential to be a great addition.
Would be even more powerful if there was an inspectable database with all the active bindings, like the one for keyboard shortcuts.

@samdze You mean if the ProjectSettings had a tab that displayed the current state of EditorAction bindings at editor-time and where they come from?

@willnationsdev Yes exactly.
In theory it would be for consultation only, or to enable/disable already defined bindings at most.
Going even further it could provide functionality to enable/disable, edit, add and remove action bindings, with a UI similar to the one used to connect signals.
It may be better to leave this type of editing to scripts only though.
Also, bindable actions have to be exposed and discoverable, maybe in a new section inside docs pages of editor-related nodes?

We will likely need something in the editor that displays it. Can't generate a docs page easily cause the info isn't statically defined and there isn't necessarily a 1-to-1 mapping between the actions and scripted methods (some of which may not even be exposed to the scripting API directly).

To document and make the actions discoverable, I think a searchable actions tab that works quite the same as the general settings tab would be enough.
However, now that I saw the implementation, I'm not sure this is a feature the base editor itself should take advantage of, as is.
It may be better to just expose editor nodes' signals and to make the editor nodes more discoverable inside the editor tree instead of creating this new editor bus API.
Consider if for some reason there were two or more SceneTreeEditors (or whatever) instanced at the same time (instanced by a plugin, for example), with the current implementation a built-in editor node would have to execute its callback even if the action was triggered by another instance of its class due to it not checking the origin of the action.
The user would have not way of disabling this behaviour as it is built-in, and even if they could, it feels like an unnatural thing to do. Right now it seems there's no way to remove a callback from an action either, you remove the entire action or nothing.
I find it better if we let the user decide what to do when something happens in a specific place, and to do that with the finer level of control, signals are the way to go.


Is it possible to use STM32WLE5CCU6 (ARM Cortex-M4 + LoRa) chip?

This chip has built in lora communication so it may be used for long range RC control.
https://github.com/qqqlab/madflight/files/14320696/stm32wle5cc.1.pdf
Is it possible?
Thanks.

This chip is supported by stm32duino, so madflight should run on it. See:
https://github.com/stm32duino/Arduino_Core_STM32?tab=readme-ov-file#generic-stm32wl-boards

I see.  Thank you.


Fix example in nn.while_loop docstring

The old while loop docstring example was broken in several ways, added a tested one.

Codecov Report

Merging #1970 (cd30275) into main (ad17a19) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1970   +/-   ##
=======================================
  Coverage   71.32%   71.32%
=======================================
  Files          59       59
  Lines        4990     4990
=======================================
  Hits         3559     3559
  Misses       1431     1431

Impacted Files
Coverage Δ

flax/linen/transforms.py
96.05% <ø> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ad17a19...cd30275. Read the comment docs.


Document HTTP client libraries for go

https://github.com/ory-am/hydra/blob/master/warden/warden_http.go
https://github.com/ory-am/hydra/blob/master/policy/manager_http.go
https://github.com/ory-am/hydra/blob/master/jwk/manager_http.go
https://github.com/ory-am/hydra/blob/master/connection/manager_http.go
https://github.com/ory-am/hydra/blob/master/client/manager_http.go

this was resolved as part of #130


Add + to COS probes filename...

... as the kernel release includes one and falco expects it when looking for the filename:
* Filename 'falco_cos_5.4.144+_1.o' is composed of:

@sHesl can and would we delete the old files without the + in the name?


All tests threw a KeyError: 'types'.

Hi,
I am a newbie to the robot framework, this is a great project;I encountered some problems while testing https://petstore31.swagger.io/ with OpenApiDriver, requesting help;First of all, when validating the openapi.json corresponding to this project, there appears similar errors:ResolutionError while trying to load openapi spec: (2, 'No such file or directory', 'File not found: /components/schemas/petdetails')It appears that openapi.json does not comply with the OAS specifications, it should be modified to: "$ref" : "#/components/schemas/PetDetails"After modifying other similar errors, serve it as local openapi.json, as follows:
openapi.json
Then create a svc1_api_test.robot file, with the content as follows:
`*** Settings ***
Library            OpenApiDriver
...                    source=openapi.json
...                    origin=https://petstore31.swagger.io/api/v31
...                    recursion_limit=3
Test Template      Validate Using Test Endpoint Keyword
*** Test Cases ***
Test Endpoint for ${method} on ${path} where ${status_code} is expected
*** Keywords ***
Validate Using Test Endpoint Keyword
[Arguments]    ${path}    ${method}    ${status_code}
Test Endpoint
...    path=${path}    method=${method}    status_code=${status_code}
`
Run the test: robot svc1_api_test.robot, all tests failed, with the information as follows:
......
Test Endpoint for POST on /pet where 200 is expected                  | FAIL |
KeyError: 'types'
......
I didn't find any helpful information from the log.html.

Thanks for the report!
I've taken a quick look and it's caused by how this petstore references models within models. I did a quick "fix" locally but I need to consider / test that more thoroughly to be able to release it.
There is, however, a rather fundamental problem with how the petstore models the APIs; when looking at post pet for example, in the model for the pet, the full model of the category is referenced. This would mean that, to post a pet, you'll need to provide the full details for a (new) category. That is, in my opinion, a really bad idea (and goes against REST principles). For the post pet a model should be used that references the unique identifier (normally a uuid) of the category.
So even if I publish a fix for this structure, you'll have a hard / terrible time trying automation on the petstore API.


Get http headers or Context in DataLoader

I would like to get request headers in dataloader::load for passing it to upstream services, how?

Try the query_env field. It's hidden, though may fulfill your request.
/// Query context.
///
/// **This type is not stable and should not be used directly.**
#[derive(Clone)]
pub struct ContextBase<'a, T> {
    /// The current path node being resolved.
    pub path_node: Option<QueryPathNode<'a>>,
    /// If `true` means the current field is for introspection.
    pub(crate) is_for_introspection: bool,
    #[doc(hidden)]
    pub item: T,
    #[doc(hidden)]
    pub schema_env: &'a SchemaEnv,
    #[doc(hidden)]
    pub query_env: &'a QueryEnv,
}

impl ContextBase {
    pub fn http_header_contains(&self, key: impl AsHeaderName) -> bool {
        self.query_env
            .http_headers
            .lock()
            .unwrap()
            .contains_key(key)
    }
}

But dataloader doesn't have any context. Just keys to load.

@vstepanyuk my bad, self.query_env.http_headers is response headers.


Helium API returns country_id null for the hotspots in Northern Cyprus

I'm getting summary of https://github.com/helium/miner/issues/1031 issue here which is  right repo I guess.
Hotpots in Northern Cyprus have a major issue that their country id returns null from the Helium API.
https://api.helium.io/v1/hotspots/112CA7UxpkFPUM5QEbeAT5MqrH6Z7AEqDjKptV3H2LzBv29SCofF
Because country id is null, miners cannot take frequency and they currently can't provide local Proof of Coverage at all.
There are some political issues have been going on for years in Cyprus. That's why geocoder used by Helium API might have made some mistakes in Northern areas of Cyprus or areas close to border.
Comparison between hotspot in Southern & Northern areas
There are probably 2 hex between these 2 miners.
Hotspot in South Nicosia - 882da450bbfffff

Hotspot in North Nicosia - 882da45569fffff

Other example hotspots which get country_id null
https://explorer.helium.com/hotspots/hex/882da45563fffff
https://explorer.helium.com/hotspots/hex/882da46b2bfffff
https://explorer.helium.com/hotspots/hex/882da46b0dfffff
https://explorer.helium.com/hotspots/hex/882da4572dfffff( Frequency manually fixed by Sensecap Support)
https://explorer.helium.com/hotspots/hex/882da4475bfffff (Frequency manually fixed by Sensecap Support)
Some miners that could not get region
Nebra:

Sensecap:

Sensecap 2:

It seems like only Bobcat miners can workaround this. Such that even though they get null from country_id they can successfully set region. Probably they use null handling in backend.
I've checked https://github.com/gradoj/hplans EU868.geojson and Cyprus map seems fine there.
All cities in Cyprus that have null country id:
https://explorer.helium.com/hotspots/cities/bmljb3NpYQ/hotspots
https://explorer.helium.com/hotspots/cities/ZWdrb21p/hotspots
https://explorer.helium.com/hotspots/cities/Z2F6aW1hxJ91c2E/hotspots
https://explorer.helium.com/hotspots/cities/ZGVyeW5laWE/hotspots
https://explorer.helium.com/hotspots/cities/YXRoaWVub3U/hotspots
https://explorer.helium.com/hotspots/cities/ZXJkZW1saQ/hotspots
https://explorer.helium.com/hotspots/cities/dHJvdWxsb2k/hotspots

In the gradoj/hplans repo eu868 map shows the whole island is in the region (except for the military bases), so according to this, there shouldn’t be a problem, but, somehow we are getting null for the country. We need help

e below:

The repo is used for the new PoC v11 changes. It'll be deployed with PoCv11 in a few weeks. I'll comment on miner#1031 for now.

I'm closing this for now as the issue is more related with Blockchain-Etl. Can be followed through here https://github.com/helium/blockchain-etl/issues/235


Schema name not working  in MSSQL

Laravel Version: 5.4.36
PHP Version: 7.2.6
Database Driver & Version:72

hi , my laravel project connect to SQL server database
i have a big problem in my SQL server i have a different schema like  Base.Auth.personType Base.Auth is the name of my schema and personType name of my table
in migration file i write this codes
 Schema::create("Base.Automation.personType", function (Blueprint $table) {
            $table->increments('id');
            $table->char('Title',500);
            $table->boolean('IsDelete');

        });

but laravel give me error   SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Database 'Base' does not exist.

As described on this microsoft forum about the SQL server in the first answer:
Embedded spaces or special characters are not allowed.
Supplementary characters are not allowed.
Table names like T@ble or _#1@_cu$tomer$ are allowed but my.table is not.


Update user guide (features by @cheeheng)

This user guide aims to update the sections corresponding to the following commands (incomplete)

add-module
delete-module
edit-module
add-person-to-module (pending @ekweirui's migration of add-person-to-module and delete-person-from-module to person section - rationale: to avoid merge conflict)

Codecov Report
Base: 76.45% // Head: 76.68% // Increases project coverage by +0.23% :tada:

Coverage data is based on head (adfb0df) compared to base (3197dd5).
Patch has no changes to coverable lines.

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #159      +/-   ##
============================================
+ Coverage     76.45%   76.68%   +0.23%
  Complexity      831      831
============================================
  Files           120      119       -1
  Lines          2582     2574       -8
  Branches        329      328       -1
============================================
  Hits           1974     1974
+ Misses          484      476       -8
  Partials        124      124

Impacted Files
Coverage Δ

...ress/model/person/NameMatchesKeywordPredicate.java

...in/java/seedu/address/storage/JsonAdaptedTask.java
100.00% <0.00%> (+10.00%)
:arrow_up:

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Possible fix for #902.

The SQL Panel does not show the correct template source context for {% include %}'d template files.
I've tested it with latest version of django debug tool bar and latest stable version of django 1.11 and I confirms it works

closed, black was failing, and i haven't write right on this repo, so I've recreated it


Section numbering & TOC

For the CCL research note, we amended the class file to number sections and provide a table of contents. It might be a useful change to consider for other projects as well.

Hi,
I am writing a DESC-Note. I would like to switch on the section numbering. How could I do this ?
Many thanks.
Sylvie

hi @sylvielsstfr. This is the modification I did to the .cls file to get section numbering:

Many thanks its works fine !
Sylvie

Since the Note class now lives in desc-tex, I've made an issue for this unresolved question there and will lock this one.


Another "cannot login" issue

Description of the problem
I am very very new to this but am really keen to access my own FB messenger account to do some basic analysis. I am however getting an error when logging in and even more annoyingly each time FB forces me to change my password to the account.
I have looked at all the other postings here about login issues, tried to replicate what worked for them but with no success.
This is only one example of the codes I used (copied from another thread here) but didn't work
Code to reproduce
# Example code
from fbchat import Client, ThreadType, Message

client = Client()

async def main():
    await client.start("*******", "******")
    print(f"Own ID: {client.uid}")
    await client.send(Message(text="Hi me!"), thread_id=client.uid, thread_type=ThreadType.USER)
    await client.logout()

client.loop.run_until_complete(main())

## Traceback

Traceback (most recent call last):
File "<test.py>", line 1, in
File "[site-packages]/fbchat/client.py", line 78, in init
self.login(email, password, max_tries)
File "[site-packages]/fbchat/client.py", line 407, in login
raise FBchatException('Login failed. Check email/password. (Failed on URL: {})'.format(login_url))
fbchat.FBchatException: Login failed. Check email/password. (Failed on URL: https://m.facebook.com/login.php?login_attempt=1)

## Environment information
- Python version : google collab, python 3.x

Hmm, looks like you're using fbchat-asyncio, please report issues there.
Though you're right in that the problem affects this library as well!

Thank you for your reply.
Is there anything that can be done about it ? I see some people have succcess logging in, others less so.


Fix a typo in README.md

This caught me out too. @ythecombinator would you mind merging this?

Sure, @Wilfred. Thanks @superkonduktr and sorry for the delay.


Create a new pull request by comparing changes across two branches

Alert.js: Refactor code to match the other components

Use this._element
Remove handleDismiss method and keep its functionality on event
Change JqueryInterface to be more generic
Correct docs to be aligned with code, and add undocumented functionality
Update alerts.md

Co-authored-by: XhmikosR<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 980326278

18 of 21 (85.71%)  changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.1%) to 94.89%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

js/src/alert.js
18
21
85.71%

Files with Coverage Reduction
New Missed Lines
%

js/src/base-component.js
1
88.0%

Totals

Change from base Build 976079178:
-0.1%

Covered Lines:
1987

Relevant Lines:
2048

💛  - Coveralls


[Bug] 网页版总是显示更新

Describe the bug
网页版总是显示更新
Expected behavior
最新版不应该显示前往更新
Screenshots

Deployment

[ ] Docker
[x] Vercel
[ ] Server

Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome

预期内行为，明天就好了。


Add instructions to compile Nargo from specific Noir commits and branches

Problem
The current instructions explains how to compile Nargo from the latest commit of Noir master using Nix.
At times though users might want to compile Nargo from specific commits and/or branches instead, which the current instructions do not shine light on how-to.
Happy Case
Describe how to compile Nargo from specific Noir commits and branches.
Alternatives Considered
No response
Additional Context
Reference: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile-install
Would you like to submit a PR for this Issue?
No
Support Needs
No response

Closing since we are no longer encouraging nix to be used for this, but just noirup which has a way to compile from a commit/branch in its docs

Thanks. Created https://github.com/noir-lang/noir/issues/4055 accordingly.


convert to tflite failed using tf.lite.TFLiteConverter.from_saved_model and validate failed

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary):
TensorFlow version:
Python version:
Installed using virtualenv? pip? conda?:
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:

Describe the problem
when i convert saved lstm tensorflow model to the tflite file and meets the error.
this is piece of code :
def create_LSTM_model(inputs):
W = {
    'hidden': tf.Variable(tf.keras.backend.random_normal([N_FEATURES, N_HIDDEN_UNITS])),
    'output': tf.Variable(tf.keras.backend.random_normal([N_HIDDEN_UNITS, N_CLASSES]))
    'output': tf.Variable(init_w_output)
}
biases = {
    'hidden': tf.Variable(tf.keras.backend.random_normal([N_HIDDEN_UNITS], mean=1.0))
    'output': tf.Variable(tf.keras.backend.random_normal([N_CLASSES]))
}

X = tf.transpose(inputs, [1, 0, 2])
X = tf.reshape(X, [-1, N_FEATURES])
hidden = tf.nn.relu(tf.matmul(X, W['hidden']) + biases['hidden'])
hidden = tf.split(hidden, N_TIME_STEPS, 0)

def get_a_cell(lstm_size, keep_prob):
    lstm = tf.compat.v1.nn.rnn_cell.BasicLSTMCell(lstm_size)
    drop = tf.compat.v1.nn.rnn_cell.DropoutWrapper(lstm, output_keep_prob=keep_prob)
    return drop

# lstm_layers = [tf.compat.v1.nn.rnn_cell.BasicLSTMCell(N_HIDDEN_UNITS, forget_bias=1.0) for _ in range(2)]
lstm_size = N_HIDDEN_UNITS
keep_prob = 0.9
num_layers = 2
# lstm_layers = tf.compat.v1.nn.rnn_cell.MultiRNNCell([get_a_cell(lstm_size, keep_prob) for _ in range(num_layers)])
lstm_layers = tf.compat.v1.nn.rnn_cell.MultiRNNCell([get_a_cell(lstm_size, keep_prob) for _ in range(num_layers)])

outputs, _ = tf.compat.v1.nn.static_rnn(lstm_layers, hidden, dtype=tf.float32)
# keras.layers.RNN  outputs, _ = tf.keras.layers.RNN(lstm_layers, hidden, dtype=tf.float32)

# Get output for the last time step
lstm_last_output = outputs[-1]

return tf.matmul(lstm_last_output, W['output']) + biases['output']

tf.compat.v1.reset_default_graph()
X = tf.compat.v1.placeholder(tf.float32, [None, N_TIME_STEPS, N_FEATURES], name="input_X")
Y = tf.compat.v1.placeholder(tf.float32, [None, N_CLASSES], name='input_Y')
pred_Y = create_LSTM_model(X)
tf.identity(pred_Y, name="pred_Y")
pred_softmax = tf.nn.softmax(pred_Y, name="pred_softmax")
train_count = len(X_train)
L2_LOSS = 0.0015
l2 = L2_LOSS *
sum(tf.nn.l2_loss(tf_var) for tf_var in tf.compat.v1.trainable_variables())
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred_Y, labels=Y)) + l2
loss=tf.reduce_mean(tf.square(tf.reshape(pred,[-1,2])-tf.reshape(Y, [-1,2])))
tf.identity(loss, name="saved_loss")
global_step = tf.Variable(0, trainable=False, name='global_step')
learning_rate = tf.compat.v1.train.exponential_decay(
LEARNING_RATE_BASE,
global_step,
train_count / BATCH_SIZE, LEARNING_RATE_DECAY)
tf.identity(learning_rate, name="learning_rate")
optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss, global_step=global_step)
tf.identity(loss, name="saved_optimizer")
correct_pred = tf.equal(tf.argmax(pred_softmax, 1), tf.argmax(Y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, dtype=tf.float32), name='output_accuracy')
history = dict(train_loss=[],
train_acc=[],
test_loss=[],
test_acc=[])
sess = tf.compat.v1.InteractiveSession()
sess.run(tf.compat.v1.global_variables_initializer())
export_simple_path = 'model_simple/'
if os.path.exists(export_simple_path):
shutil.rmtree(export_simple_path)
tf.compat.v1.saved_model.simple_save(sess,
export_simple_path,
inputs={"input_X": X},
outputs={"pred_softmax": pred_softmax})
use this to save the model
and then i convert the .pb model to tflite with python API
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS]
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
but got the error:
Some of the operators in the model are not supported by the standard TensorFlow Lite runtime and are not recognized by TensorFlow. If you have a custom implementation for them you can disable this error with --allow_custom_ops, or by setting allow_custom_ops=True when calling tf.lite.TFLiteConverter(). Here is a list of builtin operators you are using: ADD, CAST, CONCATENATION, FULLY_CONNECTED, GREATER_EQUAL, LOGISTIC, MUL, SOFTMAX, SPLIT, TANH. Here is a list of operators for which you will need custom implementations: RandomUniform.
Traceback (most recent call last):
File "c:\users\d.conda\envs\ai\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "c:\users\d.conda\envs\ai\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Users\d.conda\envs\ai\Scripts\toco_from_protos.exe_main.py", line 7, in
File "c:\users\d.conda\envs\ai\lib\site-packages\tensorflow_core\lite\toco\python\toco_from_protos.py", line 89, in main
app.run(main=execute, argv=[sys.argv[0]] + unparsed)
File "c:\users\d.conda\envs\ai\lib\site-packages\tensorflow_core\python\platform\app.py", line 40, in run
_run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
File "c:\users\d.conda\envs\ai\lib\site-packages\absl\app.py", line 299, in run
_run_main(main, args)
File "c:\users\d.conda\envs\ai\lib\site-packages\absl\app.py", line 250, in _run_main
sys.exit(main(argv))
File "c:\users\d.conda\envs\ai\lib\site-packages\tensorflow_core\lite\toco\python\toco_from_protos.py", line 52, in execute
enable_mlir_converter)
Exception: We are continually in the process of adding support to TensorFlow Lite for more ops. It would be helpful if you could inform us of how this conversion went by opening a github issue at https://github.com/tensorflow/tensorflow/issues/new?template=40-tflite-op-request.md
and pasting the following:
Some of the operators in the model are not supported by the standard TensorFlow Lite runtime and are not recognized by TensorFlow. If you have a custom implementation for them you can disable this error with --allow_custom_ops, or by setting allow_custom_ops=True when calling tf.lite.TFLiteConverter(). Here is a list of builtin operators you are using: ADD, CAST, CONCATENATION, FULLY_CONNECTED, GREATER_EQUAL, LOGISTIC, MUL, SOFTMAX, SPLIT, TANH. Here is a list of operators for which you will need custom implementations: RandomUniform.
and then i add the
converter.allow_custom_ops=True
then i can convert to tflite (lstm.tflite) successfully
but then i use below command to validate my model then i got the errors:
interpreter = tf.lite.Interpreter(model_path="lstm.tflite")
interpreter.allocate_tensors()

interpreter = tf.lite.Interpreter(model_path="D:\Feature\model_simple_1207\lstm_har_1207.tflite")
INFO: Initialized TensorFlow Lite runtime.
interpreter.allocate_tensors()
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\d.conda\envs\ai\lib\site-packages\tensorflow_core\lite\python\interpreter.py", line 244, in allocate_tensors
return self._interpreter.AllocateTensors()
File "C:\Users\d.conda\envs\ai\lib\site-packages\tensorflow_core\lite\python\interpreter_wrapper\tensorflow_wrap_interpreter_wrapper.py", line 106, in AllocateTensors
return _tensorflow_wrap_interpreter_wrapper.InterpreterWrapper_AllocateTensors(self)
RuntimeError: Encountered unresolved custom op: RandomUniform.Node number 14 (RandomUniform) failed to prepare.****

could anyone  hlep with the issue?
Provide the exact sequence of commands / steps that you executed before running into the problem
Any other info / logs

@glevenc Can you please format your code and share a simple standalone code to reproduce the issue? You could use colab gist for sharing the standalone code. Thanks!

@glevenc Can you please format your code and share a simple standalone code to reproduce the issue? You could use colab gist for sharing the standalone code. Thanks!

@jvishnuvardhan
if i remove the dropoutwrapper opratation then the convert will be successfuly
drop = tf.compat.v1.nn.rnn_cell.DropoutWrapper(lstm, output_keep_prob=keep_prob)
maybe this opration is not supported yet?
hope this can help you to give you some clue
thx

@jvishnuvardhan  the result is repoduced here:
https://colab.research.google.com/drive/1vRsTiKk8CAClShGjwyLmRP7VAqXxAIeq#scrollTo=xNQwn_eZVB4n

@glevenc I cannot access your colab (permission issue). Can you please open the gist  --> go to File --> press Save a copy as a GitHub gist---> another page opens up with the shareable gist --> copy the link and share with me. Thanks!

@jvishnuvardhan
sorry for that and the link :
https://colab.research.google.com/gist/glevenc/20ecb878b520653257f4d290dd79fec0/test.ipynb

@glevenc I am not able to reproduce the exact error you are getting with your colab. When I ran your colab, i see the following error
WARNING:tensorflow:Issue encountered when serializing variables.
Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.
Tensor.name is meaningless when eager execution is enabled.
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-15-79344999a2d5> in <module>()
      2 converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
      3 converter.allow_custom_ops=True
----> 4 tflite_model = converter.convert()
      5 open("lstm.tflite", "wb").write(tflite_model)

4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py in numpy(self)
    585       return self.read_value().numpy()
    586     raise NotImplementedError(
--> 587         "numpy() is only available when eager execution is enabled.")
    588
    589   @deprecated(None, "Prefer Dataset.range instead.")

NotImplementedError: numpy() is only available when eager execution is enabled.

Are you using TF1.15 or TF2.0? Can you please check the error one more time. Thanks!

@jvishnuvardhan
hi, i print the version in the colab
and it  shows 1.15.0
Also , in my own pc env. the version is TF2.0
both version have the same issues as list belows:
i just re-run the colab as i shared above link: it can always be reproduced;
RuntimeError                              Traceback (most recent call last)
 in ()
1 interpreter = tf.lite.Interpreter(model_path="lstm.tflite")
----> 2 interpreter.allocate_tensors()
3
4 # Get input and output tensors.
5 input_details = interpreter.get_input_details()
1 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/lite/python/interpreter_wrapper/tensorflow_wrap_interpreter_wrapper.py in AllocateTensors(self)
104
105     def AllocateTensors(self):
--> 106         return _tensorflow_wrap_interpreter_wrapper.InterpreterWrapper_AllocateTensors(self)
107
108     def Invoke(self):
RuntimeError: Encountered unresolved custom op: RandomUniform.Node number 13 (RandomUniform) failed to prepare.

we are adding RandomUniform as a built-in op for TF Lite. Assigning this issue to Jaeyoo  for investigation now. thanks.

@glevenc We recently announced a new feature in dogfood to convert TF 2.0 Keras LSTM to TFLite fused LSTM (which can then be also quantized if needed). You can see the announcement here:
https://groups.google.com/a/tensorflow.org/g/tflite/c/Ub4apUvblN8
Would you be interested in trying this out?

Hi @glevenc,
Please use this at the front of your colab
!pip install tf-nightly

then it succeeds without any errors.

Hi There,
We are checking to see if you still need help on this, as you are using an older version of tensorflow which is officially considered end of life . We recommend that you upgrade to the latest 2.x version and let us know if the issue still persists in newer versions. Please open a new issue for any help you need against 2.x, and we will get you the right help.
This issue will be closed automatically 7 days from now. If you still need help with this issue, please provide us with more information.


Add options to make parsing more customizable

Adds a framework to specify a set of parsing-related options. Currently it allows disabling interpolation/validation and adds hooks for preprocessing and postprocessing configs. Being able to specify a custom schema is something I'm hoping to add to this soon.
Signed-off-by: Josh Curl<EMAIL_ADDRESS>

Ah golint errors on ParseOption

@joshwget one question (and a remark but not really in the scope of the PR, just want to have some opinion on it), otherwise this looks good.

@marclop @vdemeester Updated to remove changing docker.NewProject return type

LGTM 🐸
I'll run make all locally to make sure it builds :angel:


How do you call for the date to be unselected?

I call some code when a date is selected that has a yes/no menu. If I click yes I want the date to become unselected. Is there a function you can call to unselect an item?

There isn't, but what are you trying to do? If the user selects "no", you can do whatever you need to in the respective callback right?


Blacklisting tags, regex selection of prefix

Hi, someone has recently requested to use versioneer for a project we're using.  The first two tags in the project were named: v0.1 and v0.2.0 respectively.  From then on, we began using numeric tags, i.e., 1.0.0 .   We have been using this latter scheme for a while now and are now up to 4.0.0, and re-pushing tags to the remote repo would not be practical as many users have already pulled the repo.
I don't see that versioneer has any way to exclude certain tags (would want to exclude v0.1 and v0.2.0 in these cases) or only include numeric tags.  tag_prefix almost works, but appears to be a fixed string match.   We're currently at release 4.0.0, and I could set tag_prefix = 4, but this would break as soon as we move to another major version.  If blacklisting versions isn't an option, it might be nice to be able to filter by regex in a case like this.  For example, tag_prefix_regex = [0-9]

This is very old, so apologies for digging it up, but @yarikoptic's #255 pointed here. I really don't understand the use case. If you're able, could you share what's failing?


Need example for printing images

@venky2604 , it already exists. Please see the example folder. BTW you can run it to test how everything works

how to print base64 image? I tried to print base64 image but it did not work.
const printing = new EscPosPrinter.printing();     const status = await printing       .initialize()       .imageBase64(img, 540)       .cut()       .send();

For now, printing from the base64 source is not stable.  We need to investigate what is the problem with this method.
So I'd recommend print image from assets folder instead.

I need to print remote image. Is there any solution to print remote image uri ?

@venky2604 I think I need some time to investigate why current implementation about base64 doesn’t work, so then I think it will possible print from remote source.

When I changed Base64.URL_SAFE to Base64.DEFAULT in https://github.com/tr3v3r/react-native-esc-pos-printer/blob/ba2ed89970993471d4538f1be6146be7a89ff671/android/src/main/java/com/reactnativeescposprinter/EscPosPrinterModule.java#L508 it is working.

@venky2604 interesting.. thanks for the help! I’ll try to take a look on the problem for iOS as well. If I find solution then I’ll release new version with the fix


Prevent too big maximum for Assets

Validate the maximum or better the whole component for a too big maximum property on the Asset

Relates to gnyio/gny-experiment#327

Fixed with PR: #51


Intellij Window closed on LSP connection

When I open a Java file in emacs, which causes the client to connect to the IDE, the IDE is closed immediately so I'm not able to use the debugger. The auto-completion in Emacs works well so the IDE is still alive but the Window is gone. I can see the process in details view but it doesn't appear on the Apps in Processes view.

The window can be toggled using the lsp-intellij-toggle-frame-visibility command, though this should probably be added as a config option. But note that editing in both the IDE window and through LSP will currently cause desynchronization between the two.

Thanks for the quick reply. The toggle worked great. However, whenever I change and save a file in emacs, the Intellij is prompting to reload file since the in-memory copy has changed. I didn't make any change in Intellij and the file isn't even open in Intellij. Is there a way to avoid this prompt?
On Sunday, August 5, 2018, 4:07:10 PM EDT, Ruin0x11<EMAIL_ADDRESS>wrote:
The window can be toggled using the lsp-intellij-toggle-frame-visibility command, though this should probably be added as a config option. But note that editing in both the IDE window and through LSP will currently cause desynchronization between the two.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Might be another case of #39, which was recently alleviated but not in all cases, it seems. The issue has more information.

I was using the plugin from repository. The problem disappeared after switching to the one built from source. One other problem. My source files use dos style newline. When saving the buffer, company-lsp seems to force the file coding to switch to unix. This causes svn to think the entire file has changed. Do you know of a work-around for this?
You did a great job and this is almost exactly what I have been looking for. Thanks!
On Sunday, August 5, 2018, 9:31:15 PM EDT, Ruin0x11<EMAIL_ADDRESS>wrote:
Might be another case of #39, which was recently alleviated but not in all cases, it seems. The issue has more information.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

If the problem seems to be caused by LSP, you could do set-buffer-file-coding-system (C-x RET f) and choose dos.


Time per sample grows as processed samples grows

🐛 Bug
Time per sample grows as processed samples grows
To Reproduce
Steps to reproduce the behavior:
Follow the example provided using optimize. Increase the number of samples. Observe either total time grow nonlinearly with samples, or watch iteration time decrease as processed samples grows.
Expected behavior
I would naively expect the time per sample to be roughly unrelated to total samples.
Additional context
This is a bit of a blocker for large datasets. I tried to preprocess a text dataset composed of a couple hundred million samples. After a few minutes, time to completion looked to be around ~1 hour on the instance I was using. Come back an hour later and that has ballooned to ~15 hours. Watching the iterations/s I can see it gradually decreasing as more and more samples are processed.
When I tried an experiment measuring total time to dataset prep with increasing samples, I found approximately linear increase in time per sample as total samples grew.
This is a major deterrent to use for large datasets. Any guidance?

Hey @scritter. Any chance you could provide a reproducible script ?

@tchaton thank you for taking the time to respond, and apologies for my delay.
Here's an example script for timing
import time
import numpy as np
import matplotlib.pyplot as plt

import sys
import io
from contextlib import redirect_stdout, redirect_stderr

from litdata import optimize

def random_sample(i):
    return {"sample": "A"*100}

def function_to_profile(n):
    """A simple function to profile; here we just sum the first n integers."""
    return optimize(fn=random_sample, inputs=list(range(n)), output_dir="/tmp/test-dataset", num_workers=1, chunk_bytes="64MB")

def profile_function(func, max_input_size, step_size, num_repeats):
    sizes = range(1000, max_input_size, step_size)
    times_per_size = []

    for size in sizes:
        with io.StringIO() as buf_out, io.StringIO() as buf_err, redirect_stdout(buf_out), redirect_stderr(buf_err):
            start_time = time.time()
            for _ in range(num_repeats):
                func(size)
            elapsed_time = time.time() - start_time
        average_time = elapsed_time / num_repeats
        times_per_size.append(average_time / size if size != 0 else 0)  # Time per operation

        print(f"completed {size}")
    return sizes, times_per_size

def plot_results(sizes, times_per_size):
    plt.figure(figsize=(10, 5))
    plt.plot(sizes, times_per_size, marker='o')
    plt.title('Function Execution Time per Sample vs Input Size')
    plt.xlabel('Input Size')
    plt.ylabel('Average Time per Sample (seconds)')
    plt.grid(True)
    plt.show()

# Parameters
max_input_size = 50000
step_size = 10000
num_repeats = 3

# Profiling and plotting
sizes, times_per_size = profile_function(function_to_profile, max_input_size, step_size, num_repeats)
plot_results(sizes, times_per_size)

The resulting plot for a single-worker setup:

Here's also a brief time-lapse of the progressbar for a 32 worker setup on a 32 core instance with a large target of random samples.

And the plot of that relationship:

Welcome any feedback or issues that you see!

Thanks @sritterginkgo, I will look into it.

Any updates here @tchaton ? Is there any other information that would be helpful for me to provide? Or separately, is this indeed a phenomenon that you and the team have observed?

Hey @sritterginkgo, I haven't observed it myself. I am a bit packed right now, so I don't have time to look into it. I wondered if you would have some bandwidth to investigate ?

I have observed the same issue for some of my datasets.
In one case, over about 4 days, the training time grew from about 50 mins per epoch to almost 4 hours per epoch.

Another thing I noticed is that litdata, compared to the streaming dataset from MosiacML, underutilized the memory. The slow-down potentially coming from heavily relying on the on-disk cache?

I have observed the same issue for some of my datasets.
In one case, over about 4 days, the training time grew from about 50 mins per epoch to almost 4 hours per epoch.

Hey @ouj, interesting. I have never noticed this behaviour. Do you belive you could provide a reproducible script with synthetic data ?

@tchaton, yes. I misread this issue, which referred to the slowdown in preparing the data.
I will file a new issue, but I don't know if I can provide a good reproducible script because it doesn't seem to be reproducible across all the datasets, and it is expensive to repro (those training were on A100s with DDP for a couple of days).

Are you re-creating a new dataloader for every epoch ?

I am using LightningDataModule without doing anything specific. Do you mean setting reload_dataloaders_every_epoch=True on the Trainer?

Filed a new issue: https://github.com/Lightning-AI/litdata/issues/138

I might find an opportunity to @tchaton . Is there a particular example that the team has used with synthetic data that I can use as a counter example to ensure the issue isn't something in my setup?

I might find an opportunity to @tchaton . Is there a particular example that the team has used with synthetic data that I can use as a counter example to ensure the issue isn't something in my setup?

Hey @sritterginkgo I trust you and the issue. I am just sharing I haven't encountered it yet. Here is our preparation of TinyLLAMA: https://lightning.ai/lightning-ai/studios/prepare-the-tinyllama-1t-token-dataset?section=all&query=tinyLLAMA
CPU Utilization was at 100% for 6 hours.

Oh thank you! This is helpful.
I will add in my experiments CPU utilization hasn't been an issue, 100% essentially always across workers (past the initial setup). When I had tried to record timings of sub-steps over time I hadn't gotten down to to a bedrock operations. I might continue with those efforts to see if there's some datastructure/queue that seems to be holding things up.

Hey @sritterginkgo. Thanks for the update. If you have time, we can schedule a call to pair debug it and hopefully, find the source.

@tchaton hello!
In the below I'm referring to having the function called by optimize be a generator rather than returning individual items, similar to your linked examples converting large datasets from collections of files.
I had an opportunity to try exploring this a little more. I believe that I found the issue, at least one of them. In your writer.py the BinaryWriter upon adding an item run the _should_write function which contains a loop over all serialized items currently in the cache. For reasonably-sized chunks this will mean that one might be performing billions/trillions of iterations within this loop. As I understand the logic, almost all of it is wasted computing the same things over and over. I made a modification to writer.py exploring a solution that keeps a running total in the writer and just checks the addition. I'll copy-paste the changes I made to the bottom.
The speedups I'm seeing are enormous, preprocessing a synthetic 100M sample collection (splits between generators of size 1e5) completed in 2 minutes on an 8 core machine. If you have an opportunity I would highly recommend looking into the suggestions, it may offer speedups for your users.
Let me know if I missed anything!
Example call:
total_samples = 1e8

def random_batch(x):
    #batch_size = int(1e3)
    for _ in range(int(1e5)):
        yield random_sample(0)

optimize(fn=random_batch, inputs=list(range(1000)), output_dir="/tmp/test-dataset", num_workers=8, chunk_bytes="64MB", fast_dev_run=False)

class BinaryWriter:
    def __init__():
        ....
        self._per_sample_num_bytes = 0
        self._per_sample_num_items = 0
    def add_item(self, index: int, items: Any) -> Optional[str]:
        # Track the minimum index provided to the writer
        # Serialize the items and store an Item object.
        if index in self._serialized_items:
            raise ValueError(f"The provided index {index} already exists in the cache.")

        data, dim = self.serialize(items)
        self._serialized_items[index] = Item(
            index=index,
            data=data,
            bytes=len(data),
            dim=dim,
        )
        if self._min_index is None:
            self._min_index = index
        if not self._should_write_per_item(index):
            return None
        filepath = os.path.join(self._cache_dir, self.get_chunk_filename())
        self.write_chunk()
        self._per_sample_num_bytes = self._serialized_items[index].bytes
        self._per_sample_num_items = self._serialized_items[index].dim if self._serialized_items[index].dim else 1
        self._min_index = index
        self._max_index = None
        return filepath

    def _should_write_per_item(self, index):
        """
        The original _should_write results in n passes per item which has huge slowdown as samples grows.
        """
        item = self._serialized_items.get(index, None)
        if item:
            self._per_sample_num_bytes += item.bytes
            self._per_sample_num_items += item.dim if item.dim else 1
            if (self._chunk_bytes and self._chunk_bytes < self._per_sample_num_bytes) or (
                    self._chunk_size and self._per_sample_num_items > self._chunk_size
                ):
                self._max_index = index
                return True
        return False

Hey @sritterginkgo. That's awesome. Do you want to make a PR to fix it ?

Hey @sritterginkgo, go ahead with submitting a PR and adding me for review. Make sure to add some tests too ;)

Do you or the team have some document explaining more the logic of how samples would flow into this in the unordered context
I haven't written any. If you do local processing as you do, it would be ordered. However, litdata was mostly built to process dataset in the cloud. If the input contains file in the cloud to download, the downloaders within the workers are getting to download the file. The downloaders are then pushing the id to a queue when it is ready. This isn't guaranteed to be ordered.  This code was meant to maintain the same order between the inputs you provide to the optimize function and the idx of the sample within the dataset.

Given the current logic, how is the below protected for?
If we have some out of order receiving of samples, there may be some intermediate that excludes the edges of what the final chunk would be, such as:

3, 4, 5 -

The current logic will find 3, iterate up to 5, and if this were the max size allowed, write that section out. Then we would receive the remaining:
1, 2, 6
Which would never pass the min size logic as it exists (because they are discontinuous) and would wait until the final need to clear the cache, which will throw an error during the write step.
Does this just functionally never happen? Or am I misinterpreting other parts of the logic?
I ask because we also will have some rather large datasets that may be aided by cloud runs, I'd love to help add a solution that provides a lot of utility.

Hey @sritterginkgo Actually, I think my code is wrong anyway because the min_index doesn't start from 0 and it is based on the received indexes. So you receive, 2, 4, 5, 0, then it won't behave properly.
Let's go with your initial solution. If users want to keep the order, they can keep an index on the side or store it within the sample.

Closing from https://github.com/Lightning-AI/litdata/pull/146


comparison example lysozyme

Hello again
I’m trying to do a comparison with Pygbe and APBS. I took the example of lysozyme
I took the file lys1_charges.pqr and I submit it directly to APBS and I put the next inputs to the APBS webser
amber
single Debye-Huckel
ion1:+1
ion2:-1
concentration ions 0.15M
Radious ions
Na: 1.16
Cl: 1.67
biomolecular dielectric constant: 4
dielectric constant solvent: 80
Radius solvent 1.4
Temperature 298.15
I think are the same inputs used in Pygbe but I get to complete different results
with pygbe I got
Calculate Solvation Energy (E_solv)
Calculating solvation energy for region 2, stored in E_solv[0]
4998.481481481482 of 14846 analytical integrals for phi_reac calculation in region 2
Time E_solv: 0.24305462837219238s
Region 2: E_solv = -581.2948612575798 kcal/mol = -2432.137699501714 kJ/mol
Calculate Surface Energy (E_surf)
Time E_surf: 0.0133514404296875s
Calculate Coulomb Energy (E_coul)
Calculate Coulomb energy for region 2
Region 2: E_coul = -7858.158720994905 kcal/mol = -32878.536088642686 kJ/mol
Time E_coul: 0.008977651596069336s

Totals:
E_solv = -581.2948612575798 kcal/mol
E_surf = 0 kcal/mol
E_coul = -7858.158720994905 kcal/mol
Time = 27.12166738510132 s
(pygbe) bash-4.2$
but with APBS I got
CALCULATION #2: MULTIGRID
Setting up problem...
Vpbe_ctor:  Using max ion radius (1.67 A) for exclusion function
Debye length:  7.92928 A
Current memory usage:  385.531 MB total, 418.972 MB high water
Using cubic spline charge discretization.
Grid dimensions: 129 x 97 x 129
Grid spacings: 0.475 x 0.584 x 0.514
Grid lengths: 60.840 x 56.103 x 65.775
Grid center: (0.649, 21.997, 19.351)
Multigrid levels: 4
Molecule ID: 1
Linearized traditional PBE
Boundary conditions from focusing
2 ion species (0.150 M ionic strength):
1.160 A-radius, 1.000 e-charge, 0.150 M concentration
1.670 A-radius, -1.000 e-charge, 0.150 M concentration
Solute dielectric: 4.000
Solvent dielectric: 80.000
Using "molecular" surface definition;harmonic average smoothing
Solvent probe radius: 1.400 A
Temperature:  298.150 K
Electrostatic energies will be calculated
Potential to be written to<PHONE_NUMBER>3-pot.dx
Solving PDE (see io.mc* for details)...
Calculating energy (see io.mc* for details)...
Total electrostatic energy = 4.459905281715E+04 kJ/mol
Calculating forces...
Writing potential to<PHONE_NUMBER>3-pot-PE0.dx
CLEANING UP AND SHUTTING DOWN...
Destroying force arrays.
No energy arrays to destroy.
Destroying multigrid structures.
Destroying 1 molecules
Final memory usage:  0.001 MB total, 418.972 MB high water
I would like to ask why, or what I’m doing wrong?
Regards
Manuel Ruiz

Hi Manuel,
Are you comparing the results from pygbe with the 4.4599e4 kJ/mol of APBS? If so, those are not the right numbers to compare. We are calculating the solvation energy, which is the energetic difference of having the protein in vacuum and inside the solvent. With BEM, this difference can be computed in one calculation, however, in a volumetric approach (like APBS) you need to do two simulations: one in the solvent and one in vacuum, and subtract those two. From the text, I see you only performed the solvent calculation. Take a look at the input files of the examples in APBS under apbs/examples/solv, and you'll see they call APBS twice and subtract the results in the end.
Hope this helps!
Chris

thanks for the patience of replay to my questions
mmmmm better to be sure, I indicate 1(vacuum) for the relative permittivity in APBS and I got this
CALCULATION #2: MULTIGRID
Setting up problem...
Vpbe_ctor:  Using max ion radius (0 A) for exclusion function
Debye length:  0 A
Current memory usage:  501.142 MB total, 538.905 MB high water
Using cubic spline charge discretization.
Grid dimensions: 129 x 129 x 129
Grid spacings: 0.478 x 0.443 x 0.516
Grid lengths: 61.163 x 56.751 x 65.997
Grid center: (0.649, 21.997, 19.351)
Multigrid levels: 6
Molecule ID: 1
Linearized traditional PBE
Boundary conditions from focusing
0 ion species (0.000 M ionic strength):
Solute dielectric: 4.000
Solvent dielectric: 1.000
Using "molecular" surface definition;harmonic average smoothing
Solvent probe radius: 1.400 A
Temperature:  298.150 K
Electrostatic energies will be calculated
Potential to be written to<PHONE_NUMBER>9-pot.dx
Solving PDE (see io.mc* for details)...
Calculating energy (see io.mc* for details)...
Total electrostatic energy = 7.063923431265E+04 kJ/mol
Calculating forces...
Writing potential to<PHONE_NUMBER>9-pot-PE0.dx
CLEANING UP AND SHUTTING DOWN...
Destroying force arrays.
No energy arrays to destroy.
Destroying multigrid structures.
Destroying 1 molecules
Final memory usage:  0.001 MB total, 538.905 MB high water
so 4.459905281715E+04 kJ/mol - 7.063923431265E+04 kJ/mol = -26040.1814955 kJ/mol
is ok?

That sounds like right. One thing: the idea of the 'vacuum'  calculation is to substract off the 'self-energy' (ie. the Coulomb component). To get the Coulomb component only, the protein and solvent dielectric constants should be the same, and you are using different dielectrics there. Try with solvent dielectric = 4.

ok, need to read more, some references that you could recommend me about salvation energy and in general to understand better the topic?
Other question in your article you put some nice graphs of the protein coloured with the charges, (I think are VMD images) but  how you generate the file with the charges when the protein is under the influence of the electrode? The pygbe output doesn't give me something that I know I could use in VMD


typo: Double word "disk"

@nschonni : Thanks for your contribution! The author, @hning86, has been notified to review your proposed change.

Thank you for your proposed fix.
#sign-off

@j-martens: I'm sorry - only the author of this article, @hning86, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.


fix: ODS display image inline

Summary
Fix #471
Wrap ODS statement similar to SAS Studio
Testing
Test case in #471

The output image of SGMap procedure can be shown properly in result window.


Not clear from docs how to specify options

Bing api docs mention options like EnableHighlighting and others in the category of WebSearchOptions. It is not clear how to specify that and when I just experimented with specifying EnableHighlighting : true in the json object passed to Bing.web, the result seems to be the same and without the characters around query.

Thank you so much for a very helpful module!

The implementation doesn't consider the EnableHighlighting option, it ignores options it doesn't know about. I'll add it. Is there something else you are missing?

Thanks for offering to add the option.
Yes, another thing is that, in the callback function, there doesn't seem an easy way to access "total results" or the next skip position for the next page. There is a property in json body.d.__next but that is whole url. So, I assume that if you are near the end (last page or too few results), the __next maybe null. But, that is not straightforward like checking total results.
I checked this page where it talks about "Total" but the output JSON from your API seems different.
http://www.bing.com/developers/s/apibasics.html
Could you help with that?

Dear goferito,
Could you please add these two things? Let me know if I can be of help.
Thanks

OOps! Sorry, I totally forgot about this. I'll try to have it today or tomorrow

Hi, sorry for the delay, I added the highlight thing, but the Total number of results seems to be a headache feature for the Bing guys. As far as I can read on their forums, the feature has been added and removed several times over the different versions of the API.
That link that you provide belong to the version 2 of the API. The current version is called Azure version, there that those docs don't match the response you get with this module.
If you find a way to get that number with the Azure version I'll be willing to know and to add it to the implementation, but I get the feeling that it is sadly not supported anymore.

Thank you very much Goferito! Your highlighting works!


build: support go.mod and test with 1.11 and 1.12

Also fix convert siva.ErrMissingHeader to os.ErrClosed to make it compatible with go-siva 1.7.0.

I've created an issue so we don't forget about this.