Shock | An object store for scientific data
kandi X-RAY | Shock Summary
kandi X-RAY | Shock Summary
Shock is a platform to support computation, storage, and distribution. Designed from the ground up to be fast, scalable, fault tolerant, federated. (see Shock: Active Storage for Multicloud Streaming Data Analysis, Big Data Computing (BDC), 2015 IEEE/ACM 2nd International Symposium on, 2015). Shock is RESTful. Accessible from desktops, HPC systems, exotic hardware, the cloud and your smartphone. Shock is for scientific data. One of the challenges of large volume scientific data is that without often complex metadata it is of little to no value. Shock allows storage and querying of complex metadata. Shock is a data management system. The long term goals of Shock include the ability to annotate, anonymize, convert, filter, perform quality control, and statically subsample at line speed bioinformatics sequence data. Extensible plug-in architecture is in development. Shock is actively being developed at github.com/MG-RAST/Shock.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- IndexTypedRequest responds to the request based on the index .
- Main entry point
- RunVersionUpdates updates version updates
- mapRoutes maps routes to http routes
- AclTypedRequest handles an ACL request
- locationsRequest handles the request for a location
- Creates node indexes
- Parse multipart form
- LocRequest is called when the request is authenticated
- AsyncIndexer creates an indexer for a node
Shock Key Features
Shock Examples and Code Snippets
docker pull mgrast/shock
git clone --recursive https://github.com/MG-RAST/Shock.git
cd Shock
docker build --force-rm --no-cache --rm -t mgrast/shock .
VERSION=$(docker run --rm mgrast/shock shock-server --version | grep version | grep -o v[0-9].* |
sudo apt-get install -y mongodb-server
curl -s http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.4.14.tgz | tar -v -C /mongodb/ -xz
/mongodb/bin/mongod --dbpath /data/
nohup /mongodb/bin/mongod --dbpath /mnt/db/ &
mkdir -p /mnt/shock-
shock-server -conf
mkdir -p /mnt/shock-server/log
mkdir -p /mnt/shock-server/data
export DATADIR="/mnt/shock-server"
docker run --rm --name shock-server -p 7445:7445 -v ${DATADIR}/shock-server.cfg:/shock-config/shock-server.cfg -v ${DATADIR}/log:/v
Community Discussions
Trending Discussions on Shock
QUESTION
How to deal with the new year and ISO8601 returning last year as year component.
To my horror, I realized ISO8601DateFormatter was returning 1977 as a year to the 1978-01-01 00:00:00
It took a while to realize this. That turned out is not wrong. Nonetheless, given the specific year of 1978, for the formatted to return 1977 is shocking.
I don't even need the timestamp. How can I reliably retrieve the specified year without having to add a second to every calendar date?
...ANSWER
Answered 2021-Jun-08 at 22:45By default the Calendar instance will have your local timeZone. You can see this by printing print(calendar.timeZone.abbreviation() ?? "UNKNOWN")
. In my case (in Seattle, WA, USA) it prints "PDT". If you simply set your calendar timezone to UTC it prints exactly what you expect:
year 1978 month 1 day 1 era: 1
QUESTION
In TTN they are no longer supporting large decoders.
I know what the decoder needs to be in TTN, it is in my DECODER function, but dont know how to execute it in the function node.
If you use inject Payload [1,2,3] RAW, it injects the raw payload that is msg.payload.payload.uplink_message.frm_payload into the decoder.
The DECODER needs to decode the raw payload and output it in msg.payload.uplink_message.decoded_payload
If you use inject Payload [1,2,3] Decoded in the flow you see how the end result needs to look like and the decoded msg.payload.uplink_message.decoded_payload
I am still learning JavaScript.
The code in the function node
...ANSWER
Answered 2021-Jun-07 at 14:02The question still really isn't clear, but if you want to use that code in a function node then I suggest the following:
Put that code into the "On Start" tab of the function node, but change the first line to the following:
QUESTION
I am trying to build a simulation of a random walk process with a drift using a loop, however, I am not able to get any outputs and instead I get a length error (number of items to replace is not a multiple of replacement length) which I can't fully understand since I provide a length that will change with how any number of values (N). I am supposed to be able to provide with specific values and then simulate the random walk. Here's my code:
...ANSWER
Answered 2021-Jun-03 at 14:41You need to return something out of this functions, you can either use return or just call the name of what you want at the last line
QUESTION
I am learning jQuery and in the effects I saw a way called "chaining" and tried this code below but, to my shock, it's not animating the 2nd passed animate()
method properly, i.e. the cube div is not moving from right to left.
I can't figure out what's wrong, except the 'right' part everything is working fine.
...ANSWER
Answered 2021-Jun-02 at 15:29The issue is because left
is the distance between the element and the left edge of the screen, and right
is the distance between the element and the right edge of the screen.
Applying right
after left
does not move the element back to its original location - it's an entirely separate value.
To achieve what you require simply set left
back to its original value. In this example, that's 8px
:
QUESTION
I have a use-case where I'm building to a target "state":
...ANSWER
Answered 2021-May-28 at 18:28State
is a complete subset of Partial
, that is why State | Partial == Partial
.
The only way you can coerce the Partial
into State
is by explicit setting Required
or, using type-fest and setting SetRequired, "foo" | "bar">
(but this one implies that you can extract the keys from somewhere).
The following code:
QUESTION
I start to learn a State Monad and one idea bother me. Instead of passing accumulator as parameter, we can wrap everything to the state monad.
So I wanted to compare performance between using State monad vs passing it as parameter.
So I created two functions:
...ANSWER
Answered 2021-May-22 at 16:19To give a bit more explanation as to why traverse
is slower: traverse f xs
has has type State [()]
and that [()]
(list of unit tuples) is built up during the summation. This prevents further optimizations and would cause a memory leak if you were not using lazy state.
Update: I think GHC should have been able to notice that that list of unit tuples is never used, so I opened a GHC issue.
In both cases, To get the best performance we want to combine (or fuse) the summation with the enumeration [1..x]
into a tight recursive loop which simply increments and adds until it reaches x
. The resulting code would look something like this:
QUESTION
I am trying to compare two arrays with multiple objects in them, and remove elements based on a condition. I tried first in the chrome's console, and was shocked to find for some reason, the arr1 is not getting empty even when I am using an if condition that clearly is always true. After the first iteration, I always see atleast one object being left out, and after running the loop many times, it gets removed. Am I missing something? This seems such a basic JavaScript error.
...ANSWER
Answered 2021-May-25 at 13:21You must not change array value in its loop.
QUESTION
I have been scouring the internet for weeks trying to figure out exactly how text (such as what you are reading right now) is displayed to the screen.
Results have been shockingly sparse.
I've come across the concepts of rasterization, bitmaps, vector graphics, etc. What I don't understand, is how the underlying implementation works so uniformly across all systems (windows, linux, etc.) in way we as humans understand. Is there a specification defined somewhere? Is implementation code open source and viewable by the general public?
My understanding as of right now, is this:
- Create a font with an external drawing program, one character at a time
- Add these characters into a font file that is understood by language-specific libraries
- These characters are then read from the file as needed by the GPU and displayed to the screen in a linear fashion as defined by the parenting code.
Additionally, if characters are defined in a font file such as 'F, C, ..., Z', how are vector graphics (which rely on a set of coordinate points) supported? Without coordinate points, rasterization would seem the only option for size changes.
This is about as far as my assumptions/research goes.
If you are familiar with this topic and can provide a detailed answer that may be useful to myself and other readers, please answer at your discretion. I find it fascinating just how much code we take for granted that is remarkably complicated under the hood.
...ANSWER
Answered 2021-May-14 at 18:01The following provides an overview (leaving out lots of gory details):
Two key components for display of text on the Internet are (i) character encoding and (ii) fonts.
Character encoding is a scheme by which characters, such as the Latin capital letter "A", are assigned a representation as a byte sequence. Many different character encoding schemes have been devised in the past. Today, what is almost ubiquitously used on the Internet is Unicode. Unicode assigns each character to a code point, which is an integer value; e.g., Unicode assigns LATIN CAPITAL LETTER A to the code point 65, or 41 in hexadecimal. By convention, Unicode code points are referred to using four to six hex digits with "U+" as a prefix. So, LATIN CAPITAL LETTER A is assigned to U+0041.
Fonts provide the graphical data used to display text. There have been various font formats created over the years. Today, what is ubiquitously used on the Internet are fonts that follow the OpenType spec (which is an extension of the TrueType font format created back around 1991).
What you see presented on the screen are glyphs. An OpenType font contains data for the glyphs, and also a table that maps Unicode code points to corresponding glyphs. More precisely, the character-to-glyph mapping (or 'cmap') table maps Unicode code points to glyph IDs. The code points are defined by Unicode; the glyph IDs are a font-internal implementation detail, and are used to look up the glyph descriptions and related data in other tables.
Glyphs in an OpenType font can be defined as bitmaps, or (far more common) as vector outlines (Bezier curves). There is an assumed coordinate grid for the glyph descriptions. The vector outlines, then, are defined as an ordered list of coordinate pairs for Bezier curve control points. When text is displayed, the vector outline is scaled onto a display grid, based on the requested text size (e.g., 10 point) and pixel sizing on the display. A rasterizer reads the control point data in the font, scales as required for the display grid, and generates a bitmap that is put onto the screen at an appropriate position.
One extra detail about displaying the rasterized bitmap: most operating systems or apps will use some kind of filtering to give glyphs a smoother and more legible appearance. For example, a grayscale anti-alias filter will set display pixels at the edges of glyphs to a gray level, rather than pure black or pure white, to make edges appear smoother when the scaled outline doesn't align exactly to the physical pixel boundaries—which is most of the time.
I mentioned "at an appropriate position". The font has metric (positioning) information for the font as a whole and for each glyph.
The font-wide metrics will include a recommended line-to-line distance for lines of text, and the placement of the baseline within each line. These metrics are expressed in the units of the font's glyph design grid; the baseline corresponds to y=0 within the grid. To start a line, the (0,0) design grid position is aligned to where the baseline meets the edge of a text container within the page layout, and the first glyph is positioned.
The font also has glyph metrics. One of the glyph metrics is an advance width for each given glyph. So, when the app is drawing a line of text, it has a starting "pen position" at the start of the line, as described above. It then places the first glyph on the line accordingly, and advances the pen position by the amount of that first glyph's advance width. It then places the second glyph using the new pen position, and advances again. And so on as glyphs are placed along the line.
There are (naturally) more complexities in laying out lines of text. What I described above is sufficient for English text displayed in a basic text editor. More generally, display of a line of text can involve substitution of the default glyphs with certain alternate glyphs; this is needed, for example, when displaying Arabic text so that characters appear cursively connected. OpenType fonts contain a "glyph substitution" (or 'GSUB') table that provides details for glyph substitution actions. In addition, the positioning of glyphs can be adjusted for various reasons; for example, to position a diacritic glyph correctly over a letter. OpenType fonts contain a "glyph positioning" ('GPOS') table that provides the position adjustment data. Operating system platforms and browsers today support all of this functionality so that Unicode-encoded text for many different languages can be displayed using OpenType fonts.
Addendum on glyph scaling:
Within the font, a grid is set up with a certain number of units per em. This is set by the font designer. For example, the designer might specify 1000 units per em, or 2048 units per em. The glyphs in the font and all the metric values—glyph advance width, default line-to-line distinance, etc.—are all set in font design grid units.
How does the em relate to what content authors set? In a word processing app, you typically set text size in points. In the printing world, a point is a well defined unit for length, approximately but not quite 1/72 of an inch. In digital typography, points are defined as exactly 1/72 of an inch. Now, in a word processor, when you set text size to, say, 12 points, that really means 12 points per em.
So, for example, suppose a font is designed using 1000 design units per em. And suppose a particular glyph is exactly 1 em wide (e.g., an em dash); in terms of the design grid units, it will be exactly 1000 units wide. Now, suppose the text size is set to 36 points. That means 36 points per em, and 36 points = 1/2", so the glyph will print exactly 1/2" wide.
When the text is rasterized, it's done for a specific target device, that has a certain pixel density. A desktop display might have a pixel (or dot) density of 96 dpi; a printer might have a pixel density of 1200 dpi. Those are relative to inches, but from inches you can get to points, and for a given text size, you can get to ems. You end up with a certain number of pixels per em based on the device and the text size. So, the rasterizer takes the glyph outline defined in font design units per em, and scales it up or down for the given number of pixels per em.
For example, suppose a font is designed using 1000 units per em, and a printer is 1000 dpi. If text is set to 72 points, that's 1" per em, and the font design units will exactly match the printer dots. If the text is set to 12 points, then the rasterizer will scale down so that there are 6 font design units per printer dot.
At that point, the details in the glyph outline might not align to whole units in the device grid. The rasterizer needs to decide which pixels/dots get ink and which do not. The font can include "hints" that affect the rasterizer behaviour. The hints might ensure that certain font details stay aligned, or the hints might be instructions to move a Bezier control point by a certain amount based on the current pixels-per-em.
For more details, see Digitizing Letterform Designs and Font Engine from Apple's TrueType Reference Manual, which goes into lots of detail.
QUESTION
I am trying to using a "for" to create a set and then apply another for that will interate and generate a dict. But its is returning "error"
Some important details:
test_tabela
is a list
ANSWER
Answered 2021-May-14 at 00:43i
is an element of tested_tabela
, because of that, change
QUESTION
Java is a beautiful language, and is also supposedly very efficient. Coming from a background of having used Python, I wanted to see the difference between the 2 languages- and from the start I was very impressed by the explicitness and clarity of Java's OOP based syntax. However, I also wanted to test out the performance differences between the languages.
I started off by trying to test the performance difference between the 2 languages by computation speed. For this, I wrote some code in each language- the program attempted to calculate a mathematical problem, and would iterate many times. I won't be adding this code here, but I will say the results- Python was almost 2 times slower (measured by time) than Java. Interesting, but it was expected. After all, the whole reason I wanted to try using Java is due to the amount of people bragging about the computation speed.
Following that, I proceeded to my second test- making HTTP connections to websites, in order to download web pages. For this test, I wrote another test program which would do the same as the last test, except instead of computing a math equation, it would download a web page using an HTTP library.
I ended up writing the following script in Python. It is very straightforward, it iterates 10 times over downloading a web page, then prints the average.
...ANSWER
Answered 2021-May-07 at 05:28I was really skeptical about the results you got, so I gave it a try with the exact same Python code and main
Java method (that uses https) as yours.
Here is the Java run
method that reads the entire JSON content of the response:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install Shock
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page