Alexei | DEPRECATED - An Image Processing Interface for Android | Computer Vision library
kandi X-RAY | Alexei Summary
Support
Quality
Security
License
Reuse
- Calculate the most common color of an image
- Get the most common color from the histogram
- Determine if the RGB array is gray
- Get RGB array from a pixel value
- Calculate the sum of colors for the given bitmap
- Get the pixel matrix from a bitmap
- Reduce an image to a certain number of colors
- Create the drawer view
- Select an drawer item
- Calculate the calculation
- Calculates the bitmap
- This method performs the calculation
- Get actual path from Uri
- Initializes the drawer instance
- Show the calculation
- Gets the defaultCalculator to use
Alexei Key Features
Alexei Examples and Code Snippets
Trending Discussions on Alexei
Trending Discussions on Alexei
QUESTION
I am trying to install OpenCL for BEAGLE. First, I have downloaded intel_sdk_for_opencl_applications_2020.3.494.tar.gz from here. Then I unzipped it & run install.sh. Installation was successful. I have BEAGLE installed so I have decided to go to build folder in beagle-lib & run cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME ..
in order to go on to run make install
but I get the next message:
-- JAVA_HOME=
-- JNI_INCLUDE_DIRS=/usr/lib/jvm/java/include;/usr/lib/jvm/java/include/linux;/usr/lib/jvm/java/include
-- JNI_LIBRARIES=/usr/lib/jvm/java/lib/libjawt.so;/usr/lib/jvm/java/lib/server/libjvm.so
-- Not using libtools for plugins
-- Could NOT find OpenCL (missing: OpenCL_LIBRARY OpenCL_INCLUDE_DIR)
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)
-- Configuring done
-- Generating done
-- Build files have been written to: /export/home/rinkman/beagle-lib/build
I have tried to set variables both environmental & shell to
OpenCL_LIBRARY=~/intel/system_studio_2020/opencl/SDK/include/CL/cl.h
OpenCL_INCLUDE_DIR=True
But the result of running cmake is the same. I have verified that variables were set up right. So I cannot understand what is wrong. I want to use OpenCL framework in BEAGLE when I am running BEAST 2 software. Please, could anyone help with this?
P.S. I am a noviciate in Linux.
My result of running beast -beagle-info
:
BEAST v2.6.6, 2002-2021
Bayesian Evolutionary Analysis Sampling Trees
Designed and developed by
Remco Bouckaert, Alexei J. Drummond, Andrew Rambaut & Marc A. Suchard
Centre for Computational Evolution
University of Auckland
r.bouckaert@auckland.ac.nz
alexei@cs.auckland.ac.nz
Institute of Evolutionary Biology
University of Edinburgh
a.rambaut@ed.ac.uk
David Geffen School of Medicine
University of California, Los Angeles
msuchard@ucla.edu
Downloads, Help & Resources:
http://beast2.org/
Source code distributed under the GNU Lesser General Public License:
http://github.com/CompEvol/beast2
BEAST developers:
Alex Alekseyenko, Trevor Bedford, Erik Bloomquist, Joseph Heled,
Sebastian Hoehna, Denise Kuehnert, Philippe Lemey, Wai Lok Sibon Li,
Gerton Lunter, Sidney Markowitz, Vladimir Minin, Michael Defoin Platel,
Oliver Pybus, Tim Vaughan, Chieh-Hsi Wu, Walter Xie
Thanks to:
Roald Forsberg, Beth Shapiro and Korbinian Strimmer
--- BEAGLE RESOURCES ---
0 : CPU
Flags: PRECISION_SINGLE PRECISION_DOUBLE COMPUTATION_SYNCH EIGEN_REAL EIGEN_COMPLEX SCALING_MANUAL SCALING_AUTO SCALING_ALWAYS SCALERS_RAW SCALERS_LOG VECTOR_SSE VECTOR_NONE THREADING_NONE PROCESSOR_CPU FRAMEWORK_CPU
One on my computer with Windows for comparison:
BEAST v2.6.6, 2002-2021
Bayesian Evolutionary Analysis Sampling Trees
Designed and developed by
Remco Bouckaert, Alexei J. Drummond, Andrew Rambaut & Marc A. Suchard
Centre for Computational Evolution
University of Auckland
r.bouckaert@auckland.ac.nz
alexei@cs.auckland.ac.nz
Institute of Evolutionary Biology
University of Edinburgh
a.rambaut@ed.ac.uk
David Geffen School of Medicine
University of California, Los Angeles
msuchard@ucla.edu
Downloads, Help & Resources:
http://beast2.org/
Source code distributed under the GNU Lesser General Public License:
http://github.com/CompEvol/beast2
BEAST developers:
Alex Alekseyenko, Trevor Bedford, Erik Bloomquist, Joseph Heled,
Sebastian Hoehna, Denise Kuehnert, Philippe Lemey, Wai Lok Sibon Li,
Gerton Lunter, Sidney Markowitz, Vladimir Minin, Michael Defoin Platel,
Oliver Pybus, Tim Vaughan, Chieh-Hsi Wu, Walter Xie
Thanks to:
Roald Forsberg, Beth Shapiro and Korbinian Strimmer
--- BEAGLE RESOURCES ---
0 : CPU
Flags: PRECISION_SINGLE PRECISION_DOUBLE COMPUTATION_SYNCH EIGEN_REAL EIGEN_COMPLEX SCALING_MANUAL SCALING_AUTO SCALING_ALWAYS SCALERS_RAW SCALERS_LOG VECTOR_SSE VECTOR_NONE THREADING_NONE PROCESSOR_CPU FRAMEWORK_CPU
1 : NVIDIA GeForce 940MX
Global memory (MB): 2048
Clock speed (Ghz): 1.19
Number of cores: 384
Flags: PRECISION_SINGLE PRECISION_DOUBLE COMPUTATION_SYNCH COMPUTATION_ASYNCH EIGEN_REAL EIGEN_COMPLEX SCALING_MANUAL SCALING_AUTO SCALING_ALWAYS SCALERS_RAW SCALERS_LOG VECTOR_NONE THREADING_NONE PROCESSOR_GPU FRAMEWORK_CUDA
2 : Intel(R) HD Graphics 620 (OpenCL 2.1 )
Global memory (MB): 3219
Clock speed (Ghz): 1.00
Number of compute units: 24
Flags: PRECISION_SINGLE PRECISION_DOUBLE COMPUTATION_SYNCH COMPUTATION_ASYNCH EIGEN_REAL EIGEN_COMPLEX SCALING_MANUAL SCALING_AUTO SCALING_ALWAYS SCALERS_RAW SCALERS_LOG VECTOR_NONE THREADING_NONE PROCESSOR_GPU FRAMEWORK_OPENCL
3 : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (OpenCL 2.1 (Build 10))
Global memory (MB): 8067
Clock speed (Ghz): 2.50
Number of compute units: 4
Flags: PRECISION_SINGLE PRECISION_DOUBLE COMPUTATION_SYNCH COMPUTATION_ASYNCH EIGEN_REAL EIGEN_COMPLEX SCALING_MANUAL SCALING_AUTO SCALING_ALWAYS SCALERS_RAW SCALERS_LOG VECTOR_NONE THREADING_NONE PROCESSOR_CPU FRAMEWORK_OPENCL
ANSWER
Answered 2022-Mar-17 at 14:59Could NOT find OpenCL (missing: OpenCL_LIBRARY OpenCL_INCLUDE_DIR)
This means that the CMake variables OpenCL_LIBRARY
and OpenCL_INCLUDE_DIR
are missing, because OpenCL could not be found.
Setting those two as environment variables changes nothing.
You need to tell CMake where things are, if they are not installed in standard directories (as seems to be the case with your OpenCL installation).
Try adding -DOCL_ROOT=path/to/base/of/your/OpenCL
to your call to CMake for a package-specific hint, or -DCMAKE_LIBRARY_PATH=path/to/...
to make CMake search in that path (in addition to standard paths) for any package it might be looking for. Make sure you cleaned away all cached files beforehand, so that CMake runs clean and does not use cached values.
QUESTION
I know my questions are similar to other questions but I could not figure it.
I am practicing javascript. I have arrays of emails. from that email I want to get three out puts of strings fullname, firstname and lastname inside one map function. I can able to get output first name by reading one stack-overflow questions. I am able get full name by I get output john.doe
, I want johndoe
. Could not figure it out last name doe
.
My example email address is like this: john.doe@co.uk
My expected output is
firstname: 'john'
fullname: johndoe
lastname: doe
This is my code
const Names = (emails) => {
emails.map(i => {
console.log("firstname", i.substring(0, i.indexOf(".")));
console.log("fullname", i.substring(0, i.lastIndexOf("@")));
console.log("lastname");
})
};
Names(emails)
const emails = [
"peter.pittman@taitos.com",
"ayden.reed@starkindustries.ss",
"kiefer.franks@amazonia.hk",
"oz.mcguire@tortelloni.zw",
"ellisandro.noble@bluthhousing.party",
"alyas.briggs@taitos.ninja",
"windsor.raymond@hungryhungyhippopottumoses.co.uk",
"daniyal.brock@hungryhungyhippopottumoses.ug",
"samatar.benson@duffbeer.org",
"jaime.freeman@gringottsbank.li",
"aaron.pace@starkindustries.org",
"guerin.mcgowan@taitos.li",
"believe.cote@virtucon.hk",
"abdalroof.ray@oscorp.co.uk",
"blake.barrett@tortelloni.org",
"bradlie.brooks@dundermifflin.ug",
"rayyan.garza@tortelloni.ug",
"declan.wood@dundermifflin.ug",
"tymon.blackburn@oscorp.com",
"joash.duffy@wonkaindustries.ug",
"aleksander.ford@umbrellacorporation.fi",
"jaida.colon@macrosloft.se",
"jevan.jensen@lospolloshermanos.zw",
"abubakar.palmer@dundermifflin.org",
"cator.joyce@lospolloshermanos.org",
"valen.henry@gringottsbank.co.uk",
"taylor-jay.blackburn@wonkaindustries.ug",
"leonardo.mcfadden@goldenstatuettes.co.uk",
"noel.schneider@hungryhungyhippopottumoses.co.uk",
"will.osborne@tasavallanpresidentti.com",
"arda.aguilar@oscorp.fi",
"omri.walls@virtucon.ug",
"lliam.briggs@tortelloni.se",
"kris.lester@amazonia.fi",
"skye.soto@wonkaindustries.se",
"dermot.vang@goldenstatuettes.com",
"cruiz.simmons@cookykitchens.co.uk",
"tymoteusz.riley@tortelloni.fi",
"kaidyn.hays@aperaturescience.party",
"apisai.fletcher@oscorp.co.uk",
"kedrick.mcfadden@cookykitchens.com",
"archibald.elliott@gringottsbank.hk",
"kjae.hurley@umbrellacorporation.com",
"tymon.nielsen@hungryhungyhippopottumoses.fi",
"james.dejesus@amazonia.party",
"reno.silva@gringottsbank.ug",
"tayyib.brooks@taitos.ss",
"cormack.alexander@duffbeer.ss",
"obieluem.guerra@umbrellacorporation.party",
"hector.moran@dundermifflin.co.uk",
"logan.parrish@wonkaindustries.com",
"robin.rivers@starkindustries.zw",
"albie.spence@tasavallanpresidentti.hk",
"qasim.schwartz@duffbeer.zw",
"aodhan.cooper@tasavallanpresidentti.org",
"eassan.hobbs@lospolloshermanos.org",
"parkash.juarez@wonkaindustries.party",
"teos.horton@haxhoont.se",
"kuba.larsen@duffbeer.ninja",
"eisa.beard@umbrellacorporation.li",
"hamza.french@starkindustries.org",
"sung.randall@taitos.ss",
"samir.bond@virtucon.org",
"conlyn.mckee@goldenstatuettes.com",
"thiago.hooper@starkindustries.com",
"demetrius.holland@macrosloft.zw",
"uchenna.oneill@hungryhungyhippopottumoses.zw",
"windsor.steele@hungryhungyhippopottumoses.fi",
"keiryn.macias@tasavallanpresidentti.org",
"kehinde.allen@cookykitchens.hk",
"yuri.ramirez@macrosloft.zw",
"ruan.perez@umbrellacorporation.org",
"dyllon.young@dundermifflin.zw",
"lockey.mcmahon@goldenstatuettes.fi",
"lyndsay.haynes@goldenstatuettes.ninja",
"dareh.grimes@macrosloft.co.uk",
"veeran.vinson@cookykitchens.fi",
"jayke.schroeder@lospolloshermanos.org",
"aronas.berry@bluthhousing.li",
"jonothan.donaldson@gringottsbank.zw",
"kenzeigh.weber@umbrellacorporation.se",
"cesare.huber@tasavallanpresidentti.com",
"uzair.harris@virtucon.ninja",
"kelan.yates@taitos.co.uk",
"thomson.gonzales@bluthhousing.co.uk",
"keaton.green@umbrellacorporation.hk",
"jazeb.kinney@duffbeer.co.uk",
"ronald.flores@starkindustries.hk",
"alastair.moses@umbrellacorporation.se",
"ogheneochuko.ratliff@aperaturescience.se",
"kenton.conley@gringottsbank.ninja",
"kashif.trujillo@bluthhousing.hk",
"saghun.ayers@taitos.hk",
"kamil.eaton@lospolloshermanos.org",
"bailee.henson@goldenstatuettes.li",
"alexei.stanton@haxhoont.li",
"basher.clarke@taitos.li",
]
const Names = (emails) => {
emails.map(i => {
console.log("firstname", i.substring(0, i.indexOf(".")));
console.log("fullname", i.substring(0, i.lastIndexOf("@")));
console.log("lastname");
})
};
Names(emails)
ANSWER
Answered 2021-Feb-19 at 05:44For fullname, you cane use replace(".", "")
to remove the '.' So for fullname it can be: i.substring(0, i.lastIndexOf("@")).replace(".", "")
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
QUESTION
See these two examples:
EXAMPLE 1
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService = Executors.newCachedThreadPool();
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
//work
for (int i = 0 ; i < 5 ; i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
executorService.execute(thread1);
executeService.shutdown();
}
EXAMPLE 2
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
//work
for (int i = 0 ; i < 5 ; i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
executeService.shutdown();
}
Results are the same in both cases but a friend of mine from StackOverflow alexei-kaigorodov (in this question) said in a comment that
"executorService is an alternative to treads. There is no sense to put threads in executorService. First, create Runnable, and then either put it as a parameter to a thread and start that thread or submit that runnable to an executorService."
I hope I am clear with my question, so please tell me the difference in passing runnable to ExecuteService vs. passing thread to ExecutableService.
ANSWER
Answered 2020-Oct-08 at 11:47Thread implements Runnable
so the excutor service will accept it as a simple Runnable
, and thus calls the Thread.run()
method.
Which means that the Thread
itself will never be started, unless you call its start()
method yourself, in which case the result is definetely undefined.
So you could say the snippets behave the same, you're only passing a Runnable
to the ExecutorService
and that then executes it by calling the Runnable.run()
method.
QUESTION
I've been trying to design a tool wherein I can do per-process tracing, but this implies that I need a key for each process so that I can store key-value map pairings for each process. I instinctually don't like using structs or strings as keys, and for a while I was considering how to access inode values for their use as keys. However there are numerous examples that use structures or strings as hashmap keys, and Alexei suggested that process names will be commonly used as a key. That said, I am unable to get a basic implementation of such a hashmap to work. Within the BPF program, the tracepoint isn't able to find the associated value with the process_name key. Perhaps I'm comparing memory locations and not the string literals as intended? Is there something going on under the hood with c_types that creates a mismatch between the keys?
from bcc import BPF
from bcc.utils import printb
from bcc.syscall import syscall_name, syscalls
from ctypes import *
b = BPF(text = """
struct procName {
char name[16];
};
BPF_HASH(attempt, struct procName, u32);
TRACEPOINT_PROBE(raw_syscalls, sys_exit)
{
u32 *val;
struct procName hKey;
bpf_get_current_comm(hKey.name,16);
val = attempt.lookup(&hKey);
if (val)
{
bpf_trace_printk("Hello world, I have value %d!\\n", *val);
}
return 0;
}
""")
class procName(Structure):
_fields_ = [("name", (c_char_p*16))]
myFirst = procName(('p','y','t','h','o','n','\0'))
trialUpload[myFirst] = c_int(10)
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except KeyboardInterrupt:
print("Detaching")
exit()
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
ANSWER
Answered 2020-Apr-25 at 20:39The error in the original code has nothing to do with BCC & BPF and lies within my implemention of ctypes. For starters --
class procName(Structure):
_fields_ = [("name", (c_char_p*16))]
creates a structure with the field "name". In the above definition, name will be of type *char[16] when I want a char[16]. Second, while this
myFirst = procName(('p','y','t','h','o','n','\0'))
might work, its not the best practice initialization. This is the correct approach --
class procName(Structure):
_fields_ = [("name", (c_char*16))]
s = "python"
mySecond = procName()
mySecond.name = s
Thus, the full program incorporating a process_name based key and implementation of such to pass data from python is then..
from bcc import BPF
from bcc.utils import printb
from bcc.syscall import syscall_name, syscalls
import ctypes
from ctypes import *
b = BPF(text = """
#include
struct procName {
char name[16];
};
BPF_HASH(attempt, struct procName, u32);
TRACEPOINT_PROBE(raw_syscalls, sys_exit)
{
u32 *myVal;
struct procName key;
bpf_get_current_comm(&(key.name),16);
myVal = attempt.lookup(&key);
if (myVal)
{
bpf_trace_printk("values: %d\\n", *myVal);
}
return 0;
}
""")
class procName(Structure):
_fields_ = [("name", (c_char*16))]
trialUpload = b["attempt"]
s = "python"
mySecond = procName()
mySecond.name = s
trialUpload[mySecond] = c_int(5)
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except KeyboardInterrupt:
print("Detaching")
exit()
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
QUESTION
android studio 3.6
I want to set version name to Text widget.
here my snippet:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:package_info/package_info.dart';
import 'constants.dart' as Constants;
class SignInForm extends StatefulWidget {
@override
State createState() {
return new _SignInFormState();
}
}
class _SignInFormState extends State {
final _formKey = GlobalKey();
String _textVersion;
@override
Widget build(BuildContext context) {
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
_textVersion =
"ver" + packageInfo.version + "(" + packageInfo.buildNumber + ")";
});
return Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text('Sign in',
style: TextStyle(fontWeight: FontWeight.bold))),
body: new Container(
child: new Text(_textVersion)));
}
}
in logcat I get error:
I/flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter: The following assertion was thrown building SignInForm(dirty, state: _SignInFormState#61fee):
I/flutter: A non-null String must be provided to a Text widget.
I/flutter: 'package:flutter/src/widgets/text.dart':
I/flutter: Failed assertion: line 302 pos 10: 'data != null'
I/flutter: The relevant error-causing widget was:
I/flutter: SignInForm file:///home/alexei/dev/Tango-flutter/ios-flutter/lib/main.dart:19:19
I/flutter: When the exception was thrown, this was the stack:
I/flutter: #2 new Text (package:flutter/src/widgets/text.dart:302:10)
I/flutter: #3 _SignInFormState.build (package:flutter_sample/signinform.dart:33:24)
I/flutter: #4 StatefulElement.build (package:flutter/src/widgets/framework.dart:4619:28)
I/flutter: #5 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4502:15)
I/flutter: #6 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
I/flutter: #7 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
I/flutter: #8 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
I/flutter: #9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4666:11)
I/flutter: #10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
I/flutter: ... Normal element mounting (115 frames)
I/flutter: #125 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
I/flutter: #126 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5947:32)
I/flutter: ... Normal element mounting (238 frames)
I/flutter: #364 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
I/flutter: #365 Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
I/flutter: #366 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1142:16)
I/flutter: #367 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1113:5)
I/flutter: #368 RenderObjectToWidgetAdapter.attachToRenderTree. (package:flutter/src/widgets/binding.dart:1055:17)
I/flutter: #369 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2607:19)
I/flutter: #370 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1054:13)
I/flutter: #371 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:935:7)
I/flutter: #372 WidgetsBinding.scheduleAttachRootWidget. (package:flutter/src/widgets/binding.dart:917:7)
I/flutter: (elided 13 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
I/flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
ANSWER
Answered 2020-Mar-23 at 14:42First of all, you should not do anything costly in your build method. Second, _textVersion is null at first when you try to initialize it into the Text because the below line of code will run sometime after the Text is initialized in build.
_textVersion =
"ver" + packageInfo.version + "(" + packageInfo.buildNumber + ")";
Move your code to the initiState method.
class SignInForm extends StatefulWidget {
@override
_SignInFormState createState() => _SignInFormState();
}
class _SignInFormState extends State {
String _textVersion = "";
@override
void initState() {
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
setState(() {
_textVersion =
"ver" + packageInfo.version + "(" + packageInfo.buildNumber + ")";
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text('Sign in',
style: TextStyle(fontWeight: FontWeight.bold))),
body: new Container(child: new Text(_textVersion)));
}
}
Or you can also create and call another async function from initState, since initState cannot be marked async.
@override
void initState() {
getVersion();
super.initState();
}
void getVersion() async{
final packageInfo= await PackageInfo.fromPlatform();
setState(() {
_textVersion =
"ver" + packageInfo.version + "(" + packageInfo.buildNumber + ")";
});
}
QUESTION
I am writing a GSON (Java) parser for the CORD19 dataset https://pages.semanticscholar.org/coronavirus-research of about 40K scientific papers which have been made open for everyone. I want to iterate over the JSON tree using GSON and convert them to HTML. In particular I want to iterate over the entries of the JsonObject elements.
Q1: If anyone has already written an F/OSS CORD19 parser in GSON or other Java parser I'd be delighted.
My specific problem is to iterate over the fields (entries) of a JsonObject.
Data (heavily snipped, but hopefully parsable if snips removed):
{
"paper_id": "b801b7f92cff2155d98f0e3404229c67b60e2f9f",
"metadata": {
"title": "Realtime 2-5A kinetics suggests interferons \u03b2 and \uf06c evade global arrest of translation by RNase L",
"authors": [
{
"first": "Alisha",
"middle": [],
"last": "Chitrakar",
"suffix": "",
"affiliation": {},
"email": ""
},
... SNIPPED
{
"first": "Alexei",
"middle": [],
"last": "Korennykh",
"suffix": "",
"affiliation": {},
"email": "akorenny@princeton.edu"
}
]
},
"abstract": [
{
"text": "Cells of all mammals recognize double-stranded RNA (dsRNA) as a foreign material. ...",
"cite_spans": [],
"ref_spans": [],
"section": "Abstract"
},
... SNIPPED
{
"text": "The 2-5A system is also a surveillance pathway for ...",
"cite_spans": [],
"ref_spans": [],
"section": "Abstract"
}
],
"body_text": [
{
"text": "Interferons IFNs of type I (\uf061 and \u03b2) and type III ...",
"cite_spans": [],
"ref_spans": [],
"section": "Introduction"
},
{
"text": "To evaluate how the nuclear envelope ...",
"cite_spans": [
{
"start": 382,
"end": 384,
"text": "50",
"ref_id": null
}
],
"ref_spans": [],
"section": "Diffusion calculations"
}
],
"bib_entries": {
"BIBREF0": {
"ref_id": "b0",
"title": "Higher-order substrate recognition of eIF2alpha by the RNA-dependent protein kinase PKR",
"authors": [
{
"first": "A",
"middle": [
"C"
],
"last": "Dar",
"suffix": ""
},
... SNIPPED
{
"first": "F",
"middle": [],
"last": "Sicheri",
"suffix": ""
}
],
"year": 2005,
"venue": "Cell",
"volume": "122",
"issn": "",
"pages": "887--900",
"other_ids": {}
},
"BIBREF1": {
"ref_id": "b1",
"title": "Increased nuclease activity in cells treated with pppA2'p5'A2'p5' A",
"authors": [
{
"first": "A",
"middle": [
"G"
],
"last": "Hovanessian",
"suffix": ""
},
... SNIPPED
{
"first": "L",
"middle": [],
"last": "Montagnier",
"suffix": ""
}
],
"year": 1979,
"venue": "Proc Natl Acad Sci U S A",
"volume": "76",
"issn": "",
"pages": "3261--3266",
"other_ids": {}
},
"BIBREF2": {
"ref_id": "b2",
"title": "Interferon action--sequence specificity of the ppp(A2'p)nA-dependent ribonuclease",
"authors": [
{
"first": "D",
"middle": [
"H"
],
"last": "Wreschner",
"suffix": ""
},
... SNIPPED
{
"first": "I",
"middle": [
"M"
],
"last": "Kerr",
"suffix": ""
}
],
"year": 1981,
"venue": "Nature",
"volume": "289",
"issn": "",
"pages": "414--421",
"other_ids": {}
},
... SNIPPED
"BIBREF47": {
"ref_id": "b47",
"title": "Size-dependent DNA mobility in cytoplasm and nucleus",
"authors": [
{
"first": "G",
"middle": [
"L"
],
"last": "Lukacs",
"suffix": ""
}
],
"year": 2000,
"venue": "J Biol Chem",
"volume": "275",
"issn": "",
"pages": "1625--1634",
"other_ids": {}
},
"BIBREF48": {
"ref_id": "b48",
"title": "Modeling transmembrane transport through cell membrane wounds created by acoustic cavitation",
"authors": [
{
"first": "V",
"middle": [],
"last": "Zarnitsyn",
"suffix": ""
},
... SNIPPED
{
"first": "M",
"middle": [
"R"
],
"last": "Prausnitz",
"suffix": ""
}
],
"year": 2008,
"venue": "Biophys J",
"volume": "95",
"issn": "",
"pages": "4124--4162",
"other_ids": {}
}
},
... SNIPPED
"back_matter": [
{
"text": "We are grateful to Prof. Bonnie Bassler (Princeton University) for All NS All NS NS ** All ****",
"cite_spans": [],
"ref_spans": [],
"section": "Acknowledgments:"
}
]
}
There is a schema on the CORD-19 site, but entries such as BIBREF1 ... BIBREF48
vary in number over each data set. (Q what is the precise name for a BIBREF
object - entry? Child?)
My current code is:
@Test
public void testReadJSON() {
File jsonFile = new File(BIORXIV_MEDRXIV, "b801b7f92cff2155d98f0e3404229c67b60e2f9f.json");
JsonObject oo = null;
try {
String resultsJsonString = IOUtils.toString(new FileInputStream(jsonFile), "UTF-8");
JsonParser parser = new JsonParser();
oo = (JsonObject) parser.parse(resultsJsonString);
} catch (Exception e) {
throw new RuntimeException("Cannot read CORD19 file: "+jsonFile, e);
}
String paperId = oo.get("paper_id").getAsString();
System.out.println("id: "+paperId);
JsonElement metadata = oo.get("metadata");
JsonObject metadataObject = metadata.getAsJsonObject();
String title = metadataObject.get("title").getAsString();
System.out.println("title: "+title);
JsonElement authorsObject = metadataObject.get("authors");
System.out.println("Auth: "+authorsObject);
JsonArray authors = authorsObject.getAsJsonArray();
for (int i = 0; i < authors.size(); i++) {
System.out.println(authors.get(i));
}
JsonElement abstrakt = oo.get("abstract");
System.out.println("abstract: "+abstrakt);
JsonArray texts = abstrakt.getAsJsonArray();
for (int i = 0; i < texts.size(); i++) {
System.out.println(texts.get(i));
}
JsonElement bodyText = oo.get("body_text");
System.out.println("bodyText: "+bodyText);
texts = bodyText.getAsJsonArray();
for (int i = 0; i < texts.size(); i++) {
System.out.println(texts.get(i));
}
JsonElement bibEntries = oo.get("bib_entries");
System.out.println("bibEntries: "+bibEntries.getClass()+bibEntries);
JsonObject obj = bibEntries.getAsJsonObject();
// WHAT TO WRITE HERE?
}
}
(Additional Q. I am learning Java8 so would appreciate answers in Java8 streams as well as Java7)
(Additional Q. [I would not normally "advertise" on Stack Overflow, but these are not normal times, and think this will help save lives, and provide opportunities for Stack Overflow members to contribute skills] I have set up volunteer projects to hack this dataset. I have had many years of extracting knowledge from scientific papers and believe that the existing papers may contain valuable pointers to new scientific knowledge.
- A GitHub project at https://github.com/petermr/openVirus
- A Wikimedia project at https://en.wikiversity.org/wiki/WikiJournal_Preprints/Aggregation_of_scholarly_publications_and_extracted_knowledge_on_COVID19_and_epidemics using Wikidata to annotate articles.
Also - does Stack Overflow have a way of collecting expertise that can be re-used specifically for COVID-19?
ANSWER
Answered 2020-Mar-23 at 09:59GSON's JsonObject offers the entrySet()
method for iterating the contents.
for(Map.Entry entry : obj.entrySet()) {
String key = entry.getKey(); // BIBREF0
JsonElement value = entry.getValue(); // details, can be cast to JsonObject
processBibRef((JsonObject)value); // For example
}
Streams won't help much here, but separate methods for subelements should be used to structure the code better, as in the example.
As can be seen, manually parsing JSON is cumbersome with Java, and when you're transforming JSON to for example HTML, the extra step of converting to objects makes other less typesafe languages such as Javascript more attractive.
QUESTION
Learning Datomic, and having trouble with a basic case. Given a simple schema containing:
:club/name
:club/members (ref, cardinality many)
and
:people/name
So it might be populated (basically) like this:
[
{:club/name "Carpentry" :club/members [:person/name "liliana" :person/name "alexei"}]}
{:club/name "Taxidermy" :club/members [:person/name "karenna" :person/name "alexei"}]}
etc.
]
I want to do a reverse navigation to find "all the clubs 'alexei' is in". If I do this, I get only one club:
d/q '[:find (pull ?g [ {:club/_members [:club/name]}])
:in $
:where
[?g :person/name "alexei"]
]
(d/db conn))
I would expect to get two hits for this example data. Am I modeling it backwards? Do I have to create a separate entity to express person-in-club?
Thanks much!
ANSWER
Answered 2020-Jan-11 at 22:48I'm learning Datomic too, currently, I'm using Datahike because the syntax is similar & easier to dev on imo
Anyway I tried your example and came up with this:
(ns club
(:require [datahike.api :as d]))
(def schema
[{:db/ident :person/name
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :club/name
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :club/members
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many}])
(def database "datahike:mem://example")
(def data
[{:club/name "Carpentry" :club/members [{:person/name "liliana"} {:person/name "alexei"}]}
{:club/name "Taxidermy" :club/members [{:person/name "karenna"} {:person/name "alexei"}]}])
(comment
(d/create-database database)
(def conn (d/connect database))
(d/transact conn schema)
(d/transact conn data)
(d/q '[:find (pull ?e [{:club/_members [:club/name]}])
:where [?e :person/name "alexei"]]
@conn))
Result:
([#:club{:_members [#:club{:name "Carpentry"}]}] [#:club{:_members [#:club{:name "Taxidermy"}]}])
Which I think is what you were looking for
There are two things that stand out to me in your comment that might have caused issue:
- Your schema says
people/name
but your data saysperson/name
- The club members vector in your data looks like it's mixing
[
{
I think you need a vector of two maps in there
But those issues might not be in your source code, could debug further if you'd like to share your source code
Hope this helps
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install Alexei
You can use Alexei like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the Alexei component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .
Support
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesExplore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits
Save this library and start creating your kit
Share this Page