1676516760
ruptures
is a Python library for off-line change point detection. This package provides methods for the analysis and segmentation of non-stationary signals. Implemented algorithms include exact and approximate detection for various parametric and non-parametric models. ruptures
focuses on ease of use by providing a well-documented and consistent interface. In addition, thanks to its modular structure, different algorithms and models can be connected and extended within this package.
(Please refer to the documentation for more advanced use.)
The following snippet creates a noisy piecewise constant signal, performs a penalized kernel change point detection and displays the results (alternating colors mark true regimes and dashed lines mark estimated change points).
import matplotlib.pyplot as plt
import ruptures as rpt
# generate signal
n_samples, dim, sigma = 1000, 3, 4
n_bkps = 4 # number of breakpoints
signal, bkps = rpt.pw_constant(n_samples, dim, n_bkps, noise_std=sigma)
# detection
algo = rpt.Pelt(model="rbf").fit(signal)
result = algo.predict(pen=10)
# display
rpt.display(signal, bkps, result)
plt.show()
Concerning this package, its use and bugs, use the issue page of the ruptures repository. For other inquiries, you can contact me here.
Installation instructions can be found here.
See the changelog for a history of notable changes to ruptures
.
How to cite. If you use ruptures
in a scientific publication, we would appreciate citations to the following paper:
Author: Deepcharles
Source Code: https://github.com/deepcharles/ruptures
License: BSD-2-Clause license
1674084780
Computing a graph induced Fused LASSO Signal Approximator. You can use it to denoise data. The package includes some utility methods to assess the algorithms and apply it to images as well es ion-mobilty spectrometry (IMS) data sets.
For the one dimensional version of the Johnson's dynamic programming algorithm, have a look into Lasso.jl
The fused LASSO signal approximator can be used to denoise e.g. images:
Also known as Fast Iterative Shrinkage Algorithm (FISTA).
Own algorithm based on a iterative approximation by dynamic programming algorithm minimizing a sub-tree-graph.
using FLSA
graph = FLSA.img_graph(size(B)..., dn=2, lam=0.1) # (1)
F = FLSA.fista(B, graph, verbose=true; max_iter=10) # (2)
First you have to define graph (line (1)
). Then one of the algorithms above are called (see (2)
).
In order to be easily called from other languages a HDF5 intermediate data structure is supported that looks as follows (see generate_hdf5.py for a working python example):
1 2 3 ... n
nodes/input
/weight
1 2 3 ... m
edges/head
/tail
/weight
algorithm/@name
/@param1
/@param2
Author: EQt
Source Code: https://github.com/EQt/FLSA.jl
License: View license
1672130700
PeerServer helps establishing connections between PeerJS clients. Data is not proxied through the server.
Run your own server on Gitpod!
If you don't want to develop anything, just enter few commands below.
Install the package globally:
$ npm install peer -g
Run the server:
$ peerjs --port 9000 --key peerjs --path /myapp
Started PeerServer on ::, port: 9000, path: /myapp (v. 0.3.2)
Check it: http://127.0.0.1:9000/myapp It should returns JSON with name, description and website fields.
Also, you can use Docker image to run a new container:
$ docker run -p 9000:9000 -d peerjs/peerjs-server
Kubernetes
$ kubectl run peerjs-server --image=peerjs/peerjs-server --port 9000 --expose -- --port 9000 --path /myapp
If you have your own server, you can attach PeerServer.
Install the package:
# $ cd your-project-path
# with npm
$ npm install peer
# with yarn
$ yarn add peer
Use PeerServer object to create a new server:
const { PeerServer } = require('peer');
const peerServer = PeerServer({ port: 9000, path: '/myapp' });
Check it: http://127.0.0.1:9000/myapp It should returns JSON with name, description and website fields.
<script>
const peer = new Peer('someid', {
host: 'localhost',
port: 9000,
path: '/myapp'
});
</script>
You can provide config object to PeerServer
function or specify options for peerjs
CLI.
CLI option | JS option | Description | Required | Default |
---|---|---|---|---|
--port, -p | port | Port to listen (number) | Yes | |
--key, -k | key | Connection key (string). Client must provide it to call API methods | No | "peerjs" |
--path | path | Path (string). The server responds for requests to the root URL + path. E.g. Set the path to /myapp and run server on 9000 port via peerjs --port 9000 --path /myapp Then open http://127.0.0.1:9000/myapp - you should see a JSON reponse. | No | "/" |
--proxied | proxied | Set true if PeerServer stays behind a reverse proxy (boolean) | No | false |
--expire_timeout, -t | expire_timeout | The amount of time after which a message sent will expire, the sender will then receive a EXPIRE message (milliseconds). | No | 5000 |
--alive_timeout | alive_timeout | Timeout for broken connection (milliseconds). If the server doesn't receive any data from client (includes pong messages), the client's connection will be destroyed. | No | 60000 |
--concurrent_limit, -c | concurrent_limit | Maximum number of clients' connections to WebSocket server (number) | No | 5000 |
--sslkey | sslkey | Path to SSL key (string) | No | |
--sslcert | sslcert | Path to SSL certificate (string) | No | |
--allow_discovery | allow_discovery | Allow to use GET /peers http API method to get an array of ids of all connected clients (boolean) | No | |
generateClientId | A function which generate random client IDs when calling /id API method (() => string ) | No | uuid/v4 |
Simply pass in PEM-encoded certificate and key.
const fs = require('fs');
const { PeerServer } = require('peer');
const peerServer = PeerServer({
port: 9000,
ssl: {
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
cert: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
}
});
You can also pass any other SSL options accepted by https.createServer, such as `SNICallback:
const fs = require('fs');
const { PeerServer } = require('peer');
const peerServer = PeerServer({
port: 9000,
ssl: {
SNICallback: (servername, cb) => {
// your code here ....
}
}
});
Make sure to set the proxied
option, otherwise IP based limiting will fail. The option is passed verbatim to the expressjs trust proxy
setting if it is truthy.
const { PeerServer } = require('peer');
const peerServer = PeerServer({
port: 9000,
path: '/myapp',
proxied: true
});
By default, PeerServer uses uuid/v4
npm package to generate random client IDs.
You can set generateClientId
option in config to specify a custom function to generate client IDs.
const { PeerServer } = require('peer');
const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
const peerServer = PeerServer({
port: 9000,
path: '/myapp',
generateClientId: customGenerationFunction
});
Open http://127.0.0.1:9000/myapp/peerjs/id to see a new random id.
const express = require('express');
const { ExpressPeerServer } = require('peer');
const app = express();
app.get('/', (req, res, next) => res.send('Hello world!'));
// =======
const server = app.listen(9000);
const peerServer = ExpressPeerServer(server, {
path: '/myapp'
});
app.use('/peerjs', peerServer);
// == OR ==
const http = require('http');
const server = http.createServer(app);
const peerServer = ExpressPeerServer(server, {
debug: true,
path: '/myapp'
});
app.use('/peerjs', peerServer);
server.listen(9000);
// ========
Open the browser and check http://127.0.0.1:9000/peerjs/myapp
The 'connection'
event is emitted when a peer connects to the server.
peerServer.on('connection', (client) => { ... });
The 'disconnect'
event is emitted when a peer disconnects from the server or when the peer can no longer be reached.
peerServer.on('disconnect', (client) => { ... });
Read /src/api/README.md
$ npm test
We have 'ready to use' images on docker hub: https://hub.docker.com/r/peerjs/peerjs-server
To run the latest image:
$ docker run -p 9000:9000 -d peerjs/peerjs-server
You can build a new image simply by calling:
$ docker build -t myimage https://github.com/peers/peerjs-server.git
To run the image execute this:
$ docker run -p 9000:9000 -d myimage
This will start a peerjs server on port 9000 exposed on port 9000 with key peerjs
on path /myapp
.
Open your browser with http://localhost:9000/myapp It should returns JSON with name, description and website fields. http://localhost:9000/myapp/peerjs/id - should returns a random string (random client id)
Google App Engine will create an HTTPS certificate for you automatically, making this by far the easiest way to deploy PeerJS in the Google Cloud Platform.
Create a package.json
file for GAE to read:
echo "{}" > package.json
npm install express@latest peer@latest
Create an app.yaml
file to configure the GAE application.
runtime: nodejs
# Flex environment required for WebSocket support, which is required for PeerJS.
env: flex
# Limit resources to one instance, one CPU, very little memory or disk.
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 0.5
Create server.js
(which node will run by default for the start
script):
const express = require('express');
const { ExpressPeerServer } = require('peer');
const app = express();
app.enable('trust proxy');
const PORT = process.env.PORT || 9000;
const server = app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
const peerServer = ExpressPeerServer(server, {
path: '/'
});
app.use('/', peerServer);
module.exports = app;
Deploy to an existing GAE project (assuming you are already logged in via gcloud
), replacing YOUR-PROJECT-ID-HERE
with your particular project ID:
gcloud app deploy --project=YOUR-PROJECT-ID-HERE --promote --quiet app.yaml
See PRIVACY.md
Discuss PeerJS on our Telegram chat: https://t.me/joinchat/ENhPuhTvhm8WlIxTjQf7Og
Please post any bugs as a Github issue.
Author: Peers
Source Code: https://github.com/peers/peerjs-server
License: MIT license
1661376840
This package implements efficient multitaper and continuous wavelet transforms, along with the following transform statistics most of which operate on pairs of signals:
PowerSpectrum
)PowerSpectrumVariance
)CrossSpectrum
)Coherence
for the absolute value, Coherency
for the complex value)PLV
)PPC
)PLI
)PLI2Unbiased
)WPLI
)WPLI2Debiased
)JCircularCorrelation
)JMCircularCorrelation
)HurtadoModulationIndex
)Additionally, the following point-field measures are implemented:
pfcoherence
)pfplv
)pfppc0
, pfppc1
, pfppc2
)And the following point-point measures:
pfxcorr
)All measures except for the point-field measures have corresponding unit tests. Documentation is forthcoming.
Author: Simonster
Source Code: https://github.com/simonster/Synchrony.jl
License: View license
1659203400
"Clamp" is a minimal framework for command-line utilities.
It handles boring stuff like parsing the command-line, and generating help, so you can get on with making your command actually do stuff.
Yeah, sorry. There are a bunch of existing command-line parsing libraries out there, and Clamp draws inspiration from a variety of sources, including Thor, optparse, and Clip. In the end, though, I wanted a slightly rounder wheel. (Although, Clamp has a lot in common with Ara T. Howard's main.rb. Had I been aware of that project at the time, I might not have written Clamp.)
A typical Clamp script looks like this:
require 'clamp'
Clamp do
option "--loud", :flag, "say it loud"
option ["-n", "--iterations"], "N", "say it N times", default: 1 do |s|
Integer(s)
end
parameter "WORDS ...", "the thing to say", attribute_name: :words
def execute
the_truth = words.join(" ")
the_truth.upcase! if loud?
iterations.times do
puts the_truth
end
end
end
Internally, Clamp models a command as a Ruby class (a subclass of Clamp::Command
), and a command execution as an instance of that class. The example above is really just syntax-sugar for:
require 'clamp'
class SpeakCommand < Clamp::Command
option "--loud", :flag, "say it loud"
option ["-n", "--iterations"], "N", "say it N times", default: 1 do |s|
Integer(s)
end
parameter "WORDS ...", "the thing to say", attribute_name: :words
def execute
the_truth = words.join(" ")
the_truth.upcase! if loud?
iterations.times do
puts the_truth
end
end
end
SpeakCommand.run
Class-level methods like option
and parameter
declare attributes, in a similar way to attr_accessor
, and arrange for them to be populated automatically based on command-line arguments. They are also used to generate help
documentation.
There are more examples demonstrating various features of Clamp on Github.
Options are declared using the option
method. The three required arguments are:
For example:
option "--flavour", "FLAVOUR", "ice-cream flavour"
It works a little like attr_accessor
, defining reader and writer methods on the command class. The attribute name is inferred from the switch (in this case, "flavour
"). When you pass options to your command, Clamp will populate the attributes, which are then available for use in your #execute
method.
def execute
puts "You chose #{flavour}. Excellent choice!"
end
If you don't like the inferred attribute name, you can override it:
option "--type", "TYPE", "type of widget", attribute_name: :widget_type
# to avoid clobbering Object#type
The first argument to option
can be an array, rather than a single string, in which case all the switches are treated as aliases:
option ["-s", "--subject"], "SUBJECT", "email subject line"
Some options are just boolean flags. Pass ":flag
" as the second parameter to tell Clamp not to expect an option argument:
option "--verbose", :flag, "be chatty"
For flag options, Clamp appends "?
" to the generated reader method; ie. you get a method called "#verbose?
", rather than just "#verbose
".
Negatable flags are easy to generate, too:
option "--[no-]force", :flag, "be forceful (or not)"
Clamp will handle both "--force
" and "--no-force
" options, setting the value of "#force?
" appropriately.
Although "required option" is an oxymoron, Clamp lets you mark an option as required, and will verify that a value is provided:
option "--password", "PASSWORD", "the secret password", required: true
Note that it makes no sense to mark a :flag
option, or one with a :default
, as :required
.
Declaring an option ":multivalued
" allows it to be specified multiple times on the command line.
option "--format", "FORMAT", "output format", multivalued: true
The underlying attribute becomes an Array, and the suffix "_list
" is appended to the default attribute name. In this case, an attribute called "format_list
" would be generated (unless you override the default by specifying an :attribute_name
).
Declaring an option ":hidden
" will cause it to be hidden from --help
output.
option "--some-option", "VALUE", "Just a little option", hidden: true
A common idiom is to have an option --version
that outputs the command version and doesn't run any subcommands. This can be achieved by:
option "--version", :flag, "Show version" do
puts MyGem::VERSION
exit(0)
end
Positional parameters can be declared using parameter
, specifying
For example:
parameter "SRC", "source file"
Like options, parameters are implemented as attributes of the command, with the default attribute name derived from the parameter name (in this case, "src
"). By convention, parameter names are specified in uppercase, to make them obvious in usage help.
Wrapping a parameter name in square brackets indicates that it's optional, e.g.
parameter "[TARGET_DIR]", "target directory"
Three dots at the end of a parameter name makes it "greedy" - it will consume all remaining command-line arguments. For example:
parameter "FILE ...", "input files", attribute_name: :files
Like multivalued options, greedy parameters are backed by an Array attribute (named with a "_list
" suffix, by default).
When you #run
a command, it will first attempt to #parse
command-line arguments, and map them onto the declared options and parameters, before invoking your #execute
method.
Clamp will verify that all required (ie. non-optional) parameters are present, and signal a error if they aren't.
Both option
and parameter
accept an optional block. If present, the block will be called with the raw string argument, and is expected to validate it. The value returned by the block will be assigned to the underlying attribute, so it's also a good place to coerce the String to a different type, if appropriate.
For example:
option "--port", "PORT", "port to listen on" do |s|
Integer(s)
end
If the block raises an ArgumentError, Clamp will catch it, and report that the value was bad:
!!!plain
ERROR: option '--port': invalid value for Integer: "blah"
For multivalued options and parameters, the validation block will be called for each value specified.
More complex validation, e.g. those involving multiple options/parameters, should be performed within the #execute
method. Use #signal_usage_error
to tell the user what they did wrong, e.g.
def execute
if port < 1024 && user != 'root'
signal_usage_error "port restricted for non-root users"
end
# ... carry on ...
end
While Clamp provides an attribute-writer method for each declared option or parameter, you always have the option of overriding it to provide custom argument-handling logic, e.g.
parameter "SERVER", "location of server"
def server=(server)
@server_address, @server_port = server.split(":")
end
Default values can be specified for options, and optional parameters:
option "--flavour", "FLAVOUR", "ice-cream flavour", default: "chocolate"
parameter "[HOST]", "server host", default: "localhost"
For more advanced cases, you can also specify default values by defining a method called "default_#{attribute_name}
":
option "--http-port", "PORT", "web-server port", default: 9000
option "--admin-port", "PORT", "admin port"
def default_admin_port
http_port + 1
end
Options (and optional parameters) can also be associated with environment variables:
option "--port", "PORT", "the port to listen on", environment_variable: "MYAPP_PORT" do |val|
val.to_i
end
parameter "[HOST]", "server address", environment_variable: "MYAPP_HOST"
Clamp will check the specified envariables in the absence of values supplied on the command line, before looking for a default value.
By default, Clamp only recognises options before positional parameters.
Some other option-parsing libraries - notably GNU getopt(3)
- allow option and parameter arguments to appear in any order on the command-line, e.g.
foobar --foo=bar something --fnord=snuffle another-thing
If you want Clamp to allow options and parameters to be "interspersed" in this way, set:
Clamp.allow_options_after_parameters = true
Subcommand support helps you wrap a number of related commands into a single script (ala tools like "git
"). Clamp will inspect the first command-line argument (after options are parsed), and delegate to the named subcommand.
Unsuprisingly, subcommands are declared using the subcommand
method. e.g.
Clamp do
subcommand "init", "Initialize the repository" do
def execute
# ...
end
end
end
Clamp generates an anonymous subclass of the current class, to represent the subcommand. Alternatively, you can provide an explicit subcommand class:
class MainCommand < Clamp::Command
subcommand "init", "Initialize the repository", InitCommand
end
class InitCommand < Clamp::Command
def execute
# ...
end
end
Like options, subcommands may have aliases:
Clamp do
subcommand ["initialize", "init"], "Initialize the repository" do
# ...
end
end
You can set a default subcommand, at the class level, as follows:
Clamp do
self.default_subcommand = "status"
subcommand "status", "Display current status" do
def execute
# ...
end
end
end
Then, if when no SUBCOMMAND argument is provided, the default will be selected.
Options are inheritable, so any options declared for a command are supported by it's sub-classes (e.g. those created using the block form of subcommand
). Parameters, on the other hand, are not inherited - each subcommand must declare it's own parameter list.
Note that, if a subcommand accepts options, they must be specified on the command-line after the subcommand name.
You can define a subcommand_missing
method that is called when user tries to run an unknown subcommand:
Clamp do
def subcommand_missing(name)
if name == "foo"
return Object.const_get(:FooPlugin) if Object.const_defined?(:FooPlugin)
abort "Subcommand 'foo' requires plugin X"
end
end
end
All Clamp commands support a "--help
" option, which outputs brief usage documentation, based on those seemingly useless extra parameters that you had to pass to option
and parameter
.
$ speak --help
Usage:
speak [OPTIONS] WORDS ...
Arguments:
WORDS ... the thing to say
Options:
--loud say it loud
-n, --iterations N say it N times (default: 1)
-h, --help print help
Clamp comes with support for overriding strings with custom translations. You can use localization library of your choice and override the strings at startup.
Example usage:
require 'gettext'
Clamp.messages = {
too_many_arguments: _("too many arguments"),
option_required: _("option '%<option>s' is required"),
option_or_env_required: _("option '%<option>s' (or env %<env>s) is required"),
option_argument_error: _("option '%<switch>s': %<message>s")
# ...
}
See messages.rb for full list of available messages.
Copyright (C) 2011 Mike Williams
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Source-code for Clamp is on Github.
Author: mdub
Source code: https://github.com/mdub/clamp
License: MIT license
1623610800
CONFIRMED: Bullish chart signal not seen since 2017 and 8 AMAZING Altcoins we are buying TODAY!
NEW DATA FOUND - This secret info will prove to be our next profitable trades and we need to ACT NOW!
Crypto Banter is a live streaming channel that brings you the hottest crypto news, market updates and fundamentals of the world of digital assets – “straight out of the bull’s mouth”!! Join the fastest growing crypto community to get notified on the most profitable trades and latest market news!
📺 The video in this post was made by Crypto Banter
The origin of the article: https://www.youtube.com/watch?v=G3UkbROcPy8
🔺 DISCLAIMER: The article is for information sharing. The content of this video is solely the opinions of the speaker who is not a licensed financial advisor or registered investment advisor. Not investment advice or legal advice.
Cryptocurrency trading is VERY risky. Make sure you understand these risks and that you are responsible for what you do with your money
🔥 If you’re a beginner. I believe the article below will be useful to you ☞ What You Should Know Before Investing in Cryptocurrency - For Beginner
⭐ ⭐ ⭐The project is of interest to the community. Join to Get free ‘GEEK coin’ (GEEKCASH coin)!
☞ **-----CLICK HERE-----**⭐ ⭐ ⭐
(There is no limit to the amount of credit you can earn through referrals)
Thanks for visiting and watching! Please don’t forget to leave a like, comment and share!
#bitcoin #blockchain #strongest altcoin #signal #important signal for 8 strongest altcoin buys
1617975652
In this article, we have discussed the ways with which you can use Signal on Mac & Windows. The popularity of the encrypted messaging app, Signal, has grown recently due to endorsement by several celebrities and WhatsApp’s ill-conceived privacy policy update. In fact, the iOS version of the Signal messaging app recently topped the download charts of the App Store in several countries, including France, Austria, Germany, Finland, Switzerland, India, and Hong Kong. This was about the mobile version of Signal, but do you know, you can also use Signal on a PC just like Telegram and WhatsApp? This article discusses the steps with the help of which you can use Signal Messenger on a Mac or Windows 10 PC or laptops.
Use Signal Messenger on Your Desktop Computer
Signal doesn’t offer its services over the web like WhatsApp but does have a desktop app for Linux, Mac, and Windows. However, similar to WhatsApp, you need to have the Signal mobile app functional on your handset so as to let it work on your PC. So, without any further delay, let’s proceed further to the steps to use Signal Messenger on a Mac or Windows 10 PC or laptops.
Link and Use Signal on Your PC
You can use Signal on your PC using the following steps:
First, you need to download Signal on your desktop and further install it.
Once you have installed the app, you need to launch it. A QR code will appear on your screen, and further, you need to sync the chats by scanning the mobile app of Signal.
Further, open the Signal Messenger on your smart device and click on the menu button appearing on the upper-right side.
Further, from the pop-up menu, you need to select “Settings.”
Tap on the “Linked Device” under the Settings page. Now, hit “+” appearing at the bottom-right corner on your Android device. If you run Signal on iOS, you need to go to Settings and click on “Linked Devices” and further tap on the option “Link New Devices.”
Now, scan the QR code onto the screen of your PC, and both the apps will get synced in a while. Once they’re in-sync, click on “Link Device.”
Further on your Signal desktop app, you need to select a name for the linked devices and click on “Finish Linking Phone.”
The Signal desktop app will sync all your contacts with your device, and now you can send and receive messages using the Signal Desktop. Your messages and contacts may take a few minutes to get synced between the two devices.
Un-Link Signal Desktop with Your Phone
To un-link the Signal desktop app with your Device, follow the steps mentioned below:
To un-link the devices, you need to click on Settings and tap on the “Linked Devices” on your smartphone.
Now, click on the device’s name that needs to be un-linked and further confirm by pressing “OK.”
That’s it. You have successfully un-linked Signal Desktop with the mobile app of Signal. Later on, when you need to use the app on your PC, you need to re-ink the two.
So, these were the steps with which you can use the best encrypted messaging app on your PC. Being one of the best alternatives to Telegram and WhatsApp, Signal has not only been endorsed by brands and celebrities, but also individuals have widely accepted it as the safest to date messaging service in terms of privacy.
Now that you know how to use Signal on a PC or laptop, you would still use it more often on your handset than on PC. So, have you installed Signal on your PC yet? Do let us know in the comment section if you face any issues.
Read Official Blog Post - How to Use Signal on Windows & Mac
#signal #application
1610444652
Signal Foundation and Signal Messenger LLC, a non-profit company, rolled out its flagship app in 2014. Ironically, Signal Foundation was set up by WhatsApp co-founder Brian Acton with Signal Messenger CEO Moxie Marlinspike.
#signal #whatsapp #algorithm #dataprivacy #encryption
1603206000
Marketing authorization of a drug is granted on the basis that, in the proposed indication(s) and at the time of authorization, its therapeutic effect outweigh the safety risk(s) for the target population (a.k.a “positive benefit-risk balance”). All drugs differ from each other in terms of their safety risk profile, even within the same therapeutic class, but no drug is without safety risk.
What’s a safety risk?…It’s any untoward occurrence associated with the use of a drug. Safety risks are named “identified” when there is adequate evidence of a causal relationship with the concerned drug, or “potential”, when there is some basis for suspicion of an association with the drug, but this has not been confirmed. An adverse drug reaction (ADR), contraindication or even the incorrect use of the drug might be considered as safety risks. When safety risks are important, these could have an impact in the benefit-risk balance of the drug and/or have implications for public health.
Every year, more drugs are launched and their utilization raise consequently. Moreover, polypharmacy (i.e., concurrent use of 5 or more drugs) increases ADR occurrence risk due to a multitude of factors, including drug-drug and drug-disease interactions. ADRs are an important cause of morbidity and mortality, even though many ADRs are potentially avoidable if drugs are used by the right patient at the right dose [1]. This reflects the importance to ensure the drug safety vigilance throughout the entire life cycle.
Photo by Laurynas Mereckas on Unsplash
Polypharmacy is common in the older population and the risk of ADRs and injury increases with increasing numbers of drugs
Pharmacovigilance (PV) is a multidisciplinary science aimed to the collection, assessment, monitoring and prevention of ADRs and other safety-related data, e.g., off-label use, pregnancy exposure, overdose. As a science, the knowledge on drug safety is built through the analysis of data received from various type of reporters (e.g., patients, health professionals) and by means of active (e.g., studies) and passive (e.g., spontaneous notification) surveillance strategies. All of us are part of a global PV network and contribute to the safe use of drugs when reporting suspected ADRs to the national health authority, drug manufacturer or PV/Poison center, given that underreporting of ADRs may result in the late identification of new safety risks.
#data-mining #pharmacovigilance #signal #data-science
1597853760
In the world of data science the industry, academic, and government sectors often collide when enthusiasts and experts alike, work together to tackle the challenges we face day-to-day. A prime example of this collaboration is the Israeli Ministry of Defense Directorate of Defense Research & Development (DDR&D)’s MAFAT challenges. A series of data science related challenges with real-world application and lucrative prize pools. In the program’s own words:
Given the recent inception of the program, there haven’t been many challenges yet, however, there are expected to be a variety of challenges ranging from complicated Natural Language Processing puzzles to computer-vision related endeavors.
One such challenge, their second one made available thus far, caught my eye. It involves creating a model for classifying living, non-rigid objects that have been detected by doppler-pulse radar systems. The challenge, “MAFAT Radar Challenge — Can you distinguish between humans and animals in radar tracks?” implores competitors to develop a model that can accurately distinguish humans from animals based on a spectrum of radio signals recorded from various doppler-pulse radar sites on various days. If you are interested in participating I recommend visiting thechallenge site before reading on.
The key to developing an accurate and competitive model is to first understand the data, how it was sourced, and what it is missing. Included with the competition is 5 CSV files containing the metadata, and 5 pickle files (serializing Python object structure format) containing doppler readings that track the object’s center of mass and slow/fast time readings in the form of a standardized I/Q matrix.
Before we go any further it is worth breaking down a few key concepts relating to signals and the specific types of data collected. The signal readings that make up the dataset fall into two levels of quality, High Signal to Noise Ratio, and Low Signal to Noise Ratio. This reading, High SNR and Low SNR divides the set into two levels of quality, one with high clarity that hasn’t been heavily tainted by a noise generating process, and one with low clarity that has had aspects such as weather impact the quality of the reading.
#machine-learning #radar #signal #challenge #neural-networks