{% extends "layout.html" %} {% block body %}
Slots are named sets of values, referenced by $slotName in your sentences. A slot value can contain (alternative | words), etc. like sentences.


Welcome to Beep-BoopTron! Just enter a number below!  Can you find the pattern?


No. 15 Michigan State women overcome slow start, win by 20
by The Associated PressEAST LANSING, Mich. (AP) — Taryn McCutcheon scored 16 points, Mardrekia Cook added 14 and No. 15 Michigan State defeated Oakland 76-56 on Tuesday night.
The Spartans (4-0) trailed the entire first quarter. McCutcheon hit two 3-pointers 45 seconds apart to open the second quarter that began a 9-0 run and Michigan State led the rest of the way.
The Spartans went up by double figures for good with just under four minutes in the third and opened the fourth with an 8-0 run to push the lead to 22.
Kayla Belles added 11 points and Nia Clouden 10 points and six assists for the Spartans. Taiyier Parks grabbed 10 rebounds, the first double-digit total for the freshman, leading a 55-44 advantage on the boards.
Kayla Luchenbach had 17 points and 10 rebounds for the Golden Grizzlies (2-2) with Jalisha Terry scoring 16 points.
___
More AP women’s basketball: https://apnews.com/Womenscollegebasketball and https://twitter.com/AP_Top25
The Associated Press


You name is required.
Your PAN Number is required.
Enter a valid PAN Number.
Email is required.
Enter a valid email.
Contact number is Required.
Enter a valid contact number.
Your States is required.
Your City is required.
Your Address is required.
Your Area is required.
Your Pincode is required.
Enter valid Pin Code.
Your password is required.
Your confirm password is required.
Confirm password doesnot match.
By clicking on Sign up, you agree to terms & conditions and privacy policy
Already have an account? Log in now


For legal reasons, we can only tell you to get an official cartridge and dump the rom from that with a cartridge dumper.
If you are looking for a cartridge dumper, GBxCart RW is relatively cheap and known to be good and safe.
First off, you need an english version. That is easy to see. Next, you need the 1.0 version. The quickest way to check this is in the library (you know, where the kids are outside playing with a ball)
In this library, if the book on top of the bookshelve has a shadow, it's 1.0, else it is a newer version and you have the wrong version. If there is no book you have the classic gameboy version, you need the DX color version.
Stop using VisualBoyAdvance. It's a horrible emulator, it even causes random bugs in the vanilla game. Use:
No, all skill levels are welcome. The default settings can require that you do a few obsecure things, like killing enemies with bombs. And dropping down one way ledges. There is a casual logic setting which removes these requirements and makes it easier.
It is expected that you know where all the heart pieces are hidden, and the hidden secret seashells.
There is a setting for glitched logic, which will require the use of glitches to progress. A full list of these is maintained at the discord channel.
It is possible. Reach out on discord, or at github issue tracker
That is by design, you can switch tunic between your options at a phonebooth. If you have an tunic color override, you can see your current tunic in the [SELECT] menu inside your inventory screen.
Rooster isn't available, as it leaves you after completing D7 it would be possible to lock yourself out of the bird key location. Instead, the bird key cave is modified to be accessible with a L2 Power Bracelet.
The trade quest, with the magnifying lens as reward, is completely optional. You don't ever need to do it. The book for the egg path can always be read. But, more important, if you never read the book, the path is always LLURRULU. This path is vanilla behaviour.
The reason for having the trade quest out of randomization is because the items for this quest are not different items, it is just a counter.  So this streamlines the experience a bit.
It's a wink towards the A link to the past randomizer, where there is also a single arrow chest shuffled with the items.
Drop in our discord. These options are for really advanced players, and require a lot of in-depth game knowledge. Don't use this option unless you really know what you are doing.
It allows two or more people to play together, items are shuffled between multiple players games and you will find another persons items. The setup is complex and requires a specific emulator. As always, drop by discord. We can help you out there or even play with you.
Changing the graphics requires editing the graphics template. You can use this for the "custom..." option in the graphics selection to load the modified file.


{% extends 'layout.html' %} {% block intro %}
Two improv teams throw down in a cage match of mad improv skills to win the hearts and minds of the audience. You, the audience, will choose the winner and decide which team will live to (improv) fight again. Hosted by man-about-town, Jay Robert Flewelling. Visit Friday Night Fights on Facebook for more information. $7 online or $10 at the door.
Purchase TicketsThink your improv team has got the right stuff? Compete in a Thursday Night Throwdown! If you win, you'll earn a chance to battle it out at Friday Night Fights! All you have to do is sign up on the Thursday Night Throwdowns submission page. Every team has equal access and will be booked for a 17-minute set on Thursday Night Throwdowns on a first come first serve basis. This brawling competition is FREE with a $5 suggested donation.
Sign Up


Gregorc Thinking Style
My dominant thinkig style is concrete random - this is described as risk-takers and innovators, concrete random dominant thinkers like to work hands-on and use their intuition to solve problems, often in rapid, intuitive leaps. They thrive in a competitive environment and prefer to work alone when solving problems.
It can be very difficult for a concrete random dominant thinker to follow rigid processes. Anything from providing detailed documentations, to reporting or even explaining how they reached a specific conclusion can be difficult for someone with this dominant thinking style. They also struggle with routine and repetition. The same creative thinking that helps them solves problems can make it difficult for them to do routine parts of their job.
The biggest struggle at this point has been when I haven't understood how something works, namely CSS. And to the point about concrete random thinkers, the approach that appeals most to me is to play around with the CSS sheets to figure out what's going on. As well, in terms of time management, Pomodoro (when applied) has really helped with being a concrete random thinker.
Growth vs. Fixed Mindset.
In terms of fixed vs growth mindset, I'd agree with the philosophy, but have a hard time implementing the move from fixed to growth. However, I found an article on Mindsetonline that decribes a process I'd like to follow:
- Learn to hear your fixed mindset “voice.” - As you approach a challenge, that voice might say to you “Are you sure you can do it?
As you hit a setback, the voice might say, “This would have been a snap if you really had talent.” “You see, I told you it was a risk.  “ It’s not too late to back out, make excuses, and try to regain your dignity.”
As you face criticism, you might hear yourself say, “It’s not my fault. It was something or someone else’s fault.” You might feel yourself getting angry at the person who is giving you feedback. “Who do they think they are? I’ll put them in their place.” The other person might be giving you specific, constructive feedback, but you might be hearing them say “I’m really disappointed in you. I thought you were capable but now I see you’re not.”
- Recognize that you have a choice.How you interpret challenges, setbacks, and criticism is your choice. You can interpret them in a fixed mindset as signs that your fixed talents or abilities are lacking. Or you can interpret them in a growth mindset as signs that you need to ramp up your strategies and effort, stretch yourself, and expand your abilities. It’s up to you.
So as you face challenges, setbacks, and criticism, listen to the fixed mindset voice and...
- Talk back to it with a growth mindset voice. As you approach a challenge:
THE FIXED-MINDSET says “Are you sure you can do it? Maybe you don’t have the talent.”
THE GROWTH-MINDSET answers, “I’m not sure I can do it now, but I think I can learn to with time and effort.”
FIXED MINDSET: “What if you fail—you’ll be a failure”
GROWTH MINDSET: “Most successful people had failures along the way.”

GROWTH MINDSET: “If I don’t try, I automatically fail. Where’s the dignity in that?”
As you hit a setback:
FIXED MINDSET: “This would have been a snap if you really had talent.”
GROWTH MINDSET: “That is so wrong. Basketball wasn’t easy for Michael Jordan and science wasn’t easy for Thomas Edison. They had a passion and put in tons of effort.
As you face criticism:
FIXED MINDSET: “It’s not my fault. It was something or someone else’s fault.”
GROWTH MINDSET: “If I don’t take responsibility, I can’t fix it. Let me listen—however painful it is– and learn whatever I can.”
Then...
- Take the growth mindset action. Over time, which voice you heed becomes pretty much your choice. Whether you
take on the challenge wholeheartedly,
learn from your setbacks and try again
hear the criticism and act on it is now in your hands.
Practice hearing both voices, and practice acting on the growth mindset. See how you can make it work for you.


Thank you for using the Yellowblue theme and having read the docs for it.
After reading this lengthy documentation, you still have questions, suggestions or corrections, please feel free to contact me at info[at]yellowblue.eu.


What about the Southern Branch of the Islamic Movement?
20 Nov 2015By now most of you have heard that Israel recently banned the Northern Branch of the Islamic Movement in Israel. Real Jstreets has already discussed the radical, anti-Semitic and violent things they have said and supported. But there is another part of this story that is being brushed under the carpet:
The Southern Branch is just as radical, anti-Israel and hate-filled as the Northern Branch!
If that is true, though, then why is it legal and referred to as moderate?
From the Times of Israel
The movement split two decades ago. The more moderate southern branch began fielding candidates for Israel’s Knesset in 1996 and is now part of the Joint List, an alliance of several Arab-Israeli political parties. Three of the Joint List’s 13 current Knesset members are part of the movement. The more hardline northern branch rejects any legitimization of Israel’s government and has called on its adherents to boycott elections.
That’s right, the Islamic Movement in Israel split between the “hardliners” in the north who hold the radical Islamist beliefs of the Muslim Brotherhood while boycotting Israeli elections and the “moderates” in the south who hold the radical Islamist beliefs of the Muslim Brotherhood while participating in Israeli elections.
Did you spot the difference? It is the same difference frequently cited by the media for why ISIS is radical and Hamas is moderate, namely that while they both hold fundamentalist Islamist views that are inherently anti-Semitic, misogynistic, homophobic and expansionist, Hamas has changed its tactics and agreed to participate in elections it knows it can win.
In “Jihad in Palestine: Political Islam and the Israeli-Palestinian Conflict” Professor Shaul Bartal of Bar Ilan University explains that there is virtually no difference between the ideology of the two factions:
It’s hard to find any difference between the substance of the remarks made by the southern faction [of the Islamic Movement] when compared with those made by the northern faction. (p. 72)
In retrospect, there are not two factions but only one Islamic Movement, and that is the movement of Sheikh Salah. (p. 70)
A careful examination of the newspapers al-Mithaq of the southern faction and Sawt al-Haq wa-al-Horiya of the northern faction shows that there is no ideological difference between the two Israeli factions of the Muslim Brotherhood [emphasis JPF]. However, Ra’ed Salah… expressed his anti-Israel stance more strongly. It is no surprise that all Ra’ed Salah’s speeches appear on the different Hamas websites. (p. 73)
Even the Southern Branch’s “moderate” decision to participate in elections does not stem from a difference in ideology but is merely a tactical decision.
There is mutual reciprocity between all of the Muslim Brotherhood factions as all of them are a part of the Islamic Movement and take sustenance from the same sources. Thus, for example, both factions of the Islamic Movement in Israel donate funds to the families of Hamas martyrs under the category of charity to orphans and widows. If one judges their declarations, no one disagrees that all the factions are dedicated to the same goal of jihad against Israel and the destruction of the Jewish entity that exists in Palestine.
Jihad can take many different forms - economic, social, legal, through propaganda and also military. All of these means are acceptable in the eyes of the Muslim Brotherhood in order to carry out their goal to establish an Islamic Palestine at the expense of all the territory of the State of Israel. (p. 74-75)
One of the two founders of Hemmah [The Jersualem Committee for the Prevention of the Destruction and Expulsion Plan], Abd al-Basit Abu al-Mufalfel… in his words, there is no difference between the Muslim Brotherhood, as the mother organization, and Hamas and the Islamic Movement, except from the point of view of the distribution of tasks. (p. 71-72)
Now that we have established that careful study of the ideology of both factions of the Islamic Movement shows no difference between the two (or Hamas for that matter), let’s examine the words and actions of the Southern Branch’s leading members.
###Hamed Abu Daa’bas - Leader of the Southern Branch of the Islamic Movement in Israel
Despite the “split” in the Islamic movement, Hamed Abu Daa’bas joined Raed Salah on the “Freedom Floatilla” back in 2010 (along with his political partner, the “honorable” Hanin Zoabi).
Daa’bas has also been in talks with Salah to officially reunite the two branches since 2011 and said he’d be willing to leave the Knesset to accomplish this goal. Perhaps this will be fulfilled by simply having Salah join the Southern Branch. Time will tell.
Daa’bas has also expressed his support for ISIS:
“ISIS raises reasonable demands like the establishment of an Islamic state, but their methods for reaching their objective raise concern in many nations across the world… [however] ISIS was hurting their cause by filming their cruel and disgusting acts. I am against the murders, but it is important to note that the killing methods of Israel and the US are not better than the crimes of the Islamic State. If it were not for the shocking ways in which they kill, it would be possible to see ISIS like any other Jihadi organization.”
 However, given that Daa’bas and the rest of the Muslim Brotherhood in Israel recognize the importance of tactics and differentiation of their roles in Jihad, this should not be surprising. He does not object to what ISIS does or to its “reasonable” goal of establishing a caliphate, he just wishes they would follow his lead and not always be so open about the violent way they want to accomplish it.
###Ibrahim Sarsur - Former head of the Southern Branch, former MK and Chairman of the United Arab List
Sarsur has compared Israelis to Nazis:
“Israel’s killing of innocent people is reminiscent of some very dark times, including that of the Nazis.”
He has also praised Hezbollah and called for establishing a Caliphate in the place of Israel
“there is strength and strategic insight and presence locally and regionally for Hizbullah… They are thinking how to return this fear to Israel and how to destroy Israel’s deterrence, which is the pillar of Israel’s continuation. And if this happens, this means that the line will begin to point extremely downwards for Israel’s deterrence.”
In Arabic he characterizes Israel as a tool of Western Imperialism to destroy the unity of the Ummah:
“[The West] planted this foreign object [Israel] which does not fit in an eastern Islamic environment, planted it in its heart as to remain as a thorn in their side and a thorn in their throat in order to prevent their [Muslim] unity so as to stop this Islamic giant to take its [historic] position.”
But don’t worry, in Hebrew and English he knows the “right” things to say, that is, the exact opposite of what he believes and says in Arabic:
“They [Israeli Jews] should be thinking about me not as a fifth column, but as an integral part of the country who might contribute a lot for the building of this state and might contribute a certain bridge between Israeli Jews and the Arab and Muslim world.”
He has also made numerous disparaging comments about Gays and Lesbians while simultaneously asserting there are none in the Muslim community.
###Masud Ghnaim - Chairman of the United Arab List, Number 2 in the Joint Arab List
Ghnaim is also a strong supporter of replacing Israel with a caliphate:
“an Islamic caliphate should be established and it should include Israel… I believe there is an urgent need to return to the Islamic caliphate. I believe this is the most fitting solution to the state of weakness, deterioration and erosion the Arabs and Muslims are suffering from,”
He also has nothing but praise for Hezbollah, Iran and Syria in their fight against Israel:
“I am against any aggression and any alliance that does not serve the Arab interest. I support the righteous party. The Iran-Hezbollah-Syria axis represents the line of resistance and intractability, and naturally, I support this axis. Hezbollah is the security valve of the residents of Lebanon. Hassan Nasrallah has properly combined the political and religious plan.”
###Talab Abu Arar - Number 9 in the Joint Arab List
In addition to being a bigamist who had a confirmed email on Ashley Madison Abu Arar is also a supporter of the Murabitun and Murabitat bullies sent by the Northern Branch to harass Jews on the Temple Mount… but according to him, they just stage sit-ins!
He is also very clear that Jews and all non-Muslims should not be allowed to visit the Temple Mount, saying “Al-Aqsa is for Muslims; never for anyone else.”
###Abd al-Hakim Hajj Yahya - Number 2 in the Islamic Movement political party, Number 6 in the Joint Arab List
Yahya accompanied fellow Joint List MK, Jamal Zahalka, during his visit to the Temple Mount when he verbally abused visiting Jews yelling:
“Crazy criminals, you’re all Kahanists, fascists, racists, get out of here, you hurt Muslims. This is my home. You need to get out of my house. You put crazies in here. You have no god.”
Back in July, he visited the Temple Mount with Ghnaim and Abu Arar to protest what the “warlike” atmosphere caused by “extremist warmongering settlers who are trying to change the status quo in every way.”
Given the Islamic Movement’s open rejection of the Jewish and democratic characters of the State of Israel and its leaders support for terrorist groups and enemy states against the country in whose parliament they serve, it is beyond surprising that the Southern Branch is legal at all. The State would not need to prove its connections to Hamas (which are just as strong as that of the Northern Branch), just that it is in violation of Basic Law: The Knesset Section 7A “Prevention of participation of candidates list.” This actually happened back in 2006, but the Supreme Court overturned the decision.
 Is there any chance such a party would be called moderate and allowed to run? You don’t have to imagine because the Kach and Kahane Chai parties did just that and were subsequently banned from running for Knesset and outlawed as terrorist organizations themselves.
Israel did the right thing by banning these extremist Jewish parties and it is about time it did the same by applying the law equally to their Arab extremist cousins in the Southern Branch of the Islamic Movement.


---
layout: post
title: Making DSL Fly
date: '2014-12-28T00:28:00.001-08:00'
author: daryoush
tags:
modified_time: '2014-12-28T00:28:17.161-08:00'
blogger_id: tag:blogger.com,1999:blog-5623577383635787454.post-8814980540752092007
blogger_orig_url: http://onfp.blogspot.com/2014/12/making-dsl-fly.html
---
I like this presentation on DSL and its performance characteristics in Haskell.


Home
Resnet
Mobile net(TL)
Face Alignment
Face Swaping
Image Classifiers
Choose an image file you want to classify


I am interested in experimental high energy physics research, with a focus on beyond Standard Model searches at the Large Hadron Collider as well as neutrino physics and various dark matter candidate searches. Please find summaries of some research projects I have contributed to below:
I analyze data from the Compact Muon Solenoid (CMS) experiment at CERN with Professor Stephen Schnetzer at Rutgers University to search for evidence of bottom-type vector-like quarks (VLQs) present in many models involving a composite Higgs boson. I have been named a special coauthor on a CMS paper for one of the analyses I worked on. The submission has been published in Physical Review D: 102:112004.
I worked with hydrodynamic simulations of quark-gluon plasma that resulted from heavy ion collisions with Professor Jacquelyn Noronha-Hostler at Rutgers. My involvement was focused on computational performance optimization and preparing files for initial condition generation. A paper is currently in review for publication with a preprint available here: arXiv:1905.13323.
Through the REU Program in Physics at Purdue University, I worked with Professor Andreas Jung on hardware upgrades for the CMS detector at CERN. In particular, I focused on thermal conductivity testing for the carbon fiber mounting system for the forward pixel tracker. I also designed the data acquisition and monitoring system for a testbench for the tracker's mixed-phase CO2 cooling system.
Beyond research, I partake in multiple initiatives that range from open source software projects to physics outreach initiatives. I have served as an officer of the Rutgers University Society of Physics Students (RUSPS) since 2018 and have worked with the group to help build a better physics community at Rutgers. Some examples of projects I have worked on are listed below:
I developed the Py2700 package to interact with Keithley 2700 series digital
multimeters using Python. The package provides an easy way to configure and read from the multimeter,
incorporating methods of saving to csv files for later analysis by default. It is available for
installation through pip
and conda
.
I am the founder and director of the student-run Rutgers SPS cluster. The project introduces undergraduates to high performance physics computing, and has acquired a grant to provide multiple high-end GPUs for undergraduates to work on research projects involving machine learning.
I led a team of students to study the acoustics of the Rutgers Athletics Center with the goal of engaging the community of Rutgers sports fans in an opportunity to learn more about how the unique shape of the arena and the physics of sound affects the Scarlet Knights basketball team's performance.


const ( JACOBI_TOL = 1e-15 JACOBI_EPS = 1e-16 JACOBI_NITMAX = 20 )
const PRINTZEROTOL = 1e-13
var NCPU int = 16 // number of CPUs to use
var Pll bool = false // use parallel version of routines?
variables for parallel code
var ( Uerr2Text = map[int]string{ C.UMFPACK_ERROR_out_of_memory: "out_of_memory (-1)", C.UMFPACK_ERROR_invalid_Numeric_object: "invalid_Numeric_object (-3)", C.UMFPACK_ERROR_invalid_Symbolic_object: "invalid_Symbolic_object (-4)", C.UMFPACK_ERROR_argument_missing: "argument_missing (-5)", C.UMFPACK_ERROR_n_nonpositive: "n_nonpositive (-6)", C.UMFPACK_ERROR_invalid_matrix: "invalid_matrix (-8)", C.UMFPACK_ERROR_different_pattern: "different_pattern (-11)", C.UMFPACK_ERROR_invalid_system: "invalid_system (-13)", C.UMFPACK_ERROR_invalid_permutation: "invalid_permutation (-15)", C.UMFPACK_ERROR_internal_error: "internal_error (-911)", C.UMFPACK_ERROR_file_IO: "file_IO (-17)", -18: "ordering_failed (-18)", C.UMFPACK_WARNING_singular_matrix: "singular_matrix (1)", C.UMFPACK_WARNING_determinant_underflow: "determinant_underflow (2)", C.UMFPACK_WARNING_determinant_overflow: "determinant_overflow (3)", } )
Umfpack error codes
func CheckResidC(tst *testing.T, tol float64, a [][]complex128, x, b []complex128) (max_abs_cp float64)
CheckResidC (complex) calculates max |component| of resid: r = a*x - b
func CheckResidR(tst *testing.T, tol float64, a [][]float64, x, b []float64) (max_abs_cp float64)
CheckResidR (real) calculates max |component| of resid: r = a*x - b
func Cholesky(L, a [][]float64) (err error)
Cholesky returns the Cholesky decomposition of a symmetric positive-definite matrix:
a = L * trans(L)
func ColMajToMat(a [][]float64, am []float64)
ColMajToMat returns a matrix from a column-major representation
func ColMajToMatNew(am []float64, m, n int) (a [][]float64)
ColMajToMatNew returns a new matrix from a column-major representation
func ComplexToRC(rc []complex128) (r, c []float64)
ComplexToRC converts a slice of complex numbers into two slices
func Jacobi(Q [][]float64, v []float64, A [][]float64) (nit int, err error)
Jacobi performs the Jacobi transformation of a symmetric matrix to find its eigenvectors and eigenvalues. Note that for matrices of order greater than about 10, say, the algorithm is slower, by a significant constant factor, than the QR method. A = Q * L * Q.T
Arguments: A In/Out -- matrix to compute eigenvalues (SYMMETRIC and SQUARE) Q Out -- matrix which columns are the eigenvectors v Out -- vector with the eigenvalues nit Out -- the number of iterations
func MatAlloc(m, n int) (mat [][]float64)
MatAlloc allocates a matrix with size m,n:
a := 0 => aij = 0
func MatClone(a [][]float64) (b [][]float64)
MatClone allocates and clones a matrix
b := a
func MatCondG(a [][]float64, normtype string, tol float64) (res float64, err error)
MatCondG returns the condition number of a square matrix using the inverse of this matrix; thus it is not as efficient as it could be, e.g. by using the SV decomposition.
normtype -- Type of norm to use: "F" or "" => Frobenius "I" => Infinite
func MatCopy(a [][]float64, α float64, b [][]float64)
MatCopy copies to matrix "a", another matrix "b" (scaled):
a := α * b => aij := α * bij
func MatFill(a [][]float64, s float64)
MatFill fills a matrix with a single number s:
aij := s
func MatGetCol(j int, a [][]float64) (col []float64)
MatGetCol returns a column of matrix a into vector col:
col := a[:][j]
func MatInv(ai, a [][]float64, tol float64) (det float64, err error)
MatInv returns the matrix inverse of 'a' in 'ai', in addition to the determinant of 'a'
func MatInvG(ai, a [][]float64, tol float64) (err error)
MatInvG returns the matrix inverse of 'a' in 'ai'. 'a' can be of any size, even non-square; in this case, the pseudo-inverse is returned
func MatLargest(a [][]float64, den float64) (largest float64)
MatLargest returns the largest component (abs(a_ij)) of a matrix, normalised by den
func MatMaxDiff(a, b [][]float64) (maxdiff float64)
MatMaxDiff returns the maximum difference between components of two matrices
func MatMul(c [][]float64, α float64, a, b [][]float64)
MatMul returns the matrix multiplication (scaled):
c := α * a * b => cij := α * aik * bkj NOTE: not efficient implementation => use for small matrices
func MatMul3(d [][]float64, α float64, a, b, c [][]float64)
MatMul3 returns the triple matrix multiplication:
d := α * a * b * c => dij := α * aik * bkl * clj NOTE: not efficient implementation => use for small matrices
func MatNormF(a [][]float64) (res float64)
MatNormF returns the Frobenious norm of a matrix:
||A||_F := sqrt(sum_i sum_j aij*aij)
func MatNormI(a [][]float64) (res float64)
MatNormI returns the infinite norm of a matrix:
||A||_∞ := max_i sum_j aij
func MatScale(a [][]float64, α float64)
MatScale scales a matrix by a scalar s:
a := α * a => aij := α * aij
func MatSetDiag(a [][]float64, s float64)
MatSetDiag sets a diagonal matrix where the diagonal components are equal to s
func MatSvd(u [][]float64, s []float64, vt [][]float64, a [][]float64, tol float64) (err error)
MatSvd returns the singular value decomposition of a matrix such that:
Note: a = u * s * v u[m][m], s[n], vt[n][n] must be pre-allocated
func MatToColMaj(a [][]float64) (am []float64)
MatToColMaj returns a vector representation of a column-major matrix
func MatTrMul3(d [][]float64, α float64, a, b, c [][]float64)
MatTrMul3 returns the triple matrix multiplication with tranposed "a":
d := α * trans(a) * b * c => dij := α * aki * bkl * clj NOTE: not efficient implementation => use for small matrices
func MatTrMulAdd3(d [][]float64, α float64, a, b, c [][]float64)
MatTrMulAdd3 returns the triple matrix multiplication with addition and tranposed "a":
d += α * trans(a) * b * c => dij += α * aki * bkl * clj NOTE: not efficient implementation => use for small matrices
func MatTrVecMul(v []float64, α float64, a [][]float64, u []float64)
MatTrVecMult returns the matrix-vector multiplication with "a" transposed (scaled):
v := α * transp(a) * u => vi = α * aji * uj NOTE: not efficient implementation => use for small matrices
func MatTrVecMulAdd(v []float64, α float64, a [][]float64, u []float64)
MatTrVecMulAdd returns the matrix-vector multiplication with addition and "a" transposed (scaled):
v += α * transp(a) * u => vi += α * aji * uj NOTE: not efficient implementation => use for small matrices
func MatVecMul(v []float64, α float64, a [][]float64, u []float64)
MatVecMul returns the matrix-vector multiplication (scaled):
v := α * a * u => vi = α * aij * uj NOTE: not efficient implementation => use for small matrices
func MatVecMulAdd(v []float64, α float64, a [][]float64, u []float64)
MatVecMulAdd returns the matrix-vector multiplication with addition (scaled):
v += α * a * u => vi += α * aij * uj NOTE: not efficient implementation => use for small matrices
func MatVecMulAddC(v []complex128, α complex128, a [][]complex128, u []complex128)
MatVecMulAddC (complex) returns the matrix-vector multiplication with addition (scaled):
v += α * a * u => vi += α * aij * uj NOTE: not efficient implementation => use for small matrices
func MatVecMulCopyAdd(w []float64, α float64, v []float64, β float64, a [][]float64, u []float64)
MatVecMulCopyAdd returns the matrix-vector multiplication with copy and addition (scaled):
w = α*v + β*a*u => wi = α*vi + β*aij*uj NOTE: not efficient implementation => use for small matrices
func PrintMat(name string, a [][]float64, format string, numpy bool)
PrintMat prints a dense matrix
func PrintMatC(name string, a [][]complex128, format, formatz string, numpy bool)
PrintMatC prints a matrix of complex numbers
func PrintVec(name string, a []float64, format string, numpy bool)
PrintVec prints a vector
func PrintVecC(name string, a []complex128, format, formatz string, numpy bool)
PrintVecC prints a vector of complex numbers
func RCtoComplex(r, c []float64) (rc []complex128)
RCtoComplex converts two slices into a slice of complex numbers
func RunMumpsTestC(t *TripletC, tol_cmp float64, b, x_correct []complex128, sum_b_to_root bool)
func RunMumpsTestR(t *Triplet, tol_cmp float64, b, x_correct []float64, sum_b_to_root bool)
func SPDsolve(x []float64, a [][]float64, b []float64) (err error)
SPDsolve (Symmetric/Positive-Definite) solves a small dense linear system A*x=b where the "a" matrix is symmetric and positive-definite (and real, and, of course, square)
x := inv(a) * b NOTE: this function uses Cholesky decomposition and should be used for small systems
func SPDsolve2(x, X []float64, a [][]float64, b, B []float64) (err error)
SPDsolve2 (Symmetric/Positive-Definite) solves 2 small dense linear systems A*x=b and A*X=C where the "a" matrix is symmetric and positive-definite (and real, and, of course, square)
x := inv(a) * b and X := inv(a) * B NOTE: this function uses Cholesky decomposition and should be used for small systems
func SmatCCMatrix(fnkey string, a *CCMatrix)
SmatCCMatrix writes a ".smat" file that can be visualised with vismatrix
func SmatTriplet(fnkey string, t *Triplet, tol float64)
SmatTriplet writes a ".smat" file that can be visualised with vismatrix
func SolveComplexLinSys(A *TripletC, b []complex128) (x []complex128, err error)
SolveComplexLinSys is a high-level function to generically solve a linear system with complex variables:
A.x = b => x = inv(A)*b Input: A -- [n][n] sparse matrix in triplet format b -- [n] right-hand-side vector Output: x -- [n] solution vector
func SolveRealLinSys(A *Triplet, b []float64) (x []float64, err error)
SolveRealLinSys is a high-level function to generically solve a linear system with real variables:
A.x = b => x = inv(A)*b Input: A -- [n][n] sparse matrix in triplet format b -- [n] right-hand-side vector Output: x -- [n] solution vector
func SpCheckDiag(a *CCMatrix) bool
SpCheckDiag checks if all elements on the diagonal of "a" are present.
OUTPUT: ok -- true if all diagonal elements are present; otherwise, ok == false if any diagonal element is missing.
func SpInitRc(rcmatR *CCMatrix, rcmatC *CCMatrixC, a *CCMatrix)
SpInitRc initialises two complex sparse matrices (residual correction) according to:
Real: γ *I - J Complex: (α + βi)*I - J NOTE: "a" must include all diagonal elements
func SpInitSimilar(b *CCMatrix, a *CCMatrix)
SpInitSimilar initialises another matrix "b" with the same structure (Ap, Ai) of sparse matrix "a". The values Ax are not copied though.
func SpInitSimilarR2C(b *CCMatrixC, a *CCMatrix)
SpInitSimilarR2C initialises another matrix "b" (complex) with the same structure (Ap, Ai) of sparse matrix "a" (real). The values Ax are not copied though (Bx and Bz are not set).
func SpMatAddI(r *CCMatrix, α float64, a *CCMatrix, β float64)
SpMatAddI adds an identity matrix I to "a", scaled by α and β according to:
r := α*a + β*I
func SpMatAddMat(c *CCMatrix, α float64, a *CCMatrix, β float64, b *CCMatrix, a2c, b2c []int)
SpMatAddMat adds two sparse matrices. The 'c' matrix matrix and the 'a2c' and 'b2c' arrays must be pre-allocated by SpAllocMatAddMat. The result is:
c := α*a + β*b NOTE: this routine does not check for the correct sizes, since this is expect to be done by SpAllocMatAddMat
func SpMatAddMatC(cC *CCMatrixC, cR *CCMatrix, α, β, γ float64, a *CCMatrix, μ float64, b *CCMatrix, a2c, b2c []int)
SpMatAddMatC adds two real sparse matrices with two sets of coefficients in such a way that one real matrix (cR) and another complex matrix (cC) are obtained. The results are:
cR := γ*a + μ*b cC := (α+βi)*a + μ*b NOTE: the structure of cR and cC are the same and can be allocated with SpAllocMatAddMat, followed by one call to SpInitSimilarR2C. For example: cR, a2c, b2c := SpAllocMatAddMat(a, b) SpInitSimilarR2C(cC, cR)
func SpMatMatTrMul(b [][]float64, α float64, a *CCMatrix)
SpMatMatTrMul computes the multiplication of sparse matrix with itself transposed:
b := α * a * aᵀ b_iq = α * a_ij * a_qj
/ Note: b is symmetric
func SpMatTrVecMul(v []float64, α float64, a *CCMatrix, u []float64)
SpMatTrVecMult returns the (sparse) matrix-vector multiplication with "a" transposed (scaled):
v := α * transp(a) * u => vj = α * aij * ui NOTE: dense vector v will be first initialised with zeros
func SpMatTrVecMulAdd(v []float64, α float64, a *CCMatrix, u []float64)
SpMatTrVecMulAdd returns the (sparse) matrix-vector multiplication with addition and "a" transposed (scaled):
v += α * transp(a) * u => vj += α * aij * ui
func SpMatTrVecMulAddC(v []complex128, α float64, a *CCMatrixC, u []complex128)
SpMatTrVecMulAddC returns the (sparse/complex) matrix-vector multiplication with addition and "a" transposed (scaled):
v += α * transp(a) * u => vj += α * aij * ui
func SpMatTrVecMulC(v []complex128, α float64, a *CCMatrixC, u []complex128)
SpMatTrVecMultC returns the (sparse/complex) matrix-vector multiplication with "a" transposed (scaled):
v := α * transp(a) * u => vj = α * aij * ui NOTE: dense vector v will be first initialised with zeros
func SpMatVecMul(v []float64, α float64, a *CCMatrix, u []float64)
SpMatVecMul returns the (sparse) matrix-vector multiplication (scaled):
v := α * a * u => vi = α * aij * uj NOTE: dense vector v will be first initialised with zeros
func SpMatVecMulAdd(v []float64, α float64, a *CCMatrix, u []float64)
SpMatVecMulAdd returns the (sparse) matrix-vector multiplication with addition (scaled):
v += α * a * u => vi += α * aij * uj
func SpMatVecMulAddC(v []complex128, α float64, a *CCMatrixC, u []complex128)
SpMatVecMulAddC returns the (sparse/complex) matrix-vector multiplication with addition (scaled):
v += α * a * u => vi += α * aij * uj
func SpMatVecMulAddX(v []float64, a *CCMatrix, α float64, u []float64, β float64, w []float64)
SpMatVecMulAddX returns the (sparse) matrix-vector multiplication with addition (scaled/extended):
v += a * (α*u + β*w) => vi += aij * (α*uj + β*wj)
func SpMatVecMulC(v []complex128, α float64, a *CCMatrixC, u []complex128)
SpMatVecMulC returns the (sparse/complex) matrix-vector multiplication (scaled):
v := α * a * u => vi = α * aij * uj NOTE: dense vector v will be first initialised with zeros
func SpSetRc(rcmatR *CCMatrix, rcmatC *CCMatrixC, α, β, γ float64, a *CCMatrix)
SpSetRc sets the values within two complex sparse matrices (residual correction) according to:
Real: γ *I - J Complex: (α + βi)*I - J NOTE: "a" must include all diagonal elements
func SpTriAdd(c *Triplet, α float64, a *Triplet, β float64, b *Triplet)
SpTriAdd adds two matrices in Triplet format:
c := α*a + β*b NOTE: the output 'c' triplet must be able to hold all nonzeros of 'a' and 'b' actually the 'c' triplet is just expanded
func SpTriAddR2C(c *TripletC, α, β float64, a *Triplet, μ float64, b *Triplet)
SpTriAddR2C adds two real matrices in Triplet format generating a complex triplet according to:
c := (α+βi)*a + μ*b NOTE: the output 'c' triplet must be able to hold all nonzeros of 'a' and 'b' actually the 'c' triplet is just expanded
func SpTriMatTrVecMul(y []float64, a *Triplet, x []float64)
SpTriMatTrVecMul returns the matrix-vector multiplication with transposed matrix a in triplet format and two dense vectors x and y
y := transpose(a) * x or y_I := a_JI * x_J or y_j := a_ij * x_i
func SpTriMatVecMul(y []float64, a *Triplet, x []float64)
SpTriMatVecMul returns the matrix-vector multiplication with matrix a in triplet format and two dense vectors x and y
y := a * x or y_i := a_ij * x_j
func SpTriSetDiag(a *Triplet, n int, v float64)
SpTriSetDiag sets a (n x n) real triplet with diagonal values 'v'
func SpTriSumToRoot(J *Triplet)
SpTriSumToRoot join (MPI) parallel triplets to root (Rank == 0) processor.
NOTE: J in root is also joined into Jroot
func VecAccum(v []float64) (sum float64)
VecAccum sum/accumulates all components in a vector
sum := Σ_i v[i]
func VecAdd(a []float64, α float64, b []float64)
VecAdd adds to vector "a", another vector "b" (scaled):
a += α * b => ai += α * bi
func VecAdd2(u []float64, α float64, a []float64, β float64, b []float64)
VecAdd2 adds two vectors (scaled):
u := α*a + β*b => ui := α*ai + β*bi
func VecClone(a []float64) (b []float64)
VecClone allocates a clone of a vector
b := a
func VecCopy(a []float64, α float64, b []float64)
VecCopy copies a vector "b" into vector "a" (scaled):
a := α * b => ai := α * bi
func VecDot(u, v []float64) (res float64)
VecDot returns the dot product between two vectors:
s := u dot v
func VecFill(v []float64, s float64)
VecFill fills a vector with a single number s:
v := s*ones(len(v)) => vi = s
func VecFillC(v []complex128, s complex128)
VecFillC fills a complex vector with a single number s:
v := s*ones(len(v)) => vi = s
func VecLargest(u []float64, den float64) (largest float64)
VecLargest returns the largest component (abs(u_i)) of a vector, normalised by den
func VecMax(v []float64) (max float64)
VecMax returns the maximum component of a vector
func VecMaxDiff(a, b []float64) (maxdiff float64)
VecMaxDiff returns the maximum difference between components of two vectors
func VecMaxDiffC(a, b []complex128) (maxdiff float64)
VecMaxDiffC returns the maximum difference between components of two complex vectors
func VecMin(v []float64) (min float64)
VecMin returns the minimum component of a vector
func VecMinMax(v []float64) (min, max float64)
VecMinMax returns the min and max components of a vector
func VecNorm(v []float64) (nrm float64)
VecNorm returns the Euclidian norm of a vector:
nrm := ||v||
func VecNormDiff(u, v []float64) (nrm float64)
VecNormDiff returns the Euclidian norm of the difference:
nrm := ||u - v||
func VecOuterAdd(a [][]float64, α float64, u, v []float64)
VecOuterAdd returns the outer product between two vectors, with addition (scaled)
aij += α * u[i] * v[j] NOTE: not efficient implementation => use for small matrices
func VecRms(u []float64) (rms float64)
VecRms returns the root-mean-square of a vector u:
rms := sqrt(mean((u[:])^2)) == sqrt(sum_i((ui)^2)/n)
func VecRmsErr(u []float64, Atol, Rtol float64, v []float64) (rms float64)
VecRmsErr returns the root-mean-square of a vector u normalised by scal[i] = Atol + Rtol * |vi|
rms := sqrt(sum_i((u[i]/scal[i])^2)/n) scal[i] := Atol + Rtol * |v[i]|
func VecRmsError(u, w []float64, Atol, Rtol float64, v []float64) (rms float64)
VecRmsError returns the root-mean-square of a vector u normalised by scal[i] = Atol + Rtol * |vi|
rms := sqrt(sum_i((|u[i]-w[i]|/scal[i])^2)/n) scal[i] := Atol + Rtol * |v[i]|
func VecScale(res []float64, Atol, Rtol float64, v []float64)
VecScale scales vector "v" using an absolute value (Atol) and a multiplier (Rtol)
res[i] := Atol + Rtol * v[i]
func VecScaleAbs(res []float64, Atol, Rtol float64, v []float64)
VecScaleAbs scales vector abs(v) using an absolute value (Atol) and a multiplier (Rtol)
res[i] := Atol + Rtol * Abs(v[i])
func WriteSmat(fnkey string, a [][]float64, tol float64)
WriteSmat writes a smat matrix for vismatrix
type CCMatrix struct {
// contains filtered or unexported fields
}
CCMatrix represents a sparse matrix using the so-called "column-compressed format".
func SpAllocMatAddMat(a, b *CCMatrix) (c *CCMatrix, a2c, b2c []int)
SpAllocMatAddMat allocates a matrix 'c' to hold the result of the addition of 'a' and 'b'. It also allocates the mapping arrays a2c and b2c, where:
a2c maps 'k' in 'a' to 'k' in 'c': len(a2c) = a.nnz b2c maps 'k' in 'b' to 'k' in 'c': len(b2c) = b.nnz
func (o *CCMatrix) Set(m, n int, Ap, Ai []int, Ax []float64)
Set sets column-compressed matrix directly
func (a *CCMatrix) ToDense() [][]float64
ToDense converts a column-compressed matrix to dense form
type CCMatrixC struct {
// contains filtered or unexported fields
}
CCMatrixC is the equivalent to CCMatrix but with values stored as paris of float64 representing compressed numbers
func (a *CCMatrixC) ToDense() [][]complex128
ToDense converts a column-compressed matrix (complex) to dense form
type LinSol interface { InitR(tR *Triplet, symmetric, verbose, timing bool) error // init for Real solution InitC(tC *TripletC, symmetric, verbose, timing bool) error // init for Complex solution Fact() error // factorise SolveR(xR, bR []float64, sum_b_to_root bool) error // solve Real problem. x = inv(A) * b SolveC(xR, xC, bR, bC []float64, sum_b_to_root bool) error // solve Complex problem x = inv(A) * b Free() // free memory SetOrdScal(ordering, scaling string) error // set ordering and scaling method }
func GetSolver(name string) LinSol
GetSolver returns a linear solver by name. e.g. "umfpack" or "mumps"
type LinSolMumps struct {
// contains filtered or unexported fields
}
LinSolMumps holds MUMPS data
func (o *LinSolMumps) Fact() (err error)
Fact performs symbolic/numeric factorisation. This method also converts the triplet form to the column-compressed form, including the summation of duplicated entries
func (o *LinSolMumps) Free()
Free deletes temporary data structures
func (o *LinSolMumps) InitC(tC *TripletC, symmetric, verbose, timing bool) (err error)
InitC initialises a LinSolMumps data structure for Complex systems. It also performs some initial analyses.
func (o *LinSolMumps) InitR(tR *Triplet, symmetric, verbose, timing bool) (err error)
InitR initialises a LinSolMumps data structure for Real systems. It also performs some initial analyses.
func (o *LinSolMumps) SetOrdScal(ordering, scaling string) (err error)
SetOrdScal sets the ordering and scaling methods for MUMPS
func (o *LinSolMumps) SolveC(xR, xC, bR, bC []float64, sum_b_to_root bool) (err error)
SolveC solves the linear Complex system A.x = b
NOTES: 1) sum_b_to_root is a flag for MUMPS; it tells Solve to sum the values in 'b' arrays to the root processor
func (o *LinSolMumps) SolveR(xR, bR []float64, sum_b_to_root bool) (err error)
SolveR solves the linear Real system A.x = b
NOTES: 1) sum_b_to_root is a flag for MUMPS; it tells Solve to sum the values in 'b' arrays to the root processor
type LinSolUmfpack struct {
// contains filtered or unexported fields
}
LinSolUmfpack holds UMFPACK data
func (o *LinSolUmfpack) Fact() (err error)
Fact performs symbolic/numeric factorisation. This method also converts the triplet form to the column-compressed form, including the summation of duplicated entries
func (o *LinSolUmfpack) Free()
Free deletes temporary data structures
func (o *LinSolUmfpack) InitC(tC *TripletC, symmetric, verbose, timing bool) (err error)
InitC initialises a LinSolUmfpack data structure for Complex systems. It also performs some initial analyses.
func (o *LinSolUmfpack) InitR(tR *Triplet, symmetric, verbose, timing bool) (err error)
InitR initialises a LinSolUmfpack data structure for Real systems. It also performs some initial analyses.
func (o *LinSolUmfpack) SetOrdScal(ordering, scaling string) (err error)
SetOrdScal sets the ordering and scaling methods
Note: this method is not available for UMFPACK
func (o *LinSolUmfpack) SolveC(xR, xC, bR, bC []float64, dummy bool) (err error)
SolveC solves the linear Complex system A.x = b
func (o *LinSolUmfpack) SolveR(xR, bR []float64, dummy bool) (err error)
SolveR solves the linear Real system A.x = b
type Triplet struct {
// contains filtered or unexported fields
}
Triplet is a simple representation of a sparse matrix, where the indices and values of this matrix are stored directly.
func ReadSmat(fn string) *Triplet
ReadSmat reads a smat matrix back
func (t *Triplet) Init(m, n, max int)
Init allocates all memory required to hold a sparse matrix in triplet form
func (t *Triplet) Len() int
Len returns the number of items just inserted in the triplet
func (t *Triplet) Max() int
Max returns the maximum number of items that can be inserted in the triplet
func (t *Triplet) Put(i, j int, x float64)
Put inserts an element to a pre-allocated (with Init) triplet matrix
func (o *Triplet) PutCCMatAndMatT(a *CCMatrix)
PutCCMatAndMatT adds the content of a compressed-column matrix "a" and its transpose "at" to triplet "o" ex: 0 1 2 3 4 5
[... ... ... a00 a10 ...] 0 [... ... ... a01 a11 ...] 1 [... ... ... a02 a12 ...] 2 [. at .] [a00 a01 a02 ... ... ...] 3 => [a . .] [a10 a11 a12 ... ... ...] 4 [. . .] [... ... ... ... ... ...] 5
func (o *Triplet) PutMatAndMatT(a *Triplet)
PutMatAndMatT adds the content of a matrix "a" and its transpose "at" to triplet "o" ex: 0 1 2 3 4 5
[... ... ... a00 a10 ...] 0 [... ... ... a01 a11 ...] 1 [... ... ... a02 a12 ...] 2 [. at .] [a00 a01 a02 ... ... ...] 3 => [a . .] [a10 a11 a12 ... ... ...] 4 [. . .] [... ... ... ... ... ...] 5
func (t *Triplet) Start()
Start (re-)starts the insertion index within "t" in order to allow (re-)insertion of items using the Put method
func (t *Triplet) ToMatrix(a *CCMatrix) *CCMatrix
ToMatrix converts a sparse matrix in triplet form to column-compressed form using Umfpack's routines. "realloc_a" indicates whether the internal "a" matrix must be reallocated or not, for instance, in case the structure of the triplet has changed.
INPUT: a -- a previous CCMatrix to be filled in; otherwise, "nil" tells to allocate a new one OUTPUT: the previous "a" matrix or a pointer to a new one
type TripletC struct {
// contains filtered or unexported fields
}
TripletC is the equivalent to Triplet but with values stored as pairs of float64 representing complex numbers
func (t *TripletC) Init(m, n, max int, xzmonolithic bool)
Init allocates all memory required to hold a sparse matrix in triplet (complex) form
func (t *TripletC) Len() int
Len returns the number of items just inserted in the complex triplet
func (t *TripletC) Max() int
Max returns the maximum number of items that can be inserted in the complex triplet
func (t *TripletC) Put(i, j int, x, z float64)
Put inserts an element to a pre-allocated (with Init) triplet (complex) matrix
func (t *TripletC) Start()
Start (re-)starts the insertion index within "t" in order to allow (re-)insertion of items using the Put method
func (t *TripletC) ToMatrix(a *CCMatrixC) *CCMatrixC
ToMatrix converts a sparse matrix in triplet form with complex numbers to column-compressed form. "realloc_a" indicates whether the internal "a" matrix must be reallocated or not, for instance, in case the structure of the triplet has changed.
INPUT: a -- a previous CCMatrixC to be filled in; otherwise, "nil" tells to allocate a new one OUTPUT: the previous "a" matrix or a pointer to a new one


Home
About Us
Contsct Us
Contsct Us
Enter your service request details
Choose service
Cleaning house
Laundry
Cleaning dishes
Choose what you want to be cleaned
Living Room
Cloths
The whole house
Choose your Desired service ($1/each)
Cleaning
Laundry
Input Quantity
Checkout
Click for delivery
Enter delivery info:
Name
Location
Phone Number
Make delivery
Cancel delivery


Let's see how to render and interact with a geoJSON file layered into our map.
You can see the code demonstrating this feature in the GeoJSON example.


Use VirusTotal, a Google service that analyzes files and URLs for viruses, worms, trojans etc., provides category of the content hosted by a domain from a variety of prominent services, provides passive DNS information, among other things.
As of June, 2016, Public API 2.0 had the following rate limits:
| Unit of time | Rate Limit |
|---|---|
| Minute | 4 requests/minute |
| Day | 5760 requests/day |
| Month | 178560 requests/month |
See http://www.virustotal.com for more information.
To get the current released version from CRAN:
install.packages("virustotal")
To get the current development version from GitHub:
install.packages("devtools")
devtools::install_github("themains/virustotal", build_vignettes = TRUE)
To learn about how to use the package, read the vignette. Or launch the vignette within R:
# Using virustotal
vignette("using_virustotal", package = "virustotal")
Scripts are released under the MIT License.


We extend services!
- engage collaborative niches
- monetize B2C schemas
- optimize virtual models
- orchestrate revolutionary markets
- engineer open-source metrics
- generate B2B channels
- redefine collaborative communities
- deliver bleeding-edge functionalities
- scale one-to-one supply-chains
- enhance enterprise infomediaries
- harness integrated experiences
- reintermediate synergistic paradigms


What's your secret key?
Vertical Slide 2
Vertical Slide 3
Single Horizontal Slide 2
Vertical Slide 4
Vertical Slide 5
发车


Often things go wrong when you're using Euro symbols (€) or other non-ASCII symbols in a Form, and then post the form to the web server.
This web app shows how difficult it is to get it 100% right.
Fact is that you also need to do some work on the server, you have to force the request parameters to be UTF-8 encoded, before you're parsing the form....
There are two different form test pages:
(you'll discover that it doesn't matter in what encoding the page is, try it!)


Skills: Data analysis, Bayesian methods, statistical modeling, machine learning, deep learning
Programming Languages: Python, Scala, Java (Familiarity with C++, Bash, SQL, JavaScript, MATLAB)
Libraries/Tools: Numpy, Scikit-Learn, Pandas, Keras, Stan, Altair, Seaborn, PyTorch, FastAI, Docker, Kubernetes, AWS.
As a data scientist, I have 3 years of experience analysing a variety of large scale datasets to extract useful insights. My current forte is working with image data, particularly geospatial and astronomical.
As part of the Remote Sensing team at CIBO Technologies (a US based startup), I lead the development of a Bayesian statistical model to predict the crop grown in an agricultural field using time series data of satellite imagery (Landsat, Sentinel 2). This work has led to a pending patent, and we are also drafting a peer reviewed publication. I also have significant experience with machine learning and deep learning models in the domain of Computer Vision, including Convolutional Neural Networks and Bayesian Neural Networks.
I have a Masters in Computer Science, which gave me substantial knowledge of programming and machine learning. I also finishing up a Masters in Astrophysics to strengthen my analytical skills and to fulfill my desire for learning astronomy.
I have experience delivering actionable insights and working with production level systems. I am a quick learner and work efficiently in a team environment.
Are you looking for an experienced and enthusiastic Data Scientist? Send me an email at


At the moment I'm not done this site, try again later.
Short bio.
Feel free to send me a message about anything.
(415) 580-2195 (SMS preferred)
<EMAIL_ADDRESS>(Jabber)
PGP Fingerprint: F0FE 0296 14EA 35BC 9E4F 9768 A6EC FD0C 4083 9755


IMPORTANT NOTICE: If you have some problems with resolution, please try to resize tab/window
Classified document #xxx
Year 20XX July: Some strange letal desease appeared around the world. It named "Blue Scrawl". Group of the most intelligent scientists around the world started Project Rebirth.
Classified document #xxx
Year 20XY February: In a few month humanity almost extinct. Scientists figured out that some tangram shards could be used as material for time travel machine.
If they gather enough shards they will go back in time and warn people about desease.
Classified document #xxx
Year 20XY July: The last scientist have created ship from tangram shards that help him to visit another worlds.
Classified document #xxx
Year 20XY September: "И всё-таки они ортогональные" @A.P. (The last survived scientist on Earth)


Abstract
Using multiple cores and processors simultaneously to achieve faster compression and decompression rates is possible nowadays with the new generation of multi-core cpu's. Using the following methods to create compressed backups of your files will be less time consuming.
Introduction
The most widely used compression tools are gzip, bzip, and xz. It is a common practice to create a tar file of a number of folders that contain various files and use the aforementioned tools to compress it. This way we can save bandwidth and hard disk space. In this article we will install, create a test file, tar it and then we will compress it with traditional methods and then compare it to the parallel compression methods focusing on CPU utilization and time consumption.
Materials and Methods
Most Linux distribution come preinstalled with the gzip, bzip and xz compression tools. We will need just to install the parallel compression tools.
The tests were performed on a dell Inspiron 14 with :
- Intel Celeron Processor (Dual Core)
- 2GB Memory
Install Required Packages
Open a terminal and install the required packages. In Debian/Ubuntu systems you can do that as following:
sudo apt-get install pxz pigz pbzip2
Testing file
Now we will be creating some random files inside our RAM memory. Then we will create a tar archive out of these files and start using the compression tools.
cd /dev/shm
mkdir testing-folder
cd testing-folder
dd if=/dev/urandom of=hundredmegfile1 bs=1024 count=102400
dd if=/dev/urandom of=hundredmegfile2 bs=1024 count=102400
dd if=/dev/urandom of=hundredmegfile3 bs=1024 count=102400
We run the dd
part 3 times by changing just the name of the created file to generate the files that contain random bits.
Now lets create a tar archive and remove the folder to save memory:
cd ..
tar cvf testingfiles.tar testing-folder && rm -rf testing-folder
Benchmark
Now lets compare the methods by using the time
command.
Please note that we are comparing just TIME and CPU utilization between Traditional vs Parallel methods and not the size (even though for reference we provide that info) or the Speed/Compression ratio of each tool.
Traditional methods
Gzip
Compress, show used space, show some file attributes and then decompress with gzip.
time gzip -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time gzip -d testingfiles.tar.gz
the output should look like:
gzip -k testingfiles.tar 19.06s user 0.34s system 99% cpu 19.453 total
301M testingfiles.tar
301M testingfiles.tar.gz
-rw-r--r-- 1 user user 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 user user 301M Sep 23 03:30 testingfiles.tar.gz
gzip: testingfiles.tar already exists; do you wish to overwrite (y or n)? y
gzip -d testingfiles.tar.gz 2.27s user 0.34s system 11% cpu 23.113 total
Bzip2
Compress, show used space, show some file attributes and then decompress with bzip2.
time bzip2 -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time bunzip2 -f testingfiles.tar.bz2
the output should look like:
bzip2 -k testingfiles.tar 151.70s user 0.67s system 100% cpu 2:32.30 total
301M testingfiles.tar
302M testingfiles.tar.bz2
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 semin semin 302M Sep 23 03:30 testingfiles.tar.bz2
bunzip2 -f testingfiles.tar.bz2 56.43s user 0.75s system 100% cpu 57.162 total
XZ
Compress, show used space, show some file attributes and then decompress with xz.
time xz -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time unxz -f testingfiles.tar.xz
the output should look like:
xz -k testingfiles.tar 261.58s user 1.19s system 93% cpu 4:41.12 total
301M testingfiles.tar
301M testingfiles.tar.xz
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar.xz
unxz -f testingfiles.tar.xz 0.66s user 0.50s system 99% cpu 1.164 total
Parallel methods
PIGzip
Compress, show used space, show some file attributes and then decompress with pigz.
time pigz -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time pigz -d -f testingfiles.tar.gz
the output should look like:
pigz -k testingfiles.tar 21.92s user 0.62s system 173% cpu 12.970 total
301M testingfiles.tar
301M testingfiles.tar.gz
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar.gz
pigz -d -f testingfiles.tar.gz 0.57s user 0.64s system 109% cpu 1.111 total
PBzip2
Compress, show used space, show some file attributes and then decompress with pbzip2.
time pbzip2 -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time pbzip2 -d -f testingfiles.tar.bz2
the output should look like:
pbzip2 -k testingfiles.tar 174.41s user 2.49s system 170% cpu 1:43.63 total
301M testingfiles.tar
302M testingfiles.tar.bz2
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 semin semin 302M Sep 23 03:30 testingfiles.tar.bz2
pbzip2 -d -f testingfiles.tar.bz2 58.96s user 2.12s system 172% cpu 35.443 total
Pxz
Compress, show used space, show some file attributes and then decompress with gzip.
time pxz -k testingfiles.tar;du -ksh testingfiles.tar*;ls -lh testingfiles.tar*;time pxz -d -f testingfiles.tar.xz
the output should look like:
pxz -k testingfiles.tar 254.53s user 2.59s system 166% cpu 2:34.03 total
301M testingfiles.tar
301M testingfiles.tar.xz
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar
-rw-r--r-- 1 semin semin 301M Sep 23 03:30 testingfiles.tar.xz
pxz -d -f testingfiles.tar.xz 0.72s user 0.43s system 98% cpu 1.165 total
Results and Discussion
Here are the results summarized in a table format and graphically represented based on the time needed to complete the task.
Compression
| gzip | pigz | bzip2 | pbzip2 | xz | pxz | |
|---|---|---|---|---|---|---|
| CPU (avg.%) | 99.00% | 173.00% | 100.00% | 170.00% | 93.00% | 166.00% |
| TIME (min.sec) | 0.19 | 0.12 | 2.32 | 1.43 | 4.41 | 2.34 |
Decompression
| gzip | pigz | bzip2 | pbzip2 | xz | pxz | |
|---|---|---|---|---|---|---|
| CPU (avg.%) | 11.00% | 109.00% | 100.00% | 172.00% | 99.00% | 98.00% |
| TIME (min.sec) | 0.23 | 0.01 | 0.57 | 0.35 | 0.01 | 0.1 |
Commentary
Lets try and interpret the results:
- Gzip for compression it used just one core for 19 secs and for decompression 1 core but not fully utilizing it for 23 secs
- PIGzip for compression it used both cores for 12 secs and for decompression 1-2 cores but partially utilizing them for 1 sec
- Bzip2 for compression it used just one core for 2.5 minutes and for decompression 1 core fully utilizing it for 57 sec
- Pbzip2 for compression it used both one cores for 1.5 minutes and for decompression both cores for 35 secs
- Xz for compression it used just one core for ~4.5 minutes and for decompression 1 core for 1 sec
- Pxz for compression it used both cores for 2.5 minutes and for decompression 1 core for 1 secs
As we can see parallel compression and decompression:
- Utilize all the cores that we have in a multi-core CPU when compressing and in most cases when decompressing
- Half and in some cases less is the time needed to complete the task
It is important though to understand that this numbers can vary depending on the file types that you use them on.
References
- Comparison of compression tools: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO
- AskUbuntu: Multi-Core Compression tools
So what do you think? Did I miss something? Is any part unclear? Please leave your comments below


July 24–25, Philadelphia
SRCCON is a conference for developers, interactive designers, and other people who love to code in and near newsrooms. It revolves around two days of collaboration with some of journalism-code’s best thinkers and makers, sketching, planning, and building together.
All SRCCON tickets are now sold out. We welcome ticket-holders to two days of peer-to-peer sessions built around conversation and collaboration—no slides, no presentations, no lectures. For a sneak peek at the program, check out the list of accepted sessions. SRCCON will also have a bonus evening round of short talks and conversations focused on extracurricular interests and individual obsessions, as well as plenty of opportunities for freeform hallway conversations.
Sessions will be designed with an eye toward continuing work and conversations through SRCCON and after. We expect themes to develop across sessions and are eager to support connections between groups.


Best responses¶
Definition of a best response¶
In a two player game $(A,B)\in{\mathbb{R}^{m\times n}}^2$ a mixed strategy $\sigma_r^*$ of the row player is a best response to a column players' strategy $\sigma_c$ iff:
$$ \sigma_r^*=\text{argmax}_{\sigma_r\in S_r}\sigma_rA\sigma_c^T. $$Similarly a mixed strategy $\sigma_c^*$ of the column player is a best response to a row players' strategy $\sigma_r$ iff:
$$ \sigma_c^*=\text{argmax}_{\sigma_c\in S_c}\sigma_rB\sigma_c^T. $$In other words: a best response strategy maximise the utility of a player given a known strategy of the other player.
Best responses in the Prisoners Dilemma¶
Consider the Prisoners Dilemma:
$$ A = \begin{pmatrix} 3 & 0\\ 5 & 1 \end{pmatrix}\qquad B = \begin{pmatrix} 3 & 5\\ 0 & 1 \end{pmatrix} $$We can easily identify the pure strategy best responses by underlying the corresponding utilities. For the row player, we will underline the best utility in each column:
$$ A = \begin{pmatrix} 3 & 0\\ \underline{5} & \underline{1} \end{pmatrix} $$For the column player we underling the best utility in each row:
$$ B = \begin{pmatrix} 3 & \underline{5}\\ 0 & \underline{1} \end{pmatrix} $$We see that both players' best responses are their second strategy.
Best responses in matching pennies¶
Consider matching pennies with the best responses underlined:
$$ A = \begin{pmatrix} \underline{1} & -1\\ -1 & \underline{1} \end{pmatrix}\qquad B = \begin{pmatrix} -1 & \underline{1}\\ \underline{1} & -1 \end{pmatrix} $$We see that the best response now depend on what the opponent does.
Let us consider the best responses against a mixed strategy (and apply the previous definition):
- Assume $\sigma_r=(x,1-x)$
- Assume $\sigma_c=(y,1-y)$
We have:
$$ A\sigma_c^T = \begin{pmatrix} 2y-1\\ 1-2y \end{pmatrix}\qquad \sigma_rB = \begin{pmatrix} 1-2x & 2x-1 \end{pmatrix} $$import sympy as sym
import numpy as np
sym.init_printing()
x, y = sym.symbols('x, y')
A = sym.Matrix([[1, -1], [-1, 1]])
B = - A
sigma_r = sym.Matrix([[x, 1-x]])
sigma_c = sym.Matrix([y, 1-y])
A * sigma_c, sigma_r * B
Those two vectors gives us the utilities to the row/column player when they play either of their pure strategies:
- $(A\sigma_c^T)_i$ is the utility of the row player when playing strategy $i$ against $\sigma_c=(y, 1-y)$
- $(\sigma_rB)_j$ is the utility of the column player when playing strategy $j$ against $\sigma_r=(x, 1-x)$
Let us plot these (using matplotlib
):
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
matplotlib.rc("savefig", dpi=100) # Increase the quality of the images (not needed)
ys = [0, 1]
row_us = [[(A * sigma_c)[i].subs({y: val}) for val in ys] for i in range(2)]
plt.plot(ys, row_us[0], label="$(A\sigma_c^T)_1$")
plt.plot(ys, row_us[1], label="$(A\sigma_c^T)_2$")
plt.xlabel("$\sigma_c=(y, 1-y)$")
plt.title("Utility to player 1")
plt.legend();
xs = [0, 1]
row_us = [[(sigma_r * B)[j].subs({x: val}) for val in xs] for j in range(2)]
plt.plot(ys, row_us[0], label="$(\sigma_rB)_1$")
plt.plot(ys, row_us[1], label="$(\sigma_rB)_2$")
plt.xlabel("$\sigma_r=(x, 1-x)$")
plt.title("Utility to column player")
plt.legend();
We see that the best responses to the mixed strategies are given as:
$$ \sigma_r^* = \begin{cases} (1, 0),&\text{ if } y > 1/2\\ (0, 1),&\text{ if } y < 1/2\\ \text{indifferent},&\text{ if } y = 1/2 \end{cases} \qquad \sigma_c^* = \begin{cases} (0, 1),&\text{ if } x > 1/2\\ (1, 0),&\text{ if } x < 1/2\\ \text{indifferent},&\text{ if } x = 1/2 \end{cases} $$In this particular case we see that for any given strategy, the opponents' best response is either a pure strategy or a mixed strategy in which case they are indifferent between the pure strategies.
For example:
- If $\sigma_c=(1/4, 3/4)$ ($y=1/4$) then the best response is $\sigma_r^*=(0,1)$
- If $\sigma_c=(1/2, 1/2)$ ($y=1/2$) then any mixed strategy is a best response but in fact both pure strategies would give the same utility (the lines intersect).
This observation generalises to our first theorem:
Best response condition¶
In a two player game $(A,B)\in{\mathbb{R}^{m\times n}}^2$ a mixed strategy $\sigma_r^*$ of the row player is a best response to a column players' strategy $\sigma_c$ iff:
$${\sigma_r^*}_i > 0 \Rightarrow (A\sigma_c^T)_i = \max_{k}(A\sigma_c^T)_k\text{ for all }1\leq i\leq m$$Proof of best response condition¶
$(A\sigma_c^T)_i$ is the utility of the row player when they play their $i$th strategy. Thus:
$$\sigma_rA\sigma_c^T=\sum_{i=1}^{m}{\sigma_r}_i(A\sigma_c^T)_i$$Let $u=\max_{k}(A\sigma_c^T)_k$. Thus:
$$ \begin{align} \sigma_rA\sigma_c^T&=\sum_{i=1}^{m}{\sigma_r}_i(u - u + (A\sigma_c^T)_i)\\ &=\sum_{i=1}^{m}{\sigma_r}_iu - \sum_{i=1}^{m}{\sigma_r}_i(u - (A\sigma_c^T)_i)\\ &=u - \sum_{i=1}^{m}{\sigma_r}_i(u - (A\sigma_c^T)_i) \end{align}$$We know that $u - (A\sigma_c^T)_i\geq 0$, thus the largest $\sigma_rA\sigma_c^T$ can be is $u$ which occurs iff ${\sigma_r}_i > 0 \Rightarrow (A\sigma_c^T)_i = u$ as required.
Returning to our previous example. If $\sigma_c=(1/2, 1/2)$, $(A\sigma_c^T)=(0, 0)$, thus $(A\sigma_c^T)_i = 0$ for all $i$.
Note that while any strategy is a best response to $(1/2, 1/2)$ the pair of strategies $(\sigma_r, \sigma_c) = ((1/2, 1/2), (1/2, 1/2))$ are the only two strategies that are best responses to each other. This coordinate is called a Nash equilibrium.
Definition of Nash equilibrium¶
In a two player game $(A,B)\in{\mathbb{R}^{m\times n}}^2$, $(\sigma_r, \sigma_c)$ is a Nash equilibrium if $\sigma_r$ is a best response to $\sigma_c$ and vice versa.


Pleasea Login in with your details of a tenant so as to be able to access the previledges of an official tenant on the site. Thank you.
if you are not a registered Tenant please register so as to join and get the previledges og being part of this community REGISTER


Test images
img local PNG (relative)
img local PNG (relative to root)
img PNG (remote, ignored)
img SVG (relative)
CSS background-image (relative)
CSS background-image (relative to root)
CSS background-image (remote, ignored)
img data-uri (ignored)
CSS background-image data-uri (ignored)
CSS background stacked (local and remote, remote ignored)
img srcset
blank image src (not included)
empty background-image url (uses current page url, should not be included)
Duplicates of some of the above images, to verify they are not duplicated in resources:


| ID | Service Name | Arabic Name | Description | Arabic Description | Charges | Commision | Status | Action |
|---|---|---|---|---|---|---|---|---|
| {{ x.id }} | {{ x.service_name }} | {{ x.service_name_arabic }} | {{ x.service_description }} | {{ x.service_description_arabic }} | {{ x.charges}} | {{x.commission}} | {{x.status}} |


Lorem ipsum dolor sit amet...
Transactions from 2019/05/01 to 2019/08/15 in All accounts / All categories Export to CSV Export to PDF


Materials Commons REST API
API Overview
This document describes the resources that make up the official Materials Commons API v2.
Current Version
All requests receive the default v2 version of the API. The version of the API may change in the future. To ensure compatability you should explicitly set Accept
header.
Accept: application/vnd.materialscommons.v2+json
The default version of the API may change in the future. Setting the header will ensure you receive specific version response.
Schema
All API access is over HTTPS. The production version version of the API is available through materialscommons.org/api/v2
. If you are accessing the test site then the API is available through test.materialscommons.org/api/v2
.
The Materials Commons send and receives in JSON format.
Parameters
Details Parameter
Many APIs return an object. This occurs when you request a specific object, such as a project, or you update or create one. Where the object in question has a list of dependent types, the API will return an overview of those type, rather than the details.
For example a Project
contains a list of Samples
. When requesting a Project you can ask that the full details for the Samples
be included rather than the overview defintions. This is more expensive and should be used only when you will immediately need access to this information.
The details
parameter allows you to define the level of details to return. By default the API returns details at overview
level. The details
parameter accepts overview
or full
as arguments. When full
is specified you will receive a complete object definition for all dependent objects.
Examples
The following call returns project details with dependent types (samples, and processes in this example) in overview.
You can make this request in two ways. The first explicitly sets details=overview
$ curl -i https://materialscommons.org/api/v2/projects?details=overview
Since overview
is the default when make a request the details parameter doesn't need to be set: It will default to overview
, e.g.
$ curl -i https://materialscommons.org/api/v2/projects
{
"_type": "project" ,
"ctime": 531360000,
"directory_id": "d3cff7f1-c958-4cb6-8fb5-8a588b6d76b5" ,
"description": "Test grain size boundaries" ,
"id": "9a07cdfd-b420-4411-883e-21526a468aee" ,
"mtime": 531360000,
"name": "proj5" ,
"owner"<EMAIL_ADDRESS>»
"processes": [
{
"_type": "process" ,
"ctime":<PHONE_NUMBER> ,
"description": "",
"id": "74bc8ec5-efee-42f6-9f7f-98721ca16d85" ,
"mtime":<PHONE_NUMBER> ,
"name": "As Measured - 09/03/2015 @ 3:48PM"
}
] ,
"samples": [],
}
$ curl -i https://materialscommons.org/api/v2/projects?details=full
{
"_type": "project" ,
"ctime": 531360000,
"directory_id": "d3cff7f1-c958-4cb6-8fb5-8a588b6d76b5" ,
"description": "" ,
"id": "9a07cdfd-b420-4411-883e-21526a468aee" ,
"mediatypes": null ,
"mtime": 531360000 ,
"name": "proj5" ,
"owner"<EMAIL_ADDRESS>»
"processes": [
{
"_type": "process" ,
"birthtime":<PHONE_NUMBER> ,
"does_transform": false ,
"id": "74bc8ec5-efee-42f6-9f7f-98721ca16d85" ,
"mtime":<PHONE_NUMBER> ,
"name": "As Measured - 09/03/2015 @ 3:48PM" ,
"description": "",
"owner"<EMAIL_ADDRESS>»
"process_type": "OTHER" ,
"what": "" ,
"why": "",
"samples": [],
"files": []
}
] ,
"samples": [],
}
API Call Sequence
Title: API Call Sequence
Client->MC Service: Authenticate
MC Service-->Client: Authentication Token
Client->>MC Service: Request (containing Token)
MC Service-->Client: Response
Projects
All access to projects requires an APIKEY to authenticate the request. The APIKEY controls access to the project and its resources.
Type definitions
Overview type
All objects have an overview definition. All overview definitions have the same fields. You can identify the type of overview object by looking at its _type
field.
Overview type definition
type OverviewType struct {
id string // The ID of the object
name string // Name of the object
description string
ctime integer // Creation time of the object
mtime integer // Last modification time
_type string // Type of Object
}
Example data
{
"id": "367416f9-c266-46cd-a224-f48f08c53b46",
"name": "My Sample",
"description": "Pure Aluminum from Ford",
"ctime": 531360000,
"mtime": 531360000,
"_type": "sample"
}
Project type
type Project struct {
id string // Unique ID of project
name string // Name of project
description string // Project description
directory_id string // Top level directory id
processes []Process // Processes in project
samples []Sample // Samples in project
users []User // Users with permissions to access project
owner string // Owner of project
ctime time.Time // Create time
mtime time.Time // Last modification time
_type string // "project"
}
Process type
type Process struct {
id string
ctime integer
mtime integer
owner string
name string
description string
why string
owner string
directory_id string
mediatypes MediaType
samples_in []Sample
samples_out []Sample
files_in []File
files_out []File
measurements []Measurement
size integer64
_type string
}
Sample type
type Sample struct {
id string
property_set_id string
name string
description string
files []File
processes []Process
measurements []Measurement
}
User type
type User struct {
}
REST API
Authenticate
POST /login
Authenticate the system and get back an authentication token. You may supply either a username and password or an application key, application id and username. Each application must be pre authorized by the user.
Parameters
| Name | Type | Description |
|---|---|---|
username |
string | The users login id, for example<EMAIL_ADDRESS>|
password |
string | The users account password |
application_key |
string | The system assigned application key |
application_id |
string | The application id associated with the application_key
|
Example using username and password
{
"username"<EMAIL_ADDRESS>"password": "my secure password 123"
}
Example using application parameters
{
"username"<EMAIL_ADDRESS>"application_key": "367416f9-c266-46cd-a224-f48f08c53bbb",
"application_id": "mc_upload_client"
}
Projects API
All access to a project requires the authentication token received from the /login
unless you are accessing a public project.
List Projects
GET /projects
The Get Projects API will return the list of all projects that a user owns or has access to.
Does not accept the details
parameter. If you need the full details for a particular project then you should call GET /projects/:project_id?details=full
.
Example output
$ curl -H "Authorization: very_long_token_string" https://materialscommons/org/api/v2/projects
[{
"_type": "project" ,
"ctime": 531360000,
"directory_id": "d3cff7f1-c958-4cb6-8fb5-8a588b6d76b5" ,
"description": "Test grain size boundaries" ,
"id": "9a07cdfd-b420-4411-883e-21526a468aee" ,
"mtime": 531360000,
"name": "proj1" ,
"owner"<EMAIL_ADDRESS>»
"processes": [
{
"_type": "process" ,
"ctime":<PHONE_NUMBER> ,
"description": "",
"id": "74bc8ec5-efee-42f6-9f7f-98721ca16d85" ,
"mtime":<PHONE_NUMBER> ,
"name": "As Measured - 09/03/2015 @ 3:48PM"
}
] ,
"samples": [],
"users"<EMAIL_ADDRESS>},
{
"_type": "project" ,
"ctime": 531360000,
"datadir": "bd3ff7f1-c958-4cb6-8fb5-8a588b6d7cde" ,
"description": "Test grain size boundaries" ,
"id": "4aa7cdfd-b420-4411-883e-21526a468e4e" ,
"mtime": 531360000,
"name": "proj2" ,
"owner"<EMAIL_ADDRESS>»
"processes": [] ,
"samples": [],
"users"<EMAIL_ADDRESS>}]
List Public Projects
GET /projects/public
Get Project
GET /projects/:project_id
The Get Project API will return the details for a given project.
Update Project
PUT /projects/:project_id
Allows you to change the name, add templates, etc...
Create Project
POST /projects
The Create Project command will create a new project for the currently authenticated user. The project name must be unique for the user.
Input
| name | Type | Description |
|---|---|---|
| name | string | The name of the project. Name must be unique for the user. |
| description | string | Optional description for project. |
Response Codes
| Code | Description |
|---|---|
| 201 Created | Project was successfully created |
| 400 Bad Request | The inputs were incorrect or additional |
| 409 Conflict | The user already has a project of the given name |
Example
$ curl -X POST -H "Content-Type: application/json" \
-d '{"name": "My Project", "description": "Test WE43 Properties"}' \
https://materialscommons.org/api/v2/projects
Response
Status: 201 Created
{
"_type": "project" ,
"ctime": 531360000,
"directory_id": "abdef7f1-c958-4cb6-8fb5-8a588b6d76ee" ,
"description": "Test WE43 Properties" ,
"id": "09a7cdfd-b420-4411-883e-21526a468abd" ,
"mtime": 531360000,
"name": "My Project" ,
"owner"<EMAIL_ADDRESS>»
"processes": [] ,
"samples": [],
"users"<EMAIL_ADDRESS>}
List Project Samples
GET /projects/:project_id/samples
Get Single Project Sample
GET /projects/:project_id/samples/:sample_id
Update Project Sample
PUT /projects/:project_id/samples/:sample_id
Create Sample in Project
POST /projects/:project_id/samples
Delete Sample in Project
DELETE /projects/:project_id/samples/:sample_id
List Processes in Project
GET /projects/:project_id/processes
Create Process in Project
POST /projects/:project_id/processes
Update Process in Project
PUT /projects/:project_id/processes/:process_id
The Update Process in Project updates attributes of the process. This command is structured as a series of commands. Each command works on different parts of the process. The process data structure is complex and updates to the structure can involve modifying, adding or deleting attributes associated with the process.
| Command | Description |
|---|---|
| samples | Add or delete samples from the process |
| files | Add or delete files from the process |
| measurements | Add modify or delete measurements from the process |
| attributes | Modify attributes such as name and description for the process |
| setup | Add, modify or delete setup attributes of the process |
Command Structure
{
"samples": [],
"files": [],
"measurements": [],
"attributes": [],
"setup": []
}
samples
command
The samples
command updates a process by adding, modifying or removing samples. The command can modify a sample in the following ways:
- Remove a file association from the sample. The file must have been associated with the sample in this process.
- Add a file association to the sample. The file must already be associated with the process.
- Delete a file association from a sample. The file must already be associated with the process.
Samples add
command
{
"command":"add",
"sample_id": "the sample id"
}
Samples delete
command
{
"command": "delete",
"sample_id": "the sample id"
}
Samples modify
command
{
"command": "modify",
"sample_id": "the sample id",
"file_id": "the file id",
"subcommand": "add"
}
{
"command": "modify",
"sample_id": "the sample id",
"file_id": "the file id",
"arg": "delete"
}
{
"command": "modify",
"sample_id": "the sample id",
"measurement_id": "the measurement id",
"arg": "delete"
}
{
"command": "modify",
"sample_id": "the sample id",
"measurement_id": "the measurement id",
"arg": "modify",
"measurement": {}
}
{
"command": "modify",
"sample_id": "the sample id",
"arg": "add",
"measurement": {}
}
files
command
Files add
command
{
"command": "add",
"file_id": "file id",
"direction": "in or out"
}
Files delete
command
{
"command": "delete",
"file_id": "file id"
}
measurements
command
attributes
command
setup
command
Delete Process in Project
DELETE /projects/:project_id/processes/:process_id
Get Project File
GET /projects/:project_id/files/:file_id
Get Project File retrieves a file
Get Project Files
POST /projects/:project_id/files
This command takes a list of file ids and returns the details for those files
It's parameter looks as follows:
{
file_ids:[]
}
Where file_ids
is a list of file ids belonging to the project.
Update Project File
PUT /projects/:project_id/files/:file_id
The Update Project File API updates attributes associated with the a file.
| Command | Description |
|---|---|
| name | Change the name of the file |
| directory | Change the directory the file is located in |
| notes | Add, modify or delete a file note |
| tags | Add or delete file tags |
| description | Modify the file description |
Command structure
{
"name": "file name",
"directory": "new directory id",
"notes":[],
"tags": [],
"description": "the file description",
"processes": [],
"samples": []
}
notes
command
The notes
command takes a list of notes and updates the file to include the new set of notes. To delete a note you need to include the note with its note id and add the field "delete":true
. This note entry will look as follows:
{
"id": "the note id",
"delete": true
}
To add a new note simply include a note without an id field. This will then be added as a new note to the file.
tags
commands
The tags
command takes a list of tags. The server then determines how that tags list has changed and updates the file with the new list of tags.
processes
commands
{
"command": "add",
"process_id": "process id",
"direction": "in or out"
}
{
"command": "delete",
"process_id": "process id"
}
samples
commands
Delete Project File
DELETE /projects/:project_id/files/:file_id
Create Project Directory
POST /projects/:project_id/directories
Update Project Directory
PUT /projects/:project_id/directories/:directory_id
Delete Project Directory
DELETE /projects/:project_id/directories/:directory_id
List Project Directory
GET /projects/:project_id/directories/:directory_id
This call retrieves the directory identified by :directory_id
List Top level Project Directory
GET /projects/:/project_id/directories
This call retrieves the top level directory associated with a project.


bunch length due to the potential well effect the output is the zerocurrent bunch length x bunch lengthening BL = BunchLength (Ib,Zn,Vrf,U0,E0,h,alpha,sigdelta,circ) Ib is the bunch current [A] (it may be a vector for multiple values) Zn is the longitudinal broadband impedance [Ohms] Vrf is the RF voltage [V] (it may be a vector for multiple values) U0 is the energy loss around the ring [eV] E0 is the beam energy [eV] h is the harmonic number alpha is the momentum compaction factor sigmadelta is the energy spread circ is the ring circumference see also: atBunchLength
0001 function BL = BunchLength (Ib,Zn,Vrf,U0,E0,h,alpha,sigdelta,circ) 0002 0003 % bunch length due to the potential well effect 0004 % the output is the zerocurrent bunch length x bunch lengthening 0005 % 0006 % BL = BunchLength (Ib,Zn,Vrf,U0,E0,h,alpha,sigdelta,circ) 0007 % 0008 % Ib is the bunch current [A] (it may be a vector for multiple values) 0009 % Zn is the longitudinal broadband impedance [Ohms] 0010 % Vrf is the RF voltage [V] (it may be a vector for multiple values) 0011 % U0 is the energy loss around the ring [eV] 0012 % E0 is the beam energy [eV] 0013 % h is the harmonic number 0014 % alpha is the momentum compaction factor 0015 % sigmadelta is the energy spread 0016 % circ is the ring circumference 0017 % 0018 % see also: atBunchLength 0019 0020 blg = abs(blgrowth(Ib,Zn,Vrf,U0,E0,h,alpha,sigdelta)); 0021 phi=pi - asin(U0./Vrf); 0022 nus= sqrt(-(Vrf/E0).*(h * alpha)/(2*pi) .* cos(phi)); 0023 zcBL = sigdelta.*(circ * alpha)./(2 * pi .* nus ); 0024 BL = zcBL .* blg; 0025 end 0026 0027 function blg = blgrowth(Ib,Zn,Vrf,U0,E0,h,alpha,sigdelta) 0028 % bunch lengthening factor due to the potential well effect 0029 0030 % Ib is the bunch current [A] (it may be a vector for multiple values) 0031 % Zn is the longitudinal broadband impedance [Ohms] 0032 % Vrf is the RF voltage [V] (it may be a vector for multiple values) 0033 % U0 is the energy loss around the ring [eV] 0034 % h is the harmonic number 0035 % alpha is the momentum compaction factor 0036 % sigmadelta is the energy spread 0037 0038 phi=pi - asin(U0./Vrf); 0039 nus= sqrt(-(Vrf/E0).*(h * alpha)/(2*pi) .* cos(phi)); 0040 0041 Delta = -(2*pi*Ib*Zn)./(Vrf*h.*cos(phi).*(alpha*sigdelta./nus).^3); 0042 Q=Delta/(4*sqrt(pi)); 0043 0044 0045 0046 blg = (2/3)^(1/3)./(9*Q + sqrt(3)*sqrt(-4+27*Q.^2)).^(1/3)... 0047 + (9*Q + sqrt(3)*sqrt(-4+27*Q.^2)).^(1/3)./(2^(1/3)*3^(2/3)); 0048 end 0049


|
bluez_tools
0.1
|
bluez_tools is a set of C99 modules aiming to provide an user-friendly upper layer to the well-known Bluetooth library BlueZ. Each module targets a different aspect: from the Bluetooth adapter (dongle) management to the creation and management of fully functionnal L2CAP-based servers.
This project is the conclusion of a school project done in may 2014. The goal of this project was to provide a way to implement an indoor positionning system based on Bluetooth LE (Low Energy). In order to do so I created an API for my team to use BlueZ functionnalities with more ease. Since the BlueZ API is not very well documented itself (its documentation lies in the official Bluetooth core specification) it was essential to provide a more easy-to-use layer. The bluez_tools modules are the latest representation of this API.
The end-product of the previous school project is given as an example of the bluez_tools use. The main setup was as follow: three Raspberry Pis with Bluetooth dongles attached to them where used as servers receiving RSSI data through L2CAP protocole over Bluetooth from a Bluetooth beacon attached to a person in the room. The computed RSSI data, having been previously calibrated, are then computed to locate the relative coordinates of the beacon inside the room. This school project was created by the ENSIMAG FabLab team : BERTAULD Thomas, BIANCHERI Cédric, BRELOT Lucie and FONT Ludovic.
Key features:
Current limitations:
Requirements:
```sh make ``` Or
```sh make LIBTYPE=so ```
If everything went well, the library should have been produced in the lib folder.
```sh make install ``` Or
```sh make install INSTALL_LIB_PATH=/home/my/path ```
You can also re-compile the provided documentation by using the Makefile inside the doc directory.
Now that we have everything ready, we just need to compile our application.
First of all, make sure that the previously generated library can be found by the compiler/linker. Assuming that you're using gcc, you just need to specify the -L option :
```sh gcc -L path/to/libraries/ ```
You will then have to build the host program using the lbluez_tools library:
```sh gcc -L path/to/libraries/ main.c -lbarelog_logger ```
Of course, this need to be adapted in case you use another compiler.
Some modules provide a unit test case that can be performed by enabling the right pre-processor macro. For instance, you can build a test-case for the hci_socket module by defining the HCI_SOCKET_TEST macro.
A single test for RSSI measurement is also provided under the tests directory.
As previously said, the demo is to run on three L2CAP servers in charge of receiving RSSI values, a beacon in charge of sending those values and a L2CAP client computing all the RSSI values coming from the three servers, thus creating a triangulation system. The setup we used was as follow:
To compile the demo simply use the provided makefile:
```sh make make server ``` The first command will build the client's side of the application and the second one the servers side.


Moses Jung
Programmer/Developer
Feedback
Kind, Actionable, and Specific
July 18, 2015
    It is a very interesting experience to pair with others to solve challenges. It helps to have an extra opinion and mind working on the same problems. It is very interactive and most of the pairing sessions were very hands on. It is fun to get an idea of how it will be working with lots of other people on the same project. It is very rewarding at the end when we finally find a solution to one or more problems we have and finally get the program to work. The only frustrating part is when your partner is behind on material or does not really understand and know what the challenge is about or have any idea how to do it. The difficult part about that is having to pick up the slack and do the work yourself. It is like the same thing as doing the challenge yourself.
    The feedback that I have received really gave me insight to some of my weaker social aspects. It really cued me in to what I should try to improve on. The first couple feedbacks helped me improve on my future pairing sessions. Based on the feedback I received, I really need to work on speaking my mind and opinion more concise and clearly. I also need to be patient and should not rush too fast over the challenge. I should also explain and help my pair understand what I doing at all times.
    It was a little difficult to write feedback in the beginning because I did not really know what to write but after reading a couple feedbacks left from other people, I had somewhat of an idea of how to leave good feedback. It is the most difficult thing to write feedback for my pair that sounds a little harsh or insulting but I guess it is for my pair to improve. Overall, I think pairing and leaving feedback is a good guide to improve each other's weaknesses and a better way to communicate with each other.


fun BigDecimal?.convertZecToUsd(zecPrice: BigDecimal): BigDecimal
Convert this ZEC value to USD, using the given price per ZEC. Start with ZEC -> End with USD.
zecPrice
- the current price of ZEC represented as USD per ZEC
Return
this BigDecimal USD value converted into USD, with proper rounding and precision.


'REAL BOOST'
Dunblane grandad says specially trained dementia dog has given him a new leash of life
by Colan LamontFOR dementia sufferer Peter Farr, dogs really are man’s best friend after a specially trained pooch gave him a new leash of life.
Peter, 71, was diagnosed with the illness three years ago as his once-encyclopedic memory started to fade.
When the Aussie-born Air Force veteran got the devastating news, he admits it was a hammer blow. Understandably, he found himself getting very frustrated by the debilitating and incurable illness.
But that changed when a very cute two-year-old black labrador named Ruby came running into his life and even shared his passion for ROCK MUSIC.
Peter’s is one of only 11 homes in Scotland to have a specially trained dementia dog.
The grandad-of-two, who is cared for by wife Veryan, says: “The most important thing is that you have to accept you have dementia.
“Once you realise that, you’ll think it’s a bugger but at least you’re not dead!
“Dementia is only a word. Not a sentence. And if I’m having a bad day, Ruby is always there.
“We listen to my rock music together, go out places and she’s been a real boost to me and Veryan. Everybody loves her. I can’t tell you how many people I’ve met because of Ruby.”
Similar to guide dogs for the blind, pooches like Ruby help those with dementia to feel safe and get them out and about.
Unfortunately, most people don’t know that they exist so finding funding is a constant struggle.
However, Alzheimer Scotland, along with MND Scotland, will benefit from funds raised at The Scottish Sun charity shop which opens on Wednesday in Glasgow.
Love Island hunk Anton Danyluk will open our pop-up Sunta Store in Glasgow’s St Enoch Centre at 11am.
The People’s Postcode Lottery has already donated £20,000 to our good causes, while Stagecoach chairman Sir Brian Souter has vowed to match every penny raised over the counter.
As part of Dogs For Good, the Dementia Dog Project takes clever puppies and trains them to help improve the lives of those with the illness.
Ruby knows how to fetch Peter’s medicine bag and can even pull off his clothes and tell him when his lunch is ready.
And Veryan, 65 — who lives with her hubby in Dunblane, Perthshire — reckons the pooch has been the perfect pal for Peter.
She says: “If we’re having a bad day, Ruby is our absolute rock. She’s just a loving, soppy dog who always wants a big hug.
“In the morning I let her out and she comes inside rushing upstairs and wakes Peter up without a murmur from him. If I told him to get up at 7am it wouldn’t work but there’s not a word to Ruby.
“But it’s not just Peter. I often feel she does more for me than him. It’s nice if I’m feeling fragile to be able to take her anywhere.
“I belong to a rambling club in Stirling and they kindly said she is an honorary member. She goes because she’s so well-behaved and everyone loves her.”
Veryan adds: “It’s just amazing how she’s changed our lives. Two years ago, I hadn’t heard of dementia dogs.
“I remember telling Peter what he needed was a guide dog. That was the start of it.
“And now Peter and Ruby are perfect together. They settle down and both listen to his ghastly music on Alexa. But as long as they’re both happy, I’m happy.”
Peter’s big priority is to now raise awareness of dementia dogs so that more people like him can benefit from having their own pooch.
With costs of up to £25,000 for training one dog, it’s vital to spread the word.
Recently, Peter and Ruby have visited local schools to educate youngsters about dementia.
He jokes: “One boy asked me ‘Have you ever forgotten your wife’s name?’ I told him, ‘No!
“And many of them have said their gran or grandad has the condition. It’s good to talk about it and they all want to pat Ruby.
“Then they don’t find it a frightening thing and it helps to normalise it. You can’t put a price on that.”
Visit dementiadog.org for more information and to donate.
colan.lamont@the-sun.co.uk


_font='light'
to _font='lighter'
for font weight, for conflict to color light.normal
to _content
._pagination
& _list
from nav file._hide
not working with values._responsive
that was not working properly._form-group
s that don't take the colors correctly.


The Facet Check List component can be used to display a list of Facets that can be selected or deselected to provide the user with filtering capabilities. This component is designed to be placed within the Facet Container component.
To add a Facet Check List component to your application you need to import the FacetsModule
which allows
the use of the ux-facet-check-list
component.
The following attributes can be used to customise the behavior of the component:
false
the list will grow to display all possible facets.
If true
a scrollbar will appear to prevent the list from growing too large.
id
of the component. For accessibility purposes, the id
of the child component ux-facet-check-list-item
will be this value with the -check-list-item
suffix.
FacetSelect
, FacetDeselect
or FacetDeselectAll
and will contain the facet being selected or deselected in a facet
property (deselect all will not contain affected facets).
The following code will produce the example shown above:


| AttackVector / Hardware Integrity Attack | View: |
| Attributes | Parameters |
| Name | Hardware Integrity Attack |
| Number | CAPEC.440 |
| Description |
An adversary exploits a weakness in the system maintenance process and causes a change to be made to a technology, product, component, or sub-component or a new one installed during its deployed use at the victim location for the purpose of carrying out an attack. |
| Domain of Attack | Hardware |
| Attack Likelihood | Low |
| Attack Severity | High |
| Out of Scope | False |
| Relationships |
| precipitates |
LossScenario: LS.2 SEG: Inspection Fraud
|
| violates |
Component: C.<IP_ADDRESS> SEG: Segment Controller
Mitigation Justification: Independent PIG inspection teams assignments rotated.
Description: During PIG maintenance procedure, adversary falsely reports maintenance complete without actually performing the PIG cleaning / inspection.
Mitigation for Attack: Defensive
|