From 1a42a5c10d401b932e81a9e3ebedbb9e875592f6 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Wed, 10 Jan 2024 18:03:20 +0100 Subject: [PATCH 01/10] Implemented Download update of ORCID --- .../dhp/collection/orcid/ORCIDWorker.java | 236 ++++++++++++++++++ .../collection/orcid/OrcidGetUpdatesFile.java | 133 ++++++++++ .../download_orcid_update_parameter.json | 27 ++ .../collection/orcid/DownloadORCIDTest.java | 21 ++ .../provision/IndexRecordTransformerTest.java | 2 +- 5 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java new file mode 100644 index 000000000..9560c36a2 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -0,0 +1,236 @@ +package eu.dnetlib.dhp.collection.orcid; + +import eu.dnetlib.dhp.common.collection.HttpClientParams; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.io.SequenceFile; +import org.apache.hadoop.io.Text; +import org.apache.http.HttpHeaders; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.*; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.concurrent.BlockingQueue; + +public class ORCIDWorker extends Thread { + + final static Logger log = LoggerFactory.getLogger(ORCIDWorker.class); + + public static String JOB_COMPLETE="JOB_COMPLETE"; + + private static final String userAgent = "Mozilla/5.0 (compatible; OAI; +http://www.openaire.eu)"; + + private final BlockingQueue queue; + + private boolean hasComplete = false; + + private final SequenceFile.Writer employments; + + private final SequenceFile.Writer summary; + private final SequenceFile.Writer works; + + private final String token; + + private final String id; + + public static ORCIDWorkerBuilder builder() { + return new ORCIDWorkerBuilder(); + } + + public ORCIDWorker(String id, BlockingQueue myqueue, SequenceFile.Writer employments, SequenceFile.Writer summary, SequenceFile.Writer works, String token) { + this.id= id; + this.queue = myqueue; + this.employments = employments; + this.summary = summary; + this.works = works; + this.token = token; + } + + + public static String retrieveURL(final String id,final String apiUrl, String token) { + try { + final HttpURLConnection urlConn = getHttpURLConnection(apiUrl, token); + if (urlConn.getResponseCode()>199 && urlConn.getResponseCode()<300) { + InputStream input = urlConn.getInputStream(); + return IOUtils.toString(input); + } else { + log.error("Thread {} UNABLE TO DOWNLOAD FROM THIS URL {} , status code {}",id, apiUrl,urlConn.getResponseCode()); + } + } catch (Exception e) { + log.error("Thread {} Error on retrieving URL {} {}",id,apiUrl, e); + } + return null; + } + + @NotNull + private static HttpURLConnection getHttpURLConnection(String apiUrl, String token) throws IOException { + final HttpURLConnection urlConn = (HttpURLConnection) new URL(apiUrl).openConnection(); + final HttpClientParams clientParams = new HttpClientParams(); + urlConn.setInstanceFollowRedirects(false); + urlConn.setReadTimeout(clientParams.getReadTimeOut() * 1000); + urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); + urlConn.addRequestProperty(HttpHeaders.USER_AGENT, userAgent); + urlConn.addRequestProperty(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token)); + return urlConn; + } + + private static String generateSummaryURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/record"; + } + + private static String generateWorksURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/works"; + } + private static String generateEmploymentsURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/employments"; + } + + + private static void writeResultToSequenceFile(String id, String url, String token, String orcidId, SequenceFile.Writer file) throws IOException { + final String response = retrieveURL(id, url,token); + if (response!= null) { + + if(orcidId==null || response ==null){ + log.error("Thread {} {} {}",id, orcidId, response); + throw new RuntimeException("null items "); + } + + if(file==null) { + log.error("Thread {} file is null for {} URL:{}",id, url, orcidId); + } + else + file.append(new Text(orcidId),new Text(response)); + } + + } + + + @Override + public void run() { + final Text key = new Text(); + final Text value = new Text(); + long start; + long total_time; + String orcidId=""; + int requests =0; + if(summary==null || employments==null || works == null) + throw new RuntimeException("Null files"); + + while (!hasComplete) { + try { + + orcidId = queue.take(); + + if (orcidId.equalsIgnoreCase(JOB_COMPLETE)) { + queue.put(orcidId); + hasComplete = true; + } else { + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateSummaryURL(orcidId), token,orcidId, summary); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + Thread.sleep(1000L - total_time); + } + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateWorksURL(orcidId),token,orcidId, works); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + Thread.sleep(1000L - total_time); + } + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateEmploymentsURL(orcidId),token,orcidId, employments); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + Thread.sleep(1000L - total_time); + } + if (requests %30 ==0) + { + log.info("Thread {} Downloaded {}",id, requests); + } + } + + + } catch (Throwable e) { + + log.error("Thread {} Unable to save ORICD: {} item error",id, orcidId,e); + + } + + } + try { + works.close(); + summary.close(); + employments.close(); + } catch (Throwable e) { + throw new RuntimeException(e); + } + + + log.info("Thread {} COMPLETE ", id); + log.info("Thread {} Downloaded {}", id, requests); + + } + + + public static class ORCIDWorkerBuilder { + + private String id; + private SequenceFile.Writer employments; + private SequenceFile.Writer summary; + private SequenceFile.Writer works; + private BlockingQueue queue; + + private String token; + + public ORCIDWorkerBuilder withId(final String id) { + this.id =id; + return this; + } + + public ORCIDWorkerBuilder withEmployments(final SequenceFile.Writer sequenceFile) { + this.employments = sequenceFile; + return this; + } + + + public ORCIDWorkerBuilder withSummary(final SequenceFile.Writer sequenceFile) { + this.summary = sequenceFile; + return this; + } + + public ORCIDWorkerBuilder withWorks(final SequenceFile.Writer sequenceFile) { + this.works = sequenceFile; + return this; + } + + public ORCIDWorkerBuilder withAccessToken(final String accessToken) { + this.token = accessToken; + return this; + } + + public ORCIDWorkerBuilder withBlockingQueue(final BlockingQueue queue) { + this.queue = queue; + return this; + } + + + public ORCIDWorker build() { + if (this.summary== null || this.works==null || this.employments == null || StringUtils.isEmpty(token) || queue == null) + throw new RuntimeException("Unable to build missing required params"); + return new ORCIDWorker(id, queue,employments,summary,works,token); + } + + + + } + + +} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java new file mode 100644 index 000000000..3bfe72328 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -0,0 +1,133 @@ + +package eu.dnetlib.dhp.collection.orcid; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +import eu.dnetlib.dhp.common.collection.HttpClientParams; +import org.apache.commons.compress.archivers.tar.TarArchiveEntry; +import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; +import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.SequenceFile; +import org.apache.hadoop.io.Text; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.dnetlib.dhp.application.ArgumentApplicationParser; + +import static eu.dnetlib.dhp.utils.DHPUtils.getHadoopConfiguration; + +public class OrcidGetUpdatesFile { + + private static Logger log = LoggerFactory.getLogger(OrcidGetUpdatesFile.class); + + public static void main(String[] args) throws IOException { + + ArgumentApplicationParser parser = new ArgumentApplicationParser( + "/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json"); + + final String namenode = parser.get("namenode"); + log.info("got variable namenode: {}", namenode); + + final String targetPath = parser.get("targetPath"); + log.info("got variable targetPath: {}", targetPath); + + //http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar + final String apiURL = parser.get("apiURL"); + log.info("got variable apiURL: {}", apiURL); + + final String accessToken = parser.get("accessToken"); + log.info("got variable accessToken: {}", accessToken); + + + + final FileSystem fileSystem = FileSystem.get(getHadoopConfiguration(namenode)); + + + } + + private SequenceFile.Writer createFile(Path aPath, FileSystem fileSystem) throws IOException { + return SequenceFile + .createWriter( + fileSystem.getConf(), + SequenceFile.Writer.file(aPath), + SequenceFile.Writer.keyClass(Text.class), + SequenceFile.Writer.valueClass(Text.class)); + } + + + private ORCIDWorker createWorker(final String id, final String targetPath, final BlockingQueue queue, final String accessToken, FileSystem fileSystem) throws Exception { + return ORCIDWorker.builder() + .withId(id) + .withEmployments(createFile(new Path(String.format("%s/employments_%s", targetPath, id)), fileSystem)) + .withSummary(createFile(new Path(String.format("%s/summary_%s", targetPath, id)), fileSystem)) + .withWorks(createFile(new Path(String.format("%s/works_%s", targetPath, id)), fileSystem)) + .withAccessToken(accessToken) + .withBlockingQueue(queue) + .build(); + } + + + + public void readTar(FileSystem fileSystem, final String accessToken, final String apiURL, final String targetPath, final String startDate ) throws Exception { + final HttpURLConnection urlConn = (HttpURLConnection) new URL(apiURL).openConnection(); + final HttpClientParams clientParams = new HttpClientParams(); + urlConn.setInstanceFollowRedirects(false); + urlConn.setReadTimeout(clientParams.getReadTimeOut() * 1000); + urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); + if (urlConn.getResponseCode()>199 && urlConn.getResponseCode()<300) { + InputStream input = urlConn.getInputStream(); + TarArchiveInputStream tais = new TarArchiveInputStream(new GzipCompressorInputStream( + new BufferedInputStream( + input))); + TarArchiveEntry entry; + + BlockingQueue queue = new ArrayBlockingQueue(3000); + final List workers = new ArrayList<>(); + for (int i = 0; i <20; i++) { + workers.add(createWorker(""+i,targetPath,queue,accessToken, fileSystem)); + } + workers.forEach(Thread::start); + + + while ((entry = tais.getNextTarEntry()) != null) { + + if (entry.isFile()) { + + BufferedReader br = new BufferedReader(new InputStreamReader(tais)); + System.out.println(br.readLine()); + br.lines().map(l -> l.split(",")).filter(s -> StringUtils.compare(s[3].substring(0, 10), startDate) > 0).map(s->s[0]).limit(200).forEach(s -> { + try { + log.info("Adding item "); + queue.put(s); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + queue.put(ORCIDWorker.JOB_COMPLETE); + + } + } + + for (ORCIDWorker worker : workers) { + worker.join(); + } + + + } + + + + + + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json new file mode 100644 index 000000000..dbadf86cb --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json @@ -0,0 +1,27 @@ +[ + { + "paramName": "n", + "paramLongName": "namenode", + "paramDescription": "the Name Node URI", + "paramRequired": true + }, + { + "paramName": "t", + "paramLongName": "targetPath", + "paramDescription": "the target PATH where download the files", + "paramRequired": true + }, + { + "paramName": "a", + "paramLongName": "apiURL", + "paramDescription": "the URL to download the tar file", + "paramRequired": true + }, + { + "paramName": "at", + "paramLongName": "accessToken", + "paramDescription": "the accessToken to contact API", + "paramRequired": true + } + +] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java index 868f4e92d..dc0393dc5 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java @@ -2,6 +2,7 @@ package eu.dnetlib.dhp.collection.orcid; import java.io.IOException; +import java.net.URI; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -9,7 +10,12 @@ import java.util.Objects; import org.apache.commons.io.IOUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocalFileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; +import org.apache.hadoop.io.compress.CompressionCodec; +import org.apache.hadoop.io.compress.CompressionCodecFactory; import org.apache.spark.SparkContext; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.Encoders; @@ -116,4 +122,19 @@ public class DownloadORCIDTest { }); } +// @Test +// public void testReadTar() throws Exception { +//// new OrcidGetUpdatesFile().readTar(); +// +// Configuration conf = new Configuration(); +// FileSystem fs = FileSystem.get(URI.create("file:///"), conf); +// final String token ="78fdb232-7105-4086-8570-e153f4198e3d"; +// +// new OrcidGetUpdatesFile().readTar(fs,token, "http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar", "file:///Users/sandro/orcid","2023-09-30"); +// +// +// +// +// } + } diff --git a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/IndexRecordTransformerTest.java b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/IndexRecordTransformerTest.java index e07ba1b4e..e72883055 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/IndexRecordTransformerTest.java +++ b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/IndexRecordTransformerTest.java @@ -82,7 +82,7 @@ public class IndexRecordTransformerTest { void testPeerReviewed() throws IOException, TransformerException { final XmlRecordFactory xmlRecordFactory = new XmlRecordFactory(contextMapper, false, - XmlConverterJob.schemaLocation); + XmlConverterJob.schemaLocation); final Publication p = load("publication.json", Publication.class); From 8f61063201720534116a092b375131415ac149e7 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Wed, 10 Jan 2024 19:42:22 +0100 Subject: [PATCH 02/10] Added workflow --- .../collection/orcid/OrcidGetUpdatesFile.java | 2 +- .../orcid/update/oozie_app/config-default.xml | 23 +++++++ .../orcid/update/oozie_app/workflow.xml | 69 +++++++++++++++++++ 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/config-default.xml create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index 3bfe72328..39da749e2 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -41,7 +41,7 @@ public class OrcidGetUpdatesFile { final String targetPath = parser.get("targetPath"); log.info("got variable targetPath: {}", targetPath); - //http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar + final String apiURL = parser.get("apiURL"); log.info("got variable apiURL: {}", apiURL); diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/config-default.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/config-default.xml new file mode 100644 index 000000000..dd3c32c62 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/config-default.xml @@ -0,0 +1,23 @@ + + + jobTracker + yarnRM + + + nameNode + hdfs://nameservice1 + + + oozie.use.system.libpath + true + + + oozie.action.sharelib.for.spark + spark2 + + + + oozie.launcher.mapreduce.user.classpath.first + true + + \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml new file mode 100644 index 000000000..74a88bae6 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml @@ -0,0 +1,69 @@ + + + + targetPath + the path to store the original ORCID dump + + + apiURL + The URL of the update CSV list + http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar + + + accessToken + The access tocken + + + + + + + + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] + + + + + + + oozie.launcher.mapreduce.user.classpath.first + true + + + eu.dnetlib.dhp.collection.orcid.OrcidGetUpdatesFile + --namenode${nameNode} + --targetPath${targetPath} + --apiURL${apiURL} + --accessToken${accessToken} + + + + + + + + yarn + cluster + Generate ORCID Tables + eu.dnetlib.dhp.collection.orcid.SparkGenerateORCIDTable + dhp-aggregation-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.executor.memoryOverhead=2g + --conf spark.sql.shuffle.partitions=3000 + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + + --sourcePath${targetPath}/extracted + --targetPath${targetPath}/tables + --masteryarn + + + + + + \ No newline at end of file From 9d5a7c3b2254d90ccaa7ac85a89c063d9a0ea5c8 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Wed, 10 Jan 2024 19:42:34 +0100 Subject: [PATCH 03/10] code refactor --- .../dhp/oa/provision/XmlIndexingJobTest.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlIndexingJobTest.java b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlIndexingJobTest.java index b62acbac3..a3a140cf6 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlIndexingJobTest.java +++ b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlIndexingJobTest.java @@ -1,6 +1,8 @@ package eu.dnetlib.dhp.oa.provision; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.io.IOException; import java.io.StringReader; import java.net.URI; @@ -32,8 +34,6 @@ import eu.dnetlib.dhp.oa.provision.utils.ISLookupClient; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; -import static org.junit.jupiter.api.Assertions.assertEquals; - @ExtendWith(MockitoExtension.class) public class XmlIndexingJobTest extends SolrTest { @@ -110,34 +110,33 @@ public class XmlIndexingJobTest extends SolrTest { QueryResponse rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "*:*")); assertEquals( - nRecord, rsp.getResults().getNumFound(), - "the number of indexed records should be equal to the number of input records"); - + nRecord, rsp.getResults().getNumFound(), + "the number of indexed records should be equal to the number of input records"); rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "isgreen:true")); assertEquals( - 0, rsp.getResults().getNumFound(), - "the number of indexed records having isgreen = true"); + 0, rsp.getResults().getNumFound(), + "the number of indexed records having isgreen = true"); rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "openaccesscolor:bronze")); assertEquals( - 0, rsp.getResults().getNumFound(), - "the number of indexed records having openaccesscolor = bronze"); + 0, rsp.getResults().getNumFound(), + "the number of indexed records having openaccesscolor = bronze"); rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "isindiamondjournal:true")); assertEquals( - 0, rsp.getResults().getNumFound(), - "the number of indexed records having isindiamondjournal = true"); + 0, rsp.getResults().getNumFound(), + "the number of indexed records having isindiamondjournal = true"); rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "publiclyfunded:true")); assertEquals( - 0, rsp.getResults().getNumFound(), - "the number of indexed records having publiclyfunded = true"); + 0, rsp.getResults().getNumFound(), + "the number of indexed records having publiclyfunded = true"); rsp = miniCluster.getSolrClient().query(new SolrQuery().add(CommonParams.Q, "peerreviewed:true")); assertEquals( - 0, rsp.getResults().getNumFound(), - "the number of indexed records having peerreviewed = true"); + 0, rsp.getResults().getNumFound(), + "the number of indexed records having peerreviewed = true"); } @Test From 859babf7223990d0f5146fb6dc45dd73a251127a Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Wed, 10 Jan 2024 19:51:13 +0100 Subject: [PATCH 04/10] added some useful comment --- .../java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java index 9560c36a2..0abebd8b8 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -135,6 +135,8 @@ public class ORCIDWorker extends Thread { total_time = System.currentTimeMillis() - start; requests++; if (total_time < 1000) { + //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence + //the time between two http request in a thread must be 1 second Thread.sleep(1000L - total_time); } start = System.currentTimeMillis(); @@ -142,6 +144,8 @@ public class ORCIDWorker extends Thread { total_time = System.currentTimeMillis() - start; requests++; if (total_time < 1000) { + //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence + //the time between two http request in a thread must be 1 second Thread.sleep(1000L - total_time); } start = System.currentTimeMillis(); @@ -149,6 +153,8 @@ public class ORCIDWorker extends Thread { total_time = System.currentTimeMillis() - start; requests++; if (total_time < 1000) { + //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence + //the time between two http request in a thread must be 1 second Thread.sleep(1000L - total_time); } if (requests %30 ==0) From e328bc0adea9befeb00005f08ffe78fcc20da6fc Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" <@lice29> Date: Fri, 12 Jan 2024 16:18:20 +0100 Subject: [PATCH 05/10] fixed missing parameter on download update --- .../dhp/collection/orcid/ORCIDWorker.java | 372 +++++++++--------- .../collection/orcid/OrcidGetUpdatesFile.java | 125 +++--- .../download_orcid_update_parameter.json | 4 +- .../orcid/update/oozie_app/workflow.xml | 4 +- .../collection/orcid/DownloadORCIDTest.java | 13 +- 5 files changed, 259 insertions(+), 259 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java index 0abebd8b8..544262043 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -1,6 +1,14 @@ + package eu.dnetlib.dhp.collection.orcid; -import eu.dnetlib.dhp.common.collection.HttpClientParams; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.concurrent.BlockingQueue; + +import javax.swing.*; + import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.io.SequenceFile; @@ -10,233 +18,225 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.swing.*; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.concurrent.BlockingQueue; +import eu.dnetlib.dhp.common.collection.HttpClientParams; public class ORCIDWorker extends Thread { - final static Logger log = LoggerFactory.getLogger(ORCIDWorker.class); + final static Logger log = LoggerFactory.getLogger(ORCIDWorker.class); - public static String JOB_COMPLETE="JOB_COMPLETE"; + public static String JOB_COMPLETE = "JOB_COMPLETE"; - private static final String userAgent = "Mozilla/5.0 (compatible; OAI; +http://www.openaire.eu)"; + private static final String userAgent = "Mozilla/5.0 (compatible; OAI; +http://www.openaire.eu)"; - private final BlockingQueue queue; + private final BlockingQueue queue; - private boolean hasComplete = false; + private boolean hasComplete = false; - private final SequenceFile.Writer employments; + private final SequenceFile.Writer employments; - private final SequenceFile.Writer summary; - private final SequenceFile.Writer works; + private final SequenceFile.Writer summary; + private final SequenceFile.Writer works; - private final String token; + private final String token; - private final String id; + private final String id; - public static ORCIDWorkerBuilder builder() { - return new ORCIDWorkerBuilder(); - } + public static ORCIDWorkerBuilder builder() { + return new ORCIDWorkerBuilder(); + } - public ORCIDWorker(String id, BlockingQueue myqueue, SequenceFile.Writer employments, SequenceFile.Writer summary, SequenceFile.Writer works, String token) { - this.id= id; - this.queue = myqueue; - this.employments = employments; - this.summary = summary; - this.works = works; - this.token = token; - } + public ORCIDWorker(String id, BlockingQueue myqueue, SequenceFile.Writer employments, + SequenceFile.Writer summary, SequenceFile.Writer works, String token) { + this.id = id; + this.queue = myqueue; + this.employments = employments; + this.summary = summary; + this.works = works; + this.token = token; + } + public static String retrieveURL(final String id, final String apiUrl, String token) { + try { + final HttpURLConnection urlConn = getHttpURLConnection(apiUrl, token); + if (urlConn.getResponseCode() > 199 && urlConn.getResponseCode() < 300) { + InputStream input = urlConn.getInputStream(); + return IOUtils.toString(input); + } else { + log + .error( + "Thread {} UNABLE TO DOWNLOAD FROM THIS URL {} , status code {}", id, apiUrl, + urlConn.getResponseCode()); + } + } catch (Exception e) { + log.error("Thread {} Error on retrieving URL {} {}", id, apiUrl, e); + } + return null; + } - public static String retrieveURL(final String id,final String apiUrl, String token) { - try { - final HttpURLConnection urlConn = getHttpURLConnection(apiUrl, token); - if (urlConn.getResponseCode()>199 && urlConn.getResponseCode()<300) { - InputStream input = urlConn.getInputStream(); - return IOUtils.toString(input); - } else { - log.error("Thread {} UNABLE TO DOWNLOAD FROM THIS URL {} , status code {}",id, apiUrl,urlConn.getResponseCode()); - } - } catch (Exception e) { - log.error("Thread {} Error on retrieving URL {} {}",id,apiUrl, e); - } - return null; - } + @NotNull + private static HttpURLConnection getHttpURLConnection(String apiUrl, String token) throws IOException { + final HttpURLConnection urlConn = (HttpURLConnection) new URL(apiUrl).openConnection(); + final HttpClientParams clientParams = new HttpClientParams(); + urlConn.setInstanceFollowRedirects(false); + urlConn.setReadTimeout(clientParams.getReadTimeOut() * 1000); + urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); + urlConn.addRequestProperty(HttpHeaders.USER_AGENT, userAgent); + urlConn.addRequestProperty(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token)); + return urlConn; + } - @NotNull - private static HttpURLConnection getHttpURLConnection(String apiUrl, String token) throws IOException { - final HttpURLConnection urlConn = (HttpURLConnection) new URL(apiUrl).openConnection(); - final HttpClientParams clientParams = new HttpClientParams(); - urlConn.setInstanceFollowRedirects(false); - urlConn.setReadTimeout(clientParams.getReadTimeOut() * 1000); - urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); - urlConn.addRequestProperty(HttpHeaders.USER_AGENT, userAgent); - urlConn.addRequestProperty(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token)); - return urlConn; - } + private static String generateSummaryURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/record"; + } - private static String generateSummaryURL(final String orcidId) { - return "https://api.orcid.org/v3.0/" + orcidId + "/record"; - } + private static String generateWorksURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/works"; + } - private static String generateWorksURL(final String orcidId) { - return "https://api.orcid.org/v3.0/" + orcidId + "/works"; - } - private static String generateEmploymentsURL(final String orcidId) { - return "https://api.orcid.org/v3.0/" + orcidId + "/employments"; - } + private static String generateEmploymentsURL(final String orcidId) { + return "https://api.orcid.org/v3.0/" + orcidId + "/employments"; + } + private static void writeResultToSequenceFile(String id, String url, String token, String orcidId, + SequenceFile.Writer file) throws IOException { + final String response = retrieveURL(id, url, token); + if (response != null) { - private static void writeResultToSequenceFile(String id, String url, String token, String orcidId, SequenceFile.Writer file) throws IOException { - final String response = retrieveURL(id, url,token); - if (response!= null) { + if (orcidId == null || response == null) { + log.error("Thread {} {} {}", id, orcidId, response); + throw new RuntimeException("null items "); + } - if(orcidId==null || response ==null){ - log.error("Thread {} {} {}",id, orcidId, response); - throw new RuntimeException("null items "); - } + if (file == null) { + log.error("Thread {} file is null for {} URL:{}", id, url, orcidId); + } else + file.append(new Text(orcidId), new Text(response)); + } - if(file==null) { - log.error("Thread {} file is null for {} URL:{}",id, url, orcidId); - } - else - file.append(new Text(orcidId),new Text(response)); - } + } - } + @Override + public void run() { + final Text key = new Text(); + final Text value = new Text(); + long start; + long total_time; + String orcidId = ""; + int requests = 0; + if (summary == null || employments == null || works == null) + throw new RuntimeException("Null files"); + while (!hasComplete) { + try { - @Override - public void run() { - final Text key = new Text(); - final Text value = new Text(); - long start; - long total_time; - String orcidId=""; - int requests =0; - if(summary==null || employments==null || works == null) - throw new RuntimeException("Null files"); + orcidId = queue.take(); - while (!hasComplete) { - try { + if (orcidId.equalsIgnoreCase(JOB_COMPLETE)) { + queue.put(orcidId); + hasComplete = true; + } else { + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateSummaryURL(orcidId), token, orcidId, summary); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + // I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, + // hence + // the time between two http request in a thread must be 1 second + Thread.sleep(1000L - total_time); + } + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateWorksURL(orcidId), token, orcidId, works); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + // I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, + // hence + // the time between two http request in a thread must be 1 second + Thread.sleep(1000L - total_time); + } + start = System.currentTimeMillis(); + writeResultToSequenceFile(id, generateEmploymentsURL(orcidId), token, orcidId, employments); + total_time = System.currentTimeMillis() - start; + requests++; + if (total_time < 1000) { + // I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, + // hence + // the time between two http request in a thread must be 1 second + Thread.sleep(1000L - total_time); + } + if (requests % 30 == 0) { + log.info("Thread {} Downloaded {}", id, requests); + } + } - orcidId = queue.take(); + } catch (Throwable e) { - if (orcidId.equalsIgnoreCase(JOB_COMPLETE)) { - queue.put(orcidId); - hasComplete = true; - } else { - start = System.currentTimeMillis(); - writeResultToSequenceFile(id, generateSummaryURL(orcidId), token,orcidId, summary); - total_time = System.currentTimeMillis() - start; - requests++; - if (total_time < 1000) { - //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence - //the time between two http request in a thread must be 1 second - Thread.sleep(1000L - total_time); - } - start = System.currentTimeMillis(); - writeResultToSequenceFile(id, generateWorksURL(orcidId),token,orcidId, works); - total_time = System.currentTimeMillis() - start; - requests++; - if (total_time < 1000) { - //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence - //the time between two http request in a thread must be 1 second - Thread.sleep(1000L - total_time); - } - start = System.currentTimeMillis(); - writeResultToSequenceFile(id, generateEmploymentsURL(orcidId),token,orcidId, employments); - total_time = System.currentTimeMillis() - start; - requests++; - if (total_time < 1000) { - //I know making a sleep on a thread is bad, but we need to stay to 24 requests per seconds, hence - //the time between two http request in a thread must be 1 second - Thread.sleep(1000L - total_time); - } - if (requests %30 ==0) - { - log.info("Thread {} Downloaded {}",id, requests); - } - } + log.error("Thread {} Unable to save ORICD: {} item error", id, orcidId, e); + } - } catch (Throwable e) { + } + try { + works.close(); + summary.close(); + employments.close(); + } catch (Throwable e) { + throw new RuntimeException(e); + } - log.error("Thread {} Unable to save ORICD: {} item error",id, orcidId,e); + log.info("Thread {} COMPLETE ", id); + log.info("Thread {} Downloaded {}", id, requests); - } + } - } - try { - works.close(); - summary.close(); - employments.close(); - } catch (Throwable e) { - throw new RuntimeException(e); - } + public static class ORCIDWorkerBuilder { + private String id; + private SequenceFile.Writer employments; + private SequenceFile.Writer summary; + private SequenceFile.Writer works; + private BlockingQueue queue; - log.info("Thread {} COMPLETE ", id); - log.info("Thread {} Downloaded {}", id, requests); + private String token; - } + public ORCIDWorkerBuilder withId(final String id) { + this.id = id; + return this; + } + public ORCIDWorkerBuilder withEmployments(final SequenceFile.Writer sequenceFile) { + this.employments = sequenceFile; + return this; + } - public static class ORCIDWorkerBuilder { + public ORCIDWorkerBuilder withSummary(final SequenceFile.Writer sequenceFile) { + this.summary = sequenceFile; + return this; + } - private String id; - private SequenceFile.Writer employments; - private SequenceFile.Writer summary; - private SequenceFile.Writer works; - private BlockingQueue queue; + public ORCIDWorkerBuilder withWorks(final SequenceFile.Writer sequenceFile) { + this.works = sequenceFile; + return this; + } - private String token; + public ORCIDWorkerBuilder withAccessToken(final String accessToken) { + this.token = accessToken; + return this; + } - public ORCIDWorkerBuilder withId(final String id) { - this.id =id; - return this; - } + public ORCIDWorkerBuilder withBlockingQueue(final BlockingQueue queue) { + this.queue = queue; + return this; + } - public ORCIDWorkerBuilder withEmployments(final SequenceFile.Writer sequenceFile) { - this.employments = sequenceFile; - return this; - } - - - public ORCIDWorkerBuilder withSummary(final SequenceFile.Writer sequenceFile) { - this.summary = sequenceFile; - return this; - } - - public ORCIDWorkerBuilder withWorks(final SequenceFile.Writer sequenceFile) { - this.works = sequenceFile; - return this; - } - - public ORCIDWorkerBuilder withAccessToken(final String accessToken) { - this.token = accessToken; - return this; - } - - public ORCIDWorkerBuilder withBlockingQueue(final BlockingQueue queue) { - this.queue = queue; - return this; - } - - - public ORCIDWorker build() { - if (this.summary== null || this.works==null || this.employments == null || StringUtils.isEmpty(token) || queue == null) - throw new RuntimeException("Unable to build missing required params"); - return new ORCIDWorker(id, queue,employments,summary,works,token); - } - - - - } + public ORCIDWorker build() { + if (this.summary == null || this.works == null || this.employments == null || StringUtils.isEmpty(token) + || queue == null) + throw new RuntimeException("Unable to build missing required params"); + return new ORCIDWorker(id, queue, employments, summary, works, token); + } + } } diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index 39da749e2..6438d737c 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -1,15 +1,17 @@ package eu.dnetlib.dhp.collection.orcid; +import static eu.dnetlib.dhp.utils.DHPUtils.getHadoopConfiguration; + import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; -import eu.dnetlib.dhp.common.collection.HttpClientParams; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; @@ -23,96 +25,108 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; - -import static eu.dnetlib.dhp.utils.DHPUtils.getHadoopConfiguration; +import eu.dnetlib.dhp.common.collection.HttpClientParams; public class OrcidGetUpdatesFile { - private static Logger log = LoggerFactory.getLogger(OrcidGetUpdatesFile.class); + private static Logger log = LoggerFactory.getLogger(OrcidGetUpdatesFile.class); - public static void main(String[] args) throws IOException { + public static void main(String[] args) throws Exception { - ArgumentApplicationParser parser = new ArgumentApplicationParser( - "/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json"); + ArgumentApplicationParser parser = new ArgumentApplicationParser( + IOUtils + .toString( + Objects + .requireNonNull( + OrcidGetUpdatesFile.class + .getResourceAsStream( + "/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json"))) - final String namenode = parser.get("namenode"); - log.info("got variable namenode: {}", namenode); + ); + parser.parseArgument(args); - final String targetPath = parser.get("targetPath"); - log.info("got variable targetPath: {}", targetPath); + final String namenode = parser.get("namenode"); + log.info("got variable namenode: {}", namenode); + final String targetPath = parser.get("targetPath"); + log.info("got variable targetPath: {}", targetPath); - final String apiURL = parser.get("apiURL"); - log.info("got variable apiURL: {}", apiURL); + final String apiURL = parser.get("apiURL"); + log.info("got variable apiURL: {}", apiURL); final String accessToken = parser.get("accessToken"); log.info("got variable accessToken: {}", accessToken); + System.out.println("namenode = " + namenode); + final FileSystem fileSystem = FileSystem.get(getHadoopConfiguration(namenode)); - final FileSystem fileSystem = FileSystem.get(getHadoopConfiguration(namenode)); + new OrcidGetUpdatesFile().readTar(fileSystem, accessToken, apiURL, targetPath, "2023-09-30"); - - } - - private SequenceFile.Writer createFile(Path aPath, FileSystem fileSystem) throws IOException { - return SequenceFile - .createWriter( - fileSystem.getConf(), - SequenceFile.Writer.file(aPath), - SequenceFile.Writer.keyClass(Text.class), - SequenceFile.Writer.valueClass(Text.class)); } + private SequenceFile.Writer createFile(Path aPath, FileSystem fileSystem) throws IOException { + return SequenceFile + .createWriter( + fileSystem.getConf(), + SequenceFile.Writer.file(aPath), + SequenceFile.Writer.keyClass(Text.class), + SequenceFile.Writer.valueClass(Text.class)); + } - private ORCIDWorker createWorker(final String id, final String targetPath, final BlockingQueue queue, final String accessToken, FileSystem fileSystem) throws Exception { - return ORCIDWorker.builder() - .withId(id) - .withEmployments(createFile(new Path(String.format("%s/employments_%s", targetPath, id)), fileSystem)) - .withSummary(createFile(new Path(String.format("%s/summary_%s", targetPath, id)), fileSystem)) - .withWorks(createFile(new Path(String.format("%s/works_%s", targetPath, id)), fileSystem)) - .withAccessToken(accessToken) - .withBlockingQueue(queue) - .build(); - } + private ORCIDWorker createWorker(final String id, final String targetPath, final BlockingQueue queue, + final String accessToken, FileSystem fileSystem) throws Exception { + return ORCIDWorker + .builder() + .withId(id) + .withEmployments(createFile(new Path(String.format("%s/employments_%s", targetPath, id)), fileSystem)) + .withSummary(createFile(new Path(String.format("%s/summary_%s", targetPath, id)), fileSystem)) + .withWorks(createFile(new Path(String.format("%s/works_%s", targetPath, id)), fileSystem)) + .withAccessToken(accessToken) + .withBlockingQueue(queue) + .build(); + } - - - public void readTar(FileSystem fileSystem, final String accessToken, final String apiURL, final String targetPath, final String startDate ) throws Exception { + public void readTar(FileSystem fileSystem, final String accessToken, final String apiURL, final String targetPath, + final String startDate) throws Exception { final HttpURLConnection urlConn = (HttpURLConnection) new URL(apiURL).openConnection(); final HttpClientParams clientParams = new HttpClientParams(); urlConn.setInstanceFollowRedirects(false); urlConn.setReadTimeout(clientParams.getReadTimeOut() * 1000); urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); - if (urlConn.getResponseCode()>199 && urlConn.getResponseCode()<300) { + if (urlConn.getResponseCode() > 199 && urlConn.getResponseCode() < 300) { InputStream input = urlConn.getInputStream(); TarArchiveInputStream tais = new TarArchiveInputStream(new GzipCompressorInputStream( - new BufferedInputStream( - input))); + new BufferedInputStream( + input))); TarArchiveEntry entry; BlockingQueue queue = new ArrayBlockingQueue(3000); final List workers = new ArrayList<>(); - for (int i = 0; i <20; i++) { - workers.add(createWorker(""+i,targetPath,queue,accessToken, fileSystem)); + for (int i = 0; i < 22; i++) { + workers.add(createWorker("" + i, targetPath, queue, accessToken, fileSystem)); } workers.forEach(Thread::start); - - while ((entry = tais.getNextTarEntry()) != null) { + while ((entry = tais.getNextTarEntry()) != null) { if (entry.isFile()) { BufferedReader br = new BufferedReader(new InputStreamReader(tais)); System.out.println(br.readLine()); - br.lines().map(l -> l.split(",")).filter(s -> StringUtils.compare(s[3].substring(0, 10), startDate) > 0).map(s->s[0]).limit(200).forEach(s -> { - try { - log.info("Adding item "); - queue.put(s); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - }); + br + .lines() + .map(l -> l.split(",")) + .filter(s -> StringUtils.compare(s[3].substring(0, 10), startDate) > 0) + .map(s -> s[0]) + .forEach(s -> { + try { + log.info("Adding item "); + queue.put(s); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); queue.put(ORCIDWorker.JOB_COMPLETE); } @@ -122,12 +136,7 @@ public class OrcidGetUpdatesFile { worker.join(); } - } - - - - - } + } } diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json index dbadf86cb..dbf63a31a 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json @@ -1,5 +1,4 @@ -[ - { +[ { "paramName": "n", "paramLongName": "namenode", "paramDescription": "the Name Node URI", @@ -23,5 +22,4 @@ "paramDescription": "the accessToken to contact API", "paramRequired": true } - ] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml index 74a88bae6..d7a81b022 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml @@ -6,12 +6,12 @@ apiURL - The URL of the update CSV list http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar + The URL of the update CSV list accessToken - The access tocken + The access token diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java index dc0393dc5..846282721 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java @@ -124,16 +124,9 @@ public class DownloadORCIDTest { // @Test // public void testReadTar() throws Exception { -//// new OrcidGetUpdatesFile().readTar(); -// -// Configuration conf = new Configuration(); -// FileSystem fs = FileSystem.get(URI.create("file:///"), conf); -// final String token ="78fdb232-7105-4086-8570-e153f4198e3d"; -// -// new OrcidGetUpdatesFile().readTar(fs,token, "http://74804fb637bd8e2fba5b-e0a029c2f87486cddec3b416996a6057.r3.cf1.rackcdn.com/last_modified.csv.tar", "file:///Users/sandro/orcid","2023-09-30"); -// -// -// +// OrcidGetUpdatesFile.main(new String[] { +// "--namenode", "puppa" +// }); // // } From e0753f19da7a33978d57016a6781076458a09186 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Sat, 13 Jan 2024 09:27:08 +0100 Subject: [PATCH 06/10] Fixed error of connection timeout --- .../eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java | 8 +++++--- .../dhp/collection/orcid/OrcidGetUpdatesFile.java | 9 ++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java index 544262043..db6475dfa 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -101,16 +101,18 @@ public class ORCIDWorker extends Thread { SequenceFile.Writer file) throws IOException { final String response = retrieveURL(id, url, token); if (response != null) { - - if (orcidId == null || response == null) { + if (orcidId == null) { log.error("Thread {} {} {}", id, orcidId, response); throw new RuntimeException("null items "); } if (file == null) { log.error("Thread {} file is null for {} URL:{}", id, url, orcidId); - } else + } else { file.append(new Text(orcidId), new Text(response)); + file.hflush(); + } + } } diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index 6438d737c..388d32b4e 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -17,6 +17,8 @@ import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; @@ -96,9 +98,14 @@ public class OrcidGetUpdatesFile { urlConn.setConnectTimeout(clientParams.getConnectTimeOut() * 1000); if (urlConn.getResponseCode() > 199 && urlConn.getResponseCode() < 300) { InputStream input = urlConn.getInputStream(); + + Path hdfsWritePath = new Path("/tmp/orcid_updates.tar.gz"); + final FSDataOutputStream fsDataOutputStream = fileSystem.create(hdfsWritePath, true); + IOUtils.copy(input, fsDataOutputStream); + FSDataInputStream updateFile = fileSystem.open(hdfsWritePath); TarArchiveInputStream tais = new TarArchiveInputStream(new GzipCompressorInputStream( new BufferedInputStream( - input))); + updateFile.getWrappedStream()))); TarArchiveEntry entry; BlockingQueue queue = new ArrayBlockingQueue(3000); From 43e0bba7eda73b825a3192c7f9794e2f125fe272 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Tue, 23 Jan 2024 15:04:49 +0100 Subject: [PATCH 07/10] logg added during download --- .../main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java | 3 ++- .../eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java index db6475dfa..fe59fe71f 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -113,7 +113,8 @@ public class ORCIDWorker extends Thread { file.hflush(); } - } + } else + log.error("Thread {} response is null for {} URL:{}", id, url, orcidId); } diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index 388d32b4e..2ba131e0f 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -128,7 +128,6 @@ public class OrcidGetUpdatesFile { .map(s -> s[0]) .forEach(s -> { try { - log.info("Adding item "); queue.put(s); } catch (InterruptedException e) { throw new RuntimeException(e); From 0386f3638592766ac5b8972afcd23292d5c372a5 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Thu, 25 Jan 2024 19:40:59 +0100 Subject: [PATCH 08/10] Added workflow to update ORCID and replaced some parsing, because the update works and employments xml differs from the dump one. --- .../dhp/collection/orcid/OrcidParser.java | 185 +- .../dhp/collection/orcid/model/Author.java | 10 + .../orcid/apply_orcid_table_parameter.json | 26 + .../orcid/generate_orcid_table_parameter.json | 6 + .../orcid/update/oozie_app/workflow.xml | 41 +- .../collection/orcid/SparkApplyUpdate.scala | 75 + .../orcid/SparkGenerateORCIDTable.scala | 91 +- .../collection/orcid/DownloadORCIDTest.java | 37 +- .../dnetlib/dhp/collection/orcid/summary2.xml | 966 +++ .../collection/orcid/update_employments.xml | 60 + .../dhp/collection/orcid/update_work.xml | 6234 +++++++++++++++++ 11 files changed, 7684 insertions(+), 47 deletions(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/apply_orcid_table_parameter.json create mode 100644 dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/summary2.xml create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_employments.xml create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_work.xml diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidParser.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidParser.java index 159b8a5fc..ea108821e 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidParser.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidParser.java @@ -1,11 +1,15 @@ package eu.dnetlib.dhp.collection.orcid; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; +import org.dom4j.Document; +import org.dom4j.DocumentFactory; +import org.dom4j.DocumentHelper; +import org.dom4j.Node; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,8 +44,8 @@ public class OrcidParser { private static final String NS_ERROR = "error"; private static final String NS_HISTORY = "history"; private static final String NS_HISTORY_URL = "http://www.orcid.org/ns/history"; - private static final String NS_BULK_URL = "http://www.orcid.org/ns/bulk"; - private static final String NS_BULK = "bulk"; + private static final String NS_EMPLOYMENT = "employment"; + private static final String NS_EMPLOYMENT_URL = "http://www.orcid.org/ns/employment"; private static final String NS_EXTERNAL = "external-identifier"; private static final String NS_EXTERNAL_URL = "http://www.orcid.org/ns/external-identifier"; @@ -61,6 +65,7 @@ public class OrcidParser { ap.declareXPathNameSpace(NS_WORK, NS_WORK_URL); ap.declareXPathNameSpace(NS_EXTERNAL, NS_EXTERNAL_URL); ap.declareXPathNameSpace(NS_ACTIVITIES, NS_ACTIVITIES_URL); + ap.declareXPathNameSpace(NS_EMPLOYMENT, NS_EMPLOYMENT_URL); } public Author parseSummary(final String xml) { @@ -70,13 +75,15 @@ public class OrcidParser { generateParsedDocument(xml); List recordNodes = VtdUtilityParser .getTextValuesWithAttributes( - ap, vn, "//record:record", Arrays.asList("path")); + ap, vn, "//record:record", Collections.singletonList("path")); if (!recordNodes.isEmpty()) { final String oid = (recordNodes.get(0).getAttributes().get("path")).substring(1); author.setOrcid(oid); } else { return null; } + final String ltm = VtdUtilityParser.getSingleValue(ap, vn, "//common:last-modified-date"); + author.setLastModifiedDate(ltm); List personNodes = VtdUtilityParser .getTextValuesWithAttributes( ap, vn, "//person:name", Arrays.asList("visibility")); @@ -129,6 +136,64 @@ public class OrcidParser { } } + public List parseWorks(final String xml) { + + try { + String oid; + + generateParsedDocument(xml); + List workNodes = VtdUtilityParser + .getTextValuesWithAttributes(ap, vn, "//activities:works", Arrays.asList("path", "visibility")); + if (!workNodes.isEmpty()) { + oid = (workNodes.get(0).getAttributes().get("path")).split("/")[1]; + + } else { + return null; + } + final List works = new ArrayList<>(); + ap.selectXPath("//work:work-summary"); + + while (ap.evalXPath() != -1) { + final Work work = new Work(); + work.setOrcid(oid); + final AutoPilot ap1 = new AutoPilot(ap.getNav()); + ap1.selectXPath("./work:title/common:title"); + while (ap1.evalXPath() != -1) { + int it = vn.getText(); + work.setTitle(vn.toNormalizedString(it)); + } + ap1.selectXPath(".//common:external-id"); + while (ap1.evalXPath() != -1) { + final Pid pid = new Pid(); + + final AutoPilot ap2 = new AutoPilot(ap1.getNav()); + + ap2.selectXPath("./common:external-id-type"); + while (ap2.evalXPath() != -1) { + int it = vn.getText(); + pid.setSchema(vn.toNormalizedString(it)); + } + ap2.selectXPath("./common:external-id-value"); + while (ap2.evalXPath() != -1) { + int it = vn.getText(); + pid.setValue(vn.toNormalizedString(it)); + } + + work.addPid(pid); + } + + works.add(work); + } + return works; + + } catch (Throwable e) { + log.error("Error on parsing {}", xml); + log.error(e.getMessage()); + return null; + } + + } + public Work parseWork(final String xml) { try { @@ -176,11 +241,15 @@ public class OrcidParser { } private String extractEmploymentDate(final String xpath) throws Exception { + return extractEmploymentDate(xpath, ap); + } - ap.selectXPath(xpath); + private String extractEmploymentDate(final String xpath, AutoPilot pp) throws Exception { + + pp.selectXPath(xpath); StringBuilder sb = new StringBuilder(); - while (ap.evalXPath() != -1) { - final AutoPilot ap1 = new AutoPilot(ap.getNav()); + while (pp.evalXPath() != -1) { + final AutoPilot ap1 = new AutoPilot(pp.getNav()); ap1.selectXPath("./common:year"); while (ap1.evalXPath() != -1) { int it = vn.getText(); @@ -203,6 +272,104 @@ public class OrcidParser { } + public List parseEmployments(final String xml) { + try { + String oid; + Map nsContext = getNameSpaceMap(); + DocumentFactory.getInstance().setXPathNamespaceURIs(nsContext); + Document doc = DocumentHelper.parseText(xml); + oid = doc.valueOf("//activities:employments/@path"); + if (oid == null || StringUtils.isEmpty(oid)) + return null; + final String orcid = oid.split("/")[1]; + + List nodes = doc.selectNodes("//employment:employment-summary"); + return nodes.stream().map(n -> { + final Employment e = new Employment(); + e.setOrcid(orcid); + + final String depName = n.valueOf(".//common:department-name"); + if (StringUtils.isNotBlank(depName)) + e.setDepartmentName(depName); + final String roleTitle = n.valueOf(".//common:role-title"); + e.setRoleTitle(roleTitle); + final String organizationName = n.valueOf(".//common:organization/common:name"); + if (StringUtils.isEmpty(e.getDepartmentName())) + e.setDepartmentName(organizationName); + final Pid p = new Pid(); + final String pid = n + .valueOf( + "./common:organization/common:disambiguated-organization/common:disambiguated-organization-identifier"); + p.setValue(pid); + final String pidType = n + .valueOf("./common:organization/common:disambiguated-organization/common:disambiguation-source"); + p.setSchema(pidType); + e.setAffiliationId(p); + + final StringBuilder aDate = new StringBuilder(); + final String sy = n.valueOf("./common:start-date/common:year"); + if (StringUtils.isNotBlank(sy)) { + aDate.append(sy); + final String sm = n.valueOf("./common:start-date/common:month"); + final String sd = n.valueOf("./common:start-date/common:day"); + aDate.append("-"); + if (StringUtils.isNotBlank(sm)) + aDate.append(sm); + else + aDate.append("01"); + aDate.append("-"); + if (StringUtils.isNotBlank(sd)) + aDate.append(sd); + else + aDate.append("01"); + e.setEndDate(aDate.toString()); + } + + final String ey = n.valueOf("./common:end-date/common:year"); + if (StringUtils.isNotBlank(ey)) { + aDate.append(ey); + final String em = n.valueOf("./common:end-date/common:month"); + final String ed = n.valueOf("./common:end-date/common:day"); + aDate.append("-"); + if (StringUtils.isNotBlank(em)) + aDate.append(em); + else + aDate.append("01"); + aDate.append("-"); + if (StringUtils.isNotBlank(ed)) + aDate.append(ed); + else + aDate.append("01"); + e.setEndDate(aDate.toString()); + } + + return e; + + }).collect(Collectors.toList()); + } catch (Throwable e) { + log.error("Error on parsing {}", xml); + log.error(e.getMessage()); + return null; + } + } + + @NotNull + private static Map getNameSpaceMap() { + Map nsContext = new HashMap<>(); + nsContext.put(NS_COMMON, NS_COMMON_URL); + nsContext.put(NS_PERSON, NS_PERSON_URL); + nsContext.put(NS_DETAILS, NS_DETAILS_URL); + nsContext.put(NS_OTHER, NS_OTHER_URL); + nsContext.put(NS_RECORD, NS_RECORD_URL); + nsContext.put(NS_ERROR, NS_ERROR_URL); + nsContext.put(NS_HISTORY, NS_HISTORY_URL); + nsContext.put(NS_WORK, NS_WORK_URL); + nsContext.put(NS_EXTERNAL, NS_EXTERNAL_URL); + nsContext.put(NS_ACTIVITIES, NS_ACTIVITIES_URL); + nsContext.put(NS_EMPLOYMENT, NS_EMPLOYMENT_URL); + return nsContext; + } + public Employment parseEmployment(final String xml) { try { final Employment employment = new Employment(); diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/model/Author.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/model/Author.java index 32c321b41..df87e4333 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/model/Author.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/model/Author.java @@ -18,6 +18,8 @@ public class Author extends ORCIDItem { private String biography; + private String lastModifiedDate; + public String getBiography() { return biography; } @@ -74,6 +76,14 @@ public class Author extends ORCIDItem { this.otherPids = otherPids; } + public String getLastModifiedDate() { + return lastModifiedDate; + } + + public void setLastModifiedDate(String lastModifiedDate) { + this.lastModifiedDate = lastModifiedDate; + } + public void addOtherPid(final Pid pid) { if (otherPids == null) diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/apply_orcid_table_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/apply_orcid_table_parameter.json new file mode 100644 index 000000000..3d3374c74 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/apply_orcid_table_parameter.json @@ -0,0 +1,26 @@ +[ + { + "paramName": "m", + "paramLongName": "master", + "paramDescription": "the master name", + "paramRequired": true + }, + { + "paramName": "t", + "paramLongName": "targetPath", + "paramDescription": "the target PATH of the DF tables", + "paramRequired": true + }, + { + "paramName": "g", + "paramLongName": "graphPath", + "paramDescription": "the PATH of the current graph path", + "paramRequired": true + }, + { + "paramName": "u", + "paramLongName": "updatePath", + "paramDescription": "the PATH of the current graph update path", + "paramRequired": true + } + ] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/generate_orcid_table_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/generate_orcid_table_parameter.json index 01d81ea97..d088e8c77 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/generate_orcid_table_parameter.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/generate_orcid_table_parameter.json @@ -16,6 +16,12 @@ "paramLongName": "sourcePath", "paramDescription": "the PATH of the ORCID sequence file", "paramRequired": true + }, + { + "paramName": "fu", + "paramLongName": "fromUpdate", + "paramDescription": "whether we have to generate table from dump or from update", + "paramRequired": false } ] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml index d7a81b022..434d21a0c 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml @@ -1,5 +1,9 @@ + + graphPath + the path to store the original ORCID dump + targetPath the path to store the original ORCID dump @@ -12,8 +16,9 @@ accessToken The access token - + + @@ -37,7 +42,7 @@ --accessToken${accessToken} - + @@ -58,8 +63,36 @@ --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} - --sourcePath${targetPath}/extracted - --targetPath${targetPath}/tables + --sourcePath${targetPath} + --targetPath${targetPath}/updateTable + --fromUpdatetrue + --masteryarn + + + + + + + + yarn + cluster + Update ORCID Tables + eu.dnetlib.dhp.collection.orcid.SparkApplyUpdate + dhp-aggregation-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.executor.memoryOverhead=2g + --conf spark.sql.shuffle.partitions=3000 + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + + --graphPathgraphPath + --updatePath${targetPath}/updateTable + --targetPath${targetPath}/newTable --masteryarn diff --git a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala new file mode 100644 index 000000000..4494a2d3d --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala @@ -0,0 +1,75 @@ +package eu.dnetlib.dhp.collection.orcid + +import eu.dnetlib.dhp.application.AbstractScalaApplication +import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession} +import org.slf4j.{Logger, LoggerFactory} + +class SparkApplyUpdate(propertyPath: String, args: Array[String], log: Logger) + extends AbstractScalaApplication(propertyPath, args, log: Logger) { + + /** Here all the spark applications runs this method + * where the whole logic of the spark node is defined + */ + override def run(): Unit = { + + val graphPath: String = parser.get("graphPath") + log.info("found parameters graphPath: {}", graphPath) + val updatePath: String = parser.get("updatePath") + log.info("found parameters updatePath: {}", updatePath) + val targetPath: String = parser.get("targetPath") + log.info("found parameters targetPath: {}", targetPath) + applyTableUpdate(spark, graphPath, updatePath, targetPath) + + } + + def updateDataset( + inputDataset: DataFrame, + idUpdate: DataFrame, + updateDataframe: DataFrame, + targetPath: String + ): Unit = { + inputDataset + .join(idUpdate, inputDataset("orcid").equalTo(idUpdate("orcid")), "leftanti") + .select(inputDataset("*")) + .unionByName(updateDataframe) + .write + .mode(SaveMode.Overwrite) + .save(targetPath) + } + + def applyTableUpdate(spark: SparkSession, graphPath: String, updatePath: String, targetPath: String) = { + val orcidIDUpdate = spark.read.load(s"$updatePath/Authors").select("orcid") + updateDataset( + spark.read.load(s"$graphPath/Authors"), + orcidIDUpdate, + spark.read.load(s"$updatePath/Authors"), + s"$targetPath/Authors" + ) + updateDataset( + spark.read.load(s"$graphPath/Employments"), + orcidIDUpdate, + spark.read.load(s"$updatePath/Employments"), + s"$targetPath/Employments" + ) + updateDataset( + spark.read.load(s"$graphPath/Works"), + orcidIDUpdate, + spark.read.load(s"$updatePath/Works"), + s"$targetPath/Works" + ) + } + +} + +object SparkApplyUpdate { + + val log: Logger = LoggerFactory.getLogger(SparkGenerateORCIDTable.getClass) + + def main(args: Array[String]): Unit = { + + new SparkApplyUpdate("/eu/dnetlib/dhp/collection/orcid/apply_orcid_table_parameter.json", args, log) + .initialize() + .run() + + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkGenerateORCIDTable.scala b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkGenerateORCIDTable.scala index f0c4cd214..4f617f15c 100644 --- a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkGenerateORCIDTable.scala +++ b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkGenerateORCIDTable.scala @@ -6,6 +6,7 @@ import org.apache.hadoop.io.Text import org.apache.spark.SparkContext import org.apache.spark.sql.{Encoder, Encoders, SaveMode, SparkSession} import org.slf4j.{Logger, LoggerFactory} +import scala.collection.JavaConverters._ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Logger) extends AbstractScalaApplication(propertyPath, args, log: Logger) { @@ -18,12 +19,16 @@ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Lo log.info("found parameters sourcePath: {}", sourcePath) val targetPath: String = parser.get("targetPath") log.info("found parameters targetPath: {}", targetPath) - extractORCIDTable(spark, sourcePath, targetPath) - extractORCIDEmploymentsTable(spark, sourcePath, targetPath) - extractORCIDWorksTable(spark, sourcePath, targetPath) + val fromUpdate = "true".equals(parser.get("fromUpdate")) + val sourceSummaryPath = if (fromUpdate) s"$sourcePath/summary*" else sourcePath + val sourceEmploymentsPath = if (fromUpdate) s"$sourcePath/employments*" else sourcePath + val sourceWorksPath = if (fromUpdate) s"$sourcePath/works*" else sourcePath + extractORCIDTable(spark, sourceSummaryPath, targetPath, fromUpdate) + extractORCIDEmploymentsTable(spark, sourceEmploymentsPath, targetPath, fromUpdate) + extractORCIDWorksTable(spark, sourceWorksPath, targetPath, fromUpdate) } - def extractORCIDTable(spark: SparkSession, sourcePath: String, targetPath: String): Unit = { + def extractORCIDTable(spark: SparkSession, sourcePath: String, targetPath: String, skipFilterByKey: Boolean): Unit = { val sc: SparkContext = spark.sparkContext import spark.implicits._ val df = sc @@ -32,8 +37,8 @@ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Lo .toDF .as[(String, String)] implicit val orcidAuthor: Encoder[Author] = Encoders.bean(classOf[Author]) -// implicit val orcidPID:Encoder[Pid] = Encoders.bean(classOf[Pid]) - df.filter(r => r._1.contains("summaries")) + val newDf = if (!skipFilterByKey) df.filter(r => r._1.contains("summaries")) else df + newDf .map { r => val p = new OrcidParser p.parseSummary(r._2) @@ -44,7 +49,12 @@ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Lo .save(s"$targetPath/Authors") } - def extractORCIDWorksTable(spark: SparkSession, sourcePath: String, targetPath: String): Unit = { + def extractORCIDWorksTable( + spark: SparkSession, + sourcePath: String, + targetPath: String, + skipFilterByKey: Boolean + ): Unit = { val sc: SparkContext = spark.sparkContext import spark.implicits._ val df = sc @@ -53,19 +63,37 @@ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Lo .toDF .as[(String, String)] implicit val orcidWorkAuthor: Encoder[Work] = Encoders.bean(classOf[Work]) - implicit val orcidPID: Encoder[Pid] = Encoders.bean(classOf[Pid]) - df.filter(r => r._1.contains("works")) - .map { r => + + //We are in the case of parsing ORCID UPDATE + if (skipFilterByKey) { + df.flatMap { r => val p = new OrcidParser - p.parseWork(r._2) - } - .filter(p => p != null) - .write - .mode(SaveMode.Overwrite) - .save(s"$targetPath/Works") + p.parseWorks(r._2).asScala + }.filter(p => p != null) + .write + .mode(SaveMode.Overwrite) + .save(s"$targetPath/Works") + } + //We are in the case of parsing ORCID DUMP + else { + df.filter(r => r._1.contains("works")) + .map { r => + val p = new OrcidParser + p.parseWork(r._2) + } + .filter(p => p != null) + .write + .mode(SaveMode.Overwrite) + .save(s"$targetPath/Works") + } } - def extractORCIDEmploymentsTable(spark: SparkSession, sourcePath: String, targetPath: String): Unit = { + def extractORCIDEmploymentsTable( + spark: SparkSession, + sourcePath: String, + targetPath: String, + skipFilterByKey: Boolean + ): Unit = { val sc: SparkContext = spark.sparkContext import spark.implicits._ val df = sc @@ -74,16 +102,27 @@ class SparkGenerateORCIDTable(propertyPath: String, args: Array[String], log: Lo .toDF .as[(String, String)] implicit val orcidEmploymentAuthor: Encoder[Employment] = Encoders.bean(classOf[Employment]) - implicit val orcidPID: Encoder[Pid] = Encoders.bean(classOf[Pid]) - df.filter(r => r._1.contains("employments")) - .map { r => + if (skipFilterByKey) { + df.flatMap { r => val p = new OrcidParser - p.parseEmployment(r._2) - } - .filter(p => p != null) - .write - .mode(SaveMode.Overwrite) - .save(s"$targetPath/Employments") + p.parseEmployments(r._2).asScala + }.filter(p => p != null) + .write + .mode(SaveMode.Overwrite) + .save(s"$targetPath/Employments") + } + //We are in the case of parsing ORCID DUMP + else { + df.filter(r => r._1.contains("employments")) + .map { r => + val p = new OrcidParser + p.parseEmployment(r._2) + } + .filter(p => p != null) + .write + .mode(SaveMode.Overwrite) + .save(s"$targetPath/Employments") + } } } diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java index 846282721..f42d1d875 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/orcid/DownloadORCIDTest.java @@ -33,6 +33,7 @@ import com.ximpleware.XPathParseException; import eu.dnetlib.dhp.collection.orcid.model.Author; import eu.dnetlib.dhp.collection.orcid.model.ORCIDItem; +import eu.dnetlib.dhp.collection.orcid.model.Work; import eu.dnetlib.dhp.parser.utility.VtdException; public class DownloadORCIDTest { @@ -88,6 +89,34 @@ public class DownloadORCIDTest { }); } + @Test + public void testParsingOrcidUpdateEmployments() throws Exception { + final String xml = IOUtils + .toString( + Objects + .requireNonNull( + getClass().getResourceAsStream("/eu/dnetlib/dhp/collection/orcid/update_employments.xml"))); + + final OrcidParser parser = new OrcidParser(); + final ObjectMapper mapper = new ObjectMapper(); + System.out.println(mapper.writeValueAsString(parser.parseEmployments(xml))); + } + + @Test + public void testParsingOrcidUpdateWorks() throws Exception { + final String xml = IOUtils + .toString( + Objects + .requireNonNull( + getClass().getResourceAsStream("/eu/dnetlib/dhp/collection/orcid/update_work.xml"))); + + final OrcidParser parser = new OrcidParser(); + final List works = parser.parseWorks(xml); + + final ObjectMapper mapper = new ObjectMapper(); + System.out.println(mapper.writeValueAsString(works)); + } + @Test public void testParsingEmployments() throws Exception { @@ -122,12 +151,4 @@ public class DownloadORCIDTest { }); } -// @Test -// public void testReadTar() throws Exception { -// OrcidGetUpdatesFile.main(new String[] { -// "--namenode", "puppa" -// }); -// -// } - } diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/summary2.xml b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/summary2.xml new file mode 100644 index 000000000..49aa117aa --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/summary2.xml @@ -0,0 +1,966 @@ + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + en + + + Direct + 2016-01-06T05:08:45.720Z + 2024-01-02T20:07:05.186Z + true + true + true + + + 2023-12-02T13:32:05.269Z + + + 2016-02-09T09:18:18.417Z + + 2016-02-09T09:18:18.416Z + 2016-02-09T09:18:18.417Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Dr Michael Muchiri + http://www.rmit.edu.au/contact/staff-contacts/academic-staff/m/muchiri-dr-michael + + + + + 2023-12-02T13:32:05.269Z + + 2018-02-13T02:32:04.094Z + 2023-12-02T13:32:05.269Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + AU + + + 2023-12-02T13:32:05.260Z + 2023-12-02T13:32:05.260Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + SA + + + + 2023-12-02T13:31:16.269Z + + 2016-02-09T09:16:44.001Z + 2023-12-02T13:31:16.269Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Organizational Behavior + + + 2016-02-09T09:16:27.374Z + 2023-12-02T13:31:16.269Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Organizational Leadership + + + 2016-02-09T09:17:08.998Z + 2023-12-02T13:31:16.269Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Organizational performance + + + 2023-12-02T13:31:16.259Z + 2023-12-02T13:31:16.259Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Thriving at work + + + + 2018-04-10T00:49:55.386Z + + 2018-04-10T00:49:55.385Z + 2018-04-10T00:49:55.386Z + + + https://orcid.org/client/0000-0003-1377-5676 + 0000-0003-1377-5676 + orcid.org + + ResearcherID + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + ResearcherID + D-1929-2018 + http://www.researcherid.com/rid/D-1929-2018 + self + + + + + 2023-12-02T13:28:26.051Z + + + 2018-02-13T02:33:38.225Z + + 2016-02-09T06:55:21.838Z + + + 2016-02-09T06:54:39.199Z + 2016-02-09T06:55:21.838Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Management + PhD + + 2021 + + + 2022 + 02 + 12 + + + 2003 + 03 + + + 2007 + 03 + + + University of New England + + Armidale + NSW + AU + + + 1319 + RINGGOLD + + + + + + 2018-02-13T02:33:38.225Z + + + 2016-02-09T06:57:04.181Z + 2018-02-13T02:33:38.225Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Psychology + Master of Science (Industrial and Organizational) Psychology + + 1998 + 01 + + + 2000 + 01 + + + Universitas Gadjah Mada + + Yogyakarta + Daerah Istimewa Yogyakart + ID + + + 59166 + RINGGOLD + + + + + + 2018-02-13T02:33:35.821Z + + + 2016-02-09T06:58:59.869Z + 2018-02-13T02:33:35.821Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Education + Bachelor of Education (Honors) + + 1988 + 03 + + + 1991 + 03 + + + Kenyatta University + + Nairobi + Nairobi + KE + + + 107864 + RINGGOLD + + + + + + + 2023-12-02T13:28:26.051Z + + 2023-12-02T13:28:26.051Z + + + 2023-12-02T13:28:26.051Z + 2023-12-02T13:28:26.051Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Management + Associate Professor in Management + + 2023 + 08 + 20 + + + Alfaisal University + + Riyadh + SA + + + https://ror.org/00cdrtq48 + ROR + + + https://faculty.alfaisal.edu/user/mmuchiri + + + + 2016-02-09T07:00:06.052Z + + + 2016-02-09T07:00:06.052Z + 2016-02-09T07:00:06.052Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Management + Senior Lecturer + + 2014 + 02 + + + RMIT University + + Melbourne + VIC + AU + + + 5376 + RINGGOLD + + + + + + 2016-02-09T07:01:08.398Z + + + 2016-02-09T07:01:08.398Z + 2016-02-09T07:01:08.398Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Management + Senior Lecturer in Human Resource Management + + 2010 + 01 + + + 2014 + 02 + + + Central Queensland University + + Rockhampton + QLD + AU + + + 273488 + RINGGOLD + + + + + + 2016-02-09T07:01:47.814Z + + + 2016-02-09T07:01:47.814Z + 2016-02-09T07:01:47.814Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Management + Lecturer in Management + + 2007 + 01 + + + 2010 + 01 + + + Central Queensland University + + Rockhampton + QLD + AU + + + 273488 + RINGGOLD + + + + + + 2018-02-13T02:33:13.213Z + + + 2016-02-09T07:03:42.180Z + 2018-02-13T02:33:13.213Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Human Resource Development Division + Chief Human Resource Development Officer + + 2005 + 01 + + + 2007 + 01 + + + Government of Kenya Directorate of Personnel Management + + Nairobi + Nairobi + KE + + + 360256 + RINGGOLD + + + + + + 2016-02-09T07:05:02.300Z + + + 2016-02-09T07:05:02.300Z + 2016-02-09T07:05:02.300Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Human Resource Development Division + Human Resource Development Officer + + 2001 + 01 + + + 2005 + 01 + + + Government of Kenya Directorate of Personnel Management + + Nairobi + Nairobi + KE + + + 360256 + RINGGOLD + + + + + + 2016-02-09T07:36:52.398Z + + + 2016-02-09T07:36:52.398Z + 2016-02-09T07:36:52.398Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + Public Sector Management Technical Assistance Project + Project Coordinator for Development Learning Centre + + 2002 + 08 + + + 2003 + 03 + + + Government of Kenya Directorate of Personnel Management + + Nairobi + Nairobi + KE + + + 360256 + RINGGOLD + + + + + + + 2016-02-09T09:05:27.100Z + + 2016-02-09T09:05:27.100Z + + + 2016-02-09T09:05:27.100Z + 2016-02-09T09:05:27.100Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + + A cross-country examination of Employee Wellbeing, Leadership, High Performance Work Systems and Innovative Behaviours + + grant + + 2016 + 01 + + + 2016 + 12 + + + RMIT University + + VIC + VIC + AU + + + http://dx.doi.org/10.13039/501100001780 + FUNDREF + + + + + + 2016-02-09T09:03:51.641Z + + + 2016-02-09T09:03:51.641Z + 2016-02-09T09:03:51.641Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + + Leading Safe and Thriving Organisations: An Investigation of the Relationships between Leadership, Thriving Behaviour, Authentic Followership and Safety Climate in an Australian Multinational Enterprise + + grant + + 2015 + 01 + + + 2015 + 12 + + + RMIT University + + VIC + VIC + AU + + + http://dx.doi.org/10.13039/501100001780 + FUNDREF + + + + + + 2016-02-09T09:02:28.297Z + + + 2016-02-09T09:02:28.297Z + 2016-02-09T09:02:28.297Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + + A multilevel, cross-country examination of leadership, followership and innovative behaviours in Australia and Indonesia. + + grant + + 2015 + 01 + + + 2015 + 12 + + + RMIT University + + VIC + VIC + AU + + + http://dx.doi.org/10.13039/501100001780 + FUNDREF + + + + + + 2016-02-09T09:00:51.749Z + + + 2016-02-09T09:00:51.749Z + 2016-02-09T09:00:51.749Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + + Workplace safety and positive leadership: Exploring relationships between leader behaviours, organisational climate, safety climate, safety citizenship behaviours and innovative behaviours within city councils in Victoria + + grant + + 2014 + 01 + + + 2014 + 12 + + + RMIT University + + VIC + VIC + AU + + + http://dx.doi.org/10.13039/501100001780 + FUNDREF + + + + + + 2016-02-09T07:46:44.919Z + + + 2016-02-09T07:46:44.919Z + 2016-02-09T07:46:44.919Z + + + https://orcid.org/0000-0001-6816-8350 + 0000-0001-6816-8350 + orcid.org + + + + Sustainable Business Model for Central Queensland Regional Information Systems. + + grant + + 2008 + 01 + + + 2008 + 12 + + + Department of Local Government, Planning, Sport and Recreation, Queensland, Australia + + Rockhampton + Central Queensland + AU + + + + + + + + + 2023-05-31T05:53:44.542Z + + 2023-05-31T05:53:44.542Z + + + peer-review + issn:0167-4544 + + + + 2023-02-28T06:51:52.426Z + + + source-work-id + c9bdf086-cfee-4cd9-bcfb-268cc5423248 + c9bdf086-cfee-4cd9-bcfb-268cc5423248 + + self + + + + 2023-02-28T06:51:52.426Z + 2023-02-28T06:51:52.426Z + + + https://orcid.org/client/APP-945VYTN20C7BZXYT + APP-945VYTN20C7BZXYT + orcid.org + + Springer Nature @ Editorial Manager + + reviewer + + + source-work-id + c9bdf086-cfee-4cd9-bcfb-268cc5423248 + c9bdf086-cfee-4cd9-bcfb-268cc5423248 + + self + + + review + + 2023 + + issn:0167-4544 + + Springer Nature + + New York + US + + + grid.467660.5 + GRID + + + + + + 2023-05-31T05:53:44.542Z + + + source-work-id + c442840b-5807-459d-802a-303d8ba4e25e + c442840b-5807-459d-802a-303d8ba4e25e + + self + + + + 2023-05-31T05:53:44.542Z + 2023-05-31T05:53:44.542Z + + + https://orcid.org/client/APP-945VYTN20C7BZXYT + APP-945VYTN20C7BZXYT + orcid.org + + Springer Nature @ Editorial Manager + + reviewer + + + source-work-id + c442840b-5807-459d-802a-303d8ba4e25e + c442840b-5807-459d-802a-303d8ba4e25e + + self + + + review + + 2023 + + issn:0167-4544 + + Springer Nature + + New York + US + + + grid.467660.5 + GRID + + + + + + + + + + + 2023-06-02T20:12:00.338Z + + 2023-06-02T20:12:00.338Z + + + doi + 10.4337/9781800881945.00020 + 10.4337/9781800881945.00020 + https://doi.org/10.4337/9781800881945.00020 + self + + + + 2023-05-11T21:05:54.188Z + 2023-06-02T20:12:00.338Z + + + https://orcid.org/client/0000-0001-9884-1913 + 0000-0001-9884-1913 + orcid.org + + Crossref + + + Ethical leadership as workplace innovation and enabler for employee commitment and innovative work behaviours in Vietnam + + + + doi + 10.4337/9781800881945.00020 + 10.4337/9781800881945.00020 + https://doi.org/10.4337/9781800881945.00020 + self + + + https://doi.org/10.4337/9781800881945.00020 + book-chapter + + 2023 + 05 + 26 + + + + + 2023-03-01T11:30:31.972Z + + + doi + 10.1007/s10551-022-05081-6 + 10.1007/s10551-022-05081-6 + https://doi.org/10.1007/s10551-022-05081-6 + self + + + + 2022-03-18T03:36:55.927Z + 2023-03-01T11:30:31.972Z + + + https://orcid.org/client/0000-0001-9884-1913 + 0000-0001-9884-1913 + orcid.org + + Crossref + + + Unethical Leadership: Review, Synthesis and Directions for Future Research + + + + doi + 10.1007/s10551-022-05081-6 + 10.1007/s10551-022-05081-6 + https://doi.org/10.1007/s10551-022-05081-6 + self + + + https://doi.org/10.1007/s10551-022-05081-6 + journal-article + + 2023 + 03 + + Journal of Business Ethics + + + + 2022-05-28T18:16:16.575Z + + + doi + 10.1017/jmo.2019.33 + 10.1017/jmo.2019.33 + https://doi.org/10.1017/jmo.2019.33 + self + + + + 2019-05-10T07:23:14.608Z + 2022-05-28T18:16:16.575Z + + + https://orcid.org/client/0000-0001-9884-1913 + 0000-0001-9884-1913 + orcid.org + + Crossref + + + And now for something completely different: Reframing social processes of leadership theory using positive organisational behaviour + + + + doi + 10.1017/jmo.2019.33 + 10.1017/jmo.2019.33 + https://doi.org/10.1017/jmo.2019.33 + self + + + https://doi.org/10.1017/jmo.2019.33 + journal-article + + 2019 + 05 + 09 + + Journal of Management & Organization + + + + + \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_employments.xml b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_employments.xml new file mode 100644 index 000000000..1aa8072ef --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_employments.xml @@ -0,0 +1,60 @@ + + + 2024-01-07T23:59:38.869Z + + 2024-01-07T23:59:38.869Z + + + 2024-01-07T23:59:38.869Z + 2024-01-07T23:59:38.869Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Tampere University + + Tampere + FI + + + https://ror.org/033003e23 + ROR + + + + + + 2019-01-03T17:00:05.658Z + + + 2017-02-26T04:46:20.917Z + 2019-01-03T17:00:05.658Z + + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + Faculty of Medicine and Health Technology + Academy Research Fellow + + Tampere University + + Tampere + FI + + + 7839 + RINGGOLD + + + + + \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_work.xml b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_work.xml new file mode 100644 index 000000000..054b8b832 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/orcid/update_work.xml @@ -0,0 +1,6234 @@ + + + 2024-01-12T23:59:50.769Z + + 2023-09-27T23:12:39.432Z + + + source-work-id + 4c0ac3a6-5a96-4fff-8655-cb80580c4680 + 4c0ac3a6-5a96-4fff-8655-cb80580c4680 + self + + + doi + 10.1007/s12021-023-09627-5 + 10.1007/s12021-023-09627-5 + self + + + eid + 2-s2.0-85158107722 + 2-s2.0-85158107722 + self + + + + 2023-05-11T23:04:41.983Z + 2023-09-27T23:12:39.432Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + CellRemorph + + + + source-work-id + 4c0ac3a6-5a96-4fff-8655-cb80580c4680 + 4c0ac3a6-5a96-4fff-8655-cb80580c4680 + self + + + eid + 2-s2.0-85158107722 + 2-s2.0-85158107722 + self + + + doi + 10.1007/s12021-023-09627-5 + 10.1007/s12021-023-09627-5 + self + + + https://researchportal.tuni.fi/en/publications/4c0ac3a6-5a96-4fff-8655-cb80580c4680 + journal-article + + 2023 + 05 + + Neuroinformatics + + + + 2023-09-26T23:08:14.737Z + + + doi + 10.1007/s12021-023-09622-w + 10.1007/s12021-023-09622-w + https://doi.org/10.1007/s12021-023-09622-w + self + + + source-work-id + 0add7569-3394-4418-84af-ba70066e9efb + 0add7569-3394-4418-84af-ba70066e9efb + self + + + eid + 2-s2.0-85150654537 + 2-s2.0-85150654537 + self + + + + 2023-03-29T02:22:33.697Z + 2023-03-29T02:22:33.697Z + + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Analysis of Network Models with Neuron-Astrocyte Interactions + + + + doi + 10.1007/s12021-023-09622-w + 10.1007/s12021-023-09622-w + https://doi.org/10.1007/s12021-023-09622-w + self + + + issn + 1539-2791 + 1539-2791 + https://portal.issn.org/resource/ISSN/1539-2791 + part-of + + + issn + 1559-0089 + 1559-0089 + https://portal.issn.org/resource/ISSN/1559-0089 + part-of + + + http://dx.doi.org/10.1007/s12021-023-09622-w + journal-article + + 2023 + 03 + 23 + + Neuroinformatics + + + 2023-03-29T23:04:09.044Z + 2023-09-26T23:08:14.737Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Analysis of network models with neuron-astrocyte interactions + + + + source-work-id + 0add7569-3394-4418-84af-ba70066e9efb + 0add7569-3394-4418-84af-ba70066e9efb + self + + + eid + 2-s2.0-85150654537 + 2-s2.0-85150654537 + self + + + doi + 10.1007/s12021-023-09622-w + 10.1007/s12021-023-09622-w + self + + + https://researchportal.tuni.fi/en/publications/0add7569-3394-4418-84af-ba70066e9efb + journal-article + + 2023 + 03 + + Neuroinformatics + + + + 2023-04-22T23:03:33.804Z + + + source-work-id + 93d91fd0-2f67-4d75-b642-90dead70b4f7 + 93d91fd0-2f67-4d75-b642-90dead70b4f7 + self + + + eid + 2-s2.0-85148306997 + 2-s2.0-85148306997 + self + + + doi + 10.1007/s10827-022-00841-9 + 10.1007/s10827-022-00841-9 + self + + + + 2023-04-13T23:02:32.786Z + 2023-04-22T23:03:33.804Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neuron-astrocyte interactions in large neural populations using the NEST simulator + + + + source-work-id + 93d91fd0-2f67-4d75-b642-90dead70b4f7 + 93d91fd0-2f67-4d75-b642-90dead70b4f7 + self + + + eid + 2-s2.0-85148306997 + 2-s2.0-85148306997 + self + + + doi + 10.1007/s10827-022-00841-9 + 10.1007/s10827-022-00841-9 + self + + + https://researchportal.tuni.fi/en/publications/93d91fd0-2f67-4d75-b642-90dead70b4f7 + other + + 2023 + + Journal of Computational Neuroscience + + + + 2023-11-10T00:08:55.440Z + + + doi + 10.1002/glia.24419 + 10.1002/glia.24419 + self + + + source-work-id + 30765311-57a1-4ac1-a6cf-061e3c645842 + 30765311-57a1-4ac1-a6cf-061e3c645842 + self + + + eid + 2-s2.0-85164267874 + 2-s2.0-85164267874 + self + + + source-work-id + ea9acca1-3a14-41ea-9dc1-7bd942b28c74 + ea9acca1-3a14-41ea-9dc1-7bd942b28c74 + self + + + + 2023-11-10T00:08:55.434Z + 2023-11-10T00:08:55.434Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neuron-astrocyte interactions in networks: Experiments, theory, and models + + + + source-work-id + ea9acca1-3a14-41ea-9dc1-7bd942b28c74 + ea9acca1-3a14-41ea-9dc1-7bd942b28c74 + self + + + doi + 10.1002/glia.24419 + 10.1002/glia.24419 + self + + + https://researchportal.tuni.fi/en/publications/ea9acca1-3a14-41ea-9dc1-7bd942b28c74 + other + + 2023 + + Glia + + + 2023-11-10T00:08:55.440Z + 2023-11-10T00:08:55.440Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Reconstruction of Bergmann glial morphology for whole-cell calcium simulations + + + + source-work-id + 30765311-57a1-4ac1-a6cf-061e3c645842 + 30765311-57a1-4ac1-a6cf-061e3c645842 + self + + + eid + 2-s2.0-85164267874 + 2-s2.0-85164267874 + self + + + doi + 10.1002/glia.24419 + 10.1002/glia.24419 + version-of + + + https://researchportal.tuni.fi/en/publications/30765311-57a1-4ac1-a6cf-061e3c645842 + other + + 2023 + + Glia + + + + 2023-11-10T00:08:55.426Z + + + source-work-id + 6092190f-1187-4499-bca0-44dfdb9c41b6 + 6092190f-1187-4499-bca0-44dfdb9c41b6 + self + + + + 2023-11-10T00:08:55.426Z + 2023-11-10T00:08:55.426Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neuron-astrocyte interactions using the NEST simulator (AstroNeuronNets) + + + + source-work-id + 6092190f-1187-4499-bca0-44dfdb9c41b6 + 6092190f-1187-4499-bca0-44dfdb9c41b6 + self + + + https://researchportal.tuni.fi/en/publications/6092190f-1187-4499-bca0-44dfdb9c41b6 + conference-abstract + + 2023 + + Human Brain Project Summit 2023, Marseille, France, 28/03/23 + + + + 2023-11-10T00:08:55.423Z + + + source-work-id + 75b79d75-0f37-4e48-a46d-3680d0f9df5a + 75b79d75-0f37-4e48-a46d-3680d0f9df5a + self + + + + 2023-11-10T00:08:55.423Z + 2023-11-10T00:08:55.423Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modelling of neuron-astrocyte interactions in the NEST simulator + + + + source-work-id + 75b79d75-0f37-4e48-a46d-3680d0f9df5a + 75b79d75-0f37-4e48-a46d-3680d0f9df5a + self + + + https://researchportal.tuni.fi/en/publications/75b79d75-0f37-4e48-a46d-3680d0f9df5a + conference-abstract + + 2023 + + 15th Göttingen Meeting of the German Neuroscience Society, Göttingen, Germany, 22/03/23 + + + + 2024-01-12T23:59:50.769Z + + + source-work-id + e22ca8b2-c61a-42bc-b434-a9f7eca4e685 + e22ca8b2-c61a-42bc-b434-a9f7eca4e685 + self + + + + 2024-01-12T23:59:50.769Z + 2024-01-12T23:59:50.769Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Integrating wet-lab data, computational models and tools in EBRAINS digital neuroscience platform for better understanding of the human brain + + + + source-work-id + e22ca8b2-c61a-42bc-b434-a9f7eca4e685 + e22ca8b2-c61a-42bc-b434-a9f7eca4e685 + self + + + https://researchportal.tuni.fi/en/publications/e22ca8b2-c61a-42bc-b434-a9f7eca4e685 + conference-abstract + + 2023 + + MET Research Day 2023, Tampere, Finland, 30/11/23 + + + + 2023-11-10T00:08:55.429Z + + + source-work-id + e5c8172f-32dc-4f99-bfec-67c620f69f71 + e5c8172f-32dc-4f99-bfec-67c620f69f71 + self + + + + 2023-11-10T00:08:55.429Z + 2023-11-10T00:08:55.429Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Interaction schemes and spatial organization of cells in computational models of neuron-astrocyte networks + + + + source-work-id + e5c8172f-32dc-4f99-bfec-67c620f69f71 + e5c8172f-32dc-4f99-bfec-67c620f69f71 + self + + + https://researchportal.tuni.fi/en/publications/e5c8172f-32dc-4f99-bfec-67c620f69f71 + conference-abstract + + 2023 + + Human Brain Project Summit 2023, Marseille, France, 28/03/23 + + + + 2022-11-03T00:14:12.019Z + + + eid + 2-s2.0-85129140475 + 2-s2.0-85129140475 + self + + + pmid + 35471536 + 35471536 + self + + + source-work-id + b540f47e-b252-46dd-82ea-ef3094e63572 + b540f47e-b252-46dd-82ea-ef3094e63572 + self + + + doi + 10.1007/978-3-030-89439-9_4 + 10.1007/978-3-030-89439-9_4 + self + + + + 2022-06-29T22:29:50.771Z + 2022-11-03T00:14:12.019Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Neuron–Glia Interactions and Brain Circuits + + + + source-work-id + b540f47e-b252-46dd-82ea-ef3094e63572 + b540f47e-b252-46dd-82ea-ef3094e63572 + self + + + eid + 2-s2.0-85129140475 + 2-s2.0-85129140475 + self + + + pmid + 35471536 + 35471536 + self + + + doi + 10.1007/978-3-030-89439-9_4 + 10.1007/978-3-030-89439-9_4 + self + + + isbn + 978-3-030-89439-9 + 9783030894399 + part-of + + + isbn + 978-3-030-89438-2 + 9783030894382 + part-of + + + https://researchportal.tuni.fi/en/publications/b540f47e-b252-46dd-82ea-ef3094e63572 + book-chapter + + 2022 + 04 + 27 + + Computational Modelling of the Brain + + + + 2022-12-14T23:34:35.217Z + + + source-work-id + 26df09ce-b3a1-4f6f-9dec-1fb4f57ab39a + 26df09ce-b3a1-4f6f-9dec-1fb4f57ab39a + self + + + + 2022-12-14T23:34:35.217Z + 2022-12-14T23:34:35.217Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocytic modulation of synaptic plasticity: How to integrate biological knowledge, computational modeling, and model sensitivity analysis + + + + source-work-id + 26df09ce-b3a1-4f6f-9dec-1fb4f57ab39a + 26df09ce-b3a1-4f6f-9dec-1fb4f57ab39a + self + + + https://researchportal.tuni.fi/en/publications/26df09ce-b3a1-4f6f-9dec-1fb4f57ab39a + conference-abstract + + 2022 + + 51st Annual Meeting of the Society for Neuroscience (SFN 2022), San Diego, United States, 12/11/22 + + + + 2022-12-14T23:34:35.214Z + + + source-work-id + 0ce907d8-1018-4a44-bd54-c116807642ea + 0ce907d8-1018-4a44-bd54-c116807642ea + self + + + + 2022-12-14T23:34:35.214Z + 2022-12-14T23:34:35.214Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Calcium dynamics simulations with morphologically detailed reconstruction of cerebellar astroglial cell model + + + + source-work-id + 0ce907d8-1018-4a44-bd54-c116807642ea + 0ce907d8-1018-4a44-bd54-c116807642ea + self + + + https://researchportal.tuni.fi/en/publications/0ce907d8-1018-4a44-bd54-c116807642ea + conference-abstract + + 2022 + + MET Research Day 2022, Tampere, Finland, 24/11/22 + + + + 2022-11-23T23:32:51.637Z + + + source-work-id + ca9165b9-107a-4e3a-a6c4-0e05fe2093d7 + ca9165b9-107a-4e3a-a6c4-0e05fe2093d7 + self + + + + 2022-11-23T23:32:51.637Z + 2022-11-23T23:32:51.637Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Calcium dynamics simulations with morphologically-detailed reconstruction of Bergmann glial cell model + + + + source-work-id + ca9165b9-107a-4e3a-a6c4-0e05fe2093d7 + ca9165b9-107a-4e3a-a6c4-0e05fe2093d7 + self + + + https://researchportal.tuni.fi/en/publications/ca9165b9-107a-4e3a-a6c4-0e05fe2093d7 + conference-abstract + + 2022 + + FENS Forum of Neuroscience 2022, Paris, France, 9/07/22 + + + + 2022-12-14T23:34:35.220Z + + + source-work-id + 0b317082-8c2e-474d-870b-cd6719c222fd + 0b317082-8c2e-474d-870b-cd6719c222fd + self + + + + 2022-12-14T23:34:35.220Z + 2022-12-14T23:34:35.220Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neuron-astrocyte interactions in the NEST simulator + + + + source-work-id + 0b317082-8c2e-474d-870b-cd6719c222fd + 0b317082-8c2e-474d-870b-cd6719c222fd + self + + + https://researchportal.tuni.fi/en/publications/0b317082-8c2e-474d-870b-cd6719c222fd + conference-abstract + + 2022 + + INM IBI Retreat, Jülich, Germany, 18/10/22 + + + + 2023-02-16T00:00:45.671Z + + + source-work-id + 2d3269f5-f51d-42fb-822d-7a98d800f221 + 2d3269f5-f51d-42fb-822d-7a98d800f221 + self + + + + 2023-02-16T00:00:45.671Z + 2023-02-16T00:00:45.671Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling spiking networks with neuron-glia interactions in NEST + + + + source-work-id + 2d3269f5-f51d-42fb-822d-7a98d800f221 + 2d3269f5-f51d-42fb-822d-7a98d800f221 + self + + + https://researchportal.tuni.fi/en/publications/2d3269f5-f51d-42fb-822d-7a98d800f221 + conference-abstract + + 2022 + + NEST Conference 2022, 23/06/22 + + + + 2023-07-20T23:04:42.594Z + + + source-work-id + a908c30c-2bad-4ed0-ad0f-65ba16a10b23 + a908c30c-2bad-4ed0-ad0f-65ba16a10b23 + self + + + doi + 10.1016/j.ifacol.2023.01.025 + 10.1016/j.ifacol.2023.01.025 + self + + + eid + 2-s2.0-85161971058 + 2-s2.0-85161971058 + self + + + + 2023-02-16T00:00:45.675Z + 2023-07-20T23:04:42.594Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Sensitivity analysis of biophysically-detailed tripartite synapse model + + + + source-work-id + a908c30c-2bad-4ed0-ad0f-65ba16a10b23 + a908c30c-2bad-4ed0-ad0f-65ba16a10b23 + self + + + eid + 2-s2.0-85161971058 + 2-s2.0-85161971058 + self + + + doi + 10.1016/j.ifacol.2023.01.025 + 10.1016/j.ifacol.2023.01.025 + self + + + https://researchportal.tuni.fi/en/publications/a908c30c-2bad-4ed0-ad0f-65ba16a10b23 + conference-paper + + 2022 + + 9th Conference on Foundations of Systems Biology in Engineering (FOSBE 2022) + + + + 2023-01-11T23:43:24.149Z + + + source-work-id + 72ac821c-bdfb-4b78-8b57-ee75cf9dc1e0 + 72ac821c-bdfb-4b78-8b57-ee75cf9dc1e0 + self + + + + 2023-01-11T23:43:24.149Z + 2023-01-11T23:43:24.149Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Sensitivity analysis of cortical synapse model with Uncertainpy + + + + source-work-id + 72ac821c-bdfb-4b78-8b57-ee75cf9dc1e0 + 72ac821c-bdfb-4b78-8b57-ee75cf9dc1e0 + self + + + https://researchportal.tuni.fi/en/publications/72ac821c-bdfb-4b78-8b57-ee75cf9dc1e0 + conference-abstract + + 2022 + + MET Research Day 2022, Tampere, Finland, 24/11/22 + + + + 2022-10-26T22:35:57.768Z + + + source-work-id + 26f8033e-0918-4a1c-ad12-9dd8c9184cf4 + 26f8033e-0918-4a1c-ad12-9dd8c9184cf4 + self + + + + 2022-10-26T22:35:57.768Z + 2022-10-26T22:35:57.768Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + The role of astrocytes in somatosensory synaptic plasticity during development: Integration of data and computational modeling + + + + source-work-id + 26f8033e-0918-4a1c-ad12-9dd8c9184cf4 + 26f8033e-0918-4a1c-ad12-9dd8c9184cf4 + self + + + https://researchportal.tuni.fi/en/publications/26f8033e-0918-4a1c-ad12-9dd8c9184cf4 + conference-abstract + + 2022 + + FENS Forum of Neuroscience 2022, Paris, France, 9/07/22 + + + + 2022-06-02T17:42:49.229Z + + + source-work-id + 7b60d5d5-aa11-4ef9-afe1-cea4d5f75747 + 7b60d5d5-aa11-4ef9-afe1-cea4d5f75747 + self + + + + 2022-01-28T23:28:42.551Z + 2022-06-02T17:42:49.229Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + AstroNeuronNets: Computational modeling of neuron-glia interaction in large-scale brain systems + + + + source-work-id + 7b60d5d5-aa11-4ef9-afe1-cea4d5f75747 + 7b60d5d5-aa11-4ef9-afe1-cea4d5f75747 + self + + + https://researchportal.tuni.fi/en/publications/7b60d5d5-aa11-4ef9-afe1-cea4d5f75747 + conference-poster + + 2021 + + Human Brain Project Summit 2021 - Pushing the Boundaries of Brain Research, 12/10/21 + + + + 2022-06-02T11:34:19.078Z + + + doi + 10.1002/glia.24036 + 10.1002/glia.24036 + self + + + source-work-id + e01f91ee-6b0c-4760-b761-6a5a229237a0 + e01f91ee-6b0c-4760-b761-6a5a229237a0 + self + + + + 2021-12-14T23:27:13.491Z + 2022-06-02T11:34:19.078Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocytic modulation of cortical synaptic plasticity + + + + source-work-id + e01f91ee-6b0c-4760-b761-6a5a229237a0 + e01f91ee-6b0c-4760-b761-6a5a229237a0 + self + + + doi + 10.1002/glia.24036 + 10.1002/glia.24036 + self + + + https://researchportal.tuni.fi/en/publications/e01f91ee-6b0c-4760-b761-6a5a229237a0 + other + + 2021 + + Glia + + + + 2022-06-02T16:43:15.636Z + + + eid + 2-s2.0-85122908421 + 2-s2.0-85122908421 + self + + + source-work-id + 63869731-d3a2-4c6e-b068-dd93a05d20de + 63869731-d3a2-4c6e-b068-dd93a05d20de + self + + + doi + 10.1007/s10827-021-00801-9 + 10.1007/s10827-021-00801-9 + self + + + + 2022-01-21T23:27:54.805Z + 2022-06-02T16:43:15.636Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocytic modulation of synaptic transmission and plasticity in developing somatosensory cortex + + + + source-work-id + 63869731-d3a2-4c6e-b068-dd93a05d20de + 63869731-d3a2-4c6e-b068-dd93a05d20de + self + + + eid + 2-s2.0-85122908421 + 2-s2.0-85122908421 + self + + + doi + 10.1007/s10827-021-00801-9 + 10.1007/s10827-021-00801-9 + self + + + https://researchportal.tuni.fi/en/publications/63869731-d3a2-4c6e-b068-dd93a05d20de + conference-abstract + + 2021 + + 30th Annual Computational Neuroscience Meeting CNS*2021, Online, 3/07/21 + + + + 2022-06-02T11:34:19.066Z + + + source-work-id + e604bb25-6e7c-4ff4-856a-54dbc79309e3 + e604bb25-6e7c-4ff4-856a-54dbc79309e3 + self + + + + 2021-12-14T23:27:13.486Z + 2022-06-02T11:34:19.066Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational neuroscience research group + + + + source-work-id + e604bb25-6e7c-4ff4-856a-54dbc79309e3 + e604bb25-6e7c-4ff4-856a-54dbc79309e3 + self + + + https://researchportal.tuni.fi/en/publications/e604bb25-6e7c-4ff4-856a-54dbc79309e3 + conference-abstract + + 2021 + + MET Research Day 2021, Tampere, Finland, 25/11/21 + + + + 2022-06-02T11:34:19.083Z + + + source-work-id + e26171e3-0b1f-49ca-96b7-0343dfdaa637 + e26171e3-0b1f-49ca-96b7-0343dfdaa637 + self + + + + 2021-12-14T23:27:13.493Z + 2022-06-02T11:34:19.083Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + In silico analysis of biochemical mechanisms responsible for astrocyte modulation of synaptic plasticity in developing somatosensory cortex + + + + source-work-id + e26171e3-0b1f-49ca-96b7-0343dfdaa637 + e26171e3-0b1f-49ca-96b7-0343dfdaa637 + self + + + https://researchportal.tuni.fi/en/publications/e26171e3-0b1f-49ca-96b7-0343dfdaa637 + conference-abstract + + 2021 + + SfN Global Connectome 2021, 11/01/21 + + + + 2022-06-02T11:34:19.073Z + + + source-work-id + 4cee97fd-e11b-4d64-8eee-92b9d672cbe2 + 4cee97fd-e11b-4d64-8eee-92b9d672cbe2 + self + + + + 2021-12-14T23:27:13.489Z + 2022-06-02T11:34:19.073Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Integrating neuron-glia knowledge and computational modeling to understand cortical synaptic plasticity + + + + source-work-id + 4cee97fd-e11b-4d64-8eee-92b9d672cbe2 + 4cee97fd-e11b-4d64-8eee-92b9d672cbe2 + self + + + https://researchportal.tuni.fi/en/publications/4cee97fd-e11b-4d64-8eee-92b9d672cbe2 + conference-abstract + + 2021 + + 50th Annual Meeting of the Society for Neuroscience (SFN 2021), 8/11/21 + + + + 2022-06-02T16:56:18.467Z + + + source-work-id + 2b9fecf1-7c32-40c1-85bd-a1b81fc82ee8 + 2b9fecf1-7c32-40c1-85bd-a1b81fc82ee8 + self + + + + 2022-01-24T23:28:41.097Z + 2022-06-02T16:56:18.467Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Morphologically-detailed reconstruction and simulation of cerebellar glial cell model + + + + source-work-id + 2b9fecf1-7c32-40c1-85bd-a1b81fc82ee8 + 2b9fecf1-7c32-40c1-85bd-a1b81fc82ee8 + self + + + https://researchportal.tuni.fi/en/publications/2b9fecf1-7c32-40c1-85bd-a1b81fc82ee8 + conference-abstract + + 2021 + + MET Research Day 2021, Tampere, Finland, 25/11/21 + + + + 2023-06-22T00:08:00.175Z + + + eid + 2-s2.0-85096029284 + 2-s2.0-85096029284 + self + + + pmid + 33170856 + 33170856 + self + + + doi + 10.1371/journal.pcbi.1008360 + 10.1371/journal.pcbi.1008360 + self + + + source-work-id + 03768df1-7f92-471f-bafd-b308970e8090 + 03768df1-7f92-471f-bafd-b308970e8090 + self + + + + 2021-09-01T00:39:10.271Z + 2023-06-22T00:08:00.175Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte-mediated spike-timing-dependent long-term depression modulates synaptic properties in the developing cortex + + + + source-work-id + 03768df1-7f92-471f-bafd-b308970e8090 + 03768df1-7f92-471f-bafd-b308970e8090 + self + + + eid + 2-s2.0-85096029284 + 2-s2.0-85096029284 + self + + + pmid + 33170856 + 33170856 + self + + + doi + 10.1371/journal.pcbi.1008360 + 10.1371/journal.pcbi.1008360 + self + + + https://researchportal.tuni.fi/en/publications/03768df1-7f92-471f-bafd-b308970e8090 + journal-article + + 2020 + 11 + 10 + + PLoS Computational Biology + + + + 2022-09-27T22:32:28.415Z + + + source-work-id + 0055c66f-9fd0-4d93-bea1-07863a28ccd3 + 0055c66f-9fd0-4d93-bea1-07863a28ccd3 + self + + + + 2022-09-07T22:31:20.978Z + 2022-09-27T22:32:28.415Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte simulations with realistic morphologies reveal diverse calcium transients in soma and processes + + + + source-work-id + 0055c66f-9fd0-4d93-bea1-07863a28ccd3 + 0055c66f-9fd0-4d93-bea1-07863a28ccd3 + self + + + doi + 10.1186/s12868-020-00593-1 + 10.1186/s12868-020-00593-1 + part-of + + + https://researchportal.tuni.fi/en/publications/0055c66f-9fd0-4d93-bea1-07863a28ccd3 + other + + 2020 + + BMC Neuroscience + + + + 2022-06-02T08:43:51.760Z + + + source-work-id + 1dc0564c-d38d-476b-8ec7-6e1f2cff323d + 1dc0564c-d38d-476b-8ec7-6e1f2cff323d + self + + + + 2021-11-12T23:28:17.067Z + 2022-06-02T08:43:51.760Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Biophysical modeling of astrocytes and astrocyte-neuron interactions + + + + source-work-id + 1dc0564c-d38d-476b-8ec7-6e1f2cff323d + 1dc0564c-d38d-476b-8ec7-6e1f2cff323d + self + + + https://researchportal.tuni.fi/en/publications/1dc0564c-d38d-476b-8ec7-6e1f2cff323d + conference-abstract + + 2020 + + FENS 2020 Virtual Forum, 11/07/20 + + + + 2022-06-02T08:43:51.766Z + + + source-work-id + 2ba73cb2-7e40-4f07-9f20-030b374cbe81 + 2ba73cb2-7e40-4f07-9f20-030b374cbe81 + self + + + + 2021-11-12T23:28:17.069Z + 2022-06-02T08:43:51.766Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neural network dynamic in vitro: the role of neuronal, synaptic and non-neuronal mechanisms in spontaneous network bursts in rodent cortical cultures + + + + source-work-id + 2ba73cb2-7e40-4f07-9f20-030b374cbe81 + 2ba73cb2-7e40-4f07-9f20-030b374cbe81 + self + + + https://researchportal.tuni.fi/en/publications/2ba73cb2-7e40-4f07-9f20-030b374cbe81 + conference-abstract + + 2020 + + FENS 2020 Virtual Forum, 11/07/20 + + + + 2022-06-02T08:43:51.772Z + + + source-work-id + aff0da30-ff82-4cb2-86e9-1918c4b1802b + aff0da30-ff82-4cb2-86e9-1918c4b1802b + self + + + + 2021-11-12T23:28:17.070Z + 2022-06-02T08:43:51.772Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Morphologically detailed modeling of astrocytes to study calcium signals in soma and processes + + + + source-work-id + aff0da30-ff82-4cb2-86e9-1918c4b1802b + aff0da30-ff82-4cb2-86e9-1918c4b1802b + self + + + https://researchportal.tuni.fi/en/publications/aff0da30-ff82-4cb2-86e9-1918c4b1802b + conference-poster + + 2020 + + FENS 2020 Virtual Forum, 11/07/20 + + + + 2022-09-07T22:31:20.983Z + + + eid + 2-s2.0-85098745160 + 2-s2.0-85098745160 + self + + + source-work-id + 17c3a876-eb07-4ec0-b27d-7be578831323 + 17c3a876-eb07-4ec0-b27d-7be578831323 + self + + + + 2022-09-07T22:31:20.983Z + 2022-09-07T22:31:20.983Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Morphologically‐detailed reconstruction of cerebellar glial cells + + + + source-work-id + 17c3a876-eb07-4ec0-b27d-7be578831323 + 17c3a876-eb07-4ec0-b27d-7be578831323 + self + + + eid + 2-s2.0-85098745160 + 2-s2.0-85098745160 + self + + + doi + 10.1186/s12868-020-00593-1 + 10.1186/s12868-020-00593-1 + part-of + + + https://researchportal.tuni.fi/en/publications/17c3a876-eb07-4ec0-b27d-7be578831323 + other + + 2020 + + BMC Neuroscience + + + + 2022-06-02T08:43:51.777Z + + + source-work-id + 100b221b-9831-4432-888d-3b2d7423f8a9 + 100b221b-9831-4432-888d-3b2d7423f8a9 + self + + + + 2021-11-12T23:28:17.072Z + 2022-06-02T08:43:51.777Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + NEST component for modeling spiking neuron-astrocyte networks + + + + source-work-id + 100b221b-9831-4432-888d-3b2d7423f8a9 + 100b221b-9831-4432-888d-3b2d7423f8a9 + self + + + https://researchportal.tuni.fi/en/publications/100b221b-9831-4432-888d-3b2d7423f8a9 + conference-abstract + + 2020 + + NEST Conference 2020, 29/06/20 + + + + 2023-02-24T13:20:59.897Z + + + doi + 10.1186/s12868-020-00593-1 + 10.1186/s12868-020-00593-1 + self + + + source-work-id + ce72ab98-c1f4-43bf-8eb2-7deddb2672ab + ce72ab98-c1f4-43bf-8eb2-7deddb2672ab + self + + + + 2022-09-07T22:31:20.972Z + 2023-02-24T13:20:59.897Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + The interplay of neural mechanisms regulates spontaneous cortical network activity: inferring the role of key mechanisms using data-driven modeling + + + + source-work-id + ce72ab98-c1f4-43bf-8eb2-7deddb2672ab + ce72ab98-c1f4-43bf-8eb2-7deddb2672ab + self + + + doi + 10.1186/s12868-020-00593-1 + 10.1186/s12868-020-00593-1 + self + + + https://researchportal.tuni.fi/en/publications/ce72ab98-c1f4-43bf-8eb2-7deddb2672ab + other + + 2020 + + BMC Neuroscience + + + + 2022-05-28T18:18:37.970Z + + + eid + 2-s2.0-85065589802 + 2-s2.0-85065589802 + self + + + doi + 10.7554/elife.37102 + 10.7554/elife.37102 + https://doi.org/10.7554/elife.37102 + self + + + source-work-id + 0b43a97e-df2f-4fde-877c-fd34fc4263eb + 0b43a97e-df2f-4fde-877c-fd34fc4263eb + self + + + + 2019-05-11T21:49:44.462Z + 2019-05-11T21:49:44.462Z + + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Cerebellar Purkinje cells control eye movements with a rapid rate code that is invariant to spike irregularity + + + + doi + 10.7554/elife.37102 + 10.7554/elife.37102 + https://doi.org/10.7554/elife.37102 + self + + + issn + 2050-084X + 2050-084X + part-of + + + http://dx.doi.org/10.7554/elife.37102 + journal-article + + 2019 + 05 + 03 + + eLife + + + 2019-05-10T22:51:32.790Z + 2022-05-28T18:18:37.970Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Cerebellar Purkinje cells control eye movements with a rapid rate code that is invariant to spike irregularity + + + + source-work-id + 0b43a97e-df2f-4fde-877c-fd34fc4263eb + 0b43a97e-df2f-4fde-877c-fd34fc4263eb + self + + + eid + 2-s2.0-85065589802 + 2-s2.0-85065589802 + self + + + doi + 10.7554/eLife.37102 + 10.7554/elife.37102 + self + + + https://researchportal.tuni.fi/en/publications/0b43a97e-df2f-4fde-877c-fd34fc4263eb + journal-article + + 2019 + + eLIFE + + + + 2022-05-27T19:37:31.239Z + + + doi + https://doi.org/10.1007/978-3-030-00817-8_16 + 10.1007/978-3-030-00817-8_16 + self + + + source-work-id + 9ddbf82d-a80e-4a6c-8306-9f152853dcac + 9ddbf82d-a80e-4a6c-8306-9f152853dcac + self + + + + 2019-01-29T23:52:29.515Z + 2022-05-27T19:37:31.239Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational models of astrocytes and astrocyte-neuron interactions: Characterization, reproducibility, and future perspectives + + + + source-work-id + 9ddbf82d-a80e-4a6c-8306-9f152853dcac + 9ddbf82d-a80e-4a6c-8306-9f152853dcac + self + + + doi + https://doi.org/10.1007/978-3-030-00817-8_16 + 10.1007/978-3-030-00817-8_16 + self + + + isbn + 978-3-030-00817-8 + 9783030008178 + part-of + + + isbn + 978-3-030-00815-4 + 9783030008154 + part-of + + + https://researchportal.tuni.fi/en/publications/9ddbf82d-a80e-4a6c-8306-9f152853dcac + book-chapter + + 2019 + 03 + 13 + + Computational Glioscience + + + + 2022-06-02T08:43:51.749Z + + + source-work-id + 1923fb6e-6216-4311-b73c-238a3e38cdd3 + 1923fb6e-6216-4311-b73c-238a3e38cdd3 + self + + + + 2021-11-12T23:28:17.064Z + 2022-06-02T08:43:51.749Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational and theoretical tools for advancing neuroscience and neuropsychiatry + + + + source-work-id + 1923fb6e-6216-4311-b73c-238a3e38cdd3 + 1923fb6e-6216-4311-b73c-238a3e38cdd3 + self + + + https://researchportal.tuni.fi/en/publications/1923fb6e-6216-4311-b73c-238a3e38cdd3 + conference-abstract + + 2019 + + MET Research Day, Tampere, Finland, 29/11/19 + + + + 2022-06-02T08:43:51.744Z + + + source-work-id + 926809b2-aad2-4ae4-824a-86d02130a51d + 926809b2-aad2-4ae4-824a-86d02130a51d + self + + + + 2021-11-12T23:28:17.062Z + 2022-06-02T08:43:51.744Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of cerebellar functions + + + + source-work-id + 926809b2-aad2-4ae4-824a-86d02130a51d + 926809b2-aad2-4ae4-824a-86d02130a51d + self + + + https://researchportal.tuni.fi/en/publications/926809b2-aad2-4ae4-824a-86d02130a51d + conference-abstract + + 2019 + + MET Research Day, Tampere, Finland, 29/11/19 + + + + 2022-06-02T08:43:51.727Z + + + source-work-id + 4c0502b3-0406-4bbd-a4f8-6135e27955fd + 4c0502b3-0406-4bbd-a4f8-6135e27955fd + self + + + + 2021-11-12T23:28:17.058Z + 2022-06-02T08:43:51.727Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational models of astrocyte calcium dynamics and astrocyte-neuron interactions + + + + source-work-id + 4c0502b3-0406-4bbd-a4f8-6135e27955fd + 4c0502b3-0406-4bbd-a4f8-6135e27955fd + self + + + https://researchportal.tuni.fi/en/publications/4c0502b3-0406-4bbd-a4f8-6135e27955fd + conference-abstract + + 2019 + + 28th Annual Computational Neuroscience Meeting (CNS*2019), Barcelona, Spain, 13/07/19 + + + + 2022-06-02T08:43:51.738Z + + + source-work-id + d1a1626a-1f1a-4af8-942b-17509e7cc749 + d1a1626a-1f1a-4af8-942b-17509e7cc749 + self + + + + 2021-11-12T23:28:17.061Z + 2022-06-02T08:43:51.738Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + In silico modeling of astrocytes and neuron-astrocyte interactions + + + + source-work-id + d1a1626a-1f1a-4af8-942b-17509e7cc749 + d1a1626a-1f1a-4af8-942b-17509e7cc749 + self + + + https://researchportal.tuni.fi/en/publications/d1a1626a-1f1a-4af8-942b-17509e7cc749 + conference-abstract + + 2019 + + International Astrocyte School (IAS 2019), Bertinoro, Italy, 7/04/19 + + + + 2022-05-29T18:19:07.128Z + + + source-work-id + a2e58c08-3364-47c0-ac69-e1dd29188007 + a2e58c08-3364-47c0-ac69-e1dd29188007 + self + + + doi + 10.1186/s12868-019-0538-0 + 10.1186/s12868-019-0538-0 + self + + + + 2020-01-08T23:56:34.016Z + 2022-05-29T18:19:07.128Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling the influence of neuron-astrocyte interactions on signal transmission in neuronal networks + + + + source-work-id + a2e58c08-3364-47c0-ac69-e1dd29188007 + a2e58c08-3364-47c0-ac69-e1dd29188007 + self + + + doi + 10.1186/s12868-019-0538-0 + 10.1186/s12868-019-0538-0 + self + + + https://researchportal.tuni.fi/en/publications/a2e58c08-3364-47c0-ac69-e1dd29188007 + other + + 2019 + + BMC Neuroscience + + + + 2022-05-26T19:22:40.645Z + + + eid + 2-s2.0-85049072275 + 2-s2.0-85049072275 + self + + + doi + 10.3389/fncom.2018.00014 + 10.3389/fncom.2018.00014 + https://doi.org/10.3389/fncom.2018.00014 + self + + + source-work-id + 068ea89d-98ee-4b72-846a-9c4d0834350b + 068ea89d-98ee-4b72-846a-9c4d0834350b + self + + + + 2018-04-04T16:16:06.222Z + 2018-04-04T16:16:06.222Z + + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Computational models for calcium-mediated astrocyte functions + + + + doi + 10.3389/fncom.2018.00014 + 10.3389/fncom.2018.00014 + https://doi.org/10.3389/fncom.2018.00014 + self + + + journal-article + + 2018 + 04 + 04 + + Frontiers in Computational Neuroscience + + + 2018-04-05T22:52:00.152Z + 2022-05-26T19:22:40.645Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational models for calcium-mediated astrocyte functions + + + + source-work-id + 068ea89d-98ee-4b72-846a-9c4d0834350b + 068ea89d-98ee-4b72-846a-9c4d0834350b + self + + + eid + 2-s2.0-85049072275 + 2-s2.0-85049072275 + self + + + doi + 10.3389/fncom.2018.00014 + 10.3389/fncom.2018.00014 + self + + + https://researchportal.tuni.fi/en/publications/068ea89d-98ee-4b72-846a-9c4d0834350b + journal-article + + 2018 + + Frontiers in Computational Neuroscience + + + + 2022-05-25T22:51:07.717Z + + + doi + 10.1007/978-981-10-5122-7_170 + 10.1007/978-981-10-5122-7_170 + self + + + eid + 2-s2.0-85021708806 + 2-s2.0-85021708806 + self + + + source-work-id + eec86343-5f78-4f86-8dee-cf1d222d33d3 + eec86343-5f78-4f86-8dee-cf1d222d33d3 + self + + + + 2017-08-28T12:54:33.008Z + 2022-05-25T22:51:07.717Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Altered synaptic signaling due to β-amyloid interference in astrocytes + + + + source-work-id + eec86343-5f78-4f86-8dee-cf1d222d33d3 + eec86343-5f78-4f86-8dee-cf1d222d33d3 + self + + + eid + 2-s2.0-85021708806 + 2-s2.0-85021708806 + self + + + doi + 10.1007/978-981-10-5122-7_170 + 10.1007/978-981-10-5122-7_170 + self + + + isbn + 9789811051210 + 9789811051210 + part-of + + + https://researchportal.tuni.fi/en/publications/eec86343-5f78-4f86-8dee-cf1d222d33d3 + conference-paper + + 2018 + + EMBEC and NBC 2017 - Joint Conference of the European Medical and Biological Engineering Conference EMBEC 2017 and the Nordic-Baltic Conference on Biomedical Engineering and Medical Physics, NBC 2017 + + + + 2022-05-27T01:27:19.180Z + + + source-work-id + 99ec6501-61db-461f-b81c-861cdc4639ff + 99ec6501-61db-461f-b81c-861cdc4639ff + self + + + doi + 10.3389/fninf.2018.00020 + 10.3389/fninf.2018.00020 + self + + + eid + 2-s2.0-85049113764 + 2-s2.0-85049113764 + self + + + + 2018-06-05T22:52:00.480Z + 2022-05-27T01:27:19.180Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Challenges in reproducibility, replicability, and comparability of computational models and tools for neuronal and glial networks, cells, and subcellular structures + + + + source-work-id + 99ec6501-61db-461f-b81c-861cdc4639ff + 99ec6501-61db-461f-b81c-861cdc4639ff + self + + + eid + 2-s2.0-85049113764 + 2-s2.0-85049113764 + self + + + doi + 10.3389/fninf.2018.00020 + 10.3389/fninf.2018.00020 + self + + + https://researchportal.tuni.fi/en/publications/99ec6501-61db-461f-b81c-861cdc4639ff + journal-article + + 2018 + + Frontiers in Neuroinformatics + + + + 2022-06-02T08:43:51.732Z + + + source-work-id + c6dc5e37-dcba-476a-8361-d4dd61e34052 + c6dc5e37-dcba-476a-8361-d4dd61e34052 + self + + + + 2021-11-12T23:28:17.059Z + 2022-06-02T08:43:51.732Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational and theoretical tools for advancing neuroscience: from molecules to networks + + + + source-work-id + c6dc5e37-dcba-476a-8361-d4dd61e34052 + c6dc5e37-dcba-476a-8361-d4dd61e34052 + self + + + https://researchportal.tuni.fi/en/publications/c6dc5e37-dcba-476a-8361-d4dd61e34052 + conference-abstract + + 2018 + + Biomeditech &amp; med research day, Tampere, Finland, 23/11/18 + + + + 2022-05-27T19:45:47.872Z + + + source-work-id + 2d7453b6-b2e5-46a6-a6a8-c7ba96b4ee6e + 2d7453b6-b2e5-46a6-a6a8-c7ba96b4ee6e + self + + + doi + 10.1186/s12868-018-0452-x + 10.1186/s12868-018-0452-x + self + + + + 2019-01-30T23:52:23.773Z + 2022-05-27T19:45:47.872Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of neuron-astrocyte interactions: Evolution, reproducibility, comparability and future development of models + + + + source-work-id + 2d7453b6-b2e5-46a6-a6a8-c7ba96b4ee6e + 2d7453b6-b2e5-46a6-a6a8-c7ba96b4ee6e + self + + + doi + 10.1186/s12868-018-0452-x + 10.1186/s12868-018-0452-x + self + + + https://researchportal.tuni.fi/en/publications/2d7453b6-b2e5-46a6-a6a8-c7ba96b4ee6e + other + + 2018 + + BMC Neuroscience + + + + 2022-06-02T08:43:51.721Z + + + source-work-id + 3c40e3f3-83a4-4443-b8e1-e9d3caba497a + 3c40e3f3-83a4-4443-b8e1-e9d3caba497a + self + + + + 2021-11-12T23:28:17.056Z + 2022-06-02T08:43:51.721Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational models of astrocytes and neuron-astrocyte interactions to promote understanding of synaptic function and dysfunction + + + + source-work-id + 3c40e3f3-83a4-4443-b8e1-e9d3caba497a + 3c40e3f3-83a4-4443-b8e1-e9d3caba497a + self + + + https://researchportal.tuni.fi/en/publications/3c40e3f3-83a4-4443-b8e1-e9d3caba497a + conference-abstract + + 2018 + + Neuroplasticity: From Bench to Machine Learning, Guildford, United Kingdom, 13/07/18 + + + + 2022-06-02T08:43:51.755Z + + + source-work-id + f6766530-0fb8-49bb-b28d-e1d0f0e6c7ca + f6766530-0fb8-49bb-b28d-e1d0f0e6c7ca + self + + + + 2021-11-12T23:28:17.065Z + 2022-06-02T08:43:51.755Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + In silico modeling of astrocytes and neuron-astrocyte interactions + + + + source-work-id + f6766530-0fb8-49bb-b28d-e1d0f0e6c7ca + f6766530-0fb8-49bb-b28d-e1d0f0e6c7ca + self + + + https://researchportal.tuni.fi/en/publications/f6766530-0fb8-49bb-b28d-e1d0f0e6c7ca + conference-abstract + + 2018 + + Neuroscience 2013, Nov 9-13, San Diego, California, 1/01/13 + + + + 2022-06-02T08:43:51.716Z + + + source-work-id + 60e4cea2-2843-49e0-8c9b-60af98739255 + 60e4cea2-2843-49e0-8c9b-60af98739255 + self + + + + 2021-11-12T23:28:17.055Z + 2022-06-02T08:43:51.716Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte-modulated synaptic plasticity in sensory cortex in health and pathology: A computational study + + + + source-work-id + 60e4cea2-2843-49e0-8c9b-60af98739255 + 60e4cea2-2843-49e0-8c9b-60af98739255 + self + + + https://researchportal.tuni.fi/en/publications/60e4cea2-2843-49e0-8c9b-60af98739255 + conference-abstract + + 2017 + + 47th Annual Meeting of the Society for Neuroscience (SFN 2017), Washington, United States, 11/11/17 + + + + 2022-05-26T09:51:33.186Z + + + source-work-id + 32648b4a-bca0-4d2b-8af9-d53f58793afc + 32648b4a-bca0-4d2b-8af9-d53f58793afc + self + + + + 2017-12-15T23:58:46.198Z + 2022-05-26T09:51:33.186Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte-modulated synaptic plasticity in sensory cortex: A computational study + + + + source-work-id + 32648b4a-bca0-4d2b-8af9-d53f58793afc + 32648b4a-bca0-4d2b-8af9-d53f58793afc + self + + + https://researchportal.tuni.fi/en/publications/32648b4a-bca0-4d2b-8af9-d53f58793afc + other + + 2017 + + BMC Neuroscience + + + + 2022-05-26T08:52:19.369Z + + + source-work-id + ea94e870-8e7a-4604-99ec-7691f6b64b08 + ea94e870-8e7a-4604-99ec-7691f6b64b08 + self + + + doi + 10.1002/glia.v65.S1 + 10.1002/glia.v65.s1 + self + + + + 2017-11-30T00:13:49.706Z + 2022-05-26T08:52:19.369Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational modeling of glial-neuronal interactions + + + + source-work-id + ea94e870-8e7a-4604-99ec-7691f6b64b08 + ea94e870-8e7a-4604-99ec-7691f6b64b08 + self + + + doi + 10.1002/glia.v65.S1 + 10.1002/glia.v65.s1 + self + + + https://researchportal.tuni.fi/en/publications/ea94e870-8e7a-4604-99ec-7691f6b64b08 + other + + 2017 + + Glia + + + + 2022-05-26T08:52:19.377Z + + + source-work-id + 6a974f0a-cb8f-4191-a005-049510314685 + 6a974f0a-cb8f-4191-a005-049510314685 + self + + + eid + 2-s2.0-85027678828 + 2-s2.0-85027678828 + self + + + doi + 10.1007/978-3-319-63312-1_14 + 10.1007/978-3-319-63312-1_14 + self + + + + 2017-11-30T00:13:49.712Z + 2022-05-26T08:52:19.377Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling neuron-astrocyte interactions: towards understanding synaptic plasticity and learning in the brain + + + + source-work-id + 6a974f0a-cb8f-4191-a005-049510314685 + 6a974f0a-cb8f-4191-a005-049510314685 + self + + + eid + 2-s2.0-85027678828 + 2-s2.0-85027678828 + self + + + doi + 10.1007/978-3-319-63312-1_14 + 10.1007/978-3-319-63312-1_14 + self + + + isbn + 978-3-319-63312-1 + 9783319633121 + part-of + + + isbn + 978-3-319-63311-4 + 9783319633114 + part-of + + + https://researchportal.tuni.fi/en/publications/6a974f0a-cb8f-4191-a005-049510314685 + conference-paper + + 2017 + + Intelligent Computing Theories and Application + + + + 2022-05-25T22:51:07.705Z + + + eid + 2-s2.0-85015371791 + 2-s2.0-85015371791 + self + + + source-work-id + 32d5fcbc-20ef-410c-984e-ce81b0c4c5c8 + 32d5fcbc-20ef-410c-984e-ce81b0c4c5c8 + self + + + doi + 10.3389/fninf.2017.00011 + 10.3389/fninf.2017.00011 + self + + + + 2017-08-28T12:54:33.008Z + 2022-05-25T22:51:07.705Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Reproducibility and Comparability of Computational Models for Astrocyte Calcium Excitability + + + + source-work-id + 32d5fcbc-20ef-410c-984e-ce81b0c4c5c8 + 32d5fcbc-20ef-410c-984e-ce81b0c4c5c8 + self + + + eid + 2-s2.0-85015371791 + 2-s2.0-85015371791 + self + + + doi + 10.3389/fninf.2017.00011 + 10.3389/fninf.2017.00011 + self + + + https://researchportal.tuni.fi/en/publications/32d5fcbc-20ef-410c-984e-ce81b0c4c5c8 + journal-article + + 2017 + + Frontiers in Neuroinformatics + + + + 2022-05-26T10:06:48.771Z + + + source-work-id + 0cb20c15-92dd-4b34-b724-36f8fa0cecde + 0cb20c15-92dd-4b34-b724-36f8fa0cecde + self + + + doi + 10.7717/peerj-cs.142 + 10.7717/peerj-cs.142 + self + + + eid + 2-s2.0-85040188790 + 2-s2.0-85040188790 + self + + + + 2017-12-20T23:58:50.709Z + 2022-05-26T10:06:48.771Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Sustainable computational science: the ReScience initiative + + + + source-work-id + 0cb20c15-92dd-4b34-b724-36f8fa0cecde + 0cb20c15-92dd-4b34-b724-36f8fa0cecde + self + + + eid + 2-s2.0-85040188790 + 2-s2.0-85040188790 + self + + + doi + 10.7717/peerj-cs.142 + 10.7717/peerj-cs.142 + self + + + https://researchportal.tuni.fi/en/publications/0cb20c15-92dd-4b34-b724-36f8fa0cecde + journal-article + + 2017 + + PeerJ Computer Science + + + + 2022-06-02T08:43:51.709Z + + + source-work-id + 2f0c0a22-2895-49bb-a814-85e55d5cb4ab + 2f0c0a22-2895-49bb-a814-85e55d5cb4ab + self + + + + 2021-11-12T23:28:17.053Z + 2022-06-02T08:43:51.709Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte-neuron interactions in long-term plasticity: a computational study + + + + source-work-id + 2f0c0a22-2895-49bb-a814-85e55d5cb4ab + 2f0c0a22-2895-49bb-a814-85e55d5cb4ab + self + + + https://researchportal.tuni.fi/en/publications/2f0c0a22-2895-49bb-a814-85e55d5cb4ab + conference-abstract + + 2016 + + The 46th Annual Meeting of the Society for Neuroscience, SFN 2016, San Diego, CA, USA, 12-16 November 2016, San Diego, United States, 12/11/16 + + + + 2022-06-02T08:43:51.701Z + + + source-work-id + 33b2c0a1-30b5-4aaf-a444-3ed4ba0c5c29 + 33b2c0a1-30b5-4aaf-a444-3ed4ba0c5c29 + self + + + + 2021-11-12T23:28:17.050Z + 2022-06-02T08:43:51.701Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Astrocyte-neuron interactions in vitro and in vivo: Evaluation of computational models + + + + source-work-id + 33b2c0a1-30b5-4aaf-a444-3ed4ba0c5c29 + 33b2c0a1-30b5-4aaf-a444-3ed4ba0c5c29 + self + + + https://researchportal.tuni.fi/en/publications/33b2c0a1-30b5-4aaf-a444-3ed4ba0c5c29 + conference-abstract + + 2016 + + 10th FENS Forum of Neuroscience, Copenhagen, Denmark, 2/07/16 + + + + 2022-05-25T22:51:07.752Z + + + source-work-id + 70f8cd58-7f1f-4ac4-bdb3-d3bc88260910 + 70f8cd58-7f1f-4ac4-bdb3-d3bc88260910 + self + + + + 2017-08-28T12:54:33.010Z + 2022-05-25T22:51:07.752Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Extending computational models of astrocyte-neuron interactions with biochemical mechanisms on the postsynaptic terminal + + + + source-work-id + 70f8cd58-7f1f-4ac4-bdb3-d3bc88260910 + 70f8cd58-7f1f-4ac4-bdb3-d3bc88260910 + self + + + https://researchportal.tuni.fi/en/publications/70f8cd58-7f1f-4ac4-bdb3-d3bc88260910 + other + + 2015 + + BMC Neuroscience + + + + 2022-05-25T22:51:07.741Z + + + source-work-id + 0216cbb3-5483-4ee1-bc94-811fbbeeeb7d + 0216cbb3-5483-4ee1-bc94-811fbbeeeb7d + self + + + + 2017-08-28T12:54:33.010Z + 2022-05-25T22:51:07.741Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + How temporal variation affects downstream neurons through deep cerebellar nuclei model + + + + source-work-id + 0216cbb3-5483-4ee1-bc94-811fbbeeeb7d + 0216cbb3-5483-4ee1-bc94-811fbbeeeb7d + self + + + https://researchportal.tuni.fi/en/publications/0216cbb3-5483-4ee1-bc94-811fbbeeeb7d + conference-paper + + 2015 + + Annual Biomedical Research Conference for Minority Student, ABRCMS 2015, Seattle, WA, USA, 11-14 November, 2015 + + + + 2022-05-25T22:51:07.736Z + + + source-work-id + 3319ec06-7170-46ae-9578-ee9b173b7a34 + 3319ec06-7170-46ae-9578-ee9b173b7a34 + self + + + + 2017-08-28T12:54:33.009Z + 2022-05-25T22:51:07.736Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling cortical neuroplasticity and synaptic functions: Implications for future neuroscience, medicine, and computing + + + + source-work-id + 3319ec06-7170-46ae-9578-ee9b173b7a34 + 3319ec06-7170-46ae-9578-ee9b173b7a34 + self + + + https://researchportal.tuni.fi/en/publications/3319ec06-7170-46ae-9578-ee9b173b7a34 + conference-paper + + 2015 + + BioMediTech Research Day, Tampere, Finland, 4 Dec 2015 + + + + 2022-05-25T22:51:07.730Z + + + source-work-id + cf74b814-b098-4fbd-80cf-efea52849585 + cf74b814-b098-4fbd-80cf-efea52849585 + self + + + doi + 10.1186/1471-2202-16-S1-P147 + 10.1186/1471-2202-16-s1-p147 + self + + + + 2017-08-28T12:54:33.009Z + 2022-05-25T22:51:07.730Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Numerical characterization of noisy fluctuations in two different types of stochastic differential equation models of neural signaling + + + + source-work-id + cf74b814-b098-4fbd-80cf-efea52849585 + cf74b814-b098-4fbd-80cf-efea52849585 + self + + + doi + 10.1186/1471-2202-16-S1-P147 + 10.1186/1471-2202-16-s1-p147 + self + + + https://researchportal.tuni.fi/en/publications/cf74b814-b098-4fbd-80cf-efea52849585 + other + + 2015 + + BMC Neuroscience + + + + 2022-05-25T22:51:07.723Z + + + source-work-id + d85c2e1c-a68e-41c2-bee9-85a1fe43d918 + d85c2e1c-a68e-41c2-bee9-85a1fe43d918 + self + + + doi + 10.1186/1471-2202-16-S1-P202 + 10.1186/1471-2202-16-s1-p202 + self + + + + 2017-08-28T12:54:33.009Z + 2022-05-25T22:51:07.723Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Regular and irregular stimuli result in changes in mice eye movement and cerebellar nuclei neuron model behavior + + + + source-work-id + d85c2e1c-a68e-41c2-bee9-85a1fe43d918 + d85c2e1c-a68e-41c2-bee9-85a1fe43d918 + self + + + doi + 10.1186/1471-2202-16-S1-P202 + 10.1186/1471-2202-16-s1-p202 + self + + + https://researchportal.tuni.fi/en/publications/d85c2e1c-a68e-41c2-bee9-85a1fe43d918 + other + + 2015 + + BMC Neuroscience + + + + 2022-05-25T22:51:07.758Z + + + source-work-id + 0aff2728-3b22-4069-bacd-c28b54b19781 + 0aff2728-3b22-4069-bacd-c28b54b19781 + self + + + + 2017-08-28T12:54:33.010Z + 2022-05-25T22:51:07.758Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Contribution of amyloid beta to intracellular calcium signals in astrocytes: a computational study + + + + source-work-id + 0aff2728-3b22-4069-bacd-c28b54b19781 + 0aff2728-3b22-4069-bacd-c28b54b19781 + self + + + https://researchportal.tuni.fi/en/publications/0aff2728-3b22-4069-bacd-c28b54b19781 + conference-paper + + 2012 + + The 42nd Annual Meeting of the Society for Neuroscience, SFN 2012, New Orleans, LA, USA, 13-17 October 2012 + + + + 2022-05-25T22:51:07.790Z + + + source-work-id + 7177dc31-7fb6-4db6-970f-d93cf01ed582 + 7177dc31-7fb6-4db6-970f-d93cf01ed582 + self + + + pmid + 21693049 + 21693049 + self + + + doi + 10.1186/1471-2105-12-252 + 10.1186/1471-2105-12-252 + self + + + wosuid + 000293000900001 + 000293000900001 + self + + + eid + 2-s2.0-79959247643 + 2-s2.0-79959247643 + self + + + pmc + PMC3142227 + 3142227 + self + + + + 2016-09-21T17:41:34.823Z + 2022-05-25T04:26:20.957Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Computational study of noise in a large signal transduction network. + + + + pmid + 21693049 + 21693049 + self + + + pmc + PMC3142227 + 3142227 + self + + + doi + 10.1186/1471-2105-12-252 + 10.1186/1471-2105-12-252 + self + + + http://europepmc.org/abstract/med/21693049 + journal-article + + 2011 + + + + 2016-09-21T17:59:59.984Z + 2022-05-25T04:26:23.093Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Computational study of noise in a large signal transduction network + + + + doi + 10.1186/1471-2105-12-252 + 10.1186/1471-2105-12-252 + self + + + eid + 2-s2.0-79959247643 + 2-s2.0-79959247643 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-79959247643&partnerID=MN8TOARS + journal-article + + 2011 + + BMC Bioinformatics + + + 2017-08-28T12:54:33.012Z + 2022-05-25T22:51:07.790Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational study of noise in a large signal transduction network + + + + source-work-id + 7177dc31-7fb6-4db6-970f-d93cf01ed582 + 7177dc31-7fb6-4db6-970f-d93cf01ed582 + self + + + wosuid + 000293000900001 + 000293000900001 + self + + + eid + 2-s2.0-79959247643 + 2-s2.0-79959247643 + self + + + doi + 10.1186/1471-2105-12-252 + 10.1186/1471-2105-12-252 + self + + + https://researchportal.tuni.fi/en/publications/7177dc31-7fb6-4db6-970f-d93cf01ed582 + journal-article + + 2011 + + BMC Bioinformatics + + + + 2022-05-25T22:51:07.783Z + + + doi + 10.1186/1471-2202-12-S1-P201 + 10.1186/1471-2202-12-s1-p201 + self + + + source-work-id + 5fde6fbe-e1f1-4794-88d3-f3935bba346b + 5fde6fbe-e1f1-4794-88d3-f3935bba346b + self + + + + 2017-08-28T12:54:33.012Z + 2022-05-25T22:51:07.783Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Contribution Of SERCA And IP3 Sensitivity to Calcium Signaling in Astrocytes: A Computational Study + + + + source-work-id + 5fde6fbe-e1f1-4794-88d3-f3935bba346b + 5fde6fbe-e1f1-4794-88d3-f3935bba346b + self + + + doi + 10.1186/1471-2202-12-S1-P201 + 10.1186/1471-2202-12-s1-p201 + self + + + https://researchportal.tuni.fi/en/publications/5fde6fbe-e1f1-4794-88d3-f3935bba346b + other + + 2011 + + BMC Neuroscience + + + + 2022-05-25T22:51:07.777Z + + + source-work-id + 289a5eae-86c1-4317-83e2-24cc045277f9 + 289a5eae-86c1-4317-83e2-24cc045277f9 + self + + + doi + 10.1371/journal.pone.0017914 + 10.1371/journal.pone.0017914 + self + + + wosuid + 000289054600020 + 000289054600020 + self + + + eid + 2-s2.0-79953199022 + 2-s2.0-79953199022 + self + + + pmc + PMC3066169 + 3066169 + self + + + pmid + 21483471 + 21483471 + self + + + + 2016-09-21T17:41:34.837Z + 2022-05-25T04:26:20.969Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Effects of transmitters and amyloid-beta peptide on calcium signals in rat cortical astrocytes: Fura-2AM measurements and stochastic model simulations. + + + + pmid + 21483471 + 21483471 + self + + + pmc + PMC3066169 + 3066169 + self + + + doi + 10.1371/journal.pone.0017914 + 10.1371/journal.pone.0017914 + self + + + http://europepmc.org/abstract/med/21483471 + journal-article + + 2011 + + + + 2016-09-21T17:59:59.951Z + 2022-05-25T04:26:23.076Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Effects of transmitters and amyloid-beta peptide on calcium signals in rat cortical astrocytes: Fura-2AM measurements and stochastic model simulations + + + + doi + 10.1371/journal.pone.0017914 + 10.1371/journal.pone.0017914 + self + + + eid + 2-s2.0-79953199022 + 2-s2.0-79953199022 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-79953199022&partnerID=MN8TOARS + journal-article + + 2011 + + PLoS ONE + + + 2017-08-28T12:54:33.011Z + 2022-05-25T22:51:07.777Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Effects of Transmitters and Amyloid-Beta Peptide on Calcium Signals in Rat Cortical Astrocytes: Fura-2AM Measurements and Stochastic Model Simulations + + + + source-work-id + 289a5eae-86c1-4317-83e2-24cc045277f9 + 289a5eae-86c1-4317-83e2-24cc045277f9 + self + + + wosuid + 000289054600020 + 000289054600020 + self + + + eid + 2-s2.0-79953199022 + 2-s2.0-79953199022 + self + + + doi + 10.1371/journal.pone.0017914 + 10.1371/journal.pone.0017914 + self + + + https://researchportal.tuni.fi/en/publications/289a5eae-86c1-4317-83e2-24cc045277f9 + journal-article + + 2011 + + PLoS ONE + + + + 2022-05-25T22:51:07.770Z + + + doi + 10.1155/2011/797250 + 10.1155/2011/797250 + self + + + pmc + PMC3171304 + 3171304 + self + + + pmid + 21559300 + 21559300 + self + + + source-work-id + 473ed2f3-c41e-49df-9bc1-4ca4417b2fdf + 473ed2f3-c41e-49df-9bc1-4ca4417b2fdf + self + + + eid + 2-s2.0-79959244197 + 2-s2.0-79959244197 + self + + + + 2016-09-21T17:41:34.830Z + 2022-05-25T04:26:20.963Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Modeling signal transduction leading to synaptic plasticity: evaluation and comparison of five models. + + + + pmid + 21559300 + 21559300 + self + + + pmc + PMC3171304 + 3171304 + self + + + doi + 10.1155/2011/797250 + 10.1155/2011/797250 + self + + + http://europepmc.org/abstract/med/21559300 + journal-article + + 2011 + + + + 2016-09-21T17:59:59.967Z + 2022-05-25T04:26:23.081Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Modeling signal transduction leading to synaptic plasticity: Evaluation and comparison of five models + + + + doi + 10.1155/2011/797250 + 10.1155/2011/797250 + self + + + eid + 2-s2.0-79959244197 + 2-s2.0-79959244197 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-79959244197&partnerID=MN8TOARS + journal-article + + 2011 + + Eurasip Journal on Bioinformatics and Systems Biology + + + 2017-08-28T12:54:33.011Z + 2022-05-25T22:51:07.770Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling Signal Transduction Leading to Synaptic Plasticity: Evaluation and Comparison of Five Models + + + + source-work-id + 473ed2f3-c41e-49df-9bc1-4ca4417b2fdf + 473ed2f3-c41e-49df-9bc1-4ca4417b2fdf + self + + + eid + 2-s2.0-79959244197 + 2-s2.0-79959244197 + self + + + doi + 10.1155/2011/797250 + 10.1155/2011/797250 + self + + + https://researchportal.tuni.fi/en/publications/473ed2f3-c41e-49df-9bc1-4ca4417b2fdf + journal-article + + 2011 + + Eurasip Journal on Bioinformatics and Systems Biology + + + + 2022-05-25T22:51:07.764Z + + + source-work-id + 0b24f981-76d6-426b-9f98-87519e44d59d + 0b24f981-76d6-426b-9f98-87519e44d59d + self + + + + 2017-08-28T12:54:33.011Z + 2022-05-25T22:51:07.764Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Studying the quality of noise in a large biochemical reaction network as a function of the system volume + + + + source-work-id + 0b24f981-76d6-426b-9f98-87519e44d59d + 0b24f981-76d6-426b-9f98-87519e44d59d + self + + + https://researchportal.tuni.fi/en/publications/0b24f981-76d6-426b-9f98-87519e44d59d + conference-paper + + 2011 + + The International Conference on Applied Mathematics, Modeling and Computational Science, AMMCS 2011, 25 - 29 July, Waterloo, Ontario, Canada + + + + 2022-05-25T22:51:07.846Z + + + doi + 10.3389/conf.fnins.2010.13.00061 + 10.3389/conf.fnins.2010.13.00061 + self + + + source-work-id + 54df0b2a-9c00-4bd4-8106-9316b22947e8 + 54df0b2a-9c00-4bd4-8106-9316b22947e8 + self + + + + 2017-08-28T12:54:33.014Z + 2022-05-25T22:51:07.846Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Calcium signaling in astrocytes: modeling Fura-2AM measurements + + + + source-work-id + 54df0b2a-9c00-4bd4-8106-9316b22947e8 + 54df0b2a-9c00-4bd4-8106-9316b22947e8 + self + + + doi + 10.3389/conf.fnins.2010.13.00061 + 10.3389/conf.fnins.2010.13.00061 + self + + + https://researchportal.tuni.fi/en/publications/54df0b2a-9c00-4bd4-8106-9316b22947e8 + other + + 2010 + + Frontiers in Neuroscience + + + + 2022-05-25T22:51:07.839Z + + + source-work-id + 5a0c7c83-1a0b-4700-9898-93f37ad53bda + 5a0c7c83-1a0b-4700-9898-93f37ad53bda + self + + + + 2017-08-28T12:54:33.014Z + 2022-05-25T22:51:07.839Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Comparing two stochastic differential equation models for protein kinase C activation pathway + + + + source-work-id + 5a0c7c83-1a0b-4700-9898-93f37ad53bda + 5a0c7c83-1a0b-4700-9898-93f37ad53bda + self + + + https://researchportal.tuni.fi/en/publications/5a0c7c83-1a0b-4700-9898-93f37ad53bda + conference-paper + + 2010 + + Abstracts of Papers, Posters and Talks presented at the 2010 Joint RECOMB Satellite Conference on Systems Biology - Regulatory Genomics - DREAM5, New York, USA, 16-20 November 2010 + + + + 2022-05-25T22:51:07.833Z + + + doi + 10.1145/1854776.1854838 + 10.1145/1854776.1854838 + self + + + source-work-id + 11469981-5081-4337-9f58-416c93658b54 + 11469981-5081-4337-9f58-416c93658b54 + self + + + eid + 2-s2.0-77958042740 + 2-s2.0-77958042740 + self + + + + 2016-09-21T18:00:00.521Z + 2022-05-25T04:26:23.127Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Comparison of discrete- and continuous-state stochastic methods to model neuronal signal transduction + + + + doi + 10.1145/1854776.1854838 + 10.1145/1854776.1854838 + self + + + eid + 2-s2.0-77958042740 + 2-s2.0-77958042740 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-77958042740&partnerID=MN8TOARS + conference-paper + + 2010 + + 2010 ACM International Conference on Bioinformatics and Computational Biology, ACM-BCB 2010 + + + 2017-08-28T12:54:33.014Z + 2022-05-25T22:51:07.833Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Comparison of discrete- and continuous-state stochastic methods to model neuronal signal transduction + + + + source-work-id + 11469981-5081-4337-9f58-416c93658b54 + 11469981-5081-4337-9f58-416c93658b54 + self + + + eid + 2-s2.0-77958042740 + 2-s2.0-77958042740 + self + + + doi + 10.1145/1854776.1854838 + 10.1145/1854776.1854838 + self + + + isbn + 978-1-4603-0192-3 + 9781460301923 + part-of + + + https://researchportal.tuni.fi/en/publications/11469981-5081-4337-9f58-416c93658b54 + conference-paper + + 2010 + + Proceedings of ACM International Conference on Bioinformatics and Computational Biology BCB10, Niagara Falls, New York, USA, August 2-4, 2010 + + + + 2022-05-25T22:51:07.819Z + + + source-work-id + 827ba6ea-0c57-487f-8a87-4923fcb57359 + 827ba6ea-0c57-487f-8a87-4923fcb57359 + self + + + + 2017-08-28T12:54:33.013Z + 2022-05-25T22:51:07.819Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational models for synaptic plasticity + + + + source-work-id + 827ba6ea-0c57-487f-8a87-4923fcb57359 + 827ba6ea-0c57-487f-8a87-4923fcb57359 + self + + + https://researchportal.tuni.fi/en/publications/827ba6ea-0c57-487f-8a87-4923fcb57359 + conference-paper + + 2010 + + 3rd INCF National Node of Finland Workshop on Neuroinformatics, Tampere, Finland, 21 September 2010 + + + + 2022-05-25T22:51:07.812Z + + + source-work-id + 1757d3d6-dc97-4f4f-bc1b-17d683c04655 + 1757d3d6-dc97-4f4f-bc1b-17d683c04655 + self + + + doi + 10.1186/1471-2202-11-S1-P190 + 10.1186/1471-2202-11-s1-p190 + self + + + + 2017-08-28T12:54:33.013Z + 2022-05-25T22:51:07.812Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling signal transduction in synaptic plasticity: comparison of models and methods + + + + source-work-id + 1757d3d6-dc97-4f4f-bc1b-17d683c04655 + 1757d3d6-dc97-4f4f-bc1b-17d683c04655 + self + + + doi + 10.1186/1471-2202-11-S1-P190 + 10.1186/1471-2202-11-s1-p190 + self + + + https://researchportal.tuni.fi/en/publications/1757d3d6-dc97-4f4f-bc1b-17d683c04655 + other + + 2010 + + BMC Neuroscience + + + + 2022-05-25T22:51:07.805Z + + + source-work-id + 037195f0-048a-454f-8e05-cf0773b36159 + 037195f0-048a-454f-8e05-cf0773b36159 + self + + + + 2017-08-28T12:54:33.013Z + 2022-05-25T22:51:07.805Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Neurotransmitter and amyloid-β peptide induced calcium signaling in astrocytes + + + + source-work-id + 037195f0-048a-454f-8e05-cf0773b36159 + 037195f0-048a-454f-8e05-cf0773b36159 + self + + + https://researchportal.tuni.fi/en/publications/037195f0-048a-454f-8e05-cf0773b36159 + conference-paper + + 2010 + + Joint Meeting on New Horizons in Calcium Signaling, Beijing, China, 10-13 October 2010 + + + + 2022-05-25T22:51:07.797Z + + + eid + 2-s2.0-79959268899 + 2-s2.0-79959268899 + self + + + wosuid + 000288500300003 + 000288500300003 + self + + + pmid + 21188161 + 21188161 + self + + + source-work-id + 25785ff8-e2f0-412d-9f29-217888aaecff + 25785ff8-e2f0-412d-9f29-217888aaecff + self + + + pmc + PMC3006457 + 3006457 + self + + + doi + 10.3389/fncom.2010.00152 + 10.3389/fncom.2010.00152 + self + + + + 2016-09-21T17:41:34.842Z + 2022-05-25T04:26:20.975Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Postsynaptic signal transduction models for long-term potentiation and depression. + + + + pmid + 21188161 + 21188161 + self + + + pmc + PMC3006457 + 3006457 + self + + + doi + 10.3389/fncom.2010.00152 + 10.3389/fncom.2010.00152 + self + + + http://europepmc.org/abstract/med/21188161 + journal-article + + 2010 + + + + 2016-09-21T17:59:59.974Z + 2022-05-25T04:26:23.087Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Postsynaptic signal transduction models for long-term potentiation and depression + + + + doi + 10.3389/fncom.2010.00152 + 10.3389/fncom.2010.00152 + self + + + eid + 2-s2.0-79959268899 + 2-s2.0-79959268899 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-79959268899&partnerID=MN8TOARS + journal-article + + 2010 + + Frontiers in Computational Neuroscience + + + 2017-08-28T12:54:33.012Z + 2022-05-25T22:51:07.797Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Postsynaptic signal transduction models for long-term potentiation and depression + + + + source-work-id + 25785ff8-e2f0-412d-9f29-217888aaecff + 25785ff8-e2f0-412d-9f29-217888aaecff + self + + + wosuid + 000288500300003 + 000288500300003 + self + + + eid + 2-s2.0-79959268899 + 2-s2.0-79959268899 + self + + + doi + 10.3389/fncom.2010.00152 + 10.3389/fncom.2010.00152 + self + + + https://researchportal.tuni.fi/en/publications/25785ff8-e2f0-412d-9f29-217888aaecff + journal-article + + 2010 + + Frontiers in Computational Neuroscience + + + + 2022-05-25T22:51:07.869Z + + + source-work-id + e06e9ac4-898a-43ad-8521-3d00e22c395c + e06e9ac4-898a-43ad-8521-3d00e22c395c + self + + + + 2017-08-28T12:54:33.015Z + 2022-05-25T22:51:07.869Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling biochemical systems: analysis in time and frequency domain + + + + source-work-id + e06e9ac4-898a-43ad-8521-3d00e22c395c + e06e9ac4-898a-43ad-8521-3d00e22c395c + self + + + https://researchportal.tuni.fi/en/publications/e06e9ac4-898a-43ad-8521-3d00e22c395c + conference-paper + + 2009 + + Proceedings of FOSBE 2009, Foundations of Systems Biology in Engineering, Englewood, Colorado, USA, 9-12 August 2009 + + + + 2022-05-25T22:51:07.858Z + + + source-work-id + 88c6d7e2-e240-4f25-ae0c-2b259be70332 + 88c6d7e2-e240-4f25-ae0c-2b259be70332 + self + + + + 2017-08-28T12:54:33.015Z + 2022-05-25T22:51:07.858Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling protein kinase C activation in the presence of calcium ion fluctuations + + + + source-work-id + 88c6d7e2-e240-4f25-ae0c-2b259be70332 + 88c6d7e2-e240-4f25-ae0c-2b259be70332 + self + + + isbn + 978-952-15-2160-7 + 9789521521607 + part-of + + + https://researchportal.tuni.fi/en/publications/88c6d7e2-e240-4f25-ae0c-2b259be70332 + conference-paper + + 2009 + + Proceedings of the Sixth International Workshop on Computational Systems Biology, WCSB 2009, Aarhus, Denmark 10-12 June 2009 + + + + 2022-05-25T22:51:07.852Z + + + source-work-id + b49e3b55-9e0f-4417-96e8-fd2d9dd60480 + b49e3b55-9e0f-4417-96e8-fd2d9dd60480 + self + + + isbn + 978-952-15-2160-7 + 9789521521607 + self + + + + 2017-08-28T12:54:33.014Z + 2022-05-25T22:51:07.852Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Proceedings of the 6th International Workshop on Computational Systems Biology, WCSB 2009, Aarhus, Denmark, 10-12 June 2009 + + + + source-work-id + b49e3b55-9e0f-4417-96e8-fd2d9dd60480 + b49e3b55-9e0f-4417-96e8-fd2d9dd60480 + self + + + isbn + 978-952-15-2160-7 + 9789521521607 + self + + + https://researchportal.tuni.fi/en/publications/b49e3b55-9e0f-4417-96e8-fd2d9dd60480 + edited-book + + 2009 + + Tampere University of Technology, Tampere International Center for Signal Processing, TICSP Series + + + + 2023-06-22T00:07:58.547Z + + + doi + 10.3389/conf.neuro.11.2008.01.049 + 10.3389/conf.neuro.11.2008.01.049 + self + + + source-work-id + 324ea0d7-ef0b-4b33-852e-141b5facbbaf + 324ea0d7-ef0b-4b33-852e-141b5facbbaf + self + + + + 2017-08-28T12:54:33.018Z + 2023-06-22T00:07:58.547Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Computational model for astroglial cell function in Alzheimer's disease + + + + source-work-id + 324ea0d7-ef0b-4b33-852e-141b5facbbaf + 324ea0d7-ef0b-4b33-852e-141b5facbbaf + self + + + doi + 10.3389/conf.neuro.11.2008.01.049 + 10.3389/conf.neuro.11.2008.01.049 + self + + + https://researchportal.tuni.fi/en/publications/324ea0d7-ef0b-4b33-852e-141b5facbbaf + other + + 2008 + + Frontiers in Neuroinformatics + + + + 2023-06-22T00:07:59.444Z + + + doi + 10.3389/conf.neuro.11.2008.01.033 + 10.3389/conf.neuro.11.2008.01.033 + self + + + source-work-id + 68e67e7d-1df6-4644-bfb3-97d8256aff02 + 68e67e7d-1df6-4644-bfb3-97d8256aff02 + self + + + + 2017-08-28T12:54:33.018Z + 2023-06-22T00:07:59.444Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Evaluation of deterministic and stochastic simulation tools for cellular signaling + + + + source-work-id + 68e67e7d-1df6-4644-bfb3-97d8256aff02 + 68e67e7d-1df6-4644-bfb3-97d8256aff02 + self + + + doi + 10.3389/conf.neuro.11.2008.01.033 + 10.3389/conf.neuro.11.2008.01.033 + self + + + https://researchportal.tuni.fi/en/publications/68e67e7d-1df6-4644-bfb3-97d8256aff02 + other + + 2008 + + Frontiers in Neuroinformatics + + + + 2022-05-25T22:51:07.915Z + + + source-work-id + fe9b7cdb-6bf1-4bc3-94fa-f131dd371ec6 + fe9b7cdb-6bf1-4bc3-94fa-f131dd371ec6 + self + + + + 2017-08-28T12:54:33.017Z + 2022-05-25T22:51:07.915Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Kemiallisten reaktioiden mallintaminen ja tietokonesimulaatiot + + + + source-work-id + fe9b7cdb-6bf1-4bc3-94fa-f131dd371ec6 + fe9b7cdb-6bf1-4bc3-94fa-f131dd371ec6 + self + + + https://researchportal.tuni.fi/en/publications/fe9b7cdb-6bf1-4bc3-94fa-f131dd371ec6 + journal-article + + 2008 + + Solubiologi + + + + 2022-05-25T22:51:07.902Z + + + source-work-id + 58a2acb5-8b9e-4b6e-a4f4-5104e25b7790 + 58a2acb5-8b9e-4b6e-a4f4-5104e25b7790 + self + + + + 2017-08-28T12:54:33.017Z + 2022-05-25T22:51:07.902Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling IP3 receptor function using stochastic approaches + + + + source-work-id + 58a2acb5-8b9e-4b6e-a4f4-5104e25b7790 + 58a2acb5-8b9e-4b6e-a4f4-5104e25b7790 + self + + + isbn + 978-952-15-1988-8 + 9789521519888 + part-of + + + https://researchportal.tuni.fi/en/publications/58a2acb5-8b9e-4b6e-a4f4-5104e25b7790 + conference-paper + + 2008 + + Proceedings of the Fifth International Workshop on Computational Systems Biology, WCSB 2008, Leipzig, Germany, 11-13 June 2008 + + + + 2022-05-25T22:51:07.908Z + + + source-work-id + c2c6e3fb-5100-4171-a887-8f7492c11936 + c2c6e3fb-5100-4171-a887-8f7492c11936 + self + + + + 2017-08-28T12:54:33.017Z + 2022-05-25T22:51:07.908Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling amyloid-β and serotonin induced calcium oscillations in astrocytes + + + + source-work-id + c2c6e3fb-5100-4171-a887-8f7492c11936 + c2c6e3fb-5100-4171-a887-8f7492c11936 + self + + + https://researchportal.tuni.fi/en/publications/c2c6e3fb-5100-4171-a887-8f7492c11936 + conference-paper + + 2008 + + Abstracts of Neuroscience 2008, Washington D. C., 15-19 November 2008 + + + + 2022-05-25T22:51:07.895Z + + + source-work-id + 3a0e3c05-dcd6-40fb-8698-f684c74a655f + 3a0e3c05-dcd6-40fb-8698-f684c74a655f + self + + + doi + 10.3389/conf.neuro.11.2008.01.050 + 10.3389/conf.neuro.11.2008.01.050 + self + + + + 2017-08-28T12:54:33.016Z + 2022-05-25T22:51:07.895Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling long-term potentiation: deterministic and stochastic approaches + + + + source-work-id + 3a0e3c05-dcd6-40fb-8698-f684c74a655f + 3a0e3c05-dcd6-40fb-8698-f684c74a655f + self + + + doi + 10.3389/conf.neuro.11.2008.01.050 + 10.3389/conf.neuro.11.2008.01.050 + self + + + https://researchportal.tuni.fi/en/publications/3a0e3c05-dcd6-40fb-8698-f684c74a655f + other + + 2008 + + Frontiers in Neuroinformatics + + + + 2022-05-25T22:51:07.889Z + + + source-work-id + 3492d857-b278-4bcc-825a-e3f3aa0d89f2 + 3492d857-b278-4bcc-825a-e3f3aa0d89f2 + self + + + + 2017-08-28T12:54:33.016Z + 2022-05-25T22:51:07.889Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling perspective to Ca2+ oscillations in astrocytes induced by amyloid-Β peptide and serotonin + + + + source-work-id + 3492d857-b278-4bcc-825a-e3f3aa0d89f2 + 3492d857-b278-4bcc-825a-e3f3aa0d89f2 + self + + + https://researchportal.tuni.fi/en/publications/3492d857-b278-4bcc-825a-e3f3aa0d89f2 + conference-paper + + 2008 + + Workshop on Update in Alzheimer's Disease Research, Westminister, MD, USA, 12-14 November 2008 + + + + 2022-05-25T22:51:07.881Z + + + source-work-id + d9dad844-5750-4a90-a5b1-da82d957b4b3 + d9dad844-5750-4a90-a5b1-da82d957b4b3 + self + + + + 2017-08-28T12:54:33.016Z + 2022-05-25T22:51:07.881Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Stochastic kinetic simulations of activity-dependent plastic modifications in neurons + + + + source-work-id + d9dad844-5750-4a90-a5b1-da82d957b4b3 + d9dad844-5750-4a90-a5b1-da82d957b4b3 + self + + + isbn + 978-952-15-1988-8 + 9789521519888 + part-of + + + https://researchportal.tuni.fi/en/publications/d9dad844-5750-4a90-a5b1-da82d957b4b3 + conference-paper + + 2008 + + Proceedings of the Fifth International Workshop on Computational Systems Biology, WCSB 2008, Leipzig, Germany, 11-13 June 2008 + + + + 2023-06-22T00:07:57.945Z + + + doi + 10.3389/conf.neuro.11.2008.01.023 + 10.3389/conf.neuro.11.2008.01.023 + self + + + source-work-id + 65383231-f662-4285-9e33-607fe2e11edf + 65383231-f662-4285-9e33-607fe2e11edf + self + + + + 2017-08-28T12:54:33.015Z + 2023-06-22T00:07:57.945Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Stochastic modeling of neuronal signaling + + + + source-work-id + 65383231-f662-4285-9e33-607fe2e11edf + 65383231-f662-4285-9e33-607fe2e11edf + self + + + doi + 10.3389/conf.neuro.11.2008.01.023 + 10.3389/conf.neuro.11.2008.01.023 + self + + + https://researchportal.tuni.fi/en/publications/65383231-f662-4285-9e33-607fe2e11edf + other + + 2008 + + Frontiers in Neuroinformatics + + + + 2022-05-25T22:51:07.952Z + + + eid + 2-s2.0-47049105095 + 2-s2.0-47049105095 + self + + + source-work-id + 5aed0483-22cf-4b36-ad12-d3ae82595e9a + 5aed0483-22cf-4b36-ad12-d3ae82595e9a + self + + + doi + 10.1109/GENSIPS.2007.4365824 + 10.1109/gensips.2007.4365824 + self + + + + 2016-09-21T18:00:00.517Z + 2022-05-25T04:26:23.121Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Estimation of neuronal signaling model parameters using deterministic and stochastic in silico training data: Evaluation of four parameter estimation methods + + + + doi + 10.1109/GENSIPS.2007.4365824 + 10.1109/gensips.2007.4365824 + self + + + eid + 2-s2.0-47049105095 + 2-s2.0-47049105095 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-47049105095&partnerID=MN8TOARS + conference-paper + + 2007 + + GENSIPS'07 - 5th IEEE International Workshop on Genomic Signal Processing and Statistics + + + 2017-08-28T12:54:33.019Z + 2022-05-25T22:51:07.952Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Estimation of neuronal signaling model parameters using deterministic and stochastic in silico training data: evaluation of four parameter estimation methods + + + + source-work-id + 5aed0483-22cf-4b36-ad12-d3ae82595e9a + 5aed0483-22cf-4b36-ad12-d3ae82595e9a + self + + + eid + 2-s2.0-47049105095 + 2-s2.0-47049105095 + self + + + doi + 10.1109/GENSIPS.2007.4365824 + 10.1109/gensips.2007.4365824 + self + + + isbn + 1-4244-0999-3 + 1424409993 + part-of + + + https://researchportal.tuni.fi/en/publications/5aed0483-22cf-4b36-ad12-d3ae82595e9a + conference-paper + + 2007 + + Proceedings of the Fifth IEEE International Workshop on Genomic Signal Processing and Statistics, GENSIPS'07, Tuusula, Finland, 10-12 June 2007 + + + + 2022-05-25T22:51:07.946Z + + + doi + 10.1109/GENSIPS.2007.4365829 + 10.1109/gensips.2007.4365829 + self + + + eid + 2-s2.0-47149109445 + 2-s2.0-47149109445 + self + + + source-work-id + 7033b426-61c6-49e4-8eb8-b783e5e729a2 + 7033b426-61c6-49e4-8eb8-b783e5e729a2 + self + + + + 2017-08-28T12:54:33.019Z + 2022-05-25T22:51:07.946Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Parameter estimation and tuning of firefly luciferase pathway model + + + + source-work-id + 7033b426-61c6-49e4-8eb8-b783e5e729a2 + 7033b426-61c6-49e4-8eb8-b783e5e729a2 + self + + + eid + 2-s2.0-47149109445 + 2-s2.0-47149109445 + self + + + doi + 10.1109/GENSIPS.2007.4365829 + 10.1109/gensips.2007.4365829 + self + + + isbn + 1-4244-0999-3 + 1424409993 + part-of + + + https://researchportal.tuni.fi/en/publications/7033b426-61c6-49e4-8eb8-b783e5e729a2 + conference-paper + + 2007 + + Proceedings of the Fifth IEEE International Workshop on Genomic Signal Processing and Statistics, GENSIPS'07, Tuusula, Finland, 10-12 June 2007 + + + + 2022-05-25T22:51:07.940Z + + + source-work-id + 457bf799-29c4-4749-b7f8-2356bdf68716 + 457bf799-29c4-4749-b7f8-2356bdf68716 + self + + + + 2017-08-28T12:54:33.019Z + 2022-05-25T22:51:07.940Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Sequential Monte Carlo based maximum likelihood estimation for calcium binding reactions + + + + source-work-id + 457bf799-29c4-4749-b7f8-2356bdf68716 + 457bf799-29c4-4749-b7f8-2356bdf68716 + self + + + isbn + 978-3-8167-7436-5 + 9783816774365 + part-of + + + https://researchportal.tuni.fi/en/publications/457bf799-29c4-4749-b7f8-2356bdf68716 + conference-paper + + 2007 + + Proceedings of the 2nd Conference on Foundations of Systems Biology in Engineering, FOSBE 2007, Stuttgart, Germany, 9-12 September 2007 + + + + 2022-05-25T22:51:07.933Z + + + isbn + 978-952-15-1896-6 + 9789521518966 + self + + + source-work-id + 3f9fdf0c-7f7d-4717-a196-55565103963a + 3f9fdf0c-7f7d-4717-a196-55565103963a + self + + + + 2017-08-28T12:54:33.018Z + 2022-05-25T22:51:07.933Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Stochastic methods for modeling intracellular signaling + + + + source-work-id + 3f9fdf0c-7f7d-4717-a196-55565103963a + 3f9fdf0c-7f7d-4717-a196-55565103963a + self + + + isbn + 978-952-15-1896-6 + 9789521518966 + self + + + https://researchportal.tuni.fi/en/publications/3f9fdf0c-7f7d-4717-a196-55565103963a + dissertation-thesis + + 2007 + + Tampereen teknillinen yliopisto. Julkaisu + + + + 2022-05-27T18:17:13.848Z + + + source-work-id + 39227083-a66e-4cd3-a865-795792ffdd3b + 39227083-a66e-4cd3-a865-795792ffdd3b + self + + + + 2019-01-11T23:52:06.183Z + 2022-05-27T18:17:13.848Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Stochastic simulation tools for cellular signaling: survey, evaluation and quantitative analysis + + + + source-work-id + 39227083-a66e-4cd3-a865-795792ffdd3b + 39227083-a66e-4cd3-a865-795792ffdd3b + self + + + isbn + 978-3-8167-7436-5 + 9783816774365 + part-of + + + https://researchportal.tuni.fi/en/publications/39227083-a66e-4cd3-a865-795792ffdd3b + conference-paper + + 2007 + + Proceedings of the 2nd Conference on Foundations of Systems Biology in Engineering, FOSBE 2007, Stuttgart, Germany, 9-12 September 2007 + + + + 2023-06-22T00:07:56.680Z + + + doi + 10.1016/j.compbiolchem.2006.04.002 + 10.1016/j.compbiolchem.2006.04.002 + self + + + pmid + 16880117 + 16880117 + self + + + source-work-id + fe9c9f72-2eec-4d11-9277-c45bf2debb9c + fe9c9f72-2eec-4d11-9277-c45bf2debb9c + self + + + eid + 2-s2.0-33746373126 + 2-s2.0-33746373126 + self + + + wosuid + 000239876500005 + 000239876500005 + self + + + + 2016-09-21T17:41:34.857Z + 2022-05-25T04:26:20.981Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Developing Ito stochastic differential equation models for neuronal signal transduction pathways. + + + + pmid + 16880117 + 16880117 + self + + + doi + 10.1016/j.compbiolchem.2006.04.002 + 10.1016/j.compbiolchem.2006.04.002 + self + + + http://europepmc.org/abstract/med/16880117 + journal-article + + 2006 + 08 + + + + 2016-09-21T17:59:59.990Z + 2022-05-25T04:26:23.098Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Developing Itô stochastic differential equation models for neuronal signal transduction pathways + + + + doi + 10.1016/j.compbiolchem.2006.04.002 + 10.1016/j.compbiolchem.2006.04.002 + self + + + eid + 2-s2.0-33746373126 + 2-s2.0-33746373126 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-33746373126&partnerID=MN8TOARS + journal-article + + 2006 + + Computational Biology and Chemistry + + + 2017-08-28T12:54:33.021Z + 2023-06-22T00:07:56.680Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Developing Ito stochastic differential equation models for neuronal signal transduction pathways + + + + source-work-id + fe9c9f72-2eec-4d11-9277-c45bf2debb9c + fe9c9f72-2eec-4d11-9277-c45bf2debb9c + self + + + wosuid + 000239876500005 + 000239876500005 + self + + + eid + 2-s2.0-33746373126 + 2-s2.0-33746373126 + self + + + doi + 10.1016/j.compbiolchem.2006.04.002 + 10.1016/j.compbiolchem.2006.04.002 + self + + + https://researchportal.tuni.fi/en/publications/fe9c9f72-2eec-4d11-9277-c45bf2debb9c + journal-article + + 2006 + + Computational Biology and Chemistry + + + + 2022-05-25T22:51:07.988Z + + + source-work-id + b0f55489-2d6b-49fa-802a-32210e0e40b3 + b0f55489-2d6b-49fa-802a-32210e0e40b3 + self + + + doi + 10.1016/j.neucom.2005.12.047 + 10.1016/j.neucom.2005.12.047 + self + + + eid + 2-s2.0-33646104196 + 2-s2.0-33646104196 + self + + + wosuid + 000237873900016 + 000237873900016 + self + + + + 2016-09-21T18:00:00.508Z + 2022-05-25T04:26:23.115Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + A novel approach to model neuronal signal transduction using stochastic differential equations + + + + doi + 10.1016/j.neucom.2005.12.047 + 10.1016/j.neucom.2005.12.047 + self + + + eid + 2-s2.0-33646104196 + 2-s2.0-33646104196 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-33646104196&partnerID=MN8TOARS + journal-article + + 2006 + + Neurocomputing + + + 2017-08-28T12:54:33.021Z + 2022-05-25T22:51:07.988Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + A novel approach to model neuronal signal transduction using stochastic differential equations + + + + source-work-id + b0f55489-2d6b-49fa-802a-32210e0e40b3 + b0f55489-2d6b-49fa-802a-32210e0e40b3 + self + + + wosuid + 000237873900016 + 000237873900016 + self + + + eid + 2-s2.0-33646104196 + 2-s2.0-33646104196 + self + + + doi + 10.1016/j.neucom.2005.12.047 + 10.1016/j.neucom.2005.12.047 + self + + + https://researchportal.tuni.fi/en/publications/b0f55489-2d6b-49fa-802a-32210e0e40b3 + journal-article + + 2006 + + Neurocomputing + + + + 2022-05-25T22:51:07.976Z + + + source-work-id + ebfcfc56-4b0c-46ae-9f83-f751c6587fec + ebfcfc56-4b0c-46ae-9f83-f751c6587fec + self + + + doi + 10.1109/iembs.2006.260023 + 10.1109/iembs.2006.260023 + self + + + pmid + 17945691 + 17945691 + self + + + eid + 2-s2.0-34047152367 + 2-s2.0-34047152367 + self + + + + 2016-09-21T17:41:34.862Z + 2022-05-25T04:26:20.987Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Discrete stochastic simulation of cell signaling: comparison of computational tools. + + + + pmid + 17945691 + 17945691 + self + + + doi + 10.1109/iembs.2006.260023 + 10.1109/iembs.2006.260023 + self + + + http://europepmc.org/abstract/med/17945691 + journal-article + + 2006 + + + + 2016-09-21T18:00:00.503Z + 2022-05-25T04:26:23.110Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Discrete stochastic simulation of cell signaling: Comparison of computational tools + + + + doi + 10.1109/IEMBS.2006.260023 + 10.1109/iembs.2006.260023 + self + + + eid + 2-s2.0-34047152367 + 2-s2.0-34047152367 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-34047152367&partnerID=MN8TOARS + conference-paper + + 2006 + + Annual International Conference of the IEEE Engineering in Medicine and Biology - Proceedings + + + 2017-08-28T12:54:33.020Z + 2022-05-25T22:51:07.976Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Discrete stochastic simulation of cell signaling: comparison of computational tools + + + + source-work-id + ebfcfc56-4b0c-46ae-9f83-f751c6587fec + ebfcfc56-4b0c-46ae-9f83-f751c6587fec + self + + + eid + 2-s2.0-34047152367 + 2-s2.0-34047152367 + self + + + doi + 10.1109/IEMBS.2006.260023 + 10.1109/iembs.2006.260023 + self + + + https://researchportal.tuni.fi/en/publications/ebfcfc56-4b0c-46ae-9f83-f751c6587fec + conference-paper + + 2006 + + Proceedings of the 28th Annual International Conference of the IEEE Engineering in Medicine and Biology Society, EMBC, New York City, USA, August 30 - September 3, 2006 + + + + 2022-05-25T22:51:07.970Z + + + source-work-id + a5255c0c-509d-4d95-ad9f-d9b6174335e1 + a5255c0c-509d-4d95-ad9f-d9b6174335e1 + self + + + + 2017-08-28T12:54:33.020Z + 2022-05-25T22:51:07.970Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Modeling neuronal signal transduction using Itô stochastic differential equations and the Gillespie stochastic simulation algorithm + + + + source-work-id + a5255c0c-509d-4d95-ad9f-d9b6174335e1 + a5255c0c-509d-4d95-ad9f-d9b6174335e1 + self + + + https://researchportal.tuni.fi/en/publications/a5255c0c-509d-4d95-ad9f-d9b6174335e1 + conference-paper + + 2006 + + Proceedings of the IASTED International Conference on Computational and Systems Biology, Dallas, Texas, USA, 13-14 November 2006 + + + + 2022-05-25T22:51:07.965Z + + + source-work-id + 459fc421-8904-41fb-bdba-6feab0050a41 + 459fc421-8904-41fb-bdba-6feab0050a41 + self + + + isbn + 952-15-1604-6 + 9521516046 + self + + + + 2017-08-28T12:54:33.020Z + 2022-05-25T22:51:07.965Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Proceedings of the 4th TICSP Workshop on Computational Systems Biology, WCSB 2006, Tampere, Finland, 12-13 June 2006 + + + + source-work-id + 459fc421-8904-41fb-bdba-6feab0050a41 + 459fc421-8904-41fb-bdba-6feab0050a41 + self + + + isbn + 952-15-1604-6 + 9521516046 + self + + + https://researchportal.tuni.fi/en/publications/459fc421-8904-41fb-bdba-6feab0050a41 + edited-book + + 2006 + + Tampere University Of Technology, Tampere International Center for Signal Processing, TICSP Series + + + + 2022-05-25T22:51:07.958Z + + + source-work-id + 6e35b2c1-6be6-4d84-a9bc-ae4dd89bbf2f + 6e35b2c1-6be6-4d84-a9bc-ae4dd89bbf2f + self + + + eid + 2-s2.0-33748782266 + 2-s2.0-33748782266 + self + + + + 2017-08-28T12:54:33.020Z + 2022-05-25T22:51:07.958Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Simulation study of deterministic differential equation model for protein kinase C signaling: sensitivity of stimuli, parameter values, and initial concentrations + + + + source-work-id + 6e35b2c1-6be6-4d84-a9bc-ae4dd89bbf2f + 6e35b2c1-6be6-4d84-a9bc-ae4dd89bbf2f + self + + + eid + 2-s2.0-33748782266 + 2-s2.0-33748782266 + self + + + https://researchportal.tuni.fi/en/publications/6e35b2c1-6be6-4d84-a9bc-ae4dd89bbf2f + conference-paper + + 2006 + + Proceedings of the 4th TICSP Workshop on Computational Systems Biology, WCSB 2006, Tampere, Finland, 12-13 June 2006. TICSP series + + + + 2022-05-25T22:51:07.995Z + + + wosuid + 000226605700011 + 000226605700011 + self + + + doi + 10.1093/bioinformatics/bti018 + 10.1093/bioinformatics/bti018 + self + + + source-work-id + 3709737f-2da0-4a4e-ad32-e7957d27620f + 3709737f-2da0-4a4e-ad32-e7957d27620f + self + + + pmid + 15358616 + 15358616 + self + + + eid + 2-s2.0-13844266102 + 2-s2.0-13844266102 + self + + + + 2016-09-21T17:41:34.868Z + 2022-05-25T04:26:20.992Z + + + https://orcid.org/client/0000-0002-9157-3431 + 0000-0002-9157-3431 + orcid.org + + Europe PubMed Central + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Simulation tools for biochemical networks: evaluation of performance and usability. + + + + pmid + 15358616 + 15358616 + self + + + doi + 10.1093/bioinformatics/bti018 + 10.1093/bioinformatics/bti018 + self + + + http://europepmc.org/abstract/med/15358616 + journal-article + + 2005 + 02 + + + + 2016-09-21T17:59:59.995Z + 2022-05-25T04:26:23.104Z + + + https://orcid.org/client/0000-0002-5982-8983 + 0000-0002-5982-8983 + orcid.org + + Scopus - Elsevier + + https://orcid.org/0000-0002-0456-1185 + 0000-0002-0456-1185 + orcid.org + + Tiina Manninen + + + Simulation tools for biochemical networks: Evaluation of performance and usability + + + + doi + 10.1093/bioinformatics/bti018 + 10.1093/bioinformatics/bti018 + self + + + eid + 2-s2.0-13844266102 + 2-s2.0-13844266102 + self + + + http://www.scopus.com/inward/record.url?eid=2-s2.0-13844266102&partnerID=MN8TOARS + journal-article + + 2005 + + Bioinformatics + + + 2017-08-28T12:54:33.021Z + 2022-05-25T22:51:07.995Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Simulation tools for biochemical networks: evaluation of performance and usability + + + + source-work-id + 3709737f-2da0-4a4e-ad32-e7957d27620f + 3709737f-2da0-4a4e-ad32-e7957d27620f + self + + + wosuid + 000226605700011 + 000226605700011 + self + + + eid + 2-s2.0-13844266102 + 2-s2.0-13844266102 + self + + + doi + 10.1093/bioinformatics/bti018 + 10.1093/bioinformatics/bti018 + self + + + https://researchportal.tuni.fi/en/publications/3709737f-2da0-4a4e-ad32-e7957d27620f + journal-article + + 2005 + + Bioinformatics + + + + 2022-05-25T22:51:08.014Z + + + source-work-id + 9b7fc5e1-5442-41d1-9319-e159defcec5a + 9b7fc5e1-5442-41d1-9319-e159defcec5a + self + + + + 2017-08-28T12:54:33.022Z + 2022-05-25T22:51:08.014Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + A program to obtain signal transduction models from a database + + + + source-work-id + 9b7fc5e1-5442-41d1-9319-e159defcec5a + 9b7fc5e1-5442-41d1-9319-e159defcec5a + self + + + https://researchportal.tuni.fi/en/publications/9b7fc5e1-5442-41d1-9319-e159defcec5a + conference-paper + + 2005 + + Proceedings of The 3rd TICSP Workshop on Computational Systems Biology, WCSB 2005, Tampere, Finland, 13-14 June 2005 + + + + 2022-05-25T22:51:08.008Z + + + eid + 2-s2.0-19644387496 + 2-s2.0-19644387496 + self + + + source-work-id + 301a2145-5b51-46dc-bd0e-143568c0f95f + 301a2145-5b51-46dc-bd0e-143568c0f95f + self + + + + 2017-08-28T12:54:33.022Z + 2022-05-25T22:51:08.008Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Incorporating stochasticity into deterministic differential equation models for neuronal signal transduction + + + + source-work-id + 301a2145-5b51-46dc-bd0e-143568c0f95f + 301a2145-5b51-46dc-bd0e-143568c0f95f + self + + + eid + 2-s2.0-19644387496 + 2-s2.0-19644387496 + self + + + https://researchportal.tuni.fi/en/publications/301a2145-5b51-46dc-bd0e-143568c0f95f + conference-paper + + 2005 + + Proceedings of The 3rd TICSP Workshop on Computational Systems Biology, WCSB 2005, Tampere, Finland, 13-14 June 2005 + + + + 2022-05-25T22:51:08.001Z + + + isbn + 952-15-1365-9 + 9521513659 + self + + + source-work-id + b495a6ed-c0bc-4ae0-a25f-5b8680a1d8b9 + b495a6ed-c0bc-4ae0-a25f-5b8680a1d8b9 + self + + + + 2017-08-28T12:54:33.022Z + 2022-05-25T22:51:08.001Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Proceedings of The 3rd TICSP Workshop on Computational Systems Biology, WCSB 2005 + + + + source-work-id + b495a6ed-c0bc-4ae0-a25f-5b8680a1d8b9 + b495a6ed-c0bc-4ae0-a25f-5b8680a1d8b9 + self + + + isbn + 952-15-1365-9 + 9521513659 + self + + + https://researchportal.tuni.fi/en/publications/b495a6ed-c0bc-4ae0-a25f-5b8680a1d8b9 + edited-book + + 2005 + + Tampere University of Technology, Tampere International Center for Signal Processing, TICSP Series + + + + 2022-05-25T22:51:08.037Z + + + source-work-id + 2b12d8d5-ffe1-4e5f-95a8-374fb4ccf8f3 + 2b12d8d5-ffe1-4e5f-95a8-374fb4ccf8f3 + self + + + doi + 10.1016/j.neucom.2004.01.096 + 10.1016/j.neucom.2004.01.096 + self + + + eid + 2-s2.0-2542458658 + 2-s2.0-2542458658 + self + + + + 2017-08-28T12:54:33.027Z + 2022-05-25T22:51:08.037Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + A model integrating the cerebellar granule neuron excitability and calcium signaling pathways + + + + source-work-id + 2b12d8d5-ffe1-4e5f-95a8-374fb4ccf8f3 + 2b12d8d5-ffe1-4e5f-95a8-374fb4ccf8f3 + self + + + eid + 2-s2.0-2542458658 + 2-s2.0-2542458658 + self + + + doi + 10.1016/j.neucom.2004.01.096 + 10.1016/j.neucom.2004.01.096 + self + + + https://researchportal.tuni.fi/en/publications/2b12d8d5-ffe1-4e5f-95a8-374fb4ccf8f3 + journal-article + + 2004 + + Neurocomputing + + + + 2023-06-22T00:07:57.358Z + + + source-work-id + fc7e7945-a58c-49b6-996b-ece34f727e48 + fc7e7945-a58c-49b6-996b-ece34f727e48 + self + + + + 2017-08-28T12:54:33.026Z + 2023-06-22T00:07:57.358Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Pienryhmä parantaa matematiikan taitoja + + + + source-work-id + fc7e7945-a58c-49b6-996b-ece34f727e48 + fc7e7945-a58c-49b6-996b-ece34f727e48 + self + + + https://researchportal.tuni.fi/en/publications/fc7e7945-a58c-49b6-996b-ece34f727e48 + journal-article + + 2004 + + Dimensio + + + + 2022-05-25T22:51:08.026Z + + + isbn + 952-15-1301-2 + 9521513012 + self + + + source-work-id + 6bcb454e-5fde-4aeb-b37e-557bd27c9e83 + 6bcb454e-5fde-4aeb-b37e-557bd27c9e83 + self + + + + 2017-08-28T12:54:33.026Z + 2022-05-25T22:51:08.026Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Simulation study of different equation model for protein kinase C signaling + + + + source-work-id + 6bcb454e-5fde-4aeb-b37e-557bd27c9e83 + 6bcb454e-5fde-4aeb-b37e-557bd27c9e83 + self + + + isbn + 952-15-1301-2 + 9521513012 + self + + + https://researchportal.tuni.fi/en/publications/6bcb454e-5fde-4aeb-b37e-557bd27c9e83 + report + + 2004 + + Tampere University of Technology, Institute of Signal Processing, Report + + + + 2022-05-25T22:51:08.019Z + + + source-work-id + df8ad827-d40d-495b-9173-21b49a9ae193 + df8ad827-d40d-495b-9173-21b49a9ae193 + self + + + + 2017-08-28T12:54:33.023Z + 2022-05-25T22:51:08.019Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Varying stimulus and parameter values in the PKC pathway model + + + + source-work-id + df8ad827-d40d-495b-9173-21b49a9ae193 + df8ad827-d40d-495b-9173-21b49a9ae193 + self + + + https://researchportal.tuni.fi/en/publications/df8ad827-d40d-495b-9173-21b49a9ae193 + conference-paper + + 2004 + + Proceedings of the 2nd TICSP Workshop on Computational Systems Biology, WCSB'2004, Silja Opera, Helsinki-St.Petersburg, 14-16 June 2004 + + + + 2022-05-25T22:51:08.042Z + + + source-work-id + ca0966d2-a83d-42f5-9905-b6e84115ac54 + ca0966d2-a83d-42f5-9905-b6e84115ac54 + self + + + + 2017-08-28T12:54:33.027Z + 2022-05-25T22:51:08.042Z + + + https://orcid.org/client/APP-N0TAO4G9BBK9PWHT + APP-N0TAO4G9BBK9PWHT + orcid.org + + Tampere University + + + Hermosolun solunsisäisten toimintojen matemaattinen mallinnus ja simulointi + + + + source-work-id + ca0966d2-a83d-42f5-9905-b6e84115ac54 + ca0966d2-a83d-42f5-9905-b6e84115ac54 + self + + + https://researchportal.tuni.fi/en/publications/ca0966d2-a83d-42f5-9905-b6e84115ac54 + other + + 2003 + + + + From b32a9d1994f331c1e00f0d703dc8538df85be5c6 Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Fri, 23 Feb 2024 10:04:28 +0100 Subject: [PATCH 09/10] Implemented workflow for updating table , added step to check if the new generated table is valid --- .../collection/orcid/OrcidGetUpdatesFile.java | 26 +++++++++- .../download_orcid_update_parameter.json | 12 +++++ .../orcid/update/oozie_app/workflow.xml | 34 ++++++++----- .../collection/orcid/SparkApplyUpdate.scala | 49 ++++++++++++++++++- 4 files changed, 106 insertions(+), 15 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index 2ba131e0f..c96423147 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -23,6 +23,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; +import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,6 +51,9 @@ public class OrcidGetUpdatesFile { final String namenode = parser.get("namenode"); log.info("got variable namenode: {}", namenode); + final String master = parser.get("master"); + log.info("got variable master: {}", master); + final String targetPath = parser.get("targetPath"); log.info("got variable targetPath: {}", targetPath); @@ -59,11 +63,27 @@ public class OrcidGetUpdatesFile { final String accessToken = parser.get("accessToken"); log.info("got variable accessToken: {}", accessToken); - System.out.println("namenode = " + namenode); + final String graphPath = parser.get("graphPath"); + log.info("got variable graphPath: {}", graphPath); + + final SparkSession spark = SparkSession + .builder() + .appName(OrcidGetUpdatesFile.class.getName()) + .master(master) + .getOrCreate(); + + final String latestDate = spark + .read() + .load(graphPath + "/Authors") + .selectExpr("max(lastModifiedDate)") + .first() + .getString(0); + + log.info("latest date is {}", latestDate); final FileSystem fileSystem = FileSystem.get(getHadoopConfiguration(namenode)); - new OrcidGetUpdatesFile().readTar(fileSystem, accessToken, apiURL, targetPath, "2023-09-30"); + new OrcidGetUpdatesFile().readTar(fileSystem, accessToken, apiURL, targetPath, latestDate); } @@ -102,6 +122,8 @@ public class OrcidGetUpdatesFile { Path hdfsWritePath = new Path("/tmp/orcid_updates.tar.gz"); final FSDataOutputStream fsDataOutputStream = fileSystem.create(hdfsWritePath, true); IOUtils.copy(input, fsDataOutputStream); + fsDataOutputStream.flush(); + fsDataOutputStream.close(); FSDataInputStream updateFile = fileSystem.open(hdfsWritePath); TarArchiveInputStream tais = new TarArchiveInputStream(new GzipCompressorInputStream( new BufferedInputStream( diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json index dbf63a31a..48b37f85d 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/download_orcid_update_parameter.json @@ -4,6 +4,12 @@ "paramDescription": "the Name Node URI", "paramRequired": true }, + { + "paramName": "m", + "paramLongName": "master", + "paramDescription": "the master name", + "paramRequired": true + }, { "paramName": "t", "paramLongName": "targetPath", @@ -16,6 +22,12 @@ "paramDescription": "the URL to download the tar file", "paramRequired": true }, + { + "paramName": "g", + "paramLongName": "graphPath", + "paramDescription": "the path of the input graph", + "paramRequired": true + }, { "paramName": "at", "paramLongName": "accessToken", diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml index 434d21a0c..e46e303a9 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/collection/orcid/update/oozie_app/workflow.xml @@ -28,23 +28,35 @@ - - - - oozie.launcher.mapreduce.user.classpath.first - true - - - eu.dnetlib.dhp.collection.orcid.OrcidGetUpdatesFile + + yarn + cluster + Check Latest Orcid and Download updates + eu.dnetlib.dhp.collection.orcid.OrcidGetUpdatesFile + dhp-aggregation-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.executor.memoryOverhead=2g + --conf spark.sql.shuffle.partitions=3000 + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + + --masteryarn --namenode${nameNode} + --graphPath${graphPath} --targetPath${targetPath} --apiURL${apiURL} --accessToken${accessToken} - - + + + yarn @@ -90,7 +102,7 @@ --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} - --graphPathgraphPath + --graphPath${graphPath} --updatePath${targetPath}/updateTable --targetPath${targetPath}/newTable --masteryarn diff --git a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala index 4494a2d3d..57cb0e2e4 100644 --- a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala +++ b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/collection/orcid/SparkApplyUpdate.scala @@ -19,10 +19,34 @@ class SparkApplyUpdate(propertyPath: String, args: Array[String], log: Logger) val targetPath: String = parser.get("targetPath") log.info("found parameters targetPath: {}", targetPath) applyTableUpdate(spark, graphPath, updatePath, targetPath) + checkUpdate(spark, graphPath, targetPath) + moveTable(spark, graphPath, targetPath) } - def updateDataset( + private def moveTable(spark: SparkSession, graphPath: String, updatePath: String): Unit = { + spark.read + .load(s"$updatePath/Authors") + .repartition(1000) + .write + .mode(SaveMode.Overwrite) + .save(s"$graphPath/Authors") + spark.read + .load(s"$updatePath/Works") + .repartition(1000) + .write + .mode(SaveMode.Overwrite) + .save(s"$graphPath/Works") + spark.read + .load(s"$updatePath/Employments") + .repartition(1000) + .write + .mode(SaveMode.Overwrite) + .save(s"$graphPath/Employments") + + } + + private def updateDataset( inputDataset: DataFrame, idUpdate: DataFrame, updateDataframe: DataFrame, @@ -37,7 +61,28 @@ class SparkApplyUpdate(propertyPath: String, args: Array[String], log: Logger) .save(targetPath) } - def applyTableUpdate(spark: SparkSession, graphPath: String, updatePath: String, targetPath: String) = { + private def checkUpdate(spark: SparkSession, graphPath: String, updatePath: String): Unit = { + val totalOriginalAuthors = spark.read.load(s"$graphPath/Authors").count + val totalOriginalWorks = spark.read.load(s"$graphPath/Works").count + val totalOriginalEmployments = spark.read.load(s"$graphPath/Employments").count + val totalUpdateAuthors = spark.read.load(s"$updatePath/Authors").count + val totalUpdateWorks = spark.read.load(s"$updatePath/Works").count + val totalUpdateEmployments = spark.read.load(s"$updatePath/Employments").count + + log.info("totalOriginalAuthors: {}", totalOriginalAuthors) + log.info("totalOriginalWorks: {}", totalOriginalWorks) + log.info("totalOriginalEmployments: {}", totalOriginalEmployments) + log.info("totalUpdateAuthors: {}", totalUpdateAuthors) + log.info("totalUpdateWorks: {}", totalUpdateWorks) + log.info("totalUpdateEmployments: {}", totalUpdateEmployments) + if ( + totalUpdateAuthors < totalOriginalAuthors || totalUpdateEmployments < totalOriginalEmployments || totalUpdateWorks < totalOriginalWorks + ) + throw new RuntimeException("The updated Graph contains less elements of the original one") + + } + + private def applyTableUpdate(spark: SparkSession, graphPath: String, updatePath: String, targetPath: String): Unit = { val orcidIDUpdate = spark.read.load(s"$updatePath/Authors").select("orcid") updateDataset( spark.read.load(s"$graphPath/Authors"), From 915a76a7964e8b3fd4da8bef717d03c33209d9d2 Mon Sep 17 00:00:00 2001 From: "sandro.labruzzo" Date: Wed, 28 Feb 2024 09:10:55 +0100 Subject: [PATCH 10/10] following the comment on the pull requests: - Added #NUM_OF_THREADS complete job in the queue at the end of the main loop to avoid deadlock --- .../java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java | 1 - .../dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java index fe59fe71f..2767a3e41 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/ORCIDWorker.java @@ -135,7 +135,6 @@ public class ORCIDWorker extends Thread { orcidId = queue.take(); if (orcidId.equalsIgnoreCase(JOB_COMPLETE)) { - queue.put(orcidId); hasComplete = true; } else { start = System.currentTimeMillis(); diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java index c96423147..eb23a204f 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/orcid/OrcidGetUpdatesFile.java @@ -155,15 +155,17 @@ public class OrcidGetUpdatesFile { throw new RuntimeException(e); } }); - queue.put(ORCIDWorker.JOB_COMPLETE); + } } + for (int i = 0; i < 22; i++) { + queue.put(ORCIDWorker.JOB_COMPLETE); + } for (ORCIDWorker worker : workers) { worker.join(); } - } }